@nanocollective/nanocoder 1.17.2 → 1.18.0

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 (238) hide show
  1. package/README.md +3 -5
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
  4. package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
  5. package/dist/ai-sdk-client-empty-message.spec.js +124 -0
  6. package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
  7. package/dist/ai-sdk-client-error-handling.spec.d.ts +2 -0
  8. package/dist/ai-sdk-client-error-handling.spec.d.ts.map +1 -0
  9. package/dist/ai-sdk-client-error-handling.spec.js +108 -0
  10. package/dist/ai-sdk-client-error-handling.spec.js.map +1 -0
  11. package/dist/ai-sdk-client-maxretries.spec.d.ts +2 -0
  12. package/dist/ai-sdk-client-maxretries.spec.d.ts.map +1 -0
  13. package/dist/ai-sdk-client-maxretries.spec.js +96 -0
  14. package/dist/ai-sdk-client-maxretries.spec.js.map +1 -0
  15. package/dist/ai-sdk-client.d.ts +25 -2
  16. package/dist/ai-sdk-client.d.ts.map +1 -1
  17. package/dist/ai-sdk-client.js +187 -124
  18. package/dist/ai-sdk-client.js.map +1 -1
  19. package/dist/app/utils/appUtils.js +3 -3
  20. package/dist/app/utils/appUtils.js.map +1 -1
  21. package/dist/app.d.ts.map +1 -1
  22. package/dist/app.js +22 -11
  23. package/dist/app.js.map +1 -1
  24. package/dist/commands/debugging.d.ts +3 -0
  25. package/dist/commands/debugging.d.ts.map +1 -0
  26. package/dist/commands/debugging.js +23 -0
  27. package/dist/commands/debugging.js.map +1 -0
  28. package/dist/commands/index.d.ts +3 -2
  29. package/dist/commands/index.d.ts.map +1 -1
  30. package/dist/commands/index.js +3 -2
  31. package/dist/commands/index.js.map +1 -1
  32. package/dist/commands/lsp.d.ts +15 -0
  33. package/dist/commands/lsp.d.ts.map +1 -0
  34. package/dist/commands/lsp.js +45 -0
  35. package/dist/commands/lsp.js.map +1 -0
  36. package/dist/commands/model-database.d.ts +8 -0
  37. package/dist/commands/model-database.d.ts.map +1 -0
  38. package/dist/commands/model-database.js +193 -0
  39. package/dist/commands/model-database.js.map +1 -0
  40. package/dist/commands/usage.d.ts.map +1 -1
  41. package/dist/commands/usage.js +1 -1
  42. package/dist/commands/usage.js.map +1 -1
  43. package/dist/components/assistant-message.d.ts.map +1 -1
  44. package/dist/components/assistant-message.js +3 -2
  45. package/dist/components/assistant-message.js.map +1 -1
  46. package/dist/components/status.d.ts +3 -0
  47. package/dist/components/status.d.ts.map +1 -1
  48. package/dist/components/status.js +24 -3
  49. package/dist/components/status.js.map +1 -1
  50. package/dist/components/user-input.d.ts.map +1 -1
  51. package/dist/components/user-input.js +2 -1
  52. package/dist/components/user-input.js.map +1 -1
  53. package/dist/config/preferences.d.ts +2 -2
  54. package/dist/config/preferences.js +5 -5
  55. package/dist/config/preferences.js.map +1 -1
  56. package/dist/context/mode-context.d.ts +12 -0
  57. package/dist/context/mode-context.d.ts.map +1 -0
  58. package/dist/context/mode-context.js +21 -0
  59. package/dist/context/mode-context.js.map +1 -0
  60. package/dist/context/mode-context.spec.d.ts +2 -0
  61. package/dist/context/mode-context.spec.d.ts.map +1 -0
  62. package/dist/context/mode-context.spec.js +61 -0
  63. package/dist/context/mode-context.spec.js.map +1 -0
  64. package/dist/hooks/useAppInitialization.d.ts +4 -2
  65. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  66. package/dist/hooks/useAppInitialization.js +102 -26
  67. package/dist/hooks/useAppInitialization.js.map +1 -1
  68. package/dist/hooks/useAppState.d.ts +7 -5
  69. package/dist/hooks/useAppState.d.ts.map +1 -1
  70. package/dist/hooks/useAppState.js +11 -7
  71. package/dist/hooks/useAppState.js.map +1 -1
  72. package/dist/hooks/useChatHandler.d.ts +2 -2
  73. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  74. package/dist/hooks/useChatHandler.js +186 -111
  75. package/dist/hooks/useChatHandler.js.map +1 -1
  76. package/dist/hooks/useModeHandlers.d.ts +4 -4
  77. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  78. package/dist/hooks/useModeHandlers.js +9 -9
  79. package/dist/hooks/useModeHandlers.js.map +1 -1
  80. package/dist/mcp/mcp-client.d.ts.map +1 -1
  81. package/dist/mcp/mcp-client.js +16 -6
  82. package/dist/mcp/mcp-client.js.map +1 -1
  83. package/dist/message-handler.js +1 -1
  84. package/dist/message-handler.js.map +1 -1
  85. package/dist/model-database/database-engine.d.ts +25 -0
  86. package/dist/model-database/database-engine.d.ts.map +1 -0
  87. package/dist/model-database/database-engine.js +37 -0
  88. package/dist/model-database/database-engine.js.map +1 -0
  89. package/dist/model-database/database-engine.spec.d.ts +2 -0
  90. package/dist/model-database/database-engine.spec.d.ts.map +1 -0
  91. package/dist/model-database/database-engine.spec.js +413 -0
  92. package/dist/model-database/database-engine.spec.js.map +1 -0
  93. package/dist/model-database/model-database.d.ts +30 -0
  94. package/dist/model-database/model-database.d.ts.map +1 -0
  95. package/dist/model-database/model-database.js +82 -0
  96. package/dist/model-database/model-database.js.map +1 -0
  97. package/dist/model-database/model-database.spec.d.ts +2 -0
  98. package/dist/model-database/model-database.spec.d.ts.map +1 -0
  99. package/dist/model-database/model-database.spec.js +322 -0
  100. package/dist/model-database/model-database.spec.js.map +1 -0
  101. package/dist/model-database/model-engine.d.ts +25 -0
  102. package/dist/model-database/model-engine.d.ts.map +1 -0
  103. package/dist/model-database/model-engine.js +49 -0
  104. package/dist/model-database/model-engine.js.map +1 -0
  105. package/dist/model-database/model-engine.spec.d.ts +2 -0
  106. package/dist/model-database/model-engine.spec.d.ts.map +1 -0
  107. package/dist/model-database/model-engine.spec.js +381 -0
  108. package/dist/model-database/model-engine.spec.js.map +1 -0
  109. package/dist/model-database/model-fetcher.d.ts +14 -0
  110. package/dist/model-database/model-fetcher.d.ts.map +1 -0
  111. package/dist/model-database/model-fetcher.js +248 -0
  112. package/dist/model-database/model-fetcher.js.map +1 -0
  113. package/dist/model-database/model-fetcher.spec.d.ts +2 -0
  114. package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
  115. package/dist/model-database/model-fetcher.spec.js +498 -0
  116. package/dist/model-database/model-fetcher.spec.js.map +1 -0
  117. package/dist/models/models-dev-client.d.ts.map +1 -1
  118. package/dist/models/models-dev-client.js +8 -0
  119. package/dist/models/models-dev-client.js.map +1 -1
  120. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  121. package/dist/tool-calling/json-parser.js +10 -4
  122. package/dist/tool-calling/json-parser.js.map +1 -1
  123. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  124. package/dist/tool-calling/tool-parser.js +37 -9
  125. package/dist/tool-calling/tool-parser.js.map +1 -1
  126. package/dist/tool-calling/tool-parser.spec.js +79 -1
  127. package/dist/tool-calling/tool-parser.spec.js.map +1 -1
  128. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  129. package/dist/tool-calling/xml-parser.js +21 -23
  130. package/dist/tool-calling/xml-parser.js.map +1 -1
  131. package/dist/tool-calling/xml-parser.spec.js +23 -3
  132. package/dist/tool-calling/xml-parser.spec.js.map +1 -1
  133. package/dist/tools/create-file.d.ts +24 -2
  134. package/dist/tools/create-file.d.ts.map +1 -1
  135. package/dist/tools/create-file.js +14 -10
  136. package/dist/tools/create-file.js.map +1 -1
  137. package/dist/tools/delete-lines.d.ts +18 -2
  138. package/dist/tools/delete-lines.d.ts.map +1 -1
  139. package/dist/tools/delete-lines.js +14 -9
  140. package/dist/tools/delete-lines.js.map +1 -1
  141. package/dist/tools/execute-bash.d.ts +2 -2
  142. package/dist/tools/execute-bash.d.ts.map +1 -1
  143. package/dist/tools/execute-bash.js +10 -9
  144. package/dist/tools/execute-bash.js.map +1 -1
  145. package/dist/tools/execute-function.spec.d.ts +2 -0
  146. package/dist/tools/execute-function.spec.d.ts.map +1 -0
  147. package/dist/tools/execute-function.spec.js +141 -0
  148. package/dist/tools/execute-function.spec.js.map +1 -0
  149. package/dist/tools/fetch-url.d.ts +16 -2
  150. package/dist/tools/fetch-url.d.ts.map +1 -1
  151. package/dist/tools/fetch-url.js +10 -10
  152. package/dist/tools/fetch-url.js.map +1 -1
  153. package/dist/tools/find-files.d.ts +18 -2
  154. package/dist/tools/find-files.d.ts.map +1 -1
  155. package/dist/tools/find-files.js +7 -5
  156. package/dist/tools/find-files.js.map +1 -1
  157. package/dist/tools/index.d.ts +2 -3
  158. package/dist/tools/index.d.ts.map +1 -1
  159. package/dist/tools/index.js +30 -20
  160. package/dist/tools/index.js.map +1 -1
  161. package/dist/tools/insert-lines.d.ts +18 -2
  162. package/dist/tools/insert-lines.d.ts.map +1 -1
  163. package/dist/tools/insert-lines.js +14 -9
  164. package/dist/tools/insert-lines.js.map +1 -1
  165. package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
  166. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  167. package/dist/tools/lsp-get-diagnostics.js +8 -6
  168. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  169. package/dist/tools/needs-approval.spec.d.ts +2 -0
  170. package/dist/tools/needs-approval.spec.d.ts.map +1 -0
  171. package/dist/tools/needs-approval.spec.js +308 -0
  172. package/dist/tools/needs-approval.spec.js.map +1 -0
  173. package/dist/tools/read-file.d.ts +2 -2
  174. package/dist/tools/read-file.d.ts.map +1 -1
  175. package/dist/tools/read-file.js +10 -12
  176. package/dist/tools/read-file.js.map +1 -1
  177. package/dist/tools/replace-lines.d.ts +19 -2
  178. package/dist/tools/replace-lines.d.ts.map +1 -1
  179. package/dist/tools/replace-lines.js +14 -9
  180. package/dist/tools/replace-lines.js.map +1 -1
  181. package/dist/tools/search-file-contents.d.ts +20 -2
  182. package/dist/tools/search-file-contents.d.ts.map +1 -1
  183. package/dist/tools/search-file-contents.js +11 -8
  184. package/dist/tools/search-file-contents.js.map +1 -1
  185. package/dist/tools/web-search.d.ts +2 -2
  186. package/dist/tools/web-search.d.ts.map +1 -1
  187. package/dist/tools/web-search.js +10 -10
  188. package/dist/tools/web-search.js.map +1 -1
  189. package/dist/types/app.d.ts +1 -1
  190. package/dist/types/app.d.ts.map +1 -1
  191. package/dist/types/config.d.ts +4 -1
  192. package/dist/types/config.d.ts.map +1 -1
  193. package/dist/types/core-connection-status.spec.d.ts +2 -0
  194. package/dist/types/core-connection-status.spec.d.ts.map +1 -0
  195. package/dist/types/core-connection-status.spec.js +52 -0
  196. package/dist/types/core-connection-status.spec.js.map +1 -0
  197. package/dist/types/core.d.ts +33 -28
  198. package/dist/types/core.d.ts.map +1 -1
  199. package/dist/types/core.js.map +1 -1
  200. package/dist/types/system.d.ts +5 -30
  201. package/dist/types/system.d.ts.map +1 -1
  202. package/dist/utils/prompt-processor.d.ts +2 -3
  203. package/dist/utils/prompt-processor.d.ts.map +1 -1
  204. package/dist/utils/prompt-processor.js +2 -50
  205. package/dist/utils/prompt-processor.js.map +1 -1
  206. package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
  207. package/dist/wizard/templates/provider-templates.js +34 -2
  208. package/dist/wizard/templates/provider-templates.js.map +1 -1
  209. package/package.json +6 -5
  210. package/source/app/prompts/main-prompt.md +29 -96
  211. package/dist/commands/recommendations.d.ts +0 -8
  212. package/dist/commands/recommendations.d.ts.map +0 -1
  213. package/dist/commands/recommendations.js +0 -311
  214. package/dist/commands/recommendations.js.map +0 -1
  215. package/dist/commands/streaming.d.ts +0 -3
  216. package/dist/commands/streaming.d.ts.map +0 -1
  217. package/dist/commands/streaming.js +0 -23
  218. package/dist/commands/streaming.js.map +0 -1
  219. package/dist/components/thinking-indicator.d.ts +0 -3
  220. package/dist/components/thinking-indicator.d.ts.map +0 -1
  221. package/dist/components/thinking-indicator.js +0 -69
  222. package/dist/components/thinking-indicator.js.map +0 -1
  223. package/dist/recommendations/model-database.d.ts +0 -8
  224. package/dist/recommendations/model-database.d.ts.map +0 -1
  225. package/dist/recommendations/model-database.js +0 -514
  226. package/dist/recommendations/model-database.js.map +0 -1
  227. package/dist/recommendations/model-engine.d.ts +0 -16
  228. package/dist/recommendations/model-engine.d.ts.map +0 -1
  229. package/dist/recommendations/model-engine.js +0 -185
  230. package/dist/recommendations/model-engine.js.map +0 -1
  231. package/dist/recommendations/recommendation-engine.d.ts +0 -39
  232. package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
  233. package/dist/recommendations/recommendation-engine.js +0 -144
  234. package/dist/recommendations/recommendation-engine.js.map +0 -1
  235. package/dist/system/detector.d.ts +0 -18
  236. package/dist/system/detector.d.ts.map +0 -1
  237. package/dist/system/detector.js +0 -140
  238. package/dist/system/detector.js.map +0 -1
