@mindstudio-ai/local-model-tunnel 0.1.3 → 0.1.5

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 (144) hide show
  1. package/README.md +95 -19
  2. package/dist/api.d.ts +37 -3
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +61 -32
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli.js +333 -126
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +4 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +30 -33
  11. package/dist/config.js.map +1 -1
  12. package/dist/helpers.d.ts +4 -0
  13. package/dist/helpers.d.ts.map +1 -0
  14. package/dist/helpers.js +33 -0
  15. package/dist/helpers.js.map +1 -0
  16. package/dist/index.d.ts +3 -3
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +12 -30
  19. package/dist/index.js.map +1 -1
  20. package/dist/providers/index.d.ts +27 -1
  21. package/dist/providers/index.d.ts.map +1 -1
  22. package/dist/providers/index.js +71 -36
  23. package/dist/providers/index.js.map +1 -1
  24. package/dist/providers/lmstudio.d.ts +3 -2
  25. package/dist/providers/lmstudio.d.ts.map +1 -1
  26. package/dist/providers/lmstudio.js +5 -7
  27. package/dist/providers/lmstudio.js.map +1 -1
  28. package/dist/providers/ollama.d.ts +3 -2
  29. package/dist/providers/ollama.d.ts.map +1 -1
  30. package/dist/providers/ollama.js +6 -8
  31. package/dist/providers/ollama.js.map +1 -1
  32. package/dist/providers/stable-diffusion.d.ts +41 -0
  33. package/dist/providers/stable-diffusion.d.ts.map +1 -0
  34. package/dist/providers/stable-diffusion.js +283 -0
  35. package/dist/providers/stable-diffusion.js.map +1 -0
  36. package/dist/providers/types.d.ts +110 -2
  37. package/dist/providers/types.d.ts.map +1 -1
  38. package/dist/providers/types.js +12 -2
  39. package/dist/providers/types.js.map +1 -1
  40. package/dist/quickstart/QuickstartScreen.d.ts +2 -0
  41. package/dist/quickstart/QuickstartScreen.d.ts.map +1 -0
  42. package/dist/quickstart/QuickstartScreen.js +416 -0
  43. package/dist/quickstart/QuickstartScreen.js.map +1 -0
  44. package/dist/quickstart/detect.d.ts +21 -0
  45. package/dist/quickstart/detect.d.ts.map +1 -0
  46. package/dist/quickstart/detect.js +181 -0
  47. package/dist/quickstart/detect.js.map +1 -0
  48. package/dist/quickstart/index.d.ts +4 -0
  49. package/dist/quickstart/index.d.ts.map +1 -0
  50. package/dist/quickstart/index.js +10 -0
  51. package/dist/quickstart/index.js.map +1 -0
  52. package/dist/quickstart/installers.d.ts +42 -0
  53. package/dist/quickstart/installers.d.ts.map +1 -0
  54. package/dist/quickstart/installers.js +436 -0
  55. package/dist/quickstart/installers.js.map +1 -0
  56. package/dist/runner.d.ts +3 -0
  57. package/dist/runner.d.ts.map +1 -1
  58. package/dist/runner.js +139 -61
  59. package/dist/runner.js.map +1 -1
  60. package/dist/tui/App.d.ts +7 -0
  61. package/dist/tui/App.d.ts.map +1 -0
  62. package/dist/tui/App.js +53 -0
  63. package/dist/tui/App.js.map +1 -0
  64. package/dist/tui/TunnelRunner.d.ts +18 -0
  65. package/dist/tui/TunnelRunner.d.ts.map +1 -0
  66. package/dist/tui/TunnelRunner.js +187 -0
  67. package/dist/tui/TunnelRunner.js.map +1 -0
  68. package/dist/tui/components/Header.d.ts +9 -0
  69. package/dist/tui/components/Header.d.ts.map +1 -0
  70. package/dist/tui/components/Header.js +21 -0
  71. package/dist/tui/components/Header.js.map +1 -0
  72. package/dist/tui/components/ModelsPanel.d.ts +7 -0
  73. package/dist/tui/components/ModelsPanel.d.ts.map +1 -0
  74. package/dist/tui/components/ModelsPanel.js +28 -0
  75. package/dist/tui/components/ModelsPanel.js.map +1 -0
  76. package/dist/tui/components/ProvidersPanel.d.ts +7 -0
  77. package/dist/tui/components/ProvidersPanel.d.ts.map +1 -0
  78. package/dist/tui/components/ProvidersPanel.js +6 -0
  79. package/dist/tui/components/ProvidersPanel.js.map +1 -0
  80. package/dist/tui/components/RequestLog.d.ts +8 -0
  81. package/dist/tui/components/RequestLog.d.ts.map +1 -0
  82. package/dist/tui/components/RequestLog.js +60 -0
  83. package/dist/tui/components/RequestLog.js.map +1 -0
  84. package/dist/tui/components/StatusBar.d.ts +10 -0
  85. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  86. package/dist/tui/components/StatusBar.js +7 -0
  87. package/dist/tui/components/StatusBar.js.map +1 -0
  88. package/dist/tui/components/index.d.ts +6 -0
  89. package/dist/tui/components/index.d.ts.map +1 -0
  90. package/dist/tui/components/index.js +6 -0
  91. package/dist/tui/components/index.js.map +1 -0
  92. package/dist/tui/events.d.ts +34 -0
  93. package/dist/tui/events.d.ts.map +1 -0
  94. package/dist/tui/events.js +26 -0
  95. package/dist/tui/events.js.map +1 -0
  96. package/dist/tui/hooks/index.d.ts +5 -0
  97. package/dist/tui/hooks/index.d.ts.map +1 -0
  98. package/dist/tui/hooks/index.js +5 -0
  99. package/dist/tui/hooks/index.js.map +1 -0
  100. package/dist/tui/hooks/useConnection.d.ts +10 -0
  101. package/dist/tui/hooks/useConnection.d.ts.map +1 -0
  102. package/dist/tui/hooks/useConnection.js +42 -0
  103. package/dist/tui/hooks/useConnection.js.map +1 -0
  104. package/dist/tui/hooks/useModels.d.ts +9 -0
  105. package/dist/tui/hooks/useModels.d.ts.map +1 -0
  106. package/dist/tui/hooks/useModels.js +28 -0
  107. package/dist/tui/hooks/useModels.js.map +1 -0
  108. package/dist/tui/hooks/useProviders.d.ts +9 -0
  109. package/dist/tui/hooks/useProviders.d.ts.map +1 -0
  110. package/dist/tui/hooks/useProviders.js +30 -0
  111. package/dist/tui/hooks/useProviders.js.map +1 -0
  112. package/dist/tui/hooks/useRequests.d.ts +9 -0
  113. package/dist/tui/hooks/useRequests.d.ts.map +1 -0
  114. package/dist/tui/hooks/useRequests.js +60 -0
  115. package/dist/tui/hooks/useRequests.js.map +1 -0
  116. package/dist/tui/index.d.ts +2 -0
  117. package/dist/tui/index.d.ts.map +1 -0
  118. package/dist/tui/index.js +19 -0
  119. package/dist/tui/index.js.map +1 -0
  120. package/dist/tui/screens/ConfigScreen.d.ts +2 -0
  121. package/dist/tui/screens/ConfigScreen.d.ts.map +1 -0
  122. package/dist/tui/screens/ConfigScreen.js +18 -0
  123. package/dist/tui/screens/ConfigScreen.js.map +1 -0
  124. package/dist/tui/screens/HomeScreen.d.ts +2 -0
  125. package/dist/tui/screens/HomeScreen.d.ts.map +1 -0
  126. package/dist/tui/screens/HomeScreen.js +156 -0
  127. package/dist/tui/screens/HomeScreen.js.map +1 -0
  128. package/dist/tui/screens/ModelsScreen.d.ts +2 -0
  129. package/dist/tui/screens/ModelsScreen.d.ts.map +1 -0
  130. package/dist/tui/screens/ModelsScreen.js +59 -0
  131. package/dist/tui/screens/ModelsScreen.js.map +1 -0
  132. package/dist/tui/screens/StatusScreen.d.ts +2 -0
  133. package/dist/tui/screens/StatusScreen.d.ts.map +1 -0
  134. package/dist/tui/screens/StatusScreen.js +53 -0
  135. package/dist/tui/screens/StatusScreen.js.map +1 -0
  136. package/dist/tui/screens/index.d.ts +9 -0
  137. package/dist/tui/screens/index.d.ts.map +1 -0
  138. package/dist/tui/screens/index.js +31 -0
  139. package/dist/tui/screens/index.js.map +1 -0
  140. package/dist/tui/types.d.ts +30 -0
  141. package/dist/tui/types.d.ts.map +1 -0
  142. package/dist/tui/types.js +2 -0
  143. package/dist/tui/types.js.map +1 -0
  144. package/package.json +8 -2
