@appkit/llamacpp-cli 1.0.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 (136) hide show
  1. package/.versionrc.json +16 -0
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +474 -0
  4. package/bin/llamacpp +26 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +196 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/delete.d.ts +2 -0
  10. package/dist/commands/delete.d.ts.map +1 -0
  11. package/dist/commands/delete.js +104 -0
  12. package/dist/commands/delete.js.map +1 -0
  13. package/dist/commands/list.d.ts +2 -0
  14. package/dist/commands/list.d.ts.map +1 -0
  15. package/dist/commands/list.js +37 -0
  16. package/dist/commands/list.js.map +1 -0
  17. package/dist/commands/logs.d.ts +8 -0
  18. package/dist/commands/logs.d.ts.map +1 -0
  19. package/dist/commands/logs.js +57 -0
  20. package/dist/commands/logs.js.map +1 -0
  21. package/dist/commands/ps.d.ts +2 -0
  22. package/dist/commands/ps.d.ts.map +1 -0
  23. package/dist/commands/ps.js +72 -0
  24. package/dist/commands/ps.js.map +1 -0
  25. package/dist/commands/pull.d.ts +6 -0
  26. package/dist/commands/pull.d.ts.map +1 -0
  27. package/dist/commands/pull.js +36 -0
  28. package/dist/commands/pull.js.map +1 -0
  29. package/dist/commands/rm.d.ts +2 -0
  30. package/dist/commands/rm.d.ts.map +1 -0
  31. package/dist/commands/rm.js +134 -0
  32. package/dist/commands/rm.js.map +1 -0
  33. package/dist/commands/run.d.ts +2 -0
  34. package/dist/commands/run.d.ts.map +1 -0
  35. package/dist/commands/run.js +198 -0
  36. package/dist/commands/run.js.map +1 -0
  37. package/dist/commands/search.d.ts +7 -0
  38. package/dist/commands/search.d.ts.map +1 -0
  39. package/dist/commands/search.js +93 -0
  40. package/dist/commands/search.js.map +1 -0
  41. package/dist/commands/show.d.ts +6 -0
  42. package/dist/commands/show.d.ts.map +1 -0
  43. package/dist/commands/show.js +196 -0
  44. package/dist/commands/show.js.map +1 -0
  45. package/dist/commands/start.d.ts +9 -0
  46. package/dist/commands/start.d.ts.map +1 -0
  47. package/dist/commands/start.js +150 -0
  48. package/dist/commands/start.js.map +1 -0
  49. package/dist/commands/stop.d.ts +2 -0
  50. package/dist/commands/stop.d.ts.map +1 -0
  51. package/dist/commands/stop.js +39 -0
  52. package/dist/commands/stop.js.map +1 -0
  53. package/dist/lib/config-generator.d.ts +30 -0
  54. package/dist/lib/config-generator.d.ts.map +1 -0
  55. package/dist/lib/config-generator.js +125 -0
  56. package/dist/lib/config-generator.js.map +1 -0
  57. package/dist/lib/launchctl-manager.d.ts +55 -0
  58. package/dist/lib/launchctl-manager.d.ts.map +1 -0
  59. package/dist/lib/launchctl-manager.js +227 -0
  60. package/dist/lib/launchctl-manager.js.map +1 -0
  61. package/dist/lib/model-downloader.d.ts +44 -0
  62. package/dist/lib/model-downloader.d.ts.map +1 -0
  63. package/dist/lib/model-downloader.js +248 -0
  64. package/dist/lib/model-downloader.js.map +1 -0
  65. package/dist/lib/model-scanner.d.ts +31 -0
  66. package/dist/lib/model-scanner.d.ts.map +1 -0
  67. package/dist/lib/model-scanner.js +145 -0
  68. package/dist/lib/model-scanner.js.map +1 -0
  69. package/dist/lib/model-search.d.ts +29 -0
  70. package/dist/lib/model-search.d.ts.map +1 -0
  71. package/dist/lib/model-search.js +131 -0
  72. package/dist/lib/model-search.js.map +1 -0
  73. package/dist/lib/port-manager.d.ts +26 -0
  74. package/dist/lib/port-manager.d.ts.map +1 -0
  75. package/dist/lib/port-manager.js +75 -0
  76. package/dist/lib/port-manager.js.map +1 -0
  77. package/dist/lib/state-manager.d.ts +59 -0
  78. package/dist/lib/state-manager.d.ts.map +1 -0
  79. package/dist/lib/state-manager.js +178 -0
  80. package/dist/lib/state-manager.js.map +1 -0
  81. package/dist/lib/status-checker.d.ts +28 -0
  82. package/dist/lib/status-checker.d.ts.map +1 -0
  83. package/dist/lib/status-checker.js +99 -0
  84. package/dist/lib/status-checker.js.map +1 -0
  85. package/dist/types/global-config.d.ts +16 -0
  86. package/dist/types/global-config.d.ts.map +1 -0
  87. package/dist/types/global-config.js +18 -0
  88. package/dist/types/global-config.js.map +1 -0
  89. package/dist/types/model-info.d.ts +9 -0
  90. package/dist/types/model-info.d.ts.map +1 -0
  91. package/dist/types/model-info.js +3 -0
  92. package/dist/types/model-info.js.map +1 -0
  93. package/dist/types/server-config.d.ts +27 -0
  94. package/dist/types/server-config.d.ts.map +1 -0
  95. package/dist/types/server-config.js +15 -0
  96. package/dist/types/server-config.js.map +1 -0
  97. package/dist/utils/file-utils.d.ts +49 -0
  98. package/dist/utils/file-utils.d.ts.map +1 -0
  99. package/dist/utils/file-utils.js +144 -0
  100. package/dist/utils/file-utils.js.map +1 -0
  101. package/dist/utils/format-utils.d.ts +29 -0
  102. package/dist/utils/format-utils.d.ts.map +1 -0
  103. package/dist/utils/format-utils.js +82 -0
  104. package/dist/utils/format-utils.js.map +1 -0
  105. package/dist/utils/process-utils.d.ts +27 -0
  106. package/dist/utils/process-utils.d.ts.map +1 -0
  107. package/dist/utils/process-utils.js +66 -0
  108. package/dist/utils/process-utils.js.map +1 -0
  109. package/package.json +56 -0
  110. package/src/cli.ts +195 -0
  111. package/src/commands/delete.ts +74 -0
  112. package/src/commands/list.ts +37 -0
  113. package/src/commands/logs.ts +61 -0
  114. package/src/commands/ps.ts +79 -0
  115. package/src/commands/pull.ts +40 -0
  116. package/src/commands/rm.ts +114 -0
  117. package/src/commands/run.ts +209 -0
  118. package/src/commands/search.ts +107 -0
  119. package/src/commands/show.ts +207 -0
  120. package/src/commands/start.ts +140 -0
  121. package/src/commands/stop.ts +39 -0
  122. package/src/lib/config-generator.ts +119 -0
  123. package/src/lib/launchctl-manager.ts +209 -0
  124. package/src/lib/model-downloader.ts +259 -0
  125. package/src/lib/model-scanner.ts +125 -0
  126. package/src/lib/model-search.ts +114 -0
  127. package/src/lib/port-manager.ts +80 -0
  128. package/src/lib/state-manager.ts +177 -0
  129. package/src/lib/status-checker.ts +113 -0
  130. package/src/types/global-config.ts +26 -0
  131. package/src/types/model-info.ts +8 -0
  132. package/src/types/server-config.ts +42 -0
  133. package/src/utils/file-utils.ts +106 -0
  134. package/src/utils/format-utils.ts +80 -0
  135. package/src/utils/process-utils.ts +60 -0
  136. package/tsconfig.json +20 -0
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.rmCommand = rmCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const readline = __importStar(require("readline"));
42
+ const fs = __importStar(require("fs/promises"));
43
+ const model_scanner_1 = require("../lib/model-scanner");
44
+ const state_manager_1 = require("../lib/state-manager");
45
+ const launchctl_manager_1 = require("../lib/launchctl-manager");
46
+ async function rmCommand(modelIdentifier) {
47
+ await state_manager_1.stateManager.initialize();
48
+ // 1. Resolve model path
49
+ const modelPath = await model_scanner_1.modelScanner.resolveModelPath(modelIdentifier);
50
+ if (!modelPath) {
51
+ throw new Error(`Model not found: ${modelIdentifier}\n\nRun: llamacpp ls`);
52
+ }
53
+ // 2. Check if any servers are using this model
54
+ const allServers = await state_manager_1.stateManager.getAllServers();
55
+ const serversUsingModel = allServers.filter((s) => s.modelPath === modelPath);
56
+ // 3. Confirm deletion
57
+ console.log(chalk_1.default.yellow(`⚠️ Delete model file: ${modelPath}`));
58
+ if (serversUsingModel.length > 0) {
59
+ console.log(chalk_1.default.yellow(`\n This model has ${serversUsingModel.length} server(s) configured:`));
60
+ for (const server of serversUsingModel) {
61
+ const statusColor = server.status === 'running' ? chalk_1.default.green : chalk_1.default.dim;
62
+ console.log(chalk_1.default.yellow(` - ${server.id} (${statusColor(server.status)})`));
63
+ }
64
+ console.log(chalk_1.default.yellow(`\n These servers will be removed before deleting the model.`));
65
+ }
66
+ console.log();
67
+ const confirmed = await confirmDeletion();
68
+ if (!confirmed) {
69
+ console.log(chalk_1.default.dim('Cancelled'));
70
+ return;
71
+ }
72
+ console.log();
73
+ // 4. Delete all servers using this model
74
+ if (serversUsingModel.length > 0) {
75
+ console.log(chalk_1.default.blue(`🗑️ Removing ${serversUsingModel.length} server(s)...\n`));
76
+ for (const server of serversUsingModel) {
77
+ console.log(chalk_1.default.dim(` Removing server: ${server.id}`));
78
+ // Stop server if running
79
+ if (server.status === 'running') {
80
+ try {
81
+ await launchctl_manager_1.launchctlManager.stopService(server.label);
82
+ await launchctl_manager_1.launchctlManager.waitForServiceStop(server.label, 5000);
83
+ }
84
+ catch (error) {
85
+ console.log(chalk_1.default.yellow(` ⚠️ Failed to stop server gracefully`));
86
+ }
87
+ }
88
+ // Unload service
89
+ try {
90
+ await launchctl_manager_1.launchctlManager.unloadService(server.plistPath);
91
+ }
92
+ catch (error) {
93
+ // Ignore errors if service is already unloaded
94
+ }
95
+ // Delete plist
96
+ await launchctl_manager_1.launchctlManager.deletePlist(server.plistPath);
97
+ // Delete server config
98
+ await state_manager_1.stateManager.deleteServerConfig(server.id);
99
+ console.log(chalk_1.default.dim(` ✓ Server removed`));
100
+ }
101
+ console.log();
102
+ }
103
+ // 5. Delete model file
104
+ console.log(chalk_1.default.blue(`🗑️ Deleting model file...`));
105
+ try {
106
+ await fs.unlink(modelPath);
107
+ }
108
+ catch (error) {
109
+ throw new Error(`Failed to delete model file: ${error.message}`);
110
+ }
111
+ // Success
112
+ console.log();
113
+ console.log(chalk_1.default.green('✅ Model deleted successfully'));
114
+ if (serversUsingModel.length > 0) {
115
+ console.log(chalk_1.default.dim(` Removed ${serversUsingModel.length} server(s)`));
116
+ }
117
+ console.log(chalk_1.default.dim(` Deleted: ${modelPath}`));
118
+ }
119
+ /**
120
+ * Prompt user for confirmation
121
+ */
122
+ function confirmDeletion() {
123
+ return new Promise((resolve) => {
124
+ const rl = readline.createInterface({
125
+ input: process.stdin,
126
+ output: process.stdout,
127
+ });
128
+ rl.question(chalk_1.default.yellow(" Type 'yes' to confirm: "), (answer) => {
129
+ rl.close();
130
+ resolve(answer.toLowerCase() === 'yes');
131
+ });
132
+ });
133
+ }
134
+ //# sourceMappingURL=rm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm.js","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCommand(modelIdentifier: string): Promise<void>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AA2BA,wBAAsB,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGvE"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runCommand = runCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const readline = __importStar(require("readline"));
42
+ const state_manager_1 = require("../lib/state-manager");
43
+ const start_1 = require("./start");
44
+ const status_checker_1 = require("../lib/status-checker");
45
+ async function runCommand(modelIdentifier) {
46
+ await state_manager_1.stateManager.initialize();
47
+ // 1. Find or start server
48
+ let server = await state_manager_1.stateManager.findServer(modelIdentifier);
49
+ if (!server) {
50
+ // Try to resolve as a model name and start it
51
+ console.log(chalk_1.default.blue(`🚀 No running server found. Starting ${modelIdentifier}...\n`));
52
+ try {
53
+ await (0, start_1.startCommand)(modelIdentifier, {});
54
+ server = await state_manager_1.stateManager.findServer(modelIdentifier);
55
+ if (!server) {
56
+ throw new Error('Failed to start server');
57
+ }
58
+ console.log(); // Add blank line after start output
59
+ }
60
+ catch (error) {
61
+ throw new Error(`Failed to start server: ${error.message}`);
62
+ }
63
+ }
64
+ // 2. Verify server is running
65
+ const status = await status_checker_1.statusChecker.checkServer(server);
66
+ if (!status.isRunning) {
67
+ throw new Error(`Server exists but is not running. Start it with: llamacpp start ${server.id}`);
68
+ }
69
+ // 3. Start REPL
70
+ console.log(chalk_1.default.green(`💬 Connected to ${server.modelName} (port ${server.port})`));
71
+ console.log(chalk_1.default.dim(`Type your message and press Enter. Use /exit to quit, /clear to reset history, /help for commands.\n`));
72
+ const conversationHistory = [];
73
+ const rl = readline.createInterface({
74
+ input: process.stdin,
75
+ output: process.stdout,
76
+ prompt: chalk_1.default.cyan('You: '),
77
+ });
78
+ // Handle graceful shutdown
79
+ const cleanup = () => {
80
+ rl.close();
81
+ console.log(chalk_1.default.dim('\n\nGoodbye!'));
82
+ process.exit(0);
83
+ };
84
+ process.on('SIGINT', cleanup);
85
+ process.on('SIGTERM', cleanup);
86
+ rl.prompt();
87
+ rl.on('line', async (input) => {
88
+ const line = input.trim();
89
+ // Handle special commands
90
+ if (line === '/exit' || line === '/quit') {
91
+ cleanup();
92
+ return;
93
+ }
94
+ if (line === '/clear') {
95
+ conversationHistory.length = 0;
96
+ console.log(chalk_1.default.dim('✓ Conversation history cleared\n'));
97
+ rl.prompt();
98
+ return;
99
+ }
100
+ if (line === '/help') {
101
+ console.log(chalk_1.default.bold('\nAvailable commands:'));
102
+ console.log(chalk_1.default.dim(' /exit, /quit - Exit the chat'));
103
+ console.log(chalk_1.default.dim(' /clear - Clear conversation history'));
104
+ console.log(chalk_1.default.dim(' /help - Show this help message\n'));
105
+ rl.prompt();
106
+ return;
107
+ }
108
+ if (!line) {
109
+ rl.prompt();
110
+ return;
111
+ }
112
+ // Add user message to history
113
+ conversationHistory.push({
114
+ role: 'user',
115
+ content: line,
116
+ });
117
+ // Send to API and stream response
118
+ try {
119
+ await streamChatCompletion(server, conversationHistory);
120
+ console.log(); // Blank line after response
121
+ }
122
+ catch (error) {
123
+ console.error(chalk_1.default.red(`\n❌ Error: ${error.message}\n`));
124
+ }
125
+ rl.prompt();
126
+ });
127
+ rl.on('close', () => {
128
+ cleanup();
129
+ });
130
+ }
131
+ async function streamChatCompletion(server, messages) {
132
+ const url = `http://localhost:${server.port}/v1/chat/completions`;
133
+ const response = await fetch(url, {
134
+ method: 'POST',
135
+ headers: {
136
+ 'Content-Type': 'application/json',
137
+ },
138
+ body: JSON.stringify({
139
+ model: server.modelName,
140
+ messages: messages,
141
+ stream: true,
142
+ temperature: 0.7,
143
+ }),
144
+ });
145
+ if (!response.ok) {
146
+ const errorText = await response.text();
147
+ throw new Error(`API request failed (${response.status}): ${errorText}`);
148
+ }
149
+ if (!response.body) {
150
+ throw new Error('Response body is null');
151
+ }
152
+ // Display assistant prefix
153
+ process.stdout.write(chalk_1.default.magenta('Assistant: '));
154
+ let fullResponse = '';
155
+ const reader = response.body.getReader();
156
+ const decoder = new TextDecoder();
157
+ try {
158
+ while (true) {
159
+ const { done, value } = await reader.read();
160
+ if (done)
161
+ break;
162
+ const chunk = decoder.decode(value, { stream: true });
163
+ const lines = chunk.split('\n').filter((line) => line.trim().startsWith('data:'));
164
+ for (const line of lines) {
165
+ const data = line.replace(/^data:\s*/, '').trim();
166
+ if (data === '[DONE]') {
167
+ continue;
168
+ }
169
+ if (!data) {
170
+ continue;
171
+ }
172
+ try {
173
+ const parsed = JSON.parse(data);
174
+ const content = parsed.choices[0]?.delta?.content;
175
+ if (content) {
176
+ process.stdout.write(content);
177
+ fullResponse += content;
178
+ }
179
+ }
180
+ catch (parseError) {
181
+ // Skip malformed JSON chunks
182
+ continue;
183
+ }
184
+ }
185
+ }
186
+ }
187
+ finally {
188
+ reader.releaseLock();
189
+ }
190
+ // Add assistant response to history
191
+ if (fullResponse) {
192
+ messages.push({
193
+ role: 'assistant',
194
+ content: fullResponse,
195
+ });
196
+ }
197
+ }
198
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface SearchOptions {
2
+ limit?: number;
3
+ files?: number | boolean;
4
+ }
5
+ export declare function searchCommand(query: string, options: SearchOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkExF"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.searchCommand = searchCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
9
+ const model_search_1 = require("../lib/model-search");
10
+ async function searchCommand(query, options) {
11
+ const limit = options.limit || 20;
12
+ console.log(chalk_1.default.blue(`🔍 Searching Hugging Face for: "${query}"\n`));
13
+ try {
14
+ const results = await model_search_1.modelSearch.searchModels(query, limit);
15
+ if (results.length === 0) {
16
+ console.log(chalk_1.default.yellow('No models found.'));
17
+ console.log(chalk_1.default.dim('Try a different search query or browse: https://huggingface.co/models'));
18
+ return;
19
+ }
20
+ const table = new cli_table3_1.default({
21
+ head: ['#', 'MODEL ID', 'DOWNLOADS', 'LIKES'],
22
+ colWidths: [4, 55, 12, 8],
23
+ });
24
+ for (let i = 0; i < results.length; i++) {
25
+ const model = results[i];
26
+ table.push([
27
+ chalk_1.default.dim((i + 1).toString()),
28
+ model.modelId,
29
+ model.downloads.toLocaleString(),
30
+ model.likes.toString(),
31
+ ]);
32
+ }
33
+ console.log(table.toString());
34
+ console.log(chalk_1.default.dim(`\nShowing ${results.length} results`));
35
+ console.log(chalk_1.default.dim('\nTo see files in a model:'));
36
+ console.log(chalk_1.default.dim(' llamacpp search "<query>" --files <number>'));
37
+ console.log(chalk_1.default.dim(' Example: llamacpp search "llama 3b" --files 1'));
38
+ console.log(chalk_1.default.dim('\nTo download:'));
39
+ console.log(chalk_1.default.dim(' llamacpp pull <model-id>/<file.gguf>'));
40
+ // Handle --files flag
41
+ if (options.files !== undefined && options.files !== false) {
42
+ let selectedIndex;
43
+ if (typeof options.files === 'number') {
44
+ // User specified a number: --files 1
45
+ selectedIndex = options.files - 1; // Convert to 0-based index
46
+ }
47
+ else if (results.length === 1) {
48
+ // No number specified but only one result
49
+ selectedIndex = 0;
50
+ }
51
+ else {
52
+ // Multiple results but no number specified
53
+ console.log(chalk_1.default.yellow('\n⚠️ Multiple results found. Specify which one:'));
54
+ console.log(chalk_1.default.dim(' llamacpp search "<query>" --files 1'));
55
+ return;
56
+ }
57
+ // Validate index
58
+ if (selectedIndex < 0 || selectedIndex >= results.length) {
59
+ console.log(chalk_1.default.red(`\n❌ Invalid index. Please specify a number between 1 and ${results.length}`));
60
+ return;
61
+ }
62
+ await showModelFiles(results[selectedIndex].modelId, selectedIndex + 1);
63
+ }
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Search failed: ${error.message}`);
67
+ }
68
+ }
69
+ async function showModelFiles(modelId, index) {
70
+ const indexPrefix = index ? chalk_1.default.dim(`[${index}] `) : '';
71
+ console.log(chalk_1.default.blue(`\n📦 GGUF files in ${indexPrefix}${modelId}:\n`));
72
+ try {
73
+ const files = await model_search_1.modelSearch.getModelFiles(modelId);
74
+ if (files.length === 0) {
75
+ console.log(chalk_1.default.yellow('No GGUF files found in this model.'));
76
+ return;
77
+ }
78
+ const table = new cli_table3_1.default({
79
+ head: ['FILENAME'],
80
+ colWidths: [70],
81
+ });
82
+ for (const file of files) {
83
+ table.push([file]);
84
+ }
85
+ console.log(table.toString());
86
+ console.log(chalk_1.default.dim(`\nTo download:`));
87
+ console.log(chalk_1.default.dim(` llamacpp pull ${modelId}/${files[0]}`));
88
+ }
89
+ catch (error) {
90
+ console.log(chalk_1.default.yellow(`\n⚠️ Could not fetch file list: ${error.message}`));
91
+ }
92
+ }
93
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface ShowOptions {
2
+ file?: string;
3
+ }
4
+ export declare function showCommand(identifier: string, options: ShowOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuBD,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BzF"}