@@ -1,311 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React, { useState, useEffect } from 'react';
3
- import { Box, Text, useInput, useFocus } from 'ink';
4
- import { TitledBox, titleStyles } from '@mishieck/ink-titled-box';
5
- import { Tabs, Tab } from 'ink-tab';
6
- import { useTerminalWidth } from '../hooks/useTerminalWidth.js';
7
- import { useTheme } from '../hooks/useTheme.js';
8
- import { systemDetector } from '../system/detector.js';
9
- import { recommendationEngine, } from '../recommendations/recommendation-engine.js';
10
- function RecommendationsDisplay({ onCancel }) {
11
- const boxWidth = useTerminalWidth();
12
- const { colors } = useTheme();
13
- const [systemCaps, setSystemCaps] = useState(null);
14
- const [models, setModels] = useState([]);
15
- const [topLocalModel, setTopLocalModel] = useState(null);
16
- const [topApiModel, setTopApiModel] = useState(null);
17
- const [loading, setLoading] = useState(true);
18
- const [error, setError] = useState(null);
19
- const [currentModelIndex, setCurrentModelIndex] = useState(0);
20
- const [activeTab, setActiveTab] = useState('local');
21
- const [searchQuery, setSearchQuery] = useState('');
22
- const [searchMode, setSearchMode] = useState(false);
23
- const [closed, setClosed] = useState(false);
24
- // Capture focus to prevent user input from being active
25
- useFocus({ autoFocus: true, id: 'recommendations-display' });
26
- // Get current tab's models with search filtering
27
- const filterBySearch = (modelList) => {
28
- if (!searchMode || !searchQuery)
29
- return modelList;
30
- return modelList.filter(m => m.model.name.toLowerCase().includes(searchQuery.toLowerCase()));
31
- };
32
- // In search mode, combine all models
33
- const allModelsForSearch = searchMode ? models : [];
34
- const localModels = searchMode ? [] : models.filter(m => m.model.local);
35
- const apiModels = searchMode ? [] : models.filter(m => m.model.api);
36
- const currentTabModels = searchMode
37
- ? filterBySearch(allModelsForSearch)
38
- : activeTab === 'local'
39
- ? localModels
40
- : apiModels;
41
- // Keyboard handler for navigation
42
- useInput((input, key) => {
43
- if (key.escape) {
44
- if (searchMode) {
45
- // Exit search mode and clear search
46
- setSearchMode(false);
47
- setSearchQuery('');
48
- setCurrentModelIndex(0);
49
- }
50
- else {
51
- // Close the recommendations view
52
- setClosed(true);
53
- if (onCancel) {
54
- onCancel();
55
- }
56
- }
57
- }
58
- else if (key.return) {
59
- setClosed(true);
60
- if (onCancel) {
61
- onCancel();
62
- }
63
- }
64
- else if (key.upArrow) {
65
- setCurrentModelIndex(prev => Math.max(0, prev - 1));
66
- }
67
- else if (key.downArrow) {
68
- setCurrentModelIndex(prev => Math.min(currentTabModels.length - 1, prev + 1));
69
- }
70
- else if (key.leftArrow && !searchMode) {
71
- setActiveTab('local');
72
- }
73
- else if (key.rightArrow && !searchMode) {
74
- setActiveTab('api');
75
- }
76
- else if (key.backspace || key.delete) {
77
- if (searchMode) {
78
- setSearchQuery(prev => {
79
- const newQuery = prev.slice(0, -1);
80
- // Exit search mode if query becomes empty
81
- if (newQuery === '') {
82
- setSearchMode(false);
83
- }
84
- return newQuery;
85
- });
86
- setCurrentModelIndex(0);
87
- }
88
- }
89
- else if (input && input.length === 1 && !key.ctrl && !key.meta) {
90
- // Add printable characters to search
91
- if (!searchMode) {
92
- setSearchMode(true);
93
- }
94
- setSearchQuery(prev => prev + input);
95
- setCurrentModelIndex(0);
96
- }
97
- // Consume all other input by doing nothing
98
- });
99
- // Reset index when switching tabs
100
- useEffect(() => {
101
- // eslint-disable-next-line react-hooks/set-state-in-effect -- Reset state when activeTab changes is intentional
102
- setCurrentModelIndex(0);
103
- }, [activeTab]);
104
- useEffect(() => {
105
- async function loadRecommendations() {
106
- try {
107
- const capabilities = await systemDetector.getSystemCapabilities();
108
- setSystemCaps(capabilities);
109
- const result = recommendationEngine.getRecommendations(capabilities);
110
- setModels(result.allModels);
111
- // Get top local model (one user can actually run)
112
- const canRunLocally = (model) => {
113
- return (!model.model.minMemoryGB ||
114
- capabilities.memory.total >= model.model.minMemoryGB);
115
- };
116
- // Local model scoring: agentic is most important, then feasibility (can it run on this system)
117
- const getLocalScore = (model) => {
118
- const canRun = canRunLocally(model);
119
- if (!canRun)
120
- return 0; // Can't run = score of 0
121
- return (model.model.quality.agentic * 3.0 + model.model.quality.local * 1.5);
122
- };
123
- // API model scoring: agentic is most important, then cost (value for money)
124
- const getApiScore = (model) => {
125
- return (model.model.quality.agentic * 3.0 + model.model.quality.cost * 1.2);
126
- };
127
- const localModels = result.allModels
128
- .filter(m => m.model.local)
129
- .sort((a, b) => getLocalScore(b) - getLocalScore(a));
130
- const apiModels = result.allModels
131
- .filter(m => m.model.api)
132
- .sort((a, b) => getApiScore(b) - getApiScore(a));
133
- setTopLocalModel(localModels[0] || null);
134
- setTopApiModel(apiModels[0] || null);
135
- setLoading(false);
136
- }
137
- catch (error_) {
138
- setError(error_ instanceof Error ? error_.message : 'Failed to analyze system');
139
- setLoading(false);
140
- }
141
- }
142
- void loadRecommendations();
143
- }, []);
144
- // Return null when closed to hide the component
145
- if (closed) {
146
- return null;
147
- }
148
- if (loading) {
149
- return (_jsx(TitledBox, { borderStyle: "round", titles: ['/recommendations'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.primary, paddingX: 2, paddingY: 1, children: _jsx(Text, { color: colors.white, children: "Analyzing your system..." }) }));
150
- }
151
- if (error) {
152
- return (_jsx(TitledBox, { borderStyle: "round", titles: ['/recommendations'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.error, paddingX: 2, paddingY: 1, children: _jsxs(Text, { color: colors.error, children: ["Error: ", error] }) }));
153
- }
154
- if (!systemCaps) {
155
- return (_jsx(TitledBox, { borderStyle: "round", titles: ['/recommendations'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.error, paddingX: 2, paddingY: 1, children: _jsx(Text, { color: colors.error, children: "Unable to detect system capabilities" }) }));
156
- }
157
- return (_jsxs(TitledBox, { borderStyle: "round", titles: ['/recommendations'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.primary, paddingX: 2, paddingY: 1, marginBottom: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(SystemSummary, { systemCaps: systemCaps, colors: colors }), (topLocalModel || topApiModel) && (_jsx(QuickStartSection, { topLocalModel: topLocalModel, topApiModel: topApiModel, colors: colors }))] }), _jsx(ModelsTabView, { models: models, colors: colors, currentModelIndex: currentModelIndex, activeTab: activeTab, onTabChange: setActiveTab, systemCaps: systemCaps, searchMode: searchMode, searchQuery: searchQuery, currentTabModels: currentTabModels }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [searchMode && searchQuery && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.primary, children: ["\uD83D\uDD0D Search: ", _jsx(Text, { bold: true, children: searchQuery })] }) })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.secondary, dimColor: true, children: "\uD83D\uDCA1 Add providers to agents.config.json to use these models." }) }), _jsx(Text, { color: colors.secondary, dimColor: true, children: searchMode
158
- ? 'Type to search | Backspace to delete | ↑/↓: Navigate | Esc: Exit search'
159
- : 'Type to search | ↑/↓: Navigate | ←/→: Switch tabs | Esc: Close' })] })] }));
160
- }
161
- function SystemSummary({ systemCaps, colors, }) {
162
- const gpuText = systemCaps.gpu.available
163
- ? `${systemCaps.gpu.type} GPU${systemCaps.gpu.memory ? ` (${systemCaps.gpu.memory}GB)` : ''}`
164
- : 'No GPU';
165
- const networkText = systemCaps.network.connected
166
- ? `Connected${systemCaps.network.speed ? ` (${systemCaps.network.speed})` : ''}`
167
- : 'Offline';
168
- return (_jsxs(Box, { flexDirection: "column", borderStyle: 'round', borderColor: colors.secondary, padding: 1, width: '50%', children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.primary, bold: true, underline: true, children: "Your System:" }) }), _jsxs(Text, { children: [systemCaps.memory.total, "GB RAM, ", systemCaps.cpu.cores, " cores, ", gpuText] }), _jsxs(Text, { color: colors.white, children: ["Network: ", networkText] })] }));
169
- }
170
- function QuickStartSection({ topLocalModel, topApiModel, colors, }) {
171
- return (_jsxs(Box, { flexDirection: "column", borderStyle: 'round', borderColor: colors.secondary, padding: 1, width: '50%', children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.success, bold: true, underline: true, children: "Quick Start:" }) }), topLocalModel && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.success, children: [_jsx(Text, { bold: true, children: "\uD83D\uDC49 Local: " }), topLocalModel.model.name] }) })), topApiModel && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.primary, children: [_jsx(Text, { bold: true, children: "\uD83D\uDC49 API: " }), topApiModel.model.name] }) })), !topLocalModel && !topApiModel && (_jsx(Text, { color: colors.warning, children: "No models available" }))] }));
172
- }
173
- function ModelsTabView({ models, colors, currentModelIndex, activeTab, onTabChange, systemCaps, searchMode, searchQuery, currentTabModels, }) {
174
- // Check if model can run locally on this system
175
- const canRunLocally = (model) => {
176
- return (!model.model.minMemoryGB ||
177
- systemCaps.memory.total >= model.model.minMemoryGB);
178
- };
179
- // Local model scoring: agentic is most important, then feasibility
180
- const getLocalScore = (model) => {
181
- const canRun = canRunLocally(model);
182
- if (!canRun)
183
- return 0; // Can't run = score of 0
184
- return model.model.quality.agentic * 3.0 + model.model.quality.local * 1.5;
185
- };
186
- // API model scoring: agentic is most important, then cost (value for money)
187
- const getApiScore = (model) => {
188
- return model.model.quality.agentic * 3.0 + model.model.quality.cost * 1.2;
189
- };
190
- // Separate models into local and API, then sort by appropriate score
191
- const localModels = models
192
- .filter(m => m.model.local)
193
- .sort((a, b) => getLocalScore(b) - getLocalScore(a));
194
- const apiModels = models
195
- .filter(m => m.model.api)
196
- .sort((a, b) => getApiScore(b) - getApiScore(a));
197
- // Use passed in currentTabModels if in search mode, otherwise calculate
198
- const currentModels = searchMode
199
- ? currentTabModels
200
- : activeTab === 'local'
201
- ? localModels
202
- : apiModels;
203
- const currentModel = currentModels[currentModelIndex];
204
- if (!currentModel) {
205
- return (_jsxs(Box, { flexDirection: "column", borderStyle: 'round', borderColor: colors.secondary, padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.primary, bold: true, underline: true, children: searchMode ? 'Search Mode' : 'Model Database' }) }), !searchMode && (_jsxs(Tabs, { onChange: name => onTabChange(name), defaultValue: activeTab, colors: {
206
- activeTab: {
207
- color: colors.success,
208
- },
209
- }, children: [_jsx(Tab, { name: "local", children: "Local Models" }), _jsx(Tab, { name: "api", children: "API Models" })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.warning, children: searchMode && searchQuery
210
- ? `No models found matching "${searchQuery}"`
211
- : 'No models available in this category' }) })] }));
212
- }
213
- return (_jsxs(Box, { flexDirection: "column", borderStyle: 'round', borderColor: colors.secondary, padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.primary, bold: true, underline: true, children: searchMode ? 'Search Mode' : 'Model Database' }) }), !searchMode && (_jsxs(Tabs, { onChange: name => onTabChange(name), defaultValue: activeTab, colors: {
214
- activeTab: {
215
- color: colors.success,
216
- },
217
- }, children: [_jsx(Tab, { name: "local", children: "Local Models" }), _jsx(Tab, { name: "api", children: "API Models" })] })), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.secondary, dimColor: true, children: ["Model ", currentModelIndex + 1, " of ", currentModels.length] }) }), _jsx(ModelItem, { model: currentModel, colors: colors, showScore: true, localScore: getLocalScore(currentModel), apiScore: getApiScore(currentModel), isLocalTab: activeTab === 'local', systemCaps: systemCaps, searchMode: searchMode })] })] }));
218
- }
219
- function ModelItem({ model, colors, showScore, localScore, apiScore, isLocalTab, systemCaps, searchMode, }) {
220
- // Access type from local/api flags
221
- const accessTypes = [];
222
- if (model.model.local)
223
- accessTypes.push('Local');
224
- if (model.model.api)
225
- accessTypes.push('API');
226
- const accessType = accessTypes.join(' + ') || 'Unknown';
227
- // Check if model can run locally
228
- const canRunLocally = !model.model.minMemoryGB ||
229
- (systemCaps && systemCaps.memory.total >= model.model.minMemoryGB);
230
- // Get score color and label based on quality (normalized to 10)
231
- const getScoreInfo = (score, forLocal) => {
232
- // Different max scores for local vs API
233
- // Local max: 10*3 + 10*1.5 = 45
234
- // API max: 10*3 + 10*1.2 = 42
235
- const maxScore = forLocal ? 45 : 42;
236
- const normalizedScore = (score / maxScore) * 10;
237
- if (normalizedScore >= 7.5)
238
- return {
239
- color: colors.success,
240
- label: 'Excellent',
241
- score: normalizedScore,
242
- };
243
- if (normalizedScore >= 6.5)
244
- return { color: colors.primary, label: 'Good', score: normalizedScore };
245
- if (normalizedScore >= 5.0)
246
- return { color: colors.warning, label: 'Decent', score: normalizedScore };
247
- return { color: colors.error, label: 'Poor', score: normalizedScore };
248
- };
249
- // In search mode with both local and API, show both scores
250
- const showBothScores = searchMode && model.model.local && model.model.api;
251
- const localScoreInfo = localScore !== undefined && (showBothScores || isLocalTab)
252
- ? getScoreInfo(localScore, true)
253
- : null;
254
- const apiScoreInfo = apiScore !== undefined && (showBothScores || !isLocalTab)
255
- ? getScoreInfo(apiScore, false)
256
- : null;
257
- // Generate weaknesses based on context and scores
258
- const getWeaknesses = () => {
259
- const weaknesses = [];
260
- const activeScoreInfo = isLocalTab ? localScoreInfo : apiScoreInfo;
261
- const _activeScore = isLocalTab ? localScore : apiScore;
262
- // Only show weaknesses if score is Poor or Decent
263
- if (!activeScoreInfo || activeScoreInfo.score >= 6.5)
264
- return weaknesses;
265
- if (isLocalTab) {
266
- // Local weaknesses
267
- if (!canRunLocally) {
268
- const required = model.model.minMemoryGB || 0;
269
- const available = systemCaps?.memory.total || 0;
270
- weaknesses.push(`Cannot run locally - requires ${required}GB RAM (you have ${available}GB)`);
271
- }
272
- if (model.model.quality.agentic < 5) {
273
- weaknesses.push('Limited agentic coding capabilities');
274
- }
275
- if (model.model.quality.local < 5 && canRunLocally) {
276
- weaknesses.push('Difficult to run locally - requires significant resources');
277
- }
278
- }
279
- else {
280
- // API weaknesses
281
- if (model.model.quality.agentic < 5) {
282
- weaknesses.push('Limited agentic coding capabilities');
283
- }
284
- if (model.model.quality.cost < 5) {
285
- weaknesses.push('Expensive API pricing');
286
- }
287
- }
288
- return weaknesses;
289
- };
290
- const weaknesses = getWeaknesses();
291
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: _jsx(Text, { color: colors.primary, bold: true, underline: true, children: model.model.name }) }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "Author: " }), model.model.author] }), _jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "Size: " }), model.model.size] }), _jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "Access: " }), accessType] }), _jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "Cost: " }), model.model.costDetails] }), showScore && showBothScores ? (_jsxs(_Fragment, { children: [localScoreInfo && (_jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "Local Quality: " }), _jsx(Text, { color: localScoreInfo.color, bold: true, children: localScoreInfo.label }), _jsxs(Text, { dimColor: true, children: [" (", localScoreInfo.score.toFixed(1), "/10)"] })] })), apiScoreInfo && (_jsxs(Text, { color: colors.white, children: [_jsx(Text, { bold: true, children: "API Quality: " }), _jsx(Text, { color: apiScoreInfo.color, bold: true, children: apiScoreInfo.label }), _jsxs(Text, { dimColor: true, children: [" (", apiScoreInfo.score.toFixed(1), "/10)"] })] }))] })) : showScore && (localScoreInfo || apiScoreInfo) ? ((() => {
292
- const scoreInfo = localScoreInfo || apiScoreInfo;
293
- if (!scoreInfo)
294
- return null;
295
- return (_jsxs(Text, { color: colors.white, children: [_jsxs(Text, { bold: true, children: ["Quality For You", ' ', isLocalTab || (model.model.local && !model.model.api)
296
- ? 'Locally'
297
- : 'via API', ":", ' '] }), _jsx(Text, { color: scoreInfo.color, bold: true, children: scoreInfo.label }), _jsxs(Text, { dimColor: true, children: [" (", scoreInfo.score.toFixed(1), "/10)"] })] }));
298
- })()) : null] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.success, bold: true, children: "Strengths:" }), model.recommendation.split('\n').map((line, i) => (_jsx(Text, { color: colors.success, children: line }, i)))] }), weaknesses.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: colors.error, bold: true, children: "Weaknesses:" }), weaknesses.map((line, i) => (_jsxs(Text, { color: colors.error, children: ["\u2022 ", line] }, i)))] }))] })] }));
299
- }
300
- // Export the display component for use in app.tsx
301
- export { RecommendationsDisplay };
302
- export const recommendationsCommand = {
303
- name: 'recommendations',
304
- description: 'Get AI model recommendations based on your system',
305
- handler: (_args, _messages, _metadata) => {
306
- // This command is handled specially in app.tsx
307
- // This handler exists only for registration purposes
308
- return Promise.resolve(React.createElement(React.Fragment));
309
- },
310
- };
311
- //# sourceMappingURL=recommendations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../source/commands/recommendations.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from '../types/index.js';
2
- export declare const streamingCommand: Command;
3
- //# sourceMappingURL=streaming.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../source/commands/streaming.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAiBtC,eAAO,MAAM,gBAAgB,EAAE,OAgB9B,CAAC"}
@@ -1,23 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React from 'react';
3
- import InfoMessage from '../components/info-message.js';
4
- import { isStreamingEnabled, setStreamingEnabled } from '../config/preferences.js';
5
- import { Box } from 'ink';
6
- function StreamingToggle({ enabled }) {
7
- return (_jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(InfoMessage, { hideBox: true, message: `Response streaming ${enabled ? 'enabled' : 'disabled'}.` }) }));
8
- }
9
- export const streamingCommand = {
10
- name: 'streaming',
11
- description: 'Toggle response streaming on/off',
12
- handler: (_args) => {
13
- // Toggle the current streaming setting
14
- const currentSetting = isStreamingEnabled();
15
- const newSetting = !currentSetting;
16
- setStreamingEnabled(newSetting);
17
- return Promise.resolve(React.createElement(StreamingToggle, {
18
- enabled: newSetting,
19
- key: `streaming-${Date.now()}`,
20
- }));
21
- },
22
- };
23
- //# sourceMappingURL=streaming.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../source/commands/streaming.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,SAAS,eAAe,CAAC,EAAC,OAAO,EAAqB;IACrD,OAAO,CACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACjC,KAAC,WAAW,IACX,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,sBAAsB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,GACjE,GACG,CACN,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACxC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;QAC5B,uCAAuC;QACvC,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC;QACnC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEhC,OAAO,OAAO,CAAC,OAAO,CACrB,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE;YACpC,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE;SAC9B,CAAC,CACF,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("react").NamedExoticComponent<object>;
2
- export default _default;
3
- //# sourceMappingURL=thinking-indicator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thinking-indicator.d.ts","sourceRoot":"","sources":["../../source/components/thinking-indicator.tsx"],"names":[],"mappings":";AAqCA,wBAmDG"}
@@ -1,69 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { memo, useState, useEffect, useRef } from 'react';
3
- import { Box, Text } from 'ink';
4
- import { useTheme } from '../hooks/useTheme.js';
5
- const THINKING_WORDS = [
6
- 'Thinking',
7
- 'Processing',
8
- 'Analyzing',
9
- 'Contemplating',
10
- 'Pondering',
11
- 'Computing',
12
- 'Reasoning',
13
- 'Considering',
14
- 'Evaluating',
15
- 'Deliberating',
16
- 'Reflecting',
17
- 'Cogitating',
18
- 'Calculating',
19
- 'Strategizing',
20
- 'Synthesizing',
21
- 'Brainstorming',
22
- 'Hypothesizing',
23
- 'Deducing',
24
- 'Inferring',
25
- 'Conceptualizing',
26
- 'Formulating',
27
- 'Investigating',
28
- 'Examining',
29
- 'Interpreting',
30
- 'Deciphering',
31
- 'Solving',
32
- 'Exploring',
33
- 'Assessing',
34
- 'Ruminating',
35
- 'Meditating',
36
- ];
37
- export default memo(function ThinkingIndicator() {
38
- const { colors } = useTheme();
39
- const [elapsedSeconds, setElapsedSeconds] = useState(0);
40
- const [wordIndex, setWordIndex] = useState(0);
41
- const startTimeRef = useRef(0);
42
- useEffect(() => {
43
- startTimeRef.current = Date.now();
44
- // eslint-disable-next-line react-hooks/set-state-in-effect -- Initialization on mount is intentional
45
- setElapsedSeconds(0);
46
- }, []);
47
- useEffect(() => {
48
- const timer = setInterval(() => {
49
- const currentTime = Date.now();
50
- const elapsed = Math.floor((currentTime - startTimeRef.current) / 1000);
51
- setElapsedSeconds(elapsed);
52
- }, 1000);
53
- return () => {
54
- clearInterval(timer);
55
- };
56
- }, []);
57
- useEffect(() => {
58
- const wordTimer = setInterval(() => {
59
- setWordIndex(Math.floor(Math.random() * THINKING_WORDS.length));
60
- }, 3000);
61
- return () => {
62
- clearInterval(wordTimer);
63
- };
64
- }, []);
65
- // Cycle through 1-3 dots based on elapsed seconds
66
- const dots = '.'.repeat((elapsedSeconds % 4) + 1);
67
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { flexWrap: "wrap", children: [_jsxs(Text, { color: colors.primary, bold: true, italic: true, children: [THINKING_WORDS[wordIndex], dots, ' '] }), _jsxs(Text, { color: colors.white, children: [elapsedSeconds, "s"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.secondary, children: "Press Escape to cancel" }) })] }));
68
- });
69
- //# sourceMappingURL=thinking-indicator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thinking-indicator.js","sourceRoot":"","sources":["../../source/components/thinking-indicator.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { ModelEntry } from '../types/index.js';
2
- export declare class ModelDatabase {
3
- private static instance;
4
- static getInstance(): ModelDatabase;
5
- getAllModels(): ModelEntry[];
6
- }
7
- export declare const modelDatabase: ModelDatabase;
8
- //# sourceMappingURL=model-database.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-database.d.ts","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAqgBzC,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAEvC,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,YAAY,IAAI,UAAU,EAAE;CAG5B;AAED,eAAO,MAAM,aAAa,eAA8B,CAAC"}