package/README.md CHANGED
@@ -2,19 +2,19 @@
2
2
 
3
3
  Run local models with MindStudio.
4
4
 
5
- Providers supported:
5
+ Providers supported so far:
6
6
 
7
- - [Ollama](https://ollama.ai)
8
- - [LM Studio](https://lmstudio.ai/)
7
+ - **Text Generation**
9
8
 
10
- With more coming soon...
9
+ - [Ollama](https://ollama.ai)
10
+ - [LM Studio](https://lmstudio.ai/)
11
+
12
+ - **Image Generation**
13
+ - [Stable Diffusion](https://github.com/lllyasviel/stable-diffusion-webui-forge)
11
14
 
12
15
  ## Prerequisites
13
16
 
14
17
  - Node.js 18+
15
- - At least one of these:
16
- - [Ollama](https://ollama.ai) installed and running with `ollama serve`
17
- - [LM Studio](https://lmstudio.ai/) installed and local server running
18
18
 
19
19
  ## Installation
20
20
 
@@ -25,35 +25,111 @@ npm install -g @mindstudio-ai/local-model-tunnel
25
25
  ## Quick Start
26
26
 
27
27
  ```bash
28
+ # Launch the interactive menu
29
+ mindstudio-local
30
+ ```
31
+
32
+ This opens an interactive home screen where you can:
33
+
34
+ - **Setup** - Install and configure local AI providers (Ollama, LM Studio, Stable Diffusion)
35
+ - **Authenticate** - Log in to MindStudio
36
+ - **Register Models** - Register your local models with MindStudio
37
+ - **Start Tunnel** - Launch the local model tunnel
38
+ - **View Models** - See available local models
39
+ - **Configuration** - View current settings
40
+
41
+ ### Manual Commands
42
+
43
+ If you prefer command-line usage:
44
+
45
+ ```bash
46
+ # Run the setup wizard
47
+ mindstudio-local setup
48
+
28
49
  # Authenticate with MindStudio
29
50
  mindstudio-local auth
30
51
 
31
- # Register your local models on MindStudio
52
+ # Register your local models
32
53
  mindstudio-local register
33
54
 
34
55
  # Start the tunnel
35
56
  mindstudio-local start
36
57
  ```
37
58
 
59
+ ## Setup Wizard
60
+
61
+ The setup wizard (`mindstudio-local setup`) helps you install and configure providers:
62
+
63
+ **Ollama:**
64
+
65
+ - Auto-install Ollama (Linux/macOS)
66
+ - Start/stop Ollama server
67
+ - Download models from [ollama.com/library](https://ollama.com/library)
68
+
69
+ **LM Studio:**
70
+
71
+ - Opens download page in browser
72
+ - Guides you through enabling the local server
73
+
74
+ **Stable Diffusion Forge:**
75
+
76
+ - Clones the repository to your chosen location
77
+ - Provides setup instructions
78
+ - Tip: Download models from [civitai.com](https://civitai.com) (filter by "SDXL 1.0")
79
+
80
+ ## Provider Setup (Manual)
81
+
82
+ ### Ollama
83
+
84
+ 1. Download [Ollama](https://ollama.com/download)
85
+ 2. Pull a model: `ollama pull llama3.2` (see [all models](https://ollama.com/library))
86
+ 3. Start the server: `ollama serve`
87
+
88
+ ### LM Studio
89
+
90
+ 1. Download [LM Studio](https://lmstudio.ai/download)
91
+ 2. Download a model through the app
92
+ 3. Enable the [Local Server](https://lmstudio.ai/docs/developer/core/server#running-the-server)
93
+
94
+ ### Stable Diffusion (Forge)
95
+
96
+ **First-time setup:**
97
+
98
+ ```bash
99
+ git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git
100
+ cd stable-diffusion-webui-forge
101
+ ./webui.sh --api
102
+ ```
103
+
104
+ **Subsequent runs:**
105
+
106
+ ```bash
107
+ cd stable-diffusion-webui-forge
108
+ ./webui.sh --api
109
+ ```
110
+
38
111
  ## Commands
39
112
 
40
- | Command | Description |
41
- | ---------- | ----------------------------------------- |
42
- | `auth` | Authenticate with MindStudio via browser |
43
- | `register` | Register all local models with MindStudio |
44
- | `start` | Start the local model tunnel |
45
- | `models` | List available local Ollama models |
46
- | `status` | Check connection status |
47
- | `config` | Show current configuration |
48
- | `set-config` | Set configuration |
49
- | `logout` | Remove stored credentials |
113
+ | Command | Description |
114
+ | ------------ | ----------------------------------------- |
115
+ | _(none)_ | Open interactive home screen |
116
+ | `setup` | Interactive setup wizard for providers |
117
+ | `auth` | Authenticate with MindStudio via browser |
118
+ | `register` | Register all local models with MindStudio |
119
+ | `start` | Start the local model tunnel |
120
+ | `models` | List available local models |
121
+ | `status` | Check connection status |
122
+ | `config` | Show current configuration |
123
+ | `set-config` | Set configuration |
124
+ | `logout` | Remove stored credentials |
50
125
 
51
126
  ## Configuration Options
52
127
 
53
128
  ```bash
54
129
  # Use custom provider URLs
55
130
  mindstudio-local set-config --ollama-url http://localhost:11434
56
- mindstudio-local set-config --lmstudio-url http://localhost:1234
131
+ mindstudio-local set-config --lmstudio-url http://localhost:1234/v1
132
+ mindstudio-local set-config --sd-url http://127.0.0.1:7860
57
133
  ```
58
134
 
59
135
  ## How It Works
package/dist/api.d.ts CHANGED
@@ -16,16 +16,50 @@ export interface LocalModelRequest {
16
16
  createdAt: number;
17
17
  }
18
18
  export declare function pollForRequest(models: string[]): Promise<LocalModelRequest | null>;
19
+ /**
20
+ * Progress update for text generation (streaming content)
21
+ */
19
22
  export declare function submitProgress(requestId: string, content: string): Promise<void>;
20
- export declare function submitResult(requestId: string, success: boolean, result?: {
23
+ /**
24
+ * Progress update for image/video generation (step-based)
25
+ */
26
+ export declare function submitGenerationProgress(requestId: string, step: number, totalSteps: number, preview?: string): Promise<void>;
27
+ /**
28
+ * Result for text/chat completions
29
+ */
30
+ export interface TextResult {
21
31
  content?: string;
22
32
  usage?: {
23
33
  promptTokens: number;
24
34
  completionTokens: number;
25
35
  };
26
- }, error?: string): Promise<void>;
36
+ }
37
+ /**
38
+ * Result for image generation
39
+ */
40
+ export interface ImageResult {
41
+ /** Base64-encoded image data */
42
+ imageBase64: string;
43
+ /** MIME type (e.g., "image/png") */
44
+ mimeType: string;
45
+ /** Seed used for generation */
46
+ seed?: number;
47
+ }
48
+ /**
49
+ * Combined result type
50
+ */
51
+ export type RequestResult = TextResult | ImageResult;
52
+ export declare function submitResult(requestId: string, success: boolean, result?: RequestResult, error?: string): Promise<void>;
27
53
  export declare function verifyApiKey(): Promise<boolean>;
28
- export declare function registerLocalModel(modelName: string, provider?: string): Promise<void>;
54
+ export type ModelTypeMindStudio = "llm_chat" | "image_generation" | "video_generation";
55
+ export interface RegisterModelOptions {
56
+ modelName: string;
57
+ provider: string;
58
+ modelType?: ModelTypeMindStudio;
59
+ /** Parameter schemas for configurable options */
60
+ parameters?: unknown[];
61
+ }
62
+ export declare function registerLocalModel(modelNameOrOptions: string | RegisterModelOptions, provider?: string, modelType?: ModelTypeMindStudio): Promise<void>;
29
63
  export declare function getRegisteredModels(): Promise<string[]>;
30
64
  export declare function requestDeviceAuth(): Promise<{
31
65
  url: string;
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IAClE,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAsBnC;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D,EACD,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAarD;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB7D;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAmBD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAoBD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYzD"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -1,17 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pollForRequest = pollForRequest;
4
- exports.submitProgress = submitProgress;
5
- exports.submitResult = submitResult;
6
- exports.verifyApiKey = verifyApiKey;
7
- exports.registerLocalModel = registerLocalModel;
8
- exports.getRegisteredModels = getRegisteredModels;
9
- exports.requestDeviceAuth = requestDeviceAuth;
10
- exports.pollDeviceAuth = pollDeviceAuth;
11
- exports.disconnectHeartbeat = disconnectHeartbeat;
12
- const config_js_1 = require("./config.js");
1
+ import { getApiKey, getApiBaseUrl } from "./config.js";
13
2
  function getHeaders() {
14
- const apiKey = (0, config_js_1.getApiKey)();
3
+ const apiKey = getApiKey();
15
4
  if (!apiKey) {
16
5
  throw new Error("Not authenticated. Run: mindstudio-local auth");
17
6
  }
@@ -20,8 +9,8 @@ function getHeaders() {
20
9
  "Content-Type": "application/json",
21
10
  };
22
11
  }
23
- async function pollForRequest(models) {
24
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
12
+ export async function pollForRequest(models) {
13
+ const baseUrl = getApiBaseUrl();
25
14
  const modelsParam = models.join(",");
26
15
  const response = await fetch(`${baseUrl}/v1/local-models/poll?models=${encodeURIComponent(modelsParam)}`, {
27
16
  method: "GET",
@@ -37,8 +26,11 @@ async function pollForRequest(models) {
37
26
  const data = (await response.json());
38
27
  return data.request;
39
28
  }
40
- async function submitProgress(requestId, content) {
41
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
29
+ /**
30
+ * Progress update for text generation (streaming content)
31
+ */
32
+ export async function submitProgress(requestId, content) {
33
+ const baseUrl = getApiBaseUrl();
42
34
  const response = await fetch(`${baseUrl}/v1/local-models/requests/${requestId}/progress`, {
43
35
  method: "POST",
44
36
  headers: getHeaders(),
@@ -48,8 +40,27 @@ async function submitProgress(requestId, content) {
48
40
  console.warn(`Progress update failed: ${response.status}`);
49
41
  }
50
42
  }
51
- async function submitResult(requestId, success, result, error) {
52
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
43
+ /**
44
+ * Progress update for image/video generation (step-based)
45
+ */
46
+ export async function submitGenerationProgress(requestId, step, totalSteps, preview) {
47
+ const baseUrl = getApiBaseUrl();
48
+ const response = await fetch(`${baseUrl}/v1/local-models/requests/${requestId}/progress`, {
49
+ method: "POST",
50
+ headers: getHeaders(),
51
+ body: JSON.stringify({
52
+ type: "generation",
53
+ step,
54
+ totalSteps,
55
+ preview,
56
+ }),
57
+ });
58
+ if (!response.ok) {
59
+ console.warn(`Generation progress update failed: ${response.status}`);
60
+ }
61
+ }
62
+ export async function submitResult(requestId, success, result, error) {
63
+ const baseUrl = getApiBaseUrl();
53
64
  const response = await fetch(`${baseUrl}/v1/local-models/requests/${requestId}/result`, {
54
65
  method: "POST",
55
66
  headers: getHeaders(),
@@ -60,8 +71,8 @@ async function submitResult(requestId, success, result, error) {
60
71
  throw new Error(`Result submission failed: ${response.status} ${errorText}`);
61
72
  }
62
73
  }
63
- async function verifyApiKey() {
64
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
74
+ export async function verifyApiKey() {
75
+ const baseUrl = getApiBaseUrl();
65
76
  try {
66
77
  const response = await fetch(`${baseUrl}/v1/local-models/verify-api-key`, {
67
78
  method: "GET",
@@ -73,20 +84,38 @@ async function verifyApiKey() {
73
84
  return false;
74
85
  }
75
86
  }
76
- async function registerLocalModel(modelName, provider = "ollama") {
77
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
87
+ export async function registerLocalModel(modelNameOrOptions, provider = "ollama", modelType = "llm_chat") {
88
+ const baseUrl = getApiBaseUrl();
89
+ let payload;
90
+ if (typeof modelNameOrOptions === "string") {
91
+ // Legacy signature
92
+ payload = {
93
+ modelName: modelNameOrOptions,
94
+ provider,
95
+ modelType,
96
+ };
97
+ }
98
+ else {
99
+ // New options object signature
100
+ payload = {
101
+ modelName: modelNameOrOptions.modelName,
102
+ provider: modelNameOrOptions.provider,
103
+ modelType: modelNameOrOptions.modelType || "llm_chat",
104
+ parameters: modelNameOrOptions.parameters,
105
+ };
106
+ }
78
107
  const response = await fetch(`${baseUrl}/v1/local-models/models/create`, {
79
108
  method: "POST",
80
109
  headers: getHeaders(),
81
- body: JSON.stringify({ modelName, provider }),
110
+ body: JSON.stringify(payload),
82
111
  });
83
112
  if (!response.ok) {
84
113
  const errorText = await response.text();
85
114
  throw new Error(`Register failed: ${response.status} ${errorText}`);
86
115
  }
87
116
  }
88
- async function getRegisteredModels() {
89
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
117
+ export async function getRegisteredModels() {
118
+ const baseUrl = getApiBaseUrl();
90
119
  const response = await fetch(`${baseUrl}/v1/local-models/models`, {
91
120
  method: "GET",
92
121
  headers: getHeaders(),
@@ -98,8 +127,8 @@ async function getRegisteredModels() {
98
127
  const data = (await response.json());
99
128
  return data.models;
100
129
  }
101
- async function requestDeviceAuth() {
102
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
130
+ export async function requestDeviceAuth() {
131
+ const baseUrl = getApiBaseUrl();
103
132
  const response = await fetch(`${baseUrl}/developer/v2/request-auth-url`, {
104
133
  method: "GET",
105
134
  headers: { "Content-Type": "application/json" },
@@ -111,8 +140,8 @@ async function requestDeviceAuth() {
111
140
  const data = (await response.json());
112
141
  return data;
113
142
  }
114
- async function pollDeviceAuth(token) {
115
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
143
+ export async function pollDeviceAuth(token) {
144
+ const baseUrl = getApiBaseUrl();
116
145
  const response = await fetch(`${baseUrl}/developer/v2/poll-auth-url`, {
117
146
  method: "POST",
118
147
  headers: { "Content-Type": "application/json" },
@@ -125,8 +154,8 @@ async function pollDeviceAuth(token) {
125
154
  const data = (await response.json());
126
155
  return data;
127
156
  }
128
- async function disconnectHeartbeat() {
129
- const baseUrl = (0, config_js_1.getApiBaseUrl)();
157
+ export async function disconnectHeartbeat() {
158
+ const baseUrl = getApiBaseUrl();
130
159
  const response = await fetch(`${baseUrl}/v1/local-models/disconnect`, {
131
160
  method: "POST",
132
161
  headers: getHeaders(),
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}