@goondocks/myco 0.3.6 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +9 -4
- package/commands/init.md +63 -39
- package/commands/setup-llm.md +69 -44
- package/commands/status.md +28 -10
- package/dist/{chunk-LAL7WK6I.js → chunk-2GJFTIWX.js} +2 -2
- package/dist/chunk-4FCFRJIQ.js +147 -0
- package/dist/chunk-4FCFRJIQ.js.map +1 -0
- package/dist/{chunk-PA3VMINE.js → chunk-AK6GNLPV.js} +6 -1
- package/dist/chunk-AK6GNLPV.js.map +1 -0
- package/dist/{chunk-ZCGGWNAA.js → chunk-BNIYWCST.js} +3 -3
- package/dist/chunk-BNIYWCST.js.map +1 -0
- package/dist/{chunk-ISCT2SI6.js → chunk-G6ZMTQMJ.js} +7357 -60
- package/dist/chunk-G6ZMTQMJ.js.map +1 -0
- package/dist/{chunk-7WNE22W7.js → chunk-IVS5MYBL.js} +3 -3
- package/dist/{chunk-7WNE22W7.js.map → chunk-IVS5MYBL.js.map} +1 -1
- package/dist/{chunk-7VPJK56U.js → chunk-JBD5KP5G.js} +31 -16
- package/dist/chunk-JBD5KP5G.js.map +1 -0
- package/dist/chunk-NUA7UTIY.js +37 -0
- package/dist/chunk-NUA7UTIY.js.map +1 -0
- package/dist/{chunk-5EGHGTN2.js → chunk-OUFSLZTX.js} +4 -4
- package/dist/chunk-P7RNAYU7.js +242 -0
- package/dist/chunk-P7RNAYU7.js.map +1 -0
- package/dist/chunk-QQ36XEJP.js +38 -0
- package/dist/chunk-QQ36XEJP.js.map +1 -0
- package/dist/chunk-RDXTQ436.js +49 -0
- package/dist/chunk-RDXTQ436.js.map +1 -0
- package/dist/{chunk-AWF3M57N.js → chunk-S7EIHYE7.js} +8 -8
- package/dist/{chunk-AWF3M57N.js.map → chunk-S7EIHYE7.js.map} +1 -1
- package/dist/{chunk-QWU7QLZI.js → chunk-TZDDXRHG.js} +10 -10
- package/dist/chunk-TZDDXRHG.js.map +1 -0
- package/dist/chunk-VYV5IFD6.js +99 -0
- package/dist/chunk-VYV5IFD6.js.map +1 -0
- package/dist/{chunk-F6AG6YXJ.js → chunk-XCPQHC4X.js} +2 -2
- package/dist/{chunk-5O52JLGT.js → chunk-XHWIIU5D.js} +8 -9
- package/dist/chunk-XHWIIU5D.js.map +1 -0
- package/dist/{chunk-2YQGS5CK.js → chunk-YZO22BBI.js} +45 -31
- package/dist/chunk-YZO22BBI.js.map +1 -0
- package/dist/{chunk-ZBNT6E22.js → chunk-ZCBL5HER.js} +2 -2
- package/dist/{cli-DNYLL2JD.js → cli-ZN6VBA7V.js} +23 -17
- package/dist/cli-ZN6VBA7V.js.map +1 -0
- package/dist/{client-XBD4NCDO.js → client-5SUO2UYH.js} +5 -5
- package/dist/{config-MD4XMLUS.js → config-4GGMWGAF.js} +4 -4
- package/dist/{detect-providers-LNOLBICR.js → detect-providers-5FU3BN5Q.js} +3 -3
- package/dist/{init-57K46O7U.js → init-7UXGDOFS.js} +51 -60
- package/dist/init-7UXGDOFS.js.map +1 -0
- package/dist/{main-FOZYS5B7.js → main-6UPAIDGS.js} +648 -228
- package/dist/main-6UPAIDGS.js.map +1 -0
- package/dist/{rebuild-JW6BCHHZ.js → rebuild-QDSYYCS7.js} +10 -10
- package/dist/rebuild-QDSYYCS7.js.map +1 -0
- package/dist/{reprocess-5YK7ZOFW.js → reprocess-ZNUQCIS3.js} +18 -18
- package/dist/reprocess-ZNUQCIS3.js.map +1 -0
- package/dist/{restart-GZE73CZ7.js → restart-5UY2KV54.js} +6 -6
- package/dist/{search-2HMG3ON7.js → search-2VEN3XIG.js} +9 -9
- package/dist/{server-KKVTFBSN.js → server-OR5B4B7K.js} +77 -54
- package/dist/{server-KKVTFBSN.js.map → server-OR5B4B7K.js.map} +1 -1
- package/dist/{session-5GI2YU6R.js → session-QF6MILAC.js} +2 -2
- package/dist/{session-start-5KXWKS3B.js → session-start-TUITIUMB.js} +29 -28
- package/dist/session-start-TUITIUMB.js.map +1 -0
- package/dist/setup-digest-ETCZAUIU.js +15 -0
- package/dist/setup-llm-DWEJE3JE.js +15 -0
- package/dist/setup-llm-DWEJE3JE.js.map +1 -0
- package/dist/src/cli.js +4 -4
- package/dist/src/daemon/main.js +4 -4
- package/dist/src/hooks/post-tool-use.js +5 -5
- package/dist/src/hooks/session-end.js +5 -5
- package/dist/src/hooks/session-start.js +4 -4
- package/dist/src/hooks/stop.js +7 -7
- package/dist/src/hooks/user-prompt-submit.js +5 -5
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +4 -4
- package/dist/src/prompts/classification.md +1 -0
- package/dist/src/prompts/digest-10000.md +74 -0
- package/dist/src/prompts/digest-1500.md +25 -0
- package/dist/src/prompts/digest-3000.md +32 -0
- package/dist/src/prompts/digest-5000.md +43 -0
- package/dist/src/prompts/digest-system.md +32 -0
- package/dist/src/prompts/extraction.md +11 -10
- package/dist/src/prompts/summary.md +11 -1
- package/dist/src/prompts/title.md +1 -1
- package/dist/{stats-R5KAGBQE.js → stats-IVIXIKTS.js} +12 -12
- package/dist/stats-IVIXIKTS.js.map +1 -0
- package/dist/{verify-7MWOV72E.js → verify-4H6CEE5T.js} +6 -6
- package/dist/{version-DLKARUP4.js → version-5B2TWXQJ.js} +4 -4
- package/dist/version-5B2TWXQJ.js.map +1 -0
- package/package.json +1 -1
- package/skills/myco/SKILL.md +20 -20
- package/skills/myco/references/wisdom.md +14 -14
- package/skills/rules/SKILL.md +4 -4
- package/dist/chunk-2YQGS5CK.js.map +0 -1
- package/dist/chunk-5O52JLGT.js.map +0 -1
- package/dist/chunk-7VPJK56U.js.map +0 -1
- package/dist/chunk-BA23DROX.js +0 -160
- package/dist/chunk-BA23DROX.js.map +0 -1
- package/dist/chunk-EF4JVH24.js +0 -7299
- package/dist/chunk-EF4JVH24.js.map +0 -1
- package/dist/chunk-ISCT2SI6.js.map +0 -1
- package/dist/chunk-PA3VMINE.js.map +0 -1
- package/dist/chunk-QWU7QLZI.js.map +0 -1
- package/dist/chunk-YMYJ7FNH.js +0 -19
- package/dist/chunk-YMYJ7FNH.js.map +0 -1
- package/dist/chunk-ZCGGWNAA.js.map +0 -1
- package/dist/cli-DNYLL2JD.js.map +0 -1
- package/dist/init-57K46O7U.js.map +0 -1
- package/dist/main-FOZYS5B7.js.map +0 -1
- package/dist/rebuild-JW6BCHHZ.js.map +0 -1
- package/dist/reprocess-5YK7ZOFW.js.map +0 -1
- package/dist/session-start-5KXWKS3B.js.map +0 -1
- package/dist/stats-R5KAGBQE.js.map +0 -1
- /package/dist/{chunk-LAL7WK6I.js.map → chunk-2GJFTIWX.js.map} +0 -0
- /package/dist/{chunk-5EGHGTN2.js.map → chunk-OUFSLZTX.js.map} +0 -0
- /package/dist/{chunk-F6AG6YXJ.js.map → chunk-XCPQHC4X.js.map} +0 -0
- /package/dist/{chunk-ZBNT6E22.js.map → chunk-ZCBL5HER.js.map} +0 -0
- /package/dist/{client-XBD4NCDO.js.map → client-5SUO2UYH.js.map} +0 -0
- /package/dist/{config-MD4XMLUS.js.map → config-4GGMWGAF.js.map} +0 -0
- /package/dist/{detect-providers-LNOLBICR.js.map → detect-providers-5FU3BN5Q.js.map} +0 -0
- /package/dist/{restart-GZE73CZ7.js.map → restart-5UY2KV54.js.map} +0 -0
- /package/dist/{search-2HMG3ON7.js.map → search-2VEN3XIG.js.map} +0 -0
- /package/dist/{session-5GI2YU6R.js.map → session-QF6MILAC.js.map} +0 -0
- /package/dist/{version-DLKARUP4.js.map → setup-digest-ETCZAUIU.js.map} +0 -0
- /package/dist/{verify-7MWOV72E.js.map → verify-4H6CEE5T.js.map} +0 -0
package/dist/chunk-BA23DROX.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
CHARS_PER_TOKEN,
|
|
4
|
-
DAEMON_CLIENT_TIMEOUT_MS,
|
|
5
|
-
EMBEDDING_REQUEST_TIMEOUT_MS,
|
|
6
|
-
LLM_REQUEST_TIMEOUT_MS
|
|
7
|
-
} from "./chunk-7VPJK56U.js";
|
|
8
|
-
|
|
9
|
-
// src/intelligence/ollama.ts
|
|
10
|
-
var OllamaBackend = class _OllamaBackend {
|
|
11
|
-
static DEFAULT_BASE_URL = "http://localhost:11434";
|
|
12
|
-
name = "ollama";
|
|
13
|
-
baseUrl;
|
|
14
|
-
model;
|
|
15
|
-
contextWindow;
|
|
16
|
-
defaultMaxTokens;
|
|
17
|
-
constructor(config) {
|
|
18
|
-
this.baseUrl = config?.base_url ?? _OllamaBackend.DEFAULT_BASE_URL;
|
|
19
|
-
this.model = config?.model ?? config?.summary_model ?? "llama3.2";
|
|
20
|
-
this.contextWindow = config?.context_window ?? 8192;
|
|
21
|
-
this.defaultMaxTokens = config?.max_tokens ?? 1024;
|
|
22
|
-
}
|
|
23
|
-
async summarize(prompt, opts) {
|
|
24
|
-
const maxTokens = opts?.maxTokens ?? this.defaultMaxTokens;
|
|
25
|
-
const promptTokens = Math.ceil(prompt.length / CHARS_PER_TOKEN);
|
|
26
|
-
const numCtx = Math.max(promptTokens + maxTokens, this.contextWindow);
|
|
27
|
-
const response = await fetch(`${this.baseUrl}/api/generate`, {
|
|
28
|
-
method: "POST",
|
|
29
|
-
headers: { "Content-Type": "application/json" },
|
|
30
|
-
body: JSON.stringify({
|
|
31
|
-
model: this.model,
|
|
32
|
-
prompt,
|
|
33
|
-
stream: false,
|
|
34
|
-
options: { num_ctx: numCtx }
|
|
35
|
-
}),
|
|
36
|
-
signal: AbortSignal.timeout(LLM_REQUEST_TIMEOUT_MS)
|
|
37
|
-
});
|
|
38
|
-
if (!response.ok) {
|
|
39
|
-
throw new Error(`Ollama summarize failed: ${response.status} ${response.statusText}`);
|
|
40
|
-
}
|
|
41
|
-
const data = await response.json();
|
|
42
|
-
return { text: data.response, model: data.model };
|
|
43
|
-
}
|
|
44
|
-
async embed(text) {
|
|
45
|
-
const response = await fetch(`${this.baseUrl}/api/embed`, {
|
|
46
|
-
method: "POST",
|
|
47
|
-
headers: { "Content-Type": "application/json" },
|
|
48
|
-
body: JSON.stringify({
|
|
49
|
-
model: this.model,
|
|
50
|
-
input: text
|
|
51
|
-
}),
|
|
52
|
-
signal: AbortSignal.timeout(EMBEDDING_REQUEST_TIMEOUT_MS)
|
|
53
|
-
});
|
|
54
|
-
if (!response.ok) {
|
|
55
|
-
throw new Error(`Ollama embed failed: ${response.status} ${response.statusText}`);
|
|
56
|
-
}
|
|
57
|
-
const data = await response.json();
|
|
58
|
-
const embedding = data.embeddings[0];
|
|
59
|
-
return { embedding, model: data.model, dimensions: embedding.length };
|
|
60
|
-
}
|
|
61
|
-
async isAvailable() {
|
|
62
|
-
try {
|
|
63
|
-
const response = await fetch(`${this.baseUrl}/api/tags`, {
|
|
64
|
-
signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS)
|
|
65
|
-
});
|
|
66
|
-
return response.ok;
|
|
67
|
-
} catch {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/** List available models on this Ollama instance. */
|
|
72
|
-
async listModels(timeoutMs) {
|
|
73
|
-
try {
|
|
74
|
-
const response = await fetch(`${this.baseUrl}/api/tags`, {
|
|
75
|
-
signal: AbortSignal.timeout(timeoutMs ?? DAEMON_CLIENT_TIMEOUT_MS)
|
|
76
|
-
});
|
|
77
|
-
const data = await response.json();
|
|
78
|
-
return data.models.map((m) => m.name);
|
|
79
|
-
} catch {
|
|
80
|
-
return [];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
// src/intelligence/lm-studio.ts
|
|
86
|
-
var LmStudioBackend = class _LmStudioBackend {
|
|
87
|
-
static DEFAULT_BASE_URL = "http://localhost:1234";
|
|
88
|
-
name = "lm-studio";
|
|
89
|
-
baseUrl;
|
|
90
|
-
model;
|
|
91
|
-
defaultMaxTokens;
|
|
92
|
-
constructor(config) {
|
|
93
|
-
this.baseUrl = config?.base_url ?? _LmStudioBackend.DEFAULT_BASE_URL;
|
|
94
|
-
this.model = config?.model ?? config?.summary_model ?? "llama3.2";
|
|
95
|
-
this.defaultMaxTokens = config?.max_tokens ?? 1024;
|
|
96
|
-
}
|
|
97
|
-
async summarize(prompt, opts) {
|
|
98
|
-
const maxTokens = opts?.maxTokens ?? this.defaultMaxTokens;
|
|
99
|
-
const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
|
|
100
|
-
method: "POST",
|
|
101
|
-
headers: { "Content-Type": "application/json" },
|
|
102
|
-
body: JSON.stringify({
|
|
103
|
-
model: this.model,
|
|
104
|
-
messages: [{ role: "user", content: prompt }],
|
|
105
|
-
max_tokens: maxTokens
|
|
106
|
-
}),
|
|
107
|
-
signal: AbortSignal.timeout(LLM_REQUEST_TIMEOUT_MS)
|
|
108
|
-
});
|
|
109
|
-
if (!response.ok) {
|
|
110
|
-
throw new Error(`LM Studio summarize failed: ${response.status}`);
|
|
111
|
-
}
|
|
112
|
-
const data = await response.json();
|
|
113
|
-
return { text: data.choices[0].message.content, model: data.model };
|
|
114
|
-
}
|
|
115
|
-
async embed(text) {
|
|
116
|
-
const response = await fetch(`${this.baseUrl}/v1/embeddings`, {
|
|
117
|
-
method: "POST",
|
|
118
|
-
headers: { "Content-Type": "application/json" },
|
|
119
|
-
body: JSON.stringify({
|
|
120
|
-
model: this.model,
|
|
121
|
-
input: text
|
|
122
|
-
}),
|
|
123
|
-
signal: AbortSignal.timeout(EMBEDDING_REQUEST_TIMEOUT_MS)
|
|
124
|
-
});
|
|
125
|
-
if (!response.ok) {
|
|
126
|
-
throw new Error(`LM Studio embed failed: ${response.status}`);
|
|
127
|
-
}
|
|
128
|
-
const data = await response.json();
|
|
129
|
-
const embedding = data.data[0].embedding;
|
|
130
|
-
return { embedding, model: data.model, dimensions: embedding.length };
|
|
131
|
-
}
|
|
132
|
-
async isAvailable() {
|
|
133
|
-
try {
|
|
134
|
-
const response = await fetch(`${this.baseUrl}/v1/models`, {
|
|
135
|
-
signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS)
|
|
136
|
-
});
|
|
137
|
-
return response.ok;
|
|
138
|
-
} catch {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/** List available models on this LM Studio instance. */
|
|
143
|
-
async listModels(timeoutMs) {
|
|
144
|
-
try {
|
|
145
|
-
const response = await fetch(`${this.baseUrl}/v1/models`, {
|
|
146
|
-
signal: AbortSignal.timeout(timeoutMs ?? DAEMON_CLIENT_TIMEOUT_MS)
|
|
147
|
-
});
|
|
148
|
-
const data = await response.json();
|
|
149
|
-
return data.data.map((m) => m.id);
|
|
150
|
-
} catch {
|
|
151
|
-
return [];
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
export {
|
|
157
|
-
OllamaBackend,
|
|
158
|
-
LmStudioBackend
|
|
159
|
-
};
|
|
160
|
-
//# sourceMappingURL=chunk-BA23DROX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/intelligence/ollama.ts","../src/intelligence/lm-studio.ts"],"sourcesContent":["import type { LlmProvider, EmbeddingProvider, LlmResponse, EmbeddingResponse, LlmRequestOptions } from './llm.js';\nimport { CHARS_PER_TOKEN, LLM_REQUEST_TIMEOUT_MS, EMBEDDING_REQUEST_TIMEOUT_MS, DAEMON_CLIENT_TIMEOUT_MS } from '../constants.js';\n\ninterface OllamaConfig {\n model?: string;\n base_url?: string;\n context_window?: number;\n max_tokens?: number;\n // Legacy fields (ignored, kept for backward compat during migration)\n embedding_model?: string;\n summary_model?: string;\n}\n\nexport class OllamaBackend implements LlmProvider, EmbeddingProvider {\n static readonly DEFAULT_BASE_URL = 'http://localhost:11434';\n readonly name = 'ollama';\n private baseUrl: string;\n private model: string;\n private contextWindow: number;\n private defaultMaxTokens: number;\n\n constructor(config?: OllamaConfig) {\n this.baseUrl = config?.base_url ?? OllamaBackend.DEFAULT_BASE_URL;\n this.model = config?.model ?? config?.summary_model ?? 'llama3.2';\n this.contextWindow = config?.context_window ?? 8192;\n this.defaultMaxTokens = config?.max_tokens ?? 1024;\n }\n\n async summarize(prompt: string, opts?: LlmRequestOptions): Promise<LlmResponse> {\n const maxTokens = opts?.maxTokens ?? this.defaultMaxTokens;\n const promptTokens = Math.ceil(prompt.length / CHARS_PER_TOKEN);\n const numCtx = Math.max(promptTokens + maxTokens, this.contextWindow);\n\n const response = await fetch(`${this.baseUrl}/api/generate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: this.model,\n prompt,\n stream: false,\n options: { num_ctx: numCtx },\n }),\n signal: AbortSignal.timeout(LLM_REQUEST_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n throw new Error(`Ollama summarize failed: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json() as { response: string; model: string };\n return { text: data.response, model: data.model };\n }\n\n async embed(text: string): Promise<EmbeddingResponse> {\n const response = await fetch(`${this.baseUrl}/api/embed`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: this.model,\n input: text,\n }),\n signal: AbortSignal.timeout(EMBEDDING_REQUEST_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n throw new Error(`Ollama embed failed: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json() as { embeddings: number[][]; model: string };\n const embedding = data.embeddings[0];\n return { embedding, model: data.model, dimensions: embedding.length };\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n const response = await fetch(`${this.baseUrl}/api/tags`, {\n signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS),\n });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n /** List available models on this Ollama instance. */\n async listModels(timeoutMs?: number): Promise<string[]> {\n try {\n const response = await fetch(`${this.baseUrl}/api/tags`, {\n signal: AbortSignal.timeout(timeoutMs ?? DAEMON_CLIENT_TIMEOUT_MS),\n });\n const data = await response.json() as { models: Array<{ name: string }> };\n return data.models.map((m) => m.name);\n } catch {\n return [];\n }\n }\n}\n","import type { LlmProvider, EmbeddingProvider, LlmResponse, EmbeddingResponse, LlmRequestOptions } from './llm.js';\nimport { LLM_REQUEST_TIMEOUT_MS, EMBEDDING_REQUEST_TIMEOUT_MS, DAEMON_CLIENT_TIMEOUT_MS } from '../constants.js';\n\ninterface LmStudioConfig {\n model?: string;\n base_url?: string;\n max_tokens?: number;\n // Legacy fields\n embedding_model?: string;\n summary_model?: string;\n}\n\nexport class LmStudioBackend implements LlmProvider, EmbeddingProvider {\n static readonly DEFAULT_BASE_URL = 'http://localhost:1234';\n readonly name = 'lm-studio';\n private baseUrl: string;\n private model: string;\n private defaultMaxTokens: number;\n\n constructor(config?: LmStudioConfig) {\n this.baseUrl = config?.base_url ?? LmStudioBackend.DEFAULT_BASE_URL;\n this.model = config?.model ?? config?.summary_model ?? 'llama3.2';\n this.defaultMaxTokens = config?.max_tokens ?? 1024;\n }\n\n async summarize(prompt: string, opts?: LlmRequestOptions): Promise<LlmResponse> {\n const maxTokens = opts?.maxTokens ?? this.defaultMaxTokens;\n\n const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: this.model,\n messages: [{ role: 'user', content: prompt }],\n max_tokens: maxTokens,\n }),\n signal: AbortSignal.timeout(LLM_REQUEST_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n throw new Error(`LM Studio summarize failed: ${response.status}`);\n }\n\n const data = await response.json() as {\n choices: Array<{ message: { content: string } }>;\n model: string;\n };\n return { text: data.choices[0].message.content, model: data.model };\n }\n\n async embed(text: string): Promise<EmbeddingResponse> {\n const response = await fetch(`${this.baseUrl}/v1/embeddings`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: this.model,\n input: text,\n }),\n signal: AbortSignal.timeout(EMBEDDING_REQUEST_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n throw new Error(`LM Studio embed failed: ${response.status}`);\n }\n\n const data = await response.json() as {\n data: Array<{ embedding: number[] }>;\n model: string;\n };\n const embedding = data.data[0].embedding;\n return { embedding, model: data.model, dimensions: embedding.length };\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n const response = await fetch(`${this.baseUrl}/v1/models`, {\n signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS),\n });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n /** List available models on this LM Studio instance. */\n async listModels(timeoutMs?: number): Promise<string[]> {\n try {\n const response = await fetch(`${this.baseUrl}/v1/models`, {\n signal: AbortSignal.timeout(timeoutMs ?? DAEMON_CLIENT_TIMEOUT_MS),\n });\n const data = await response.json() as { data: Array<{ id: string }> };\n return data.data.map((m) => m.id);\n } catch {\n return [];\n }\n }\n}\n"],"mappings":"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","names":[]}
|