@juspay/neurolink 1.5.3 → 1.9.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 (176) hide show
  1. package/CHANGELOG.md +241 -1
  2. package/README.md +113 -20
  3. package/dist/agent/direct-tools.d.ts +1203 -0
  4. package/dist/agent/direct-tools.js +387 -0
  5. package/dist/cli/commands/agent-generate.d.ts +2 -0
  6. package/dist/cli/commands/agent-generate.js +70 -0
  7. package/dist/cli/commands/config.d.ts +76 -9
  8. package/dist/cli/commands/config.js +358 -233
  9. package/dist/cli/commands/mcp.d.ts +2 -1
  10. package/dist/cli/commands/mcp.js +874 -146
  11. package/dist/cli/commands/ollama.d.ts +8 -0
  12. package/dist/cli/commands/ollama.js +333 -0
  13. package/dist/cli/index.js +591 -327
  14. package/dist/cli/utils/complete-setup.d.ts +19 -0
  15. package/dist/cli/utils/complete-setup.js +81 -0
  16. package/dist/cli/utils/env-manager.d.ts +44 -0
  17. package/dist/cli/utils/env-manager.js +226 -0
  18. package/dist/cli/utils/interactive-setup.d.ts +48 -0
  19. package/dist/cli/utils/interactive-setup.js +302 -0
  20. package/dist/core/dynamic-models.d.ts +208 -0
  21. package/dist/core/dynamic-models.js +250 -0
  22. package/dist/core/factory.d.ts +13 -6
  23. package/dist/core/factory.js +180 -50
  24. package/dist/core/types.d.ts +8 -3
  25. package/dist/core/types.js +7 -4
  26. package/dist/index.d.ts +16 -16
  27. package/dist/index.js +16 -16
  28. package/dist/lib/agent/direct-tools.d.ts +1203 -0
  29. package/dist/lib/agent/direct-tools.js +387 -0
  30. package/dist/lib/core/dynamic-models.d.ts +208 -0
  31. package/dist/lib/core/dynamic-models.js +250 -0
  32. package/dist/lib/core/factory.d.ts +13 -6
  33. package/dist/lib/core/factory.js +180 -50
  34. package/dist/lib/core/types.d.ts +8 -3
  35. package/dist/lib/core/types.js +7 -4
  36. package/dist/lib/index.d.ts +16 -16
  37. package/dist/lib/index.js +16 -16
  38. package/dist/lib/mcp/auto-discovery.d.ts +120 -0
  39. package/dist/lib/mcp/auto-discovery.js +793 -0
  40. package/dist/lib/mcp/client.d.ts +66 -0
  41. package/dist/lib/mcp/client.js +245 -0
  42. package/dist/lib/mcp/config.d.ts +31 -0
  43. package/dist/lib/mcp/config.js +74 -0
  44. package/dist/lib/mcp/context-manager.d.ts +4 -4
  45. package/dist/lib/mcp/context-manager.js +24 -18
  46. package/dist/lib/mcp/factory.d.ts +28 -11
  47. package/dist/lib/mcp/factory.js +36 -29
  48. package/dist/lib/mcp/function-calling.d.ts +51 -0
  49. package/dist/lib/mcp/function-calling.js +510 -0
  50. package/dist/lib/mcp/index.d.ts +190 -0
  51. package/dist/lib/mcp/index.js +156 -0
  52. package/dist/lib/mcp/initialize-tools.d.ts +28 -0
  53. package/dist/lib/mcp/initialize-tools.js +209 -0
  54. package/dist/lib/mcp/initialize.d.ts +17 -0
  55. package/dist/lib/mcp/initialize.js +51 -0
  56. package/dist/lib/mcp/logging.d.ts +71 -0
  57. package/dist/lib/mcp/logging.js +183 -0
  58. package/dist/lib/mcp/manager.d.ts +67 -0
  59. package/dist/lib/mcp/manager.js +176 -0
  60. package/dist/lib/mcp/neurolink-mcp-client.d.ts +96 -0
  61. package/dist/lib/mcp/neurolink-mcp-client.js +417 -0
  62. package/dist/lib/mcp/orchestrator.d.ts +3 -3
  63. package/dist/lib/mcp/orchestrator.js +46 -43
  64. package/dist/lib/mcp/registry.d.ts +2 -2
  65. package/dist/lib/mcp/registry.js +42 -33
  66. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  67. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +205 -66
  68. package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +143 -99
  69. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  70. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.js +404 -251
  71. package/dist/lib/mcp/servers/utilities/utility-server.d.ts +8 -0
  72. package/dist/lib/mcp/servers/utilities/utility-server.js +326 -0
  73. package/dist/lib/mcp/tool-integration.d.ts +67 -0
  74. package/dist/lib/mcp/tool-integration.js +179 -0
  75. package/dist/lib/mcp/unified-registry.d.ts +269 -0
  76. package/dist/lib/mcp/unified-registry.js +1411 -0
  77. package/dist/lib/neurolink.d.ts +68 -6
  78. package/dist/lib/neurolink.js +314 -42
  79. package/dist/lib/providers/agent-enhanced-provider.d.ts +59 -0
  80. package/dist/lib/providers/agent-enhanced-provider.js +242 -0
  81. package/dist/lib/providers/amazonBedrock.d.ts +3 -3
  82. package/dist/lib/providers/amazonBedrock.js +54 -50
  83. package/dist/lib/providers/anthropic.d.ts +2 -2
  84. package/dist/lib/providers/anthropic.js +92 -84
  85. package/dist/lib/providers/azureOpenAI.d.ts +2 -2
  86. package/dist/lib/providers/azureOpenAI.js +97 -86
  87. package/dist/lib/providers/function-calling-provider.d.ts +70 -0
  88. package/dist/lib/providers/function-calling-provider.js +359 -0
  89. package/dist/lib/providers/googleAIStudio.d.ts +10 -5
  90. package/dist/lib/providers/googleAIStudio.js +60 -38
  91. package/dist/lib/providers/googleVertexAI.d.ts +3 -3
  92. package/dist/lib/providers/googleVertexAI.js +96 -86
  93. package/dist/lib/providers/huggingFace.d.ts +31 -0
  94. package/dist/lib/providers/huggingFace.js +362 -0
  95. package/dist/lib/providers/index.d.ts +14 -8
  96. package/dist/lib/providers/index.js +18 -12
  97. package/dist/lib/providers/mcp-provider.d.ts +62 -0
  98. package/dist/lib/providers/mcp-provider.js +183 -0
  99. package/dist/lib/providers/mistralAI.d.ts +32 -0
  100. package/dist/lib/providers/mistralAI.js +223 -0
  101. package/dist/lib/providers/ollama.d.ts +51 -0
  102. package/dist/lib/providers/ollama.js +508 -0
  103. package/dist/lib/providers/openAI.d.ts +7 -3
  104. package/dist/lib/providers/openAI.js +45 -33
  105. package/dist/lib/utils/logger.js +2 -2
  106. package/dist/lib/utils/providerUtils.js +59 -22
  107. package/dist/mcp/auto-discovery.d.ts +120 -0
  108. package/dist/mcp/auto-discovery.js +794 -0
  109. package/dist/mcp/client.d.ts +66 -0
  110. package/dist/mcp/client.js +245 -0
  111. package/dist/mcp/config.d.ts +31 -0
  112. package/dist/mcp/config.js +74 -0
  113. package/dist/mcp/context-manager.d.ts +4 -4
  114. package/dist/mcp/context-manager.js +24 -18
  115. package/dist/mcp/factory.d.ts +28 -11
  116. package/dist/mcp/factory.js +36 -29
  117. package/dist/mcp/function-calling.d.ts +51 -0
  118. package/dist/mcp/function-calling.js +510 -0
  119. package/dist/mcp/index.d.ts +190 -0
  120. package/dist/mcp/index.js +156 -0
  121. package/dist/mcp/initialize-tools.d.ts +28 -0
  122. package/dist/mcp/initialize-tools.js +210 -0
  123. package/dist/mcp/initialize.d.ts +17 -0
  124. package/dist/mcp/initialize.js +51 -0
  125. package/dist/mcp/logging.d.ts +71 -0
  126. package/dist/mcp/logging.js +183 -0
  127. package/dist/mcp/manager.d.ts +67 -0
  128. package/dist/mcp/manager.js +176 -0
  129. package/dist/mcp/neurolink-mcp-client.d.ts +96 -0
  130. package/dist/mcp/neurolink-mcp-client.js +417 -0
  131. package/dist/mcp/orchestrator.d.ts +3 -3
  132. package/dist/mcp/orchestrator.js +46 -43
  133. package/dist/mcp/registry.d.ts +2 -2
  134. package/dist/mcp/registry.js +42 -33
  135. package/dist/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  136. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +205 -66
  137. package/dist/mcp/servers/ai-providers/ai-core-server.js +143 -99
  138. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  139. package/dist/mcp/servers/ai-providers/ai-workflow-tools.js +404 -253
  140. package/dist/mcp/servers/utilities/utility-server.d.ts +8 -0
  141. package/dist/mcp/servers/utilities/utility-server.js +326 -0
  142. package/dist/mcp/tool-integration.d.ts +67 -0
  143. package/dist/mcp/tool-integration.js +179 -0
  144. package/dist/mcp/unified-registry.d.ts +269 -0
  145. package/dist/mcp/unified-registry.js +1411 -0
  146. package/dist/neurolink.d.ts +68 -6
  147. package/dist/neurolink.js +314 -42
  148. package/dist/providers/agent-enhanced-provider.d.ts +59 -0
  149. package/dist/providers/agent-enhanced-provider.js +242 -0
  150. package/dist/providers/amazonBedrock.d.ts +3 -3
  151. package/dist/providers/amazonBedrock.js +54 -50
  152. package/dist/providers/anthropic.d.ts +2 -2
  153. package/dist/providers/anthropic.js +92 -84
  154. package/dist/providers/azureOpenAI.d.ts +2 -2
  155. package/dist/providers/azureOpenAI.js +97 -86
  156. package/dist/providers/function-calling-provider.d.ts +70 -0
  157. package/dist/providers/function-calling-provider.js +359 -0
  158. package/dist/providers/googleAIStudio.d.ts +10 -5
  159. package/dist/providers/googleAIStudio.js +60 -38
  160. package/dist/providers/googleVertexAI.d.ts +3 -3
  161. package/dist/providers/googleVertexAI.js +96 -86
  162. package/dist/providers/huggingFace.d.ts +31 -0
  163. package/dist/providers/huggingFace.js +362 -0
  164. package/dist/providers/index.d.ts +14 -8
  165. package/dist/providers/index.js +18 -12
  166. package/dist/providers/mcp-provider.d.ts +62 -0
  167. package/dist/providers/mcp-provider.js +183 -0
  168. package/dist/providers/mistralAI.d.ts +32 -0
  169. package/dist/providers/mistralAI.js +223 -0
  170. package/dist/providers/ollama.d.ts +51 -0
  171. package/dist/providers/ollama.js +508 -0
  172. package/dist/providers/openAI.d.ts +7 -3
  173. package/dist/providers/openAI.js +45 -33
  174. package/dist/utils/logger.js +2 -2
  175. package/dist/utils/providerUtils.js +59 -22
  176. package/package.json +28 -4
@@ -0,0 +1,8 @@
1
+ import type { Argv } from "yargs";
2
+ export declare const ollamaCommand: {
3
+ command: string;
4
+ describe: string;
5
+ builder: (yargs: Argv) => Argv<{}>;
6
+ handler: () => void;
7
+ };
8
+ export default ollamaCommand;
@@ -0,0 +1,333 @@
1
+ import { execSync } from "child_process";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import inquirer from "inquirer";
5
+ export const ollamaCommand = {
6
+ command: "ollama <command>",
7
+ describe: "Manage Ollama local AI models",
8
+ builder: (yargs) => {
9
+ return yargs
10
+ .command("list-models", "List installed Ollama models", {}, listModelsHandler)
11
+ .command("pull <model>", "Download an Ollama model", {
12
+ model: {
13
+ describe: "Model name to download",
14
+ type: "string",
15
+ demandOption: true,
16
+ },
17
+ }, pullModelHandler)
18
+ .command("remove <model>", "Remove an Ollama model", {
19
+ model: {
20
+ describe: "Model name to remove",
21
+ type: "string",
22
+ demandOption: true,
23
+ },
24
+ }, removeModelHandler)
25
+ .command("status", "Check Ollama service status", {}, statusHandler)
26
+ .command("start", "Start Ollama service", {}, startHandler)
27
+ .command("stop", "Stop Ollama service", {}, stopHandler)
28
+ .command("setup", "Interactive Ollama setup", {}, setupHandler)
29
+ .demandCommand(1, "Please specify a command");
30
+ },
31
+ handler: () => { }, // No-op handler as subcommands handle everything
32
+ };
33
+ async function listModelsHandler() {
34
+ const spinner = ora("Fetching installed models...").start();
35
+ try {
36
+ const output = execSync("ollama list", { encoding: "utf8" });
37
+ spinner.succeed("Installed models:");
38
+ if (output.trim()) {
39
+ console.log(output);
40
+ }
41
+ else {
42
+ console.log(chalk.yellow('No models installed. Use "neurolink ollama pull <model>" to download a model.'));
43
+ }
44
+ }
45
+ catch (error) {
46
+ spinner.fail("Failed to list models. Is Ollama installed?");
47
+ console.error(chalk.red("Error:", error.message));
48
+ console.log(chalk.blue("\nTip: Install Ollama from https://ollama.ai"));
49
+ process.exit(1);
50
+ }
51
+ }
52
+ async function pullModelHandler(argv) {
53
+ const { model } = argv;
54
+ console.log(chalk.blue(`Downloading model: ${model}`));
55
+ console.log(chalk.gray("This may take several minutes..."));
56
+ try {
57
+ execSync(`ollama pull ${model}`, { stdio: "inherit" });
58
+ console.log(chalk.green(`\nāœ… Successfully downloaded ${model}`));
59
+ console.log(chalk.blue(`\nTest it with: npx @juspay/neurolink generate-text "Hello!" --provider ollama --model ${model}`));
60
+ }
61
+ catch (error) {
62
+ console.error(chalk.red(`\nāŒ Failed to download ${model}`));
63
+ console.error(chalk.red("Error:", error.message));
64
+ process.exit(1);
65
+ }
66
+ }
67
+ async function removeModelHandler(argv) {
68
+ const { model } = argv;
69
+ // Confirm removal
70
+ const { confirm } = await inquirer.prompt([
71
+ {
72
+ type: "confirm",
73
+ name: "confirm",
74
+ message: `Are you sure you want to remove model "${model}"?`,
75
+ default: false,
76
+ },
77
+ ]);
78
+ if (!confirm) {
79
+ console.log(chalk.yellow("Removal cancelled."));
80
+ return;
81
+ }
82
+ const spinner = ora(`Removing model ${model}...`).start();
83
+ try {
84
+ execSync(`ollama rm ${model}`, { encoding: "utf8" });
85
+ spinner.succeed(`Successfully removed ${model}`);
86
+ }
87
+ catch (error) {
88
+ spinner.fail(`Failed to remove ${model}`);
89
+ console.error(chalk.red("Error:", error.message));
90
+ process.exit(1);
91
+ }
92
+ }
93
+ async function statusHandler() {
94
+ const spinner = ora("Checking Ollama service status...").start();
95
+ try {
96
+ // Try to run a simple command
97
+ execSync("ollama list", { encoding: "utf8" });
98
+ spinner.succeed("Ollama service is running");
99
+ // Get additional info
100
+ try {
101
+ const response = execSync("curl -s http://localhost:11434/api/tags", {
102
+ encoding: "utf8",
103
+ });
104
+ const data = JSON.parse(response);
105
+ if (data.models && data.models.length > 0) {
106
+ console.log(chalk.green(`\n${data.models.length} models available`));
107
+ }
108
+ }
109
+ catch {
110
+ // Curl might not be available, that's ok
111
+ }
112
+ }
113
+ catch (error) {
114
+ spinner.fail("Ollama service is not running");
115
+ console.log(chalk.yellow("\nStart Ollama with: ollama serve"));
116
+ console.log(chalk.blue("Or restart the Ollama app if using the desktop version"));
117
+ process.exit(1);
118
+ }
119
+ }
120
+ async function startHandler() {
121
+ console.log(chalk.blue("Starting Ollama service..."));
122
+ try {
123
+ // Check if already running
124
+ try {
125
+ execSync("ollama list", { encoding: "utf8" });
126
+ console.log(chalk.yellow("Ollama service is already running!"));
127
+ return;
128
+ }
129
+ catch {
130
+ // Not running, continue to start
131
+ }
132
+ // Different approaches for different platforms
133
+ if (process.platform === "darwin") {
134
+ // macOS
135
+ console.log(chalk.gray("Starting Ollama on macOS..."));
136
+ try {
137
+ execSync("open -a Ollama");
138
+ console.log(chalk.green("āœ… Ollama app started"));
139
+ }
140
+ catch {
141
+ // Try service command
142
+ execSync("ollama serve > /dev/null 2>&1 &", { stdio: "ignore" });
143
+ console.log(chalk.green("āœ… Ollama service started"));
144
+ }
145
+ }
146
+ else if (process.platform === "linux") {
147
+ // Linux
148
+ console.log(chalk.gray("Starting Ollama service on Linux..."));
149
+ try {
150
+ execSync("systemctl start ollama", { encoding: "utf8" });
151
+ console.log(chalk.green("āœ… Ollama service started"));
152
+ }
153
+ catch {
154
+ // Try direct command
155
+ execSync("ollama serve > /dev/null 2>&1 &", { stdio: "ignore" });
156
+ console.log(chalk.green("āœ… Ollama service started"));
157
+ }
158
+ }
159
+ else {
160
+ // Windows
161
+ console.log(chalk.gray("Starting Ollama on Windows..."));
162
+ execSync("start ollama serve", { stdio: "ignore" });
163
+ console.log(chalk.green("āœ… Ollama service started"));
164
+ }
165
+ console.log(chalk.blue("\nWait a few seconds for the service to initialize..."));
166
+ }
167
+ catch (error) {
168
+ console.error(chalk.red("Failed to start Ollama service"));
169
+ console.error(chalk.red("Error:", error.message));
170
+ console.log(chalk.blue("\nTry starting Ollama manually or check installation"));
171
+ process.exit(1);
172
+ }
173
+ }
174
+ async function stopHandler() {
175
+ const spinner = ora("Stopping Ollama service...").start();
176
+ try {
177
+ if (process.platform === "darwin") {
178
+ // macOS
179
+ try {
180
+ execSync("pkill ollama", { encoding: "utf8" });
181
+ }
182
+ catch {
183
+ execSync("killall Ollama", { encoding: "utf8" });
184
+ }
185
+ }
186
+ else if (process.platform === "linux") {
187
+ // Linux
188
+ try {
189
+ execSync("systemctl stop ollama", { encoding: "utf8" });
190
+ }
191
+ catch {
192
+ execSync("pkill ollama", { encoding: "utf8" });
193
+ }
194
+ }
195
+ else {
196
+ // Windows
197
+ execSync("taskkill /F /IM ollama.exe", { encoding: "utf8" });
198
+ }
199
+ spinner.succeed("Ollama service stopped");
200
+ }
201
+ catch (error) {
202
+ spinner.fail("Failed to stop Ollama service");
203
+ console.error(chalk.red("It may not be running or requires manual stop"));
204
+ }
205
+ }
206
+ async function setupHandler() {
207
+ console.log(chalk.blue("šŸ¦™ Welcome to Ollama Setup!\n"));
208
+ // Check if Ollama is installed
209
+ const checkSpinner = ora("Checking Ollama installation...").start();
210
+ let isInstalled = false;
211
+ try {
212
+ execSync("ollama --version", { encoding: "utf8" });
213
+ isInstalled = true;
214
+ checkSpinner.succeed("Ollama is installed");
215
+ }
216
+ catch {
217
+ checkSpinner.fail("Ollama is not installed");
218
+ }
219
+ if (!isInstalled) {
220
+ console.log(chalk.yellow("\nOllama needs to be installed first."));
221
+ console.log(chalk.blue("\nInstallation instructions:"));
222
+ if (process.platform === "darwin") {
223
+ console.log("\nFor macOS:");
224
+ console.log(chalk.gray(" brew install ollama"));
225
+ console.log(chalk.gray(" # or download from https://ollama.ai"));
226
+ }
227
+ else if (process.platform === "linux") {
228
+ console.log("\nFor Linux:");
229
+ console.log(chalk.gray(" curl -fsSL https://ollama.ai/install.sh | sh"));
230
+ }
231
+ else {
232
+ console.log("\nFor Windows:");
233
+ console.log(chalk.gray(" Download from https://ollama.ai"));
234
+ }
235
+ const { proceedAnyway } = await inquirer.prompt([
236
+ {
237
+ type: "confirm",
238
+ name: "proceedAnyway",
239
+ message: "Would you like to continue with setup anyway?",
240
+ default: false,
241
+ },
242
+ ]);
243
+ if (!proceedAnyway) {
244
+ console.log(chalk.blue("\nInstall Ollama and run setup again!"));
245
+ return;
246
+ }
247
+ }
248
+ // Check if service is running
249
+ let serviceRunning = false;
250
+ try {
251
+ execSync("ollama list", { encoding: "utf8" });
252
+ serviceRunning = true;
253
+ console.log(chalk.green("\nāœ… Ollama service is running"));
254
+ }
255
+ catch {
256
+ console.log(chalk.yellow("\nāš ļø Ollama service is not running"));
257
+ const { startService } = await inquirer.prompt([
258
+ {
259
+ type: "confirm",
260
+ name: "startService",
261
+ message: "Would you like to start the Ollama service?",
262
+ default: true,
263
+ },
264
+ ]);
265
+ if (startService) {
266
+ await startHandler();
267
+ serviceRunning = true;
268
+ }
269
+ }
270
+ if (serviceRunning) {
271
+ // List available models
272
+ console.log(chalk.blue("\nšŸ“¦ Popular Ollama models:"));
273
+ console.log(" • llama2 (7B) - General purpose");
274
+ console.log(" • codellama (7B) - Code generation");
275
+ console.log(" • mistral (7B) - Fast and efficient");
276
+ console.log(" • tinyllama (1B) - Lightweight");
277
+ console.log(" • phi (2.7B) - Microsoft's compact model");
278
+ const { downloadModel } = await inquirer.prompt([
279
+ {
280
+ type: "confirm",
281
+ name: "downloadModel",
282
+ message: "Would you like to download a model?",
283
+ default: true,
284
+ },
285
+ ]);
286
+ if (downloadModel) {
287
+ const { selectedModel } = await inquirer.prompt([
288
+ {
289
+ type: "list",
290
+ name: "selectedModel",
291
+ message: "Select a model to download:",
292
+ choices: [
293
+ {
294
+ name: "llama2 (7B) - Recommended for general use",
295
+ value: "llama2",
296
+ },
297
+ {
298
+ name: "codellama (7B) - Best for code generation",
299
+ value: "codellama",
300
+ },
301
+ { name: "mistral (7B) - Fast and efficient", value: "mistral" },
302
+ { name: "tinyllama (1B) - Lightweight, fast", value: "tinyllama" },
303
+ { name: "phi (2.7B) - Microsoft's compact model", value: "phi" },
304
+ { name: "Other (enter manually)", value: "other" },
305
+ ],
306
+ },
307
+ ]);
308
+ let modelToDownload = selectedModel;
309
+ if (selectedModel === "other") {
310
+ const { customModel } = await inquirer.prompt([
311
+ {
312
+ type: "input",
313
+ name: "customModel",
314
+ message: "Enter the model name:",
315
+ validate: (input) => input.trim().length > 0 || "Model name is required",
316
+ },
317
+ ]);
318
+ modelToDownload = customModel;
319
+ }
320
+ await pullModelHandler({ model: modelToDownload });
321
+ }
322
+ }
323
+ // Final instructions
324
+ console.log(chalk.green("\nāœ… Setup complete!\n"));
325
+ console.log(chalk.blue("Next steps:"));
326
+ console.log("1. List models: " + chalk.gray("neurolink ollama list-models"));
327
+ console.log("2. Generate text: " +
328
+ chalk.gray('neurolink generate-text "Hello!" --provider ollama'));
329
+ console.log("3. Use specific model: " +
330
+ chalk.gray('neurolink generate-text "Hello!" --provider ollama --model codellama'));
331
+ console.log(chalk.gray("\nFor more information, see: https://docs.neurolink.ai/providers/ollama"));
332
+ }
333
+ export default ollamaCommand;