@nanocollective/nanocoder 1.17.3 → 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.
- package/README.md +2 -5
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
- package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
- package/dist/ai-sdk-client-empty-message.spec.js +124 -0
- package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
- package/dist/ai-sdk-client.d.ts +18 -2
- package/dist/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client.js +159 -122
- package/dist/ai-sdk-client.js.map +1 -1
- package/dist/app/utils/appUtils.js +3 -3
- package/dist/app/utils/appUtils.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +22 -11
- package/dist/app.js.map +1 -1
- package/dist/commands/debugging.d.ts +3 -0
- package/dist/commands/debugging.d.ts.map +1 -0
- package/dist/commands/debugging.js +23 -0
- package/dist/commands/debugging.js.map +1 -0
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/model-database.d.ts +8 -0
- package/dist/commands/model-database.d.ts.map +1 -0
- package/dist/commands/model-database.js +193 -0
- package/dist/commands/model-database.js.map +1 -0
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +1 -1
- package/dist/commands/usage.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +3 -2
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/status.d.ts +3 -0
- package/dist/components/status.d.ts.map +1 -1
- package/dist/components/status.js +24 -3
- package/dist/components/status.js.map +1 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +2 -1
- package/dist/components/user-input.js.map +1 -1
- package/dist/config/preferences.d.ts +2 -2
- package/dist/config/preferences.js +5 -5
- package/dist/config/preferences.js.map +1 -1
- package/dist/context/mode-context.d.ts +12 -0
- package/dist/context/mode-context.d.ts.map +1 -0
- package/dist/context/mode-context.js +21 -0
- package/dist/context/mode-context.js.map +1 -0
- package/dist/context/mode-context.spec.d.ts +2 -0
- package/dist/context/mode-context.spec.d.ts.map +1 -0
- package/dist/context/mode-context.spec.js +61 -0
- package/dist/context/mode-context.spec.js.map +1 -0
- package/dist/hooks/useAppInitialization.d.ts +4 -2
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +101 -26
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +7 -5
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +11 -7
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts +2 -2
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +186 -111
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +4 -4
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +9 -9
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +16 -6
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/message-handler.js +1 -1
- package/dist/message-handler.js.map +1 -1
- package/dist/model-database/database-engine.d.ts +25 -0
- package/dist/model-database/database-engine.d.ts.map +1 -0
- package/dist/model-database/database-engine.js +37 -0
- package/dist/model-database/database-engine.js.map +1 -0
- package/dist/model-database/database-engine.spec.d.ts +2 -0
- package/dist/model-database/database-engine.spec.d.ts.map +1 -0
- package/dist/model-database/database-engine.spec.js +413 -0
- package/dist/model-database/database-engine.spec.js.map +1 -0
- package/dist/model-database/model-database.d.ts +30 -0
- package/dist/model-database/model-database.d.ts.map +1 -0
- package/dist/model-database/model-database.js +82 -0
- package/dist/model-database/model-database.js.map +1 -0
- package/dist/model-database/model-database.spec.d.ts +2 -0
- package/dist/model-database/model-database.spec.d.ts.map +1 -0
- package/dist/model-database/model-database.spec.js +322 -0
- package/dist/model-database/model-database.spec.js.map +1 -0
- package/dist/model-database/model-engine.d.ts +25 -0
- package/dist/model-database/model-engine.d.ts.map +1 -0
- package/dist/model-database/model-engine.js +49 -0
- package/dist/model-database/model-engine.js.map +1 -0
- package/dist/model-database/model-engine.spec.d.ts +2 -0
- package/dist/model-database/model-engine.spec.d.ts.map +1 -0
- package/dist/model-database/model-engine.spec.js +381 -0
- package/dist/model-database/model-engine.spec.js.map +1 -0
- package/dist/model-database/model-fetcher.d.ts +14 -0
- package/dist/model-database/model-fetcher.d.ts.map +1 -0
- package/dist/model-database/model-fetcher.js +248 -0
- package/dist/model-database/model-fetcher.js.map +1 -0
- package/dist/model-database/model-fetcher.spec.d.ts +2 -0
- package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
- package/dist/model-database/model-fetcher.spec.js +498 -0
- package/dist/model-database/model-fetcher.spec.js.map +1 -0
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +8 -0
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/tool-calling/json-parser.d.ts.map +1 -1
- package/dist/tool-calling/json-parser.js +10 -4
- package/dist/tool-calling/json-parser.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +37 -9
- package/dist/tool-calling/tool-parser.js.map +1 -1
- package/dist/tool-calling/tool-parser.spec.js +79 -1
- package/dist/tool-calling/tool-parser.spec.js.map +1 -1
- package/dist/tool-calling/xml-parser.d.ts.map +1 -1
- package/dist/tool-calling/xml-parser.js +21 -23
- package/dist/tool-calling/xml-parser.js.map +1 -1
- package/dist/tool-calling/xml-parser.spec.js +23 -3
- package/dist/tool-calling/xml-parser.spec.js.map +1 -1
- package/dist/tools/create-file.d.ts +24 -2
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +14 -10
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts +18 -2
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +14 -9
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/execute-bash.d.ts +2 -2
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +10 -9
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/execute-function.spec.d.ts +2 -0
- package/dist/tools/execute-function.spec.d.ts.map +1 -0
- package/dist/tools/execute-function.spec.js +141 -0
- package/dist/tools/execute-function.spec.js.map +1 -0
- package/dist/tools/fetch-url.d.ts +16 -2
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +10 -10
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/find-files.d.ts +18 -2
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +7 -5
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/index.d.ts +2 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +30 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts +18 -2
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +14 -9
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
- package/dist/tools/lsp-get-diagnostics.js +8 -6
- package/dist/tools/lsp-get-diagnostics.js.map +1 -1
- package/dist/tools/needs-approval.spec.d.ts +2 -0
- package/dist/tools/needs-approval.spec.d.ts.map +1 -0
- package/dist/tools/needs-approval.spec.js +308 -0
- package/dist/tools/needs-approval.spec.js.map +1 -0
- package/dist/tools/read-file.d.ts +2 -2
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +10 -12
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/replace-lines.d.ts +19 -2
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +14 -9
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts +20 -2
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +11 -8
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/web-search.d.ts +2 -2
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +10 -10
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/app.d.ts +1 -1
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/core-connection-status.spec.d.ts +2 -0
- package/dist/types/core-connection-status.spec.d.ts.map +1 -0
- package/dist/types/core-connection-status.spec.js +52 -0
- package/dist/types/core-connection-status.spec.js.map +1 -0
- package/dist/types/core.d.ts +33 -28
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/system.d.ts +5 -30
- package/dist/types/system.d.ts.map +1 -1
- package/dist/utils/prompt-processor.d.ts +2 -3
- package/dist/utils/prompt-processor.d.ts.map +1 -1
- package/dist/utils/prompt-processor.js +2 -50
- package/dist/utils/prompt-processor.js.map +1 -1
- package/dist/wizard/templates/provider-templates.js +2 -2
- package/dist/wizard/templates/provider-templates.js.map +1 -1
- package/package.json +6 -5
- package/source/app/prompts/main-prompt.md +29 -96
- package/dist/commands/recommendations.d.ts +0 -8
- package/dist/commands/recommendations.d.ts.map +0 -1
- package/dist/commands/recommendations.js +0 -311
- package/dist/commands/recommendations.js.map +0 -1
- package/dist/commands/streaming.d.ts +0 -3
- package/dist/commands/streaming.d.ts.map +0 -1
- package/dist/commands/streaming.js +0 -23
- package/dist/commands/streaming.js.map +0 -1
- package/dist/components/thinking-indicator.d.ts +0 -3
- package/dist/components/thinking-indicator.d.ts.map +0 -1
- package/dist/components/thinking-indicator.js +0 -69
- package/dist/components/thinking-indicator.js.map +0 -1
- package/dist/recommendations/model-database.d.ts +0 -8
- package/dist/recommendations/model-database.d.ts.map +0 -1
- package/dist/recommendations/model-database.js +0 -514
- package/dist/recommendations/model-database.js.map +0 -1
- package/dist/recommendations/model-engine.d.ts +0 -16
- package/dist/recommendations/model-engine.d.ts.map +0 -1
- package/dist/recommendations/model-engine.js +0 -185
- package/dist/recommendations/model-engine.js.map +0 -1
- package/dist/recommendations/recommendation-engine.d.ts +0 -39
- package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
- package/dist/recommendations/recommendation-engine.js +0 -144
- package/dist/recommendations/recommendation-engine.js.map +0 -1
- package/dist/system/detector.d.ts +0 -18
- package/dist/system/detector.d.ts.map +0 -1
- package/dist/system/detector.js +0 -140
- package/dist/system/detector.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-templates.js","sourceRoot":"","sources":["../../../source/wizard/templates/provider-templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider-templates.js","sourceRoot":"","sources":["../../../source/wizard/templates/provider-templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nanocollective/nanocoder",
|
|
3
3
|
"main": "dist/cli.js",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.18.0",
|
|
5
5
|
"description": "A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"cli",
|
|
@@ -54,12 +54,12 @@
|
|
|
54
54
|
"assets/nanocoder-vscode.vsix"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@ai-sdk/openai-compatible": "
|
|
57
|
+
"@ai-sdk/openai-compatible": "2.0.0-beta.42",
|
|
58
58
|
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
59
59
|
"@mishieck/ink-titled-box": "^0.3.0",
|
|
60
60
|
"@modelcontextprotocol/sdk": "^1.17.3",
|
|
61
61
|
"@nanocollective/get-md": "^1.0.1",
|
|
62
|
-
"ai": "
|
|
62
|
+
"ai": "6.0.0-beta.130",
|
|
63
63
|
"cheerio": "^1.1.2",
|
|
64
64
|
"cli-highlight": "^2.1.11",
|
|
65
65
|
"cli-table3": "^0.6.5",
|
|
@@ -74,7 +74,6 @@
|
|
|
74
74
|
"ink-text-input": "^6.0.0",
|
|
75
75
|
"llama-tokenizer-js": "^1.2.2",
|
|
76
76
|
"react": "^19.0.0",
|
|
77
|
-
"systeminformation": "^5.27.10",
|
|
78
77
|
"tiktoken": "^1.0.22",
|
|
79
78
|
"undici": "^7.16.0",
|
|
80
79
|
"ws": "^8.18.0",
|
|
@@ -121,7 +120,9 @@
|
|
|
121
120
|
"workerThreads": false,
|
|
122
121
|
"serial": true,
|
|
123
122
|
"environmentVariables": {
|
|
124
|
-
"NODE_ENV": "test"
|
|
123
|
+
"NODE_ENV": "test",
|
|
124
|
+
"LC_ALL": "en-US.UTF-8",
|
|
125
|
+
"LANG": "en-US.UTF-8"
|
|
125
126
|
}
|
|
126
127
|
},
|
|
127
128
|
"prettier": "@vdemedes/prettier-config"
|
|
@@ -42,7 +42,6 @@ For more complex tasks, work through them iteratively using the following approa
|
|
|
42
42
|
- Consider the file structure and project context to gain insights
|
|
43
43
|
- Determine which tool is most relevant for the current step
|
|
44
44
|
- Check if all required parameters are provided or can be reasonably inferred
|
|
45
|
-
- If required parameters are missing, ask the user using the ask_followup_question tool
|
|
46
45
|
- DO NOT invoke tools with placeholder or guessed values for missing parameters
|
|
47
46
|
4. **Once you've completed the user's task**, present the result clearly. You may provide a CLI command to showcase the result when appropriate.
|
|
48
47
|
5. **If the user provides feedback**, use it to make improvements and try again. But DO NOT continue in pointless back and forth conversations - don't end your responses with questions or offers for further assistance.
|
|
@@ -56,33 +55,21 @@ You have access to tools that help you accomplish tasks. You must only use the p
|
|
|
56
55
|
## Tool Use Principles
|
|
57
56
|
|
|
58
57
|
- **One tool at a time**: Use tools sequentially, with each use informed by the result of the previous tool use
|
|
59
|
-
- **Wait for confirmation**: ALWAYS wait for user confirmation after each tool use before proceeding
|
|
60
58
|
- **Never assume success**: Each step must be informed by the previous step's actual result
|
|
61
59
|
- **Do not mention tool names**: When speaking to the user, describe what you're doing, not which tool you're using (e.g., "I will edit your file" not "I need to use the code tool to edit your file")
|
|
62
|
-
- **Parallel execution**: When multiple independent actions are needed and all commands are likely to succeed, you may execute them in parallel
|
|
63
60
|
- **Sequential execution**: When actions depend on each other, execute them sequentially
|
|
64
61
|
|
|
65
62
|
## Tool Call Format
|
|
66
63
|
|
|
67
|
-
|
|
64
|
+
Always use native tool calling if you support tools.
|
|
68
65
|
|
|
69
|
-
|
|
70
|
-
<tool_name>
|
|
71
|
-
<param1>value1</param1>
|
|
72
|
-
<param2>value2</param2>
|
|
73
|
-
</tool_name>
|
|
74
|
-
```
|
|
66
|
+
CRITICAL: Do NOT call tools in your messages or use these incorrect formats:
|
|
75
67
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<param2>value2</param2>
|
|
82
|
-
</mcp_tool_name>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
IMPORTANT: Always use the exact tool names as provided. Use XML tags with parameter names as shown above.
|
|
68
|
+
- `[tool_use: tool_name]`
|
|
69
|
+
- `[Tool: tool_name]`
|
|
70
|
+
- `<function=tool_name>`
|
|
71
|
+
- `{"name": "tool_name", ...}`
|
|
72
|
+
- `<tool_name>`
|
|
86
73
|
|
|
87
74
|
## Tool Continuation Guidelines
|
|
88
75
|
|
|
@@ -108,12 +95,6 @@ Examples of proper continuation:
|
|
|
108
95
|
- After making changes → verify the changes and complete remaining work
|
|
109
96
|
- After gathering information → use that information to proceed with the solution
|
|
110
97
|
|
|
111
|
-
Example workflow:
|
|
112
|
-
|
|
113
|
-
1. "I need to [original task]. First, I'll [tool action] to [reason]."
|
|
114
|
-
2. "The [tool] results show [findings]. Based on this, I'll now [next action]."
|
|
115
|
-
3. "Now I need to [next step] to complete [original task goal]."
|
|
116
|
-
|
|
117
98
|
====
|
|
118
99
|
|
|
119
100
|
CONTEXT UTILIZATION
|
|
@@ -146,6 +127,23 @@ Use these tools in combination for comprehensive analysis:
|
|
|
146
127
|
|
|
147
128
|
**Example workflow**: When asked to make edits or improvements, you might use find_files to locate relevant files, use search_file_contents to find where specific code is used, use read_file to check the target file (gets metadata if large), read_file with line ranges to examine contents, analyze and suggest improvements, then use the appropriate editing tool (insert_lines, replace_lines, or delete_lines) with the line numbers from read_file. If refactoring affects other parts of the codebase, use search_file_contents to ensure all necessary updates are made.
|
|
148
129
|
|
|
130
|
+
## Diagnostics
|
|
131
|
+
|
|
132
|
+
Use **lsp_get_diagnostics** to check for type errors, linting issues, and other problems:
|
|
133
|
+
|
|
134
|
+
- Call with a file path to get diagnostics for a specific file
|
|
135
|
+
- Call without arguments to get diagnostics for all open documents
|
|
136
|
+
- Use after making code changes to verify you haven't introduced errors
|
|
137
|
+
- Use before starting work to understand existing issues in the codebase
|
|
138
|
+
- Works with VS Code when connected, or falls back to local language servers
|
|
139
|
+
|
|
140
|
+
## Web Resources
|
|
141
|
+
|
|
142
|
+
Use **web_search** and **fetch_url** to find information beyond the local codebase:
|
|
143
|
+
|
|
144
|
+
- **web_search**: Search the web for documentation, error messages, or solutions. Returns titles, URLs, and snippets from search results. Use when you need to look up APIs, find solutions to errors, or research unfamiliar technologies.
|
|
145
|
+
- **fetch_url**: Fetch a specific URL and convert it to markdown. Use to read documentation pages, API references, or any web content the user points you to. Content is automatically cleaned and converted to a readable format.
|
|
146
|
+
|
|
149
147
|
====
|
|
150
148
|
|
|
151
149
|
FILE EDITING
|
|
@@ -377,7 +375,7 @@ Before executing commands, consider:
|
|
|
377
375
|
|
|
378
376
|
- If you don't see expected output, assume the terminal executed successfully and proceed
|
|
379
377
|
- The user's terminal may be unable to stream output back properly
|
|
380
|
-
- If you absolutely need to see actual terminal output, ask the user to copy and paste it
|
|
378
|
+
- If you absolutely need to see actual terminal output, ask the user to copy and paste it.
|
|
381
379
|
|
|
382
380
|
## Command Execution Best Practices
|
|
383
381
|
|
|
@@ -426,8 +424,8 @@ Coding is one of the most important use cases for you as Nanocoder. Follow these
|
|
|
426
424
|
## Tool Selection for Coding
|
|
427
425
|
|
|
428
426
|
- Use `create_file` to create new code files
|
|
429
|
-
- Use `
|
|
430
|
-
- Use `
|
|
427
|
+
- Use `replace_lines` for targeted code edits
|
|
428
|
+
- Use `replace_lines` for complete file rewrites when necessary (can replace entire content)
|
|
431
429
|
- Use `read_file` to understand code before editing
|
|
432
430
|
|
|
433
431
|
====
|
|
@@ -476,7 +474,7 @@ Follow this systematic approach for all tasks:
|
|
|
476
474
|
|
|
477
475
|
QUESTION ASKING GUIDELINES
|
|
478
476
|
|
|
479
|
-
|
|
477
|
+
Ask the user questions judiciously to maintain a balance between gathering necessary information and avoiding excessive back-and-forth.
|
|
480
478
|
|
|
481
479
|
## When to Ask Questions
|
|
482
480
|
|
|
@@ -494,7 +492,6 @@ Use the ask_followup_question tool judiciously to maintain a balance between gat
|
|
|
494
492
|
|
|
495
493
|
## How to Ask Questions
|
|
496
494
|
|
|
497
|
-
- Use the ask_followup_question tool (this is the ONLY way to ask questions)
|
|
498
495
|
- Be clear and specific about what information you need
|
|
499
496
|
- Keep questions concise
|
|
500
497
|
- Explain why the information is needed if not obvious
|
|
@@ -526,7 +523,7 @@ RULES AND CONSTRAINTS
|
|
|
526
523
|
|
|
527
524
|
## File Operations
|
|
528
525
|
|
|
529
|
-
- ALWAYS use dedicated file tools (read_file, create_file,
|
|
526
|
+
- ALWAYS use dedicated file tools (read_file, create_file, replace_lines, delete_lines, insert_lines)
|
|
530
527
|
- NEVER use terminal commands for file operations
|
|
531
528
|
- Read files before editing to understand current state (unless user provided contents)
|
|
532
529
|
- Consider auto-formatting when making subsequent edits
|
|
@@ -569,67 +566,3 @@ SYSTEM INFORMATION
|
|
|
569
566
|
System information will be dynamically inserted here.
|
|
570
567
|
|
|
571
568
|
<!-- DYNAMIC_SYSTEM_INFO_END -->
|
|
572
|
-
|
|
573
|
-
====
|
|
574
|
-
|
|
575
|
-
AVAILABLE TOOLS SUMMARY
|
|
576
|
-
|
|
577
|
-
Here's a comprehensive overview of all available tools and when to use them:
|
|
578
|
-
|
|
579
|
-
## File Reading
|
|
580
|
-
|
|
581
|
-
- **read_file**: Read files with progressive disclosure. Files >300 lines return metadata first, then call again with start_line/end_line to read content
|
|
582
|
-
|
|
583
|
-
## File Creation
|
|
584
|
-
|
|
585
|
-
- **create_file**: Create new files (fails if file already exists)
|
|
586
|
-
|
|
587
|
-
## File Editing
|
|
588
|
-
|
|
589
|
-
- **insert_lines**: Add new lines at a specific line number
|
|
590
|
-
- **replace_lines**: Replace a range of lines with new content
|
|
591
|
-
- **delete_lines**: Remove a range of lines from a file
|
|
592
|
-
|
|
593
|
-
## File & Code Search
|
|
594
|
-
|
|
595
|
-
- **search_file_contents**: Search for text or code INSIDE file contents
|
|
596
|
-
|
|
597
|
-
- Use this to find where specific code, functions, variables, or text appears in the codebase
|
|
598
|
-
- Example: `{query: "handleSubmit"}` - finds files containing "handleSubmit" and shows file:line matches with content
|
|
599
|
-
- Returns file paths with line numbers and matching content
|
|
600
|
-
- Case-insensitive by default, can be made case-sensitive with `caseSensitive: true`
|
|
601
|
-
|
|
602
|
-
- **find_files**: Find files and directories by path pattern or name
|
|
603
|
-
- Use glob patterns to find files and directories by their path or name (not content)
|
|
604
|
-
- Examples: `{pattern: "*.tsx"}` finds all .tsx files, `{pattern: "src/**/*.ts"}` finds all .ts files in src/, `{pattern: "components/**"}` finds all files and directories in components/
|
|
605
|
-
- Returns list of matching file and directory paths
|
|
606
|
-
- Supports brace expansion: `{pattern: "*.{ts,tsx}"}`
|
|
607
|
-
|
|
608
|
-
## Terminal
|
|
609
|
-
|
|
610
|
-
- **execute_bash**: Run bash commands to accomplish tasks
|
|
611
|
-
|
|
612
|
-
## Web & Documentation
|
|
613
|
-
|
|
614
|
-
- **web_search**: Search the web using Brave Search, returns titles, URLs, and snippets
|
|
615
|
-
- **fetch_url**: Fetch and convert any URL to clean markdown (useful for reading docs)
|
|
616
|
-
|
|
617
|
-
## Diagnostics
|
|
618
|
-
|
|
619
|
-
- **get_diagnostics**: Get errors and warnings for a file or project from the language server
|
|
620
|
-
- Returns type errors, linting issues, and other diagnostics
|
|
621
|
-
- Use this to check for problems before or after making code changes
|
|
622
|
-
|
|
623
|
-
## MCP Tools
|
|
624
|
-
|
|
625
|
-
Additional tools may be available from connected MCP servers. These will be dynamically available based on your configuration.
|
|
626
|
-
|
|
627
|
-
====
|
|
628
|
-
|
|
629
|
-
TOOL DOCUMENTATION
|
|
630
|
-
|
|
631
|
-
<!-- DYNAMIC_TOOLS_SECTION_START -->
|
|
632
|
-
|
|
633
|
-
Available tools and their usage will be dynamically inserted here based on the current session configuration.
|
|
634
|
-
|
|
635
|
-
<!-- DYNAMIC_TOOLS_SECTION_END -->
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Command } from '../types/index.js';
|
|
2
|
-
interface RecommendationsDisplayProps {
|
|
3
|
-
onCancel?: () => void;
|
|
4
|
-
}
|
|
5
|
-
declare function RecommendationsDisplay({ onCancel }: RecommendationsDisplayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
-
export { RecommendationsDisplay };
|
|
7
|
-
export declare const recommendationsCommand: Command;
|
|
8
|
-
//# sourceMappingURL=recommendations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../source/commands/recommendations.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAA6B,MAAM,eAAe,CAAC;AASlE,UAAU,2BAA2B;IACpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,iBAAS,sBAAsB,CAAC,EAAC,QAAQ,EAAC,EAAE,2BAA2B,kDA2QtE;AAmbD,OAAO,EAAC,sBAAsB,EAAC,CAAC;AAEhC,eAAO,MAAM,sBAAsB,EAAE,OAQpC,CAAC"}
|
|
@@ -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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"}
|