@mindstudio-ai/local-model-tunnel 0.2.0 → 0.3.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 (170) hide show
  1. package/README.md +30 -115
  2. package/dist/chunk-PTK4SJQK.js +1768 -0
  3. package/dist/chunk-PTK4SJQK.js.map +1 -0
  4. package/dist/cli.d.ts +0 -2
  5. package/dist/cli.js +8 -517
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.ts +24 -5
  8. package/dist/index.js +6 -13
  9. package/dist/index.js.map +1 -1
  10. package/dist/tui-56JFPKBP.js +1561 -0
  11. package/dist/tui-56JFPKBP.js.map +1 -0
  12. package/package.json +11 -4
  13. package/dist/api.d.ts +0 -88
  14. package/dist/api.d.ts.map +0 -1
  15. package/dist/api.js +0 -168
  16. package/dist/api.js.map +0 -1
  17. package/dist/cli.d.ts.map +0 -1
  18. package/dist/config.d.ts +0 -27
  19. package/dist/config.d.ts.map +0 -1
  20. package/dist/config.js +0 -109
  21. package/dist/config.js.map +0 -1
  22. package/dist/helpers.d.ts +0 -4
  23. package/dist/helpers.d.ts.map +0 -1
  24. package/dist/helpers.js +0 -33
  25. package/dist/helpers.js.map +0 -1
  26. package/dist/index.d.ts.map +0 -1
  27. package/dist/ollama.d.ts +0 -11
  28. package/dist/ollama.d.ts.map +0 -1
  29. package/dist/ollama.js +0 -36
  30. package/dist/ollama.js.map +0 -1
  31. package/dist/providers/comfyui.d.ts +0 -29
  32. package/dist/providers/comfyui.d.ts.map +0 -1
  33. package/dist/providers/comfyui.js +0 -359
  34. package/dist/providers/comfyui.js.map +0 -1
  35. package/dist/providers/index.d.ts +0 -63
  36. package/dist/providers/index.d.ts.map +0 -1
  37. package/dist/providers/index.js +0 -126
  38. package/dist/providers/index.js.map +0 -1
  39. package/dist/providers/lmstudio.d.ts +0 -11
  40. package/dist/providers/lmstudio.d.ts.map +0 -1
  41. package/dist/providers/lmstudio.js +0 -106
  42. package/dist/providers/lmstudio.js.map +0 -1
  43. package/dist/providers/ollama.d.ts +0 -11
  44. package/dist/providers/ollama.d.ts.map +0 -1
  45. package/dist/providers/ollama.js +0 -59
  46. package/dist/providers/ollama.js.map +0 -1
  47. package/dist/providers/stable-diffusion.d.ts +0 -41
  48. package/dist/providers/stable-diffusion.d.ts.map +0 -1
  49. package/dist/providers/stable-diffusion.js +0 -283
  50. package/dist/providers/stable-diffusion.js.map +0 -1
  51. package/dist/providers/types.d.ts +0 -196
  52. package/dist/providers/types.d.ts.map +0 -1
  53. package/dist/providers/types.js +0 -19
  54. package/dist/providers/types.js.map +0 -1
  55. package/dist/quickstart/QuickstartScreen.d.ts +0 -5
  56. package/dist/quickstart/QuickstartScreen.d.ts.map +0 -1
  57. package/dist/quickstart/QuickstartScreen.js +0 -617
  58. package/dist/quickstart/QuickstartScreen.js.map +0 -1
  59. package/dist/quickstart/detect.d.ts +0 -22
  60. package/dist/quickstart/detect.d.ts.map +0 -1
  61. package/dist/quickstart/detect.js +0 -243
  62. package/dist/quickstart/detect.js.map +0 -1
  63. package/dist/quickstart/index.d.ts +0 -4
  64. package/dist/quickstart/index.d.ts.map +0 -1
  65. package/dist/quickstart/index.js +0 -274
  66. package/dist/quickstart/index.js.map +0 -1
  67. package/dist/quickstart/installers.d.ts +0 -109
  68. package/dist/quickstart/installers.d.ts.map +0 -1
  69. package/dist/quickstart/installers.js +0 -1296
  70. package/dist/quickstart/installers.js.map +0 -1
  71. package/dist/runner.d.ts +0 -19
  72. package/dist/runner.d.ts.map +0 -1
  73. package/dist/runner.js +0 -314
  74. package/dist/runner.js.map +0 -1
  75. package/dist/tui/App.d.ts +0 -7
  76. package/dist/tui/App.d.ts.map +0 -1
  77. package/dist/tui/App.js +0 -53
  78. package/dist/tui/App.js.map +0 -1
  79. package/dist/tui/TunnelRunner.d.ts +0 -19
  80. package/dist/tui/TunnelRunner.d.ts.map +0 -1
  81. package/dist/tui/TunnelRunner.js +0 -228
  82. package/dist/tui/TunnelRunner.js.map +0 -1
  83. package/dist/tui/components/Header.d.ts +0 -9
  84. package/dist/tui/components/Header.d.ts.map +0 -1
  85. package/dist/tui/components/Header.js +0 -21
  86. package/dist/tui/components/Header.js.map +0 -1
  87. package/dist/tui/components/ModelsPanel.d.ts +0 -7
  88. package/dist/tui/components/ModelsPanel.d.ts.map +0 -1
  89. package/dist/tui/components/ModelsPanel.js +0 -28
  90. package/dist/tui/components/ModelsPanel.js.map +0 -1
  91. package/dist/tui/components/ProvidersPanel.d.ts +0 -7
  92. package/dist/tui/components/ProvidersPanel.d.ts.map +0 -1
  93. package/dist/tui/components/ProvidersPanel.js +0 -6
  94. package/dist/tui/components/ProvidersPanel.js.map +0 -1
  95. package/dist/tui/components/RequestLog.d.ts +0 -8
  96. package/dist/tui/components/RequestLog.d.ts.map +0 -1
  97. package/dist/tui/components/RequestLog.js +0 -60
  98. package/dist/tui/components/RequestLog.js.map +0 -1
  99. package/dist/tui/components/StatusBar.d.ts +0 -10
  100. package/dist/tui/components/StatusBar.d.ts.map +0 -1
  101. package/dist/tui/components/StatusBar.js +0 -7
  102. package/dist/tui/components/StatusBar.js.map +0 -1
  103. package/dist/tui/components/index.d.ts +0 -6
  104. package/dist/tui/components/index.d.ts.map +0 -1
  105. package/dist/tui/components/index.js +0 -6
  106. package/dist/tui/components/index.js.map +0 -1
  107. package/dist/tui/events.d.ts +0 -35
  108. package/dist/tui/events.d.ts.map +0 -1
  109. package/dist/tui/events.js +0 -26
  110. package/dist/tui/events.js.map +0 -1
  111. package/dist/tui/hooks/index.d.ts +0 -5
  112. package/dist/tui/hooks/index.d.ts.map +0 -1
  113. package/dist/tui/hooks/index.js +0 -5
  114. package/dist/tui/hooks/index.js.map +0 -1
  115. package/dist/tui/hooks/useConnection.d.ts +0 -10
  116. package/dist/tui/hooks/useConnection.d.ts.map +0 -1
  117. package/dist/tui/hooks/useConnection.js +0 -42
  118. package/dist/tui/hooks/useConnection.js.map +0 -1
  119. package/dist/tui/hooks/useModels.d.ts +0 -9
  120. package/dist/tui/hooks/useModels.d.ts.map +0 -1
  121. package/dist/tui/hooks/useModels.js +0 -28
  122. package/dist/tui/hooks/useModels.js.map +0 -1
  123. package/dist/tui/hooks/useProviders.d.ts +0 -9
  124. package/dist/tui/hooks/useProviders.d.ts.map +0 -1
  125. package/dist/tui/hooks/useProviders.js +0 -30
  126. package/dist/tui/hooks/useProviders.js.map +0 -1
  127. package/dist/tui/hooks/useRequests.d.ts +0 -9
  128. package/dist/tui/hooks/useRequests.d.ts.map +0 -1
  129. package/dist/tui/hooks/useRequests.js +0 -60
  130. package/dist/tui/hooks/useRequests.js.map +0 -1
  131. package/dist/tui/index.d.ts +0 -2
  132. package/dist/tui/index.d.ts.map +0 -1
  133. package/dist/tui/index.js +0 -19
  134. package/dist/tui/index.js.map +0 -1
  135. package/dist/tui/screens/ConfigScreen.d.ts +0 -2
  136. package/dist/tui/screens/ConfigScreen.d.ts.map +0 -1
  137. package/dist/tui/screens/ConfigScreen.js +0 -18
  138. package/dist/tui/screens/ConfigScreen.js.map +0 -1
  139. package/dist/tui/screens/HomeScreen.d.ts +0 -2
  140. package/dist/tui/screens/HomeScreen.d.ts.map +0 -1
  141. package/dist/tui/screens/HomeScreen.js +0 -156
  142. package/dist/tui/screens/HomeScreen.js.map +0 -1
  143. package/dist/tui/screens/ModelsScreen.d.ts +0 -2
  144. package/dist/tui/screens/ModelsScreen.d.ts.map +0 -1
  145. package/dist/tui/screens/ModelsScreen.js +0 -59
  146. package/dist/tui/screens/ModelsScreen.js.map +0 -1
  147. package/dist/tui/screens/StatusScreen.d.ts +0 -2
  148. package/dist/tui/screens/StatusScreen.d.ts.map +0 -1
  149. package/dist/tui/screens/StatusScreen.js +0 -53
  150. package/dist/tui/screens/StatusScreen.js.map +0 -1
  151. package/dist/tui/screens/index.d.ts +0 -9
  152. package/dist/tui/screens/index.d.ts.map +0 -1
  153. package/dist/tui/screens/index.js +0 -38
  154. package/dist/tui/screens/index.js.map +0 -1
  155. package/dist/tui/types.d.ts +0 -30
  156. package/dist/tui/types.d.ts.map +0 -1
  157. package/dist/tui/types.js +0 -2
  158. package/dist/tui/types.js.map +0 -1
  159. package/dist/workflows/index.d.ts +0 -47
  160. package/dist/workflows/index.d.ts.map +0 -1
  161. package/dist/workflows/index.js +0 -95
  162. package/dist/workflows/index.js.map +0 -1
  163. package/dist/workflows/ltx-video.d.ts +0 -45
  164. package/dist/workflows/ltx-video.d.ts.map +0 -1
  165. package/dist/workflows/ltx-video.js +0 -114
  166. package/dist/workflows/ltx-video.js.map +0 -1
  167. package/dist/workflows/wan2.1.d.ts +0 -44
  168. package/dist/workflows/wan2.1.d.ts.map +0 -1
  169. package/dist/workflows/wan2.1.js +0 -119
  170. package/dist/workflows/wan2.1.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,519 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import open from "open";
3
- import { Command } from "commander";
4
- import chalk from "chalk";
5
- import ora from "ora";
6
- import { getApiKey, setApiKey, clearApiKey, getConfigPath, setOllamaBaseUrl, setLMStudioBaseUrl, setStableDiffusionBaseUrl, getEnvironment, setEnvironment, getEnvironmentInfo, getOllamaBaseUrl, getLMStudioBaseUrl, getStableDiffusionBaseUrl, } from "./config.js";
7
- import { discoverAllModels, discoverAllModelsWithParameters, getProviderStatuses, isAnyProviderRunning, } from "./providers/index.js";
8
- import { getRegisteredModels, pollDeviceAuth, registerLocalModel, requestDeviceAuth, verifyApiKey, } from "./api.js";
9
- import { LocalModelRunner } from "./runner.js";
10
- import { displayModels } from "./helpers.js";
11
- const program = new Command();
12
- program
13
- .name("mindstudio-local")
14
- .description("Run local AI models with MindStudio")
15
- .version("0.1.0");
16
- // Global option for environment
17
- program.option("-e, --env <environment>", "Environment to use (prod, local)", undefined);
18
- // Pre-action hook to set environment from global option
19
- program.hook("preAction", (thisCommand) => {
20
- const opts = thisCommand.opts();
21
- if (opts.env) {
22
- if (opts.env !== "prod" && opts.env !== "local") {
23
- console.log(chalk.red(`Invalid environment: ${opts.env}. Use 'prod' or 'local'.`));
24
- process.exit(1);
25
- }
26
- setEnvironment(opts.env);
27
- }
28
- });
29
- // Helper to show environment badge
30
- function envBadge() {
31
- const env = getEnvironment();
32
- if (env === "local") {
33
- return chalk.bgYellow.black(" LOCAL ");
34
- }
35
- return chalk.bgGreen.black(" PROD ");
36
- }
37
- // Auth command
38
- program
39
- .command("auth")
40
- .description("Authenticate with MindStudio via browser")
41
- .action(async () => {
42
- const info = getEnvironmentInfo();
43
- console.log(chalk.blue(`\nMindStudio Authentication ${envBadge()}\n`));
44
- console.log(chalk.white(`API: ${info.apiBaseUrl}\n`));
45
- const spinner = ora("Requesting authorization...").start();
46
- const { url: authUrl, token } = await requestDeviceAuth();
47
- spinner.stop();
48
- console.log(chalk.white("Opening browser for authentication...\n"));
49
- console.log(chalk.white(` If browser doesn't open, visit:`));
50
- console.log(chalk.cyan(` ${authUrl}\n`));
51
- await open(authUrl);
52
- const pollSpinner = ora("Waiting for browser authorization...").start();
53
- const pollInterval = 2000;
54
- const maxAttempts = 30;
55
- for (let i = 0; i < maxAttempts; i++) {
56
- await sleep(pollInterval);
57
- const result = await pollDeviceAuth(token);
58
- if (result.status === "completed" && result.apiKey) {
59
- setApiKey(result.apiKey);
60
- pollSpinner.succeed(chalk.green("Authenticated successfully!"));
61
- console.log(chalk.white(`Config saved to: ${getConfigPath()}\n`));
62
- return;
63
- }
64
- if (result.status === "expired") {
65
- pollSpinner.fail(chalk.red("Authorization expired. Please try again."));
66
- process.exit(1);
67
- }
68
- const remaining = Math.floor(((maxAttempts - i) * pollInterval) / 1000);
69
- pollSpinner.text = `Waiting for browser authorization... (${remaining}s remaining)`;
70
- }
71
- pollSpinner.fail(chalk.red("Authorization timed out. Please try again."));
72
- process.exit(1);
73
- });
74
- function sleep(ms) {
75
- return new Promise((resolve) => setTimeout(resolve, ms));
76
- }
77
- async function waitForEnter() {
78
- const { spawn } = await import("child_process");
79
- console.log(chalk.gray("\nPress Enter to continue..."));
80
- return new Promise((resolve) => {
81
- const isWindows = process.platform === "win32";
82
- const child = isWindows
83
- ? spawn("cmd", ["/c", "pause >nul"], { stdio: "inherit" })
84
- : spawn("bash", ["-c", "read -n 1 -s"], { stdio: "inherit" });
85
- child.on("close", () => resolve());
86
- child.on("error", () => resolve());
87
- });
88
- }
89
- // Logout command
90
- program
91
- .command("logout")
92
- .description("Remove stored credentials for current environment")
93
- .action(() => {
94
- clearApiKey();
95
- console.log(chalk.green(`Logged out from ${getEnvironment()} environment.\n`));
96
- });
97
- // Setup command
98
- program
99
- .command("setup")
100
- .alias("quickstart")
101
- .description("Interactive setup wizard for installing providers")
102
- .action(async () => {
103
- const { startQuickstart } = await import("./quickstart/index.js");
104
- await startQuickstart();
105
- });
106
- // Status command
107
- program
108
- .command("status")
109
- .description("Check connection status")
110
- .option("--simple", "Use simple text output (no TUI)")
111
- .action(async (options) => {
112
- if (!options.simple) {
113
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
114
- const { showStatusScreen } = await import("./tui/screens/index.js");
115
- await showStatusScreen();
116
- return;
117
- }
118
- // Simple mode (original behavior)
119
- const info = getEnvironmentInfo();
120
- console.log(chalk.blue(`\nStatus ${envBadge()}\n`));
121
- console.log(chalk.white(`API: ${info.apiBaseUrl}\n`));
122
- // Check API key
123
- const apiKey = getApiKey();
124
- if (apiKey) {
125
- const isValid = await verifyApiKey();
126
- if (isValid) {
127
- console.log(chalk.green("✓ MindStudio: Connected"));
128
- }
129
- else {
130
- console.log(chalk.red("✗ MindStudio: Invalid API key"));
131
- }
132
- }
133
- else {
134
- console.log(chalk.yellow("○ MindStudio: Not authenticated"));
135
- }
136
- // Check all providers
137
- const providerStatuses = await getProviderStatuses();
138
- for (const { provider, running } of providerStatuses) {
139
- if (running) {
140
- console.log(chalk.green(`✓ ${provider.displayName}: Running`));
141
- }
142
- else {
143
- console.log(chalk.gray(`○ ${provider.displayName}: Not running`));
144
- }
145
- }
146
- // Show models if any provider is running
147
- const models = await discoverAllModels();
148
- if (models.length > 0) {
149
- displayModels(models);
150
- }
151
- console.log("");
152
- });
153
- program
154
- .command("set-config")
155
- .description("Set configuration")
156
- .option("--ollama-url <url>", "Override Ollama base URL")
157
- .option("--lmstudio-url <url>", "Override LM Studio base URL")
158
- .option("--sd-url <url>", "Override Stable Diffusion base URL")
159
- .action(async (options) => {
160
- if (options.ollamaUrl) {
161
- setOllamaBaseUrl(options.ollamaUrl);
162
- console.log(chalk.green(`Ollama base URL set to ${options.ollamaUrl}`));
163
- }
164
- if (options.lmstudioUrl) {
165
- setLMStudioBaseUrl(options.lmstudioUrl);
166
- console.log(chalk.green(`LM Studio base URL set to ${options.lmstudioUrl}`));
167
- }
168
- if (options.sdUrl) {
169
- setStableDiffusionBaseUrl(options.sdUrl);
170
- console.log(chalk.green(`Stable Diffusion base URL set to ${options.sdUrl}`));
171
- }
172
- });
173
- // Start command
174
- program
175
- .command("start")
176
- .description("Start the local model tunnel")
177
- .option("--ollama-url <url>", "Override Ollama base URL")
178
- .option("--lmstudio-url <url>", "Override LM Studio base URL")
179
- .option("--sd-url <url>", "Override Stable Diffusion base URL")
180
- .option("--simple", "Use simple non-interactive mode (no TUI)")
181
- .action(async (options) => {
182
- if (options.ollamaUrl) {
183
- setOllamaBaseUrl(options.ollamaUrl);
184
- }
185
- if (options.lmstudioUrl) {
186
- setLMStudioBaseUrl(options.lmstudioUrl);
187
- }
188
- if (options.sdUrl) {
189
- setStableDiffusionBaseUrl(options.sdUrl);
190
- }
191
- // Use TUI by default, fall back to simple mode with --simple flag
192
- if (!options.simple) {
193
- const { startTUI } = await import("./tui/index.js");
194
- await startTUI();
195
- return;
196
- }
197
- // Simple mode (original behavior)
198
- const info = getEnvironmentInfo();
199
- console.log(chalk.white(`Environment: ${info.current} (${info.apiBaseUrl})`));
200
- const apiKey = getApiKey();
201
- if (!apiKey) {
202
- console.log(chalk.red(`Not authenticated for ${info.current} environment. Run: mindstudio-local auth\n`));
203
- process.exit(1);
204
- }
205
- // Verify API key
206
- const spinner = ora("Connecting to MindStudio...").start();
207
- const isValid = await verifyApiKey();
208
- if (!isValid) {
209
- spinner.fail(chalk.red("Invalid API key. Run: mindstudio-local auth"));
210
- process.exit(1);
211
- }
212
- spinner.succeed(`Connected to MindStudio ${envBadge()}`);
213
- // Check if any provider is running
214
- const anyProviderRunning = await isAnyProviderRunning();
215
- if (!anyProviderRunning) {
216
- console.log(chalk.red("\nNo local model provider is running."));
217
- console.log(chalk.white("Start one of the following:"));
218
- console.log(chalk.white(" Ollama: ollama serve"));
219
- console.log(chalk.white(" LM Studio: Start the local server"));
220
- console.log(chalk.white(" Stable Diffusion: Start AUTOMATIC1111\n"));
221
- process.exit(1);
222
- }
223
- // Start the runner
224
- const runner = new LocalModelRunner();
225
- await runner.start();
226
- });
227
- // Models command
228
- program
229
- .command("models")
230
- .description("List available local models")
231
- .action(async () => {
232
- const anyProviderRunning = await isAnyProviderRunning();
233
- if (!anyProviderRunning) {
234
- console.log(chalk.red("\nNo local model provider is running."));
235
- console.log(chalk.white(" Start Ollama: ollama serve"));
236
- console.log(chalk.white(" Start LM Studio: Enable local server"));
237
- console.log(chalk.white(" Start Stable Diffusion: Launch AUTOMATIC1111\n"));
238
- process.exit(1);
239
- }
240
- const models = await discoverAllModels();
241
- if (models.length === 0) {
242
- console.log(chalk.yellow("\nNo models found."));
243
- console.log(chalk.white(" Ollama: ollama pull llama3.2"));
244
- console.log(chalk.white(" LM Studio: Load a model in the app"));
245
- console.log(chalk.white(" Stable Diffusion: Models in models/Stable-diffusion/\n"));
246
- return;
247
- }
248
- displayModels(models);
249
- console.log("");
250
- });
251
- // Config command
252
- program
253
- .command("config")
254
- .description("Show configuration")
255
- .option("--simple", "Use simple text output (no TUI)")
256
- .action(async (options) => {
257
- if (!options.simple) {
258
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
259
- const { showConfigScreen } = await import("./tui/screens/index.js");
260
- await showConfigScreen();
261
- return;
262
- }
263
- // Simple mode (original behavior)
264
- const info = getEnvironmentInfo();
265
- console.log(chalk.blue(`\nConfiguration ${envBadge()}\n`));
266
- console.log(` Config file: ${chalk.white(getConfigPath())}`);
267
- console.log(` Environment: ${chalk.cyan(info.current)}`);
268
- console.log(` API URL: ${chalk.white(info.apiBaseUrl)}`);
269
- console.log(` API key: ${info.hasApiKey ? chalk.green("Set") : chalk.yellow("Not set")}`);
270
- console.log(chalk.blue("\nProvider URLs\n"));
271
- console.log(` Ollama: ${chalk.white(getOllamaBaseUrl())}`);
272
- console.log(` LM Studio: ${chalk.white(getLMStudioBaseUrl())}`);
273
- console.log(` Stable Diffusion: ${chalk.white(getStableDiffusionBaseUrl())}`);
274
- console.log("");
275
- });
276
- // Env command - switch or show environment
277
- program
278
- .command("env [environment]")
279
- .description("[DEVELOPER ONLY] Show or switch environment (prod, local)")
280
- .action((environment) => {
281
- if (environment) {
282
- if (environment !== "prod" && environment !== "local") {
283
- console.log(chalk.red(`Invalid environment: ${environment}. Use 'prod' or 'local'.`));
284
- process.exit(1);
285
- }
286
- setEnvironment(environment);
287
- console.log(chalk.green(`\nSwitched to ${environment} environment.\n`));
288
- }
289
- const info = getEnvironmentInfo();
290
- console.log(chalk.blue("\nEnvironment\n"));
291
- console.log(` Current: ${envBadge()}`);
292
- console.log(` API URL: ${chalk.white(info.apiBaseUrl)}`);
293
- console.log(` API Key: ${info.hasApiKey ? chalk.green("Set") : chalk.yellow("Not set")}`);
294
- console.log("");
295
- console.log(chalk.white(" Switch with: mindstudio-local env prod"));
296
- console.log(chalk.white(" or: mindstudio-local env local"));
297
- console.log("");
298
- });
299
- // Register command
300
- program
301
- .command("register")
302
- .description("Register all local models")
303
- .action(async () => {
304
- // Check if authenticated
305
- const apiKey = getApiKey();
306
- if (!apiKey) {
307
- console.log(chalk.red("\nNot authenticated. Run 'mindstudio-local auth' first.\n"));
308
- process.exit(1);
309
- }
310
- // Check if any provider is running
311
- const anyProviderRunning = await isAnyProviderRunning();
312
- if (!anyProviderRunning) {
313
- console.log(chalk.red("\nNo local model provider is running."));
314
- console.log(chalk.white(" Start Ollama: ollama serve"));
315
- console.log(chalk.white(" Start LM Studio: Enable local server"));
316
- console.log(chalk.white(" Start Stable Diffusion: Launch AUTOMATIC1111\n"));
317
- process.exit(1);
318
- }
319
- // Get all local models from all providers (with parameter schemas)
320
- const spinner = ora("Loading local models...").start();
321
- const localModels = await discoverAllModelsWithParameters();
322
- spinner.succeed();
323
- if (localModels.length === 0) {
324
- spinner.fail(chalk.yellow("No local models found."));
325
- console.log(chalk.white(" Ollama: ollama pull llama3.2"));
326
- console.log(chalk.white(" LM Studio: Load a model in the app"));
327
- console.log(chalk.white(" Stable Diffusion: Models in models/Stable-diffusion/\n"));
328
- process.exit(1);
329
- }
330
- const registeredModels = await getRegisteredModels();
331
- const registeredNames = new Set(registeredModels);
332
- const unregisteredModels = localModels.filter((m) => !registeredNames.has(m.name));
333
- if (localModels.length > 0 && unregisteredModels.length === 0) {
334
- console.log(chalk.green("\n✓ All local models are already registered.\n"));
335
- process.exit(0);
336
- }
337
- const registerSpinner = ora(`Registering models...`).start();
338
- try {
339
- console.log("\n");
340
- for (const model of unregisteredModels) {
341
- const modelTypeMap = {
342
- text: "llm_chat",
343
- image: "image_generation",
344
- video: "video_generation",
345
- };
346
- const modelType = modelTypeMap[model.capability];
347
- await registerLocalModel({
348
- modelName: model.name,
349
- provider: model.provider,
350
- modelType,
351
- parameters: model.parameters,
352
- });
353
- const providerTag = chalk.gray(`[${model.provider}]`);
354
- const paramsInfo = model.parameters
355
- ? chalk.cyan(` (${model.parameters.length} params)`)
356
- : "";
357
- console.log(chalk.green(`✓ ${model.name} ${providerTag}${paramsInfo}\n`));
358
- }
359
- registerSpinner.succeed(chalk.green("All local models registered successfully.\n"));
360
- console.log(chalk.white("Manage models at: https://app.mindstudio.ai/services/self-hosted-models\n"));
361
- process.exit(0);
362
- }
363
- catch (error) {
364
- registerSpinner.fail(chalk.red(`Failed to register models`));
365
- console.log(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}\n`));
366
- process.exit(1);
367
- }
368
- });
369
- // Default action when no command is provided - show home screen
370
- async function runDefaultAction() {
371
- const args = process.argv.slice(2);
372
- // Check if a command was provided (excluding global options like --env)
373
- const hasCommand = args.some((arg) => !arg.startsWith("-") && arg !== "prod" && arg !== "local");
374
- if (!hasCommand) {
375
- const { showHomeScreen } = await import("./tui/screens/index.js");
376
- // Loop to handle navigation
377
- while (true) {
378
- const nextCommand = await showHomeScreen();
379
- if (!nextCommand) {
380
- // User exited without selecting a command
381
- process.exit(0);
382
- }
383
- // Handle the selected command
384
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
385
- switch (nextCommand) {
386
- case "start": {
387
- const { startTUI } = await import("./tui/index.js");
388
- await startTUI();
389
- break;
390
- }
391
- case "setup": {
392
- const { startQuickstart } = await import("./quickstart/index.js");
393
- await startQuickstart();
394
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
395
- continue; // Return to home screen after setup
396
- }
397
- case "auth": {
398
- // Run auth flow (same logic as auth command)
399
- const { url: authUrl, token } = await requestDeviceAuth();
400
- console.log(chalk.white("\nOpening browser for authentication...\n"));
401
- console.log(chalk.white(" If browser doesn't open, visit:"));
402
- console.log(chalk.cyan(` ${authUrl}\n`));
403
- await open(authUrl);
404
- const pollSpinner = ora("Waiting for browser authorization...").start();
405
- const pollInterval = 2000;
406
- const maxAttempts = 30;
407
- let authSuccess = false;
408
- for (let i = 0; i < maxAttempts; i++) {
409
- await sleep(pollInterval);
410
- const result = await pollDeviceAuth(token);
411
- if (result.status === "completed" && result.apiKey) {
412
- setApiKey(result.apiKey);
413
- pollSpinner.succeed(chalk.green("Authenticated successfully!"));
414
- authSuccess = true;
415
- break;
416
- }
417
- if (result.status === "expired") {
418
- pollSpinner.fail(chalk.red("Authorization expired. Please try again."));
419
- break;
420
- }
421
- const remaining = Math.floor(((maxAttempts - i) * pollInterval) / 1000);
422
- pollSpinner.text = `Waiting for browser authorization... (${remaining}s remaining)`;
423
- }
424
- await waitForEnter();
425
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
426
- continue; // Return to home screen after auth
427
- }
428
- case "register": {
429
- const registerSpinner = ora("Discovering local models...").start();
430
- try {
431
- const apiKey = getApiKey();
432
- if (!apiKey) {
433
- registerSpinner.fail(chalk.red("Not authenticated. Please authenticate first."));
434
- await waitForEnter();
435
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
436
- continue;
437
- }
438
- const localModels = await discoverAllModelsWithParameters();
439
- if (localModels.length === 0) {
440
- registerSpinner.fail(chalk.yellow("No local models found."));
441
- await waitForEnter();
442
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
443
- continue;
444
- }
445
- const registeredModels = await getRegisteredModels();
446
- const registeredNames = new Set(registeredModels);
447
- const unregisteredModels = localModels.filter((m) => !registeredNames.has(m.name));
448
- if (unregisteredModels.length === 0) {
449
- registerSpinner.succeed(chalk.green("All models already registered."));
450
- await waitForEnter();
451
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
452
- continue;
453
- }
454
- registerSpinner.text = `Registering ${unregisteredModels.length} models...`;
455
- console.log("\n");
456
- for (const model of unregisteredModels) {
457
- const modelTypeMap = {
458
- text: "llm_chat",
459
- image: "image_generation",
460
- video: "video_generation",
461
- };
462
- const modelType = modelTypeMap[model.capability];
463
- await registerLocalModel({
464
- modelName: model.name,
465
- provider: model.provider,
466
- modelType,
467
- parameters: model.parameters,
468
- });
469
- console.log(chalk.green(`✓ ${model.name} [${model.provider}]`));
470
- }
471
- registerSpinner.succeed(chalk.green(`Registered ${unregisteredModels.length} models.`));
472
- await waitForEnter();
473
- }
474
- catch (error) {
475
- registerSpinner.fail(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));
476
- }
477
- await waitForEnter();
478
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
479
- continue; // Return to home screen
480
- }
481
- case "models": {
482
- const { showModelsScreen } = await import("./tui/screens/index.js");
483
- await showModelsScreen();
484
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
485
- continue; // Return to home screen after models
486
- }
487
- case "config": {
488
- const { showConfigScreen } = await import("./tui/screens/index.js");
489
- await showConfigScreen();
490
- await waitForEnter();
491
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
492
- continue; // Return to home screen after config
493
- }
494
- case "logout": {
495
- clearApiKey();
496
- console.log(chalk.green("\nLogged out successfully. All credentials cleared.\n"));
497
- await waitForEnter();
498
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
499
- continue; // Return to home screen after logout
500
- }
501
- default:
502
- process.exit(0);
503
- }
504
- // If we reach here (from start), exit the loop
505
- break;
506
- }
507
- process.exit(0);
508
- }
509
- }
510
- // Run default action check, then parse commands
511
- runDefaultAction().then(() => {
512
- // Only parse if we haven't handled via default action
513
- if (process.argv
514
- .slice(2)
515
- .some((arg) => !arg.startsWith("-") && arg !== "prod" && arg !== "local")) {
516
- program.parse();
517
- }
518
- });
2
+
3
+ // src/cli.ts
4
+ async function main() {
5
+ const { startTUI } = await import("./tui-56JFPKBP.js");
6
+ await startTUI();
7
+ process.exit(0);
8
+ }
9
+ main();
519
10
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nasync function main() {\n const { startTUI } = await import('./tui/index.js');\n await startTUI();\n process.exit(0);\n}\n\nmain();\n"],"mappings":";;;AACA,eAAe,OAAO;AACpB,QAAM,EAAE,SAAS,IAAI,MAAM,OAAO,mBAAgB;AAClD,QAAM,SAAS;AACf,UAAQ,KAAK,CAAC;AAChB;AAEA,KAAK;","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,24 @@
1
- export { LocalModelRunner } from "./runner.js";
2
- export { discoverAllModels, discoverAllModelsWithParameters, discoverModelsByCapability, discoverRunningProviders, getProvider, getProviderStatuses, isAnyProviderRunning, getTextProvider, getTextProviders, getImageProvider, getImageProviders, isTextProvider, isImageProvider, OllamaProvider, LMStudioProvider, StableDiffusionProvider, type Provider, type TextProvider, type ImageProvider, type LocalModel, type ProviderType, type TextProviderType, type ImageProviderType, type ModelCapability, type ChatMessage, type ChatOptions, type ChatResponse, type ImageGenerationOptions, type ImageGenerationResult, type ImageGenerationProgress, type ParameterSchema, type SelectParameterSchema, type NumberParameterSchema, type TextParameterSchema, type BooleanParameterSchema, type SelectOption, type NumberOptions, } from "./providers/index.js";
3
- export { getApiKey, setApiKey, clearApiKey, getApiBaseUrl, setApiBaseUrl, getOllamaBaseUrl, setOllamaBaseUrl, getLMStudioBaseUrl, setLMStudioBaseUrl, getStableDiffusionBaseUrl, setStableDiffusionBaseUrl, getEnvironment, setEnvironment, type Environment, } from "./config.js";
4
- export { verifyApiKey, pollForRequest, submitProgress, submitGenerationProgress, submitResult, registerLocalModel, type TextResult, type ImageResult, type RequestResult, type RegisterModelOptions, type ModelTypeMindStudio, } from "./api.js";
5
- //# sourceMappingURL=index.d.ts.map
1
+ /**
2
+ * TunnelRunner handles the polling and request processing loop.
3
+ * It emits events that listeners (TUI or simple chalk output) can subscribe to.
4
+ */
5
+ declare class TunnelRunner {
6
+ private isRunning;
7
+ private modelProviderMap;
8
+ private models;
9
+ /**
10
+ * Start with a pre-discovered list of model names.
11
+ * Used by the TUI, which discovers models itself.
12
+ */
13
+ start(models: string[]): Promise<void>;
14
+ stop(): void;
15
+ private buildModelProviderMap;
16
+ private pollLoop;
17
+ private processRequest;
18
+ private handleTextRequest;
19
+ private handleImageRequest;
20
+ private handleVideoRequest;
21
+ private sleep;
22
+ }
23
+
24
+ export { TunnelRunner };
package/dist/index.js CHANGED
@@ -1,14 +1,7 @@
1
- // Main exports for programmatic use
2
- export { LocalModelRunner } from "./runner.js";
3
- export {
4
- // Discovery functions
5
- discoverAllModels, discoverAllModelsWithParameters, discoverModelsByCapability, discoverRunningProviders, getProvider, getProviderStatuses, isAnyProviderRunning,
6
- // Provider-specific getters
7
- getTextProvider, getTextProviders, getImageProvider, getImageProviders,
8
- // Type guards
9
- isTextProvider, isImageProvider,
10
- // Provider classes
11
- OllamaProvider, LMStudioProvider, StableDiffusionProvider, } from "./providers/index.js";
12
- export { getApiKey, setApiKey, clearApiKey, getApiBaseUrl, setApiBaseUrl, getOllamaBaseUrl, setOllamaBaseUrl, getLMStudioBaseUrl, setLMStudioBaseUrl, getStableDiffusionBaseUrl, setStableDiffusionBaseUrl, getEnvironment, setEnvironment, } from "./config.js";
13
- export { verifyApiKey, pollForRequest, submitProgress, submitGenerationProgress, submitResult, registerLocalModel, } from "./api.js";
1
+ import {
2
+ TunnelRunner
3
+ } from "./chunk-PTK4SJQK.js";
4
+ export {
5
+ TunnelRunner
6
+ };
14
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO;AACL,sBAAsB;AACtB,iBAAiB,EACjB,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,WAAW,EACX,mBAAmB,EACnB,oBAAoB;AACpB,4BAA4B;AAC5B,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB;AACjB,cAAc;AACd,cAAc,EACd,eAAe;AACf,mBAAmB;AACnB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,GAwBxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,cAAc,GAEf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAMnB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}