@goondocks/myco 0.2.14 → 0.3.1
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/commands/init.md +33 -22
- package/dist/{chunk-BXFS4PCJ.js → chunk-2QEJKG7R.js} +2 -2
- package/dist/{chunk-MAFUTKOZ.js → chunk-2TKJPRZL.js} +2 -2
- package/dist/chunk-3JCXYLHD.js +33 -0
- package/dist/chunk-3JCXYLHD.js.map +1 -0
- package/dist/chunk-5EZ7QF6J.js +96 -0
- package/dist/chunk-5EZ7QF6J.js.map +1 -0
- package/dist/chunk-6FQISQNA.js +61 -0
- package/dist/chunk-6FQISQNA.js.map +1 -0
- package/dist/chunk-72OAG4SF.js +3692 -0
- package/dist/chunk-72OAG4SF.js.map +1 -0
- package/dist/{chunk-S4WBXXO6.js → chunk-BMJX2IDQ.js} +2 -2
- package/dist/chunk-EF4JVH24.js +7299 -0
- package/dist/chunk-EF4JVH24.js.map +1 -0
- package/dist/{chunk-YXZEP5U6.js → chunk-ISCT2SI6.js} +11 -7301
- package/dist/chunk-ISCT2SI6.js.map +1 -0
- package/dist/chunk-JIQISBPI.js +362 -0
- package/dist/chunk-JIQISBPI.js.map +1 -0
- package/dist/{chunk-6C26YFOA.js → chunk-N6IAW33G.js} +248 -4306
- package/dist/chunk-N6IAW33G.js.map +1 -0
- package/dist/{chunk-C2YPBQQM.js → chunk-NTYYYC32.js} +3 -3
- package/dist/{chunk-NKJIZSPD.js → chunk-P2Q77C5F.js} +3 -3
- package/dist/chunk-PAUPHPOC.js +111 -0
- package/dist/chunk-PAUPHPOC.js.map +1 -0
- package/dist/chunk-PZUWP5VK.js +44 -0
- package/dist/{chunk-O5VSPHDL.js → chunk-Q7BEFSOV.js} +3 -40
- package/dist/{chunk-O5VSPHDL.js.map → chunk-Q7BEFSOV.js.map} +1 -1
- package/dist/chunk-RGVBGTD6.js +21 -0
- package/dist/chunk-RGVBGTD6.js.map +1 -0
- package/dist/chunk-SAKJMNSR.js +50 -0
- package/dist/chunk-SAKJMNSR.js.map +1 -0
- package/dist/{chunk-UUFDD2FB.js → chunk-TJJRIVZ7.js} +2 -2
- package/dist/chunk-XQXXF6MU.js +96 -0
- package/dist/chunk-XQXXF6MU.js.map +1 -0
- package/dist/chunk-XW3OL55U.js +160 -0
- package/dist/chunk-XW3OL55U.js.map +1 -0
- package/dist/cli-ERAS5H43.js +79 -0
- package/dist/cli-ERAS5H43.js.map +1 -0
- package/dist/client-HORA3CC4.js +11 -0
- package/dist/client-HORA3CC4.js.map +1 -0
- package/dist/config-MD4XMLUS.js +101 -0
- package/dist/config-MD4XMLUS.js.map +1 -0
- package/dist/detect-providers-6RQCQZOI.js +35 -0
- package/dist/detect-providers-6RQCQZOI.js.map +1 -0
- package/dist/init-LLLHUNSY.js +120 -0
- package/dist/init-LLLHUNSY.js.map +1 -0
- package/dist/logs-BSTBZHDR.js +84 -0
- package/dist/logs-BSTBZHDR.js.map +1 -0
- package/dist/{main-UJAXPP6S.js → main-D4X6XWRT.js} +241 -542
- package/dist/main-D4X6XWRT.js.map +1 -0
- package/dist/rebuild-3367GP5R.js +85 -0
- package/dist/rebuild-3367GP5R.js.map +1 -0
- package/dist/reprocess-EM5RIRH4.js +199 -0
- package/dist/reprocess-EM5RIRH4.js.map +1 -0
- package/dist/restart-NH5MX45I.js +50 -0
- package/dist/restart-NH5MX45I.js.map +1 -0
- package/dist/search-W3ECVSTH.js +120 -0
- package/dist/search-W3ECVSTH.js.map +1 -0
- package/dist/{server-J3AQ3YFA.js → server-I7MRMIOP.js} +41 -21
- package/dist/{server-J3AQ3YFA.js.map → server-I7MRMIOP.js.map} +1 -1
- package/dist/session-5GI2YU6R.js +44 -0
- package/dist/session-5GI2YU6R.js.map +1 -0
- package/dist/{session-start-BEC4JMNZ.js → session-start-DECLNJDI.js} +8 -6
- package/dist/{session-start-BEC4JMNZ.js.map → session-start-DECLNJDI.js.map} +1 -1
- package/dist/src/cli.js +5 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon/main.js +5 -4
- package/dist/src/daemon/main.js.map +1 -1
- package/dist/src/hooks/post-tool-use.js +5 -4
- package/dist/src/hooks/post-tool-use.js.map +1 -1
- package/dist/src/hooks/session-end.js +5 -4
- package/dist/src/hooks/session-end.js.map +1 -1
- package/dist/src/hooks/session-start.js +5 -4
- package/dist/src/hooks/session-start.js.map +1 -1
- package/dist/src/hooks/stop.js +7 -5
- package/dist/src/hooks/stop.js.map +1 -1
- package/dist/src/hooks/user-prompt-submit.js +5 -4
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +5 -4
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/stats-7VEZN2WF.js +77 -0
- package/dist/stats-7VEZN2WF.js.map +1 -0
- package/dist/verify-HN5DWV2H.js +50 -0
- package/dist/verify-HN5DWV2H.js.map +1 -0
- package/package.json +1 -1
- package/skills/myco/SKILL.md +33 -0
- package/dist/chunk-6C26YFOA.js.map +0 -1
- package/dist/chunk-YXZEP5U6.js.map +0 -1
- package/dist/cli-KMWJFK5Y.js +0 -623
- package/dist/cli-KMWJFK5Y.js.map +0 -1
- package/dist/client-TEUHXGOY.js +0 -10
- package/dist/main-UJAXPP6S.js.map +0 -1
- /package/dist/{chunk-BXFS4PCJ.js.map → chunk-2QEJKG7R.js.map} +0 -0
- /package/dist/{chunk-MAFUTKOZ.js.map → chunk-2TKJPRZL.js.map} +0 -0
- /package/dist/{chunk-S4WBXXO6.js.map → chunk-BMJX2IDQ.js.map} +0 -0
- /package/dist/{chunk-C2YPBQQM.js.map → chunk-NTYYYC32.js.map} +0 -0
- /package/dist/{chunk-NKJIZSPD.js.map → chunk-P2Q77C5F.js.map} +0 -0
- /package/dist/{client-TEUHXGOY.js.map → chunk-PZUWP5VK.js.map} +0 -0
- /package/dist/{chunk-UUFDD2FB.js.map → chunk-TJJRIVZ7.js.map} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
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-Q7BEFSOV.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-XW3OL55U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
loadEnv
|
|
5
|
+
} from "./chunk-PAUPHPOC.js";
|
|
6
|
+
import "./chunk-SAKJMNSR.js";
|
|
7
|
+
import "./chunk-XW3OL55U.js";
|
|
8
|
+
import {
|
|
9
|
+
resolveVaultDir
|
|
10
|
+
} from "./chunk-N33KUCFP.js";
|
|
11
|
+
import "./chunk-2QEJKG7R.js";
|
|
12
|
+
import "./chunk-Q7BEFSOV.js";
|
|
13
|
+
import "./chunk-PZUWP5VK.js";
|
|
14
|
+
|
|
15
|
+
// src/cli.ts
|
|
16
|
+
import fs from "fs";
|
|
17
|
+
import path from "path";
|
|
18
|
+
loadEnv();
|
|
19
|
+
var USAGE = `Usage: myco <command> [args]
|
|
20
|
+
|
|
21
|
+
Commands:
|
|
22
|
+
init [options] Initialize a new vault
|
|
23
|
+
config <get|set> [args] Get or set vault config values
|
|
24
|
+
detect-providers Detect available LLM/embedding providers (JSON)
|
|
25
|
+
verify Test LLM and embedding connectivity
|
|
26
|
+
stats Vault health, index counts, vector count
|
|
27
|
+
search <query> Combined FTS + vector search with scores
|
|
28
|
+
vectors <query> Raw vector search with similarity scores
|
|
29
|
+
session [id|latest] Show a session note
|
|
30
|
+
logs [options] View daemon logs
|
|
31
|
+
restart Restart the daemon
|
|
32
|
+
rebuild Reindex the entire vault
|
|
33
|
+
reprocess [options] Re-extract observations and re-index sessions
|
|
34
|
+
`;
|
|
35
|
+
async function main() {
|
|
36
|
+
const [cmd, ...args] = process.argv.slice(2);
|
|
37
|
+
if (!cmd || cmd === "--help" || cmd === "-h") {
|
|
38
|
+
process.stdout.write(USAGE);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (cmd === "init") return (await import("./init-LLLHUNSY.js")).run(args);
|
|
42
|
+
if (cmd === "detect-providers") return (await import("./detect-providers-6RQCQZOI.js")).run(args);
|
|
43
|
+
const vaultDir = resolveVaultDir();
|
|
44
|
+
if (!fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
|
|
45
|
+
console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
switch (cmd) {
|
|
49
|
+
case "config":
|
|
50
|
+
return (await import("./config-MD4XMLUS.js")).run(args, vaultDir);
|
|
51
|
+
case "verify":
|
|
52
|
+
return (await import("./verify-HN5DWV2H.js")).run(args, vaultDir);
|
|
53
|
+
case "stats":
|
|
54
|
+
return (await import("./stats-7VEZN2WF.js")).run(args, vaultDir);
|
|
55
|
+
case "search":
|
|
56
|
+
return (await import("./search-W3ECVSTH.js")).run(args, vaultDir);
|
|
57
|
+
case "vectors":
|
|
58
|
+
return (await import("./search-W3ECVSTH.js")).runVectors(args, vaultDir);
|
|
59
|
+
case "session":
|
|
60
|
+
return (await import("./session-5GI2YU6R.js")).run(args, vaultDir);
|
|
61
|
+
case "restart":
|
|
62
|
+
return (await import("./restart-NH5MX45I.js")).run(args, vaultDir);
|
|
63
|
+
case "rebuild":
|
|
64
|
+
return (await import("./rebuild-3367GP5R.js")).run(args, vaultDir);
|
|
65
|
+
case "reprocess":
|
|
66
|
+
return (await import("./reprocess-EM5RIRH4.js")).run(args, vaultDir);
|
|
67
|
+
case "logs":
|
|
68
|
+
return (await import("./logs-BSTBZHDR.js")).run(args, vaultDir);
|
|
69
|
+
default:
|
|
70
|
+
console.error(`Unknown command: ${cmd}`);
|
|
71
|
+
process.stdout.write(USAGE);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
main().catch((err) => {
|
|
76
|
+
console.error(`myco: ${err.message}`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=cli-ERAS5H43.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { loadEnv } from './cli/shared.js';\nimport { resolveVaultDir } from './vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nloadEnv();\n\nconst USAGE = `Usage: myco <command> [args]\n\nCommands:\n init [options] Initialize a new vault\n config <get|set> [args] Get or set vault config values\n detect-providers Detect available LLM/embedding providers (JSON)\n verify Test LLM and embedding connectivity\n stats Vault health, index counts, vector count\n search <query> Combined FTS + vector search with scores\n vectors <query> Raw vector search with similarity scores\n session [id|latest] Show a session note\n logs [options] View daemon logs\n restart Restart the daemon\n rebuild Reindex the entire vault\n reprocess [options] Re-extract observations and re-index sessions\n`;\n\nasync function main(): Promise<void> {\n const [cmd, ...args] = process.argv.slice(2);\n if (!cmd || cmd === '--help' || cmd === '-h') {\n process.stdout.write(USAGE);\n return;\n }\n\n if (cmd === 'init') return (await import('./cli/init.js')).run(args);\n if (cmd === 'detect-providers') return (await import('./cli/detect-providers.js')).run(args);\n\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);\n process.exit(1);\n }\n\n switch (cmd) {\n case 'config': return (await import('./cli/config.js')).run(args, vaultDir);\n case 'verify': return (await import('./cli/verify.js')).run(args, vaultDir);\n case 'stats': return (await import('./cli/stats.js')).run(args, vaultDir);\n case 'search': return (await import('./cli/search.js')).run(args, vaultDir);\n case 'vectors': return (await import('./cli/search.js')).runVectors(args, vaultDir);\n case 'session': return (await import('./cli/session.js')).run(args, vaultDir);\n case 'restart': return (await import('./cli/restart.js')).run(args, vaultDir);\n case 'rebuild': return (await import('./cli/rebuild.js')).run(args, vaultDir);\n case 'reprocess': return (await import('./cli/reprocess.js')).run(args, vaultDir);\n case 'logs': return (await import('./cli/logs.js')).run(args, vaultDir);\n default:\n console.error(`Unknown command: ${cmd}`);\n process.stdout.write(USAGE);\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error(`myco: ${(err as Error).message}`);\n process.exit(1);\n});\n"],"mappings":";;;;;;;;;;;;;;;AAGA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,QAAQ;AAER,IAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBd,eAAe,OAAsB;AACnC,QAAM,CAAC,KAAK,GAAG,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC;AAC3C,MAAI,CAAC,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC5C,YAAQ,OAAO,MAAM,KAAK;AAC1B;AAAA,EACF;AAEA,MAAI,QAAQ,OAAQ,SAAQ,MAAM,OAAO,oBAAe,GAAG,IAAI,IAAI;AACnE,MAAI,QAAQ,mBAAoB,SAAQ,MAAM,OAAO,gCAA2B,GAAG,IAAI,IAAI;AAE3F,QAAM,WAAW,gBAAgB;AACjC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,UAAU,WAAW,CAAC,GAAG;AACpD,YAAQ,MAAM,yBAAyB,QAAQ,0BAA0B;AACzE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,KAAK;AAAA,IACX,KAAK;AAAU,cAAQ,MAAM,OAAO,sBAAiB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC1E,KAAK;AAAU,cAAQ,MAAM,OAAO,sBAAiB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC1E,KAAK;AAAS,cAAQ,MAAM,OAAO,qBAAgB,GAAG,IAAI,MAAM,QAAQ;AAAA,IACxE,KAAK;AAAU,cAAQ,MAAM,OAAO,sBAAiB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC1E,KAAK;AAAW,cAAQ,MAAM,OAAO,sBAAiB,GAAG,WAAW,MAAM,QAAQ;AAAA,IAClF,KAAK;AAAW,cAAQ,MAAM,OAAO,uBAAkB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC5E,KAAK;AAAW,cAAQ,MAAM,OAAO,uBAAkB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC5E,KAAK;AAAW,cAAQ,MAAM,OAAO,uBAAkB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAC5E,KAAK;AAAa,cAAQ,MAAM,OAAO,yBAAoB,GAAG,IAAI,MAAM,QAAQ;AAAA,IAChF,KAAK;AAAQ,cAAQ,MAAM,OAAO,oBAAe,GAAG,IAAI,MAAM,QAAQ;AAAA,IACtE;AACE,cAAQ,MAAM,oBAAoB,GAAG,EAAE;AACvC,cAAQ,OAAO,MAAM,KAAK;AAC1B,cAAQ,KAAK,CAAC;AAAA,EAClB;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,SAAU,IAAc,OAAO,EAAE;AAC/C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
DaemonClient
|
|
4
|
+
} from "./chunk-NTYYYC32.js";
|
|
5
|
+
import "./chunk-2QEJKG7R.js";
|
|
6
|
+
import "./chunk-Q7BEFSOV.js";
|
|
7
|
+
import "./chunk-PZUWP5VK.js";
|
|
8
|
+
export {
|
|
9
|
+
DaemonClient
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=client-HORA3CC4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
MycoConfigSchema,
|
|
4
|
+
loadConfig
|
|
5
|
+
} from "./chunk-ISCT2SI6.js";
|
|
6
|
+
import {
|
|
7
|
+
require_dist
|
|
8
|
+
} from "./chunk-EF4JVH24.js";
|
|
9
|
+
import {
|
|
10
|
+
__toESM
|
|
11
|
+
} from "./chunk-PZUWP5VK.js";
|
|
12
|
+
|
|
13
|
+
// src/cli/config.ts
|
|
14
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
15
|
+
import fs from "fs";
|
|
16
|
+
import path from "path";
|
|
17
|
+
var CONFIG_FILENAME = "myco.yaml";
|
|
18
|
+
var DAEMON_STATE_FILENAME = "daemon.json";
|
|
19
|
+
async function run(args, vaultDir) {
|
|
20
|
+
const [subcommand, key, ...rest] = args;
|
|
21
|
+
if (subcommand === "get") {
|
|
22
|
+
if (!key) {
|
|
23
|
+
console.error("Usage: myco config get <dot.path.key>");
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
return configGet(key, vaultDir);
|
|
27
|
+
}
|
|
28
|
+
if (subcommand === "set") {
|
|
29
|
+
const value = rest[0];
|
|
30
|
+
if (!key || value === void 0) {
|
|
31
|
+
console.error("Usage: myco config set <dot.path.key> <value>");
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
return configSet(key, value, vaultDir);
|
|
35
|
+
}
|
|
36
|
+
console.error("Usage: myco config <get|set> <dot.path.key> [value]");
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
function configGet(dotPath, vaultDir) {
|
|
40
|
+
const config = loadConfig(vaultDir);
|
|
41
|
+
const value = walkPath(config, dotPath);
|
|
42
|
+
if (value === void 0) {
|
|
43
|
+
console.error(`Key not found: ${dotPath}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
console.log(typeof value === "object" ? JSON.stringify(value, null, 2) : String(value));
|
|
47
|
+
}
|
|
48
|
+
function configSet(dotPath, rawValue, vaultDir) {
|
|
49
|
+
const configPath = path.join(vaultDir, CONFIG_FILENAME);
|
|
50
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
51
|
+
const doc = import_yaml.default.parse(raw);
|
|
52
|
+
const value = parseValue(rawValue);
|
|
53
|
+
setPath(doc, dotPath, value);
|
|
54
|
+
const result = MycoConfigSchema.safeParse(doc);
|
|
55
|
+
if (!result.success) {
|
|
56
|
+
console.error("Validation error:");
|
|
57
|
+
for (const issue of result.error.issues) {
|
|
58
|
+
console.error(` ${issue.path.join(".")}: ${issue.message}`);
|
|
59
|
+
}
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
fs.writeFileSync(configPath, import_yaml.default.stringify(doc), "utf-8");
|
|
63
|
+
console.log(`Set ${dotPath} = ${JSON.stringify(value)}`);
|
|
64
|
+
if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {
|
|
65
|
+
console.log("Note: restart the daemon for changes to take effect (myco restart)");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function walkPath(obj, dotPath) {
|
|
69
|
+
const segments = dotPath.split(".");
|
|
70
|
+
let current = obj;
|
|
71
|
+
for (const segment of segments) {
|
|
72
|
+
if (current === null || current === void 0 || typeof current !== "object") {
|
|
73
|
+
return void 0;
|
|
74
|
+
}
|
|
75
|
+
current = current[segment];
|
|
76
|
+
}
|
|
77
|
+
return current;
|
|
78
|
+
}
|
|
79
|
+
function setPath(obj, dotPath, value) {
|
|
80
|
+
const segments = dotPath.split(".");
|
|
81
|
+
let current = obj;
|
|
82
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
83
|
+
const segment = segments[i];
|
|
84
|
+
if (current[segment] === void 0 || current[segment] === null || typeof current[segment] !== "object") {
|
|
85
|
+
current[segment] = {};
|
|
86
|
+
}
|
|
87
|
+
current = current[segment];
|
|
88
|
+
}
|
|
89
|
+
current[segments[segments.length - 1]] = value;
|
|
90
|
+
}
|
|
91
|
+
function parseValue(raw) {
|
|
92
|
+
try {
|
|
93
|
+
return JSON.parse(raw);
|
|
94
|
+
} catch {
|
|
95
|
+
return raw;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
run
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=config-MD4XMLUS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/config.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport YAML from 'yaml';\nimport { loadConfig } from '../config/loader.js';\nimport { MycoConfigSchema } from '../config/schema.js';\n\nconst CONFIG_FILENAME = 'myco.yaml';\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const [subcommand, key, ...rest] = args;\n\n if (subcommand === 'get') {\n if (!key) {\n console.error('Usage: myco config get <dot.path.key>');\n process.exit(1);\n }\n return configGet(key, vaultDir);\n }\n\n if (subcommand === 'set') {\n const value = rest[0];\n if (!key || value === undefined) {\n console.error('Usage: myco config set <dot.path.key> <value>');\n process.exit(1);\n }\n return configSet(key, value, vaultDir);\n }\n\n console.error('Usage: myco config <get|set> <dot.path.key> [value]');\n process.exit(1);\n}\n\nfunction configGet(dotPath: string, vaultDir: string): void {\n const config = loadConfig(vaultDir);\n const value = walkPath(config as Record<string, unknown>, dotPath);\n if (value === undefined) {\n console.error(`Key not found: ${dotPath}`);\n process.exit(1);\n }\n console.log(typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value));\n}\n\nfunction configSet(dotPath: string, rawValue: string, vaultDir: string): void {\n const configPath = path.join(vaultDir, CONFIG_FILENAME);\n const raw = fs.readFileSync(configPath, 'utf-8');\n const doc = YAML.parse(raw) as Record<string, unknown>;\n\n const value = parseValue(rawValue);\n setPath(doc, dotPath, value);\n\n const result = MycoConfigSchema.safeParse(doc);\n if (!result.success) {\n console.error('Validation error:');\n for (const issue of result.error.issues) {\n console.error(` ${issue.path.join('.')}: ${issue.message}`);\n }\n process.exit(1);\n }\n\n fs.writeFileSync(configPath, YAML.stringify(doc), 'utf-8');\n console.log(`Set ${dotPath} = ${JSON.stringify(value)}`);\n\n if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {\n console.log('Note: restart the daemon for changes to take effect (myco restart)');\n }\n}\n\n/** Walk a dot-separated path to retrieve a nested value. */\nfunction walkPath(obj: Record<string, unknown>, dotPath: string): unknown {\n const segments = dotPath.split('.');\n let current: unknown = obj;\n for (const segment of segments) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n\n/** Set a value at a dot-separated path, creating intermediate objects as needed. */\nfunction setPath(obj: Record<string, unknown>, dotPath: string, value: unknown): void {\n const segments = dotPath.split('.');\n let current: Record<string, unknown> = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i];\n if (current[segment] === undefined || current[segment] === null || typeof current[segment] !== 'object') {\n current[segment] = {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n current[segments[segments.length - 1]] = value;\n}\n\n/** Parse a string value as JSON (number, boolean, array, object), falling back to raw string. */\nfunction parseValue(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n"],"mappings":"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","names":["YAML"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
LmStudioBackend,
|
|
4
|
+
OllamaBackend
|
|
5
|
+
} from "./chunk-XW3OL55U.js";
|
|
6
|
+
import {
|
|
7
|
+
PROVIDER_DETECT_TIMEOUT_MS
|
|
8
|
+
} from "./chunk-Q7BEFSOV.js";
|
|
9
|
+
import "./chunk-PZUWP5VK.js";
|
|
10
|
+
|
|
11
|
+
// src/cli/detect-providers.ts
|
|
12
|
+
async function detectProvider(backend) {
|
|
13
|
+
const available = await backend.isAvailable();
|
|
14
|
+
if (!available) return { available: false, models: [] };
|
|
15
|
+
const models = await backend.listModels(PROVIDER_DETECT_TIMEOUT_MS);
|
|
16
|
+
return { available: true, models };
|
|
17
|
+
}
|
|
18
|
+
async function run(_args) {
|
|
19
|
+
const ollama = new OllamaBackend();
|
|
20
|
+
const lmStudio = new LmStudioBackend();
|
|
21
|
+
const [ollamaResult, lmStudioResult] = await Promise.all([
|
|
22
|
+
detectProvider(ollama),
|
|
23
|
+
detectProvider(lmStudio)
|
|
24
|
+
]);
|
|
25
|
+
const result = {
|
|
26
|
+
ollama: ollamaResult,
|
|
27
|
+
"lm-studio": lmStudioResult,
|
|
28
|
+
anthropic: { available: !!process.env.ANTHROPIC_API_KEY, models: [] }
|
|
29
|
+
};
|
|
30
|
+
console.log(JSON.stringify(result, null, 2));
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
run
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=detect-providers-6RQCQZOI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/detect-providers.ts"],"sourcesContent":["import { PROVIDER_DETECT_TIMEOUT_MS } from '../constants.js';\nimport { OllamaBackend } from '../intelligence/ollama.js';\nimport { LmStudioBackend } from '../intelligence/lm-studio.js';\n\ninterface ProviderResult {\n available: boolean;\n models: string[];\n}\n\ninterface DetectResult {\n ollama: ProviderResult;\n 'lm-studio': ProviderResult;\n anthropic: ProviderResult;\n}\n\nasync function detectProvider(\n backend: { isAvailable(): Promise<boolean>; listModels(timeoutMs?: number): Promise<string[]> },\n): Promise<ProviderResult> {\n const available = await backend.isAvailable();\n if (!available) return { available: false, models: [] };\n const models = await backend.listModels(PROVIDER_DETECT_TIMEOUT_MS);\n return { available: true, models };\n}\n\nexport async function run(_args: string[]): Promise<void> {\n const ollama = new OllamaBackend();\n const lmStudio = new LmStudioBackend();\n\n const [ollamaResult, lmStudioResult] = await Promise.all([\n detectProvider(ollama),\n detectProvider(lmStudio),\n ]);\n\n const result: DetectResult = {\n ollama: ollamaResult,\n 'lm-studio': lmStudioResult,\n anthropic: { available: !!process.env.ANTHROPIC_API_KEY, models: [] },\n };\n\n console.log(JSON.stringify(result, null, 2));\n}\n"],"mappings":";;;;;;;;;;;AAeA,eAAe,eACb,SACyB;AACzB,QAAM,YAAY,MAAM,QAAQ,YAAY;AAC5C,MAAI,CAAC,UAAW,QAAO,EAAE,WAAW,OAAO,QAAQ,CAAC,EAAE;AACtD,QAAM,SAAS,MAAM,QAAQ,WAAW,0BAA0B;AAClE,SAAO,EAAE,WAAW,MAAM,OAAO;AACnC;AAEA,eAAsB,IAAI,OAAgC;AACxD,QAAM,SAAS,IAAI,cAAc;AACjC,QAAM,WAAW,IAAI,gBAAgB;AAErC,QAAM,CAAC,cAAc,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,eAAe,MAAM;AAAA,IACrB,eAAe,QAAQ;AAAA,EACzB,CAAC;AAED,QAAM,SAAuB;AAAA,IAC3B,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,EAAE;AAAA,EACtE;AAEA,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;","names":[]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
initFts
|
|
4
|
+
} from "./chunk-6FQISQNA.js";
|
|
5
|
+
import {
|
|
6
|
+
DASHBOARD_CONTENT,
|
|
7
|
+
PROVIDER_DEFAULTS,
|
|
8
|
+
VAULT_GITIGNORE,
|
|
9
|
+
configureVaultEnv
|
|
10
|
+
} from "./chunk-PAUPHPOC.js";
|
|
11
|
+
import {
|
|
12
|
+
parseStringFlag
|
|
13
|
+
} from "./chunk-SAKJMNSR.js";
|
|
14
|
+
import {
|
|
15
|
+
MycoIndex
|
|
16
|
+
} from "./chunk-PA3VMINE.js";
|
|
17
|
+
import "./chunk-XW3OL55U.js";
|
|
18
|
+
import {
|
|
19
|
+
require_dist
|
|
20
|
+
} from "./chunk-EF4JVH24.js";
|
|
21
|
+
import {
|
|
22
|
+
resolveVaultDir
|
|
23
|
+
} from "./chunk-N33KUCFP.js";
|
|
24
|
+
import "./chunk-2QEJKG7R.js";
|
|
25
|
+
import "./chunk-Q7BEFSOV.js";
|
|
26
|
+
import {
|
|
27
|
+
__toESM
|
|
28
|
+
} from "./chunk-PZUWP5VK.js";
|
|
29
|
+
|
|
30
|
+
// src/cli/init.ts
|
|
31
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
32
|
+
import fs from "fs";
|
|
33
|
+
import path from "path";
|
|
34
|
+
import os from "os";
|
|
35
|
+
async function run(args) {
|
|
36
|
+
const vaultPath = parseStringFlag(args, "--vault");
|
|
37
|
+
const llmProvider = parseStringFlag(args, "--llm-provider") ?? "ollama";
|
|
38
|
+
const llmModel = parseStringFlag(args, "--llm-model") ?? "gpt-oss";
|
|
39
|
+
const llmUrl = parseStringFlag(args, "--llm-url") ?? PROVIDER_DEFAULTS[llmProvider]?.base_url;
|
|
40
|
+
const embeddingProvider = parseStringFlag(args, "--embedding-provider") ?? "ollama";
|
|
41
|
+
const embeddingModel = parseStringFlag(args, "--embedding-model") ?? "bge-m3";
|
|
42
|
+
const embeddingUrl = parseStringFlag(args, "--embedding-url") ?? PROVIDER_DEFAULTS[embeddingProvider]?.base_url;
|
|
43
|
+
const user = parseStringFlag(args, "--user") ?? "";
|
|
44
|
+
const teamEnabled = args.includes("--team");
|
|
45
|
+
const vaultDir = vaultPath ? vaultPath.startsWith("~/") ? path.join(os.homedir(), vaultPath.slice(2)) : path.resolve(vaultPath) : path.join(resolveVaultDir());
|
|
46
|
+
if (fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
|
|
47
|
+
console.log(`Vault already initialized at ${vaultDir}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
console.log(`Initializing Myco vault at ${vaultDir}`);
|
|
51
|
+
const dirs = ["sessions", "plans", "memories", "artifacts", "team", "buffer", "logs"];
|
|
52
|
+
for (const dir of dirs) {
|
|
53
|
+
fs.mkdirSync(path.join(vaultDir, dir), { recursive: true });
|
|
54
|
+
}
|
|
55
|
+
const config = {
|
|
56
|
+
version: 2,
|
|
57
|
+
intelligence: {
|
|
58
|
+
llm: {
|
|
59
|
+
provider: llmProvider,
|
|
60
|
+
model: llmModel,
|
|
61
|
+
...llmUrl ? { base_url: llmUrl } : {},
|
|
62
|
+
context_window: 8192,
|
|
63
|
+
max_tokens: 1024
|
|
64
|
+
},
|
|
65
|
+
embedding: {
|
|
66
|
+
provider: embeddingProvider,
|
|
67
|
+
model: embeddingModel,
|
|
68
|
+
...embeddingUrl ? { base_url: embeddingUrl } : {}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
daemon: {
|
|
72
|
+
log_level: "info",
|
|
73
|
+
grace_period: 30,
|
|
74
|
+
max_log_size: 5242880
|
|
75
|
+
},
|
|
76
|
+
capture: {
|
|
77
|
+
transcript_paths: [],
|
|
78
|
+
artifact_watch: [".claude/plans/", ".cursor/plans/"],
|
|
79
|
+
artifact_extensions: [".md"],
|
|
80
|
+
buffer_max_events: 500
|
|
81
|
+
},
|
|
82
|
+
context: {
|
|
83
|
+
max_tokens: 1200,
|
|
84
|
+
layers: { plans: 200, sessions: 500, memories: 300, team: 200 }
|
|
85
|
+
},
|
|
86
|
+
team: {
|
|
87
|
+
enabled: teamEnabled,
|
|
88
|
+
user,
|
|
89
|
+
sync: "git"
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
fs.writeFileSync(
|
|
93
|
+
path.join(vaultDir, "myco.yaml"),
|
|
94
|
+
import_yaml.default.stringify(config),
|
|
95
|
+
"utf-8"
|
|
96
|
+
);
|
|
97
|
+
fs.writeFileSync(path.join(vaultDir, ".gitignore"), VAULT_GITIGNORE, "utf-8");
|
|
98
|
+
fs.writeFileSync(path.join(vaultDir, "_dashboard.md"), DASHBOARD_CONTENT, "utf-8");
|
|
99
|
+
const index = new MycoIndex(path.join(vaultDir, "index.db"));
|
|
100
|
+
initFts(index);
|
|
101
|
+
index.close();
|
|
102
|
+
console.log("");
|
|
103
|
+
console.log("=== Myco Vault Initialized ===");
|
|
104
|
+
console.log(`Path: ${vaultDir}`);
|
|
105
|
+
console.log(`LLM provider: ${llmProvider} / ${llmModel}`);
|
|
106
|
+
console.log(`Embedding provider: ${embeddingProvider} / ${embeddingModel}`);
|
|
107
|
+
console.log(`Team mode: ${teamEnabled ? "enabled" : "disabled"}`);
|
|
108
|
+
if (user) console.log(`User: ${user}`);
|
|
109
|
+
console.log("");
|
|
110
|
+
const projectRoot = path.resolve(".");
|
|
111
|
+
const isProjectLocal = vaultDir.startsWith(projectRoot);
|
|
112
|
+
if (!isProjectLocal) {
|
|
113
|
+
configureVaultEnv(projectRoot, vaultDir);
|
|
114
|
+
}
|
|
115
|
+
console.log("Next: start a coding session \u2014 Myco will begin capturing automatically.");
|
|
116
|
+
}
|
|
117
|
+
export {
|
|
118
|
+
run
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=init-LLLHUNSY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/init.ts"],"sourcesContent":["import { MycoIndex } from '../index/sqlite.js';\nimport { initFts } from '../index/fts.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport {\n parseStringFlag,\n PROVIDER_DEFAULTS,\n DASHBOARD_CONTENT,\n VAULT_GITIGNORE,\n configureVaultEnv,\n} from './shared.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport os from 'node:os';\nimport YAML from 'yaml';\n\nexport async function run(args: string[]): Promise<void> {\n const vaultPath = parseStringFlag(args, '--vault');\n const llmProvider = parseStringFlag(args, '--llm-provider') ?? 'ollama';\n const llmModel = parseStringFlag(args, '--llm-model') ?? 'gpt-oss';\n const llmUrl = parseStringFlag(args, '--llm-url') ?? PROVIDER_DEFAULTS[llmProvider]?.base_url;\n const embeddingProvider = parseStringFlag(args, '--embedding-provider') ?? 'ollama';\n const embeddingModel = parseStringFlag(args, '--embedding-model') ?? 'bge-m3';\n const embeddingUrl = parseStringFlag(args, '--embedding-url') ?? PROVIDER_DEFAULTS[embeddingProvider]?.base_url;\n const user = parseStringFlag(args, '--user') ?? '';\n const teamEnabled = args.includes('--team');\n\n // Resolve vault directory\n const vaultDir = vaultPath\n ? (vaultPath.startsWith('~/') ? path.join(os.homedir(), vaultPath.slice(2)) : path.resolve(vaultPath))\n : path.join(resolveVaultDir());\n\n // Check if already initialized\n if (fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.log(`Vault already initialized at ${vaultDir}`);\n return;\n }\n\n console.log(`Initializing Myco vault at ${vaultDir}`);\n\n // Create directory structure\n const dirs = ['sessions', 'plans', 'memories', 'artifacts', 'team', 'buffer', 'logs'];\n for (const dir of dirs) {\n fs.mkdirSync(path.join(vaultDir, dir), { recursive: true });\n }\n\n // Write myco.yaml — all values explicit, no hidden defaults\n const config: Record<string, unknown> = {\n version: 2,\n intelligence: {\n llm: {\n provider: llmProvider,\n model: llmModel,\n ...(llmUrl ? { base_url: llmUrl } : {}),\n context_window: 8192,\n max_tokens: 1024,\n },\n embedding: {\n provider: embeddingProvider,\n model: embeddingModel,\n ...(embeddingUrl ? { base_url: embeddingUrl } : {}),\n },\n },\n daemon: {\n log_level: 'info',\n grace_period: 30,\n max_log_size: 5242880,\n },\n capture: {\n transcript_paths: [],\n artifact_watch: ['.claude/plans/', '.cursor/plans/'],\n artifact_extensions: ['.md'],\n buffer_max_events: 500,\n },\n context: {\n max_tokens: 1200,\n layers: { plans: 200, sessions: 500, memories: 300, team: 200 },\n },\n team: {\n enabled: teamEnabled,\n user,\n sync: 'git',\n },\n };\n\n fs.writeFileSync(\n path.join(vaultDir, 'myco.yaml'),\n YAML.stringify(config),\n 'utf-8',\n );\n\n // Write .gitignore\n fs.writeFileSync(path.join(vaultDir, '.gitignore'), VAULT_GITIGNORE, 'utf-8');\n\n // Write Obsidian dashboard\n fs.writeFileSync(path.join(vaultDir, '_dashboard.md'), DASHBOARD_CONTENT, 'utf-8');\n\n // Initialize FTS index\n const index = new MycoIndex(path.join(vaultDir, 'index.db'));\n initFts(index);\n index.close();\n\n // Summary\n console.log('');\n console.log('=== Myco Vault Initialized ===');\n console.log(`Path: ${vaultDir}`);\n console.log(`LLM provider: ${llmProvider} / ${llmModel}`);\n console.log(`Embedding provider: ${embeddingProvider} / ${embeddingModel}`);\n console.log(`Team mode: ${teamEnabled ? 'enabled' : 'disabled'}`);\n if (user) console.log(`User: ${user}`);\n console.log('');\n\n // If vault is outside the project, configure MYCO_VAULT_DIR for the current agent\n const projectRoot = path.resolve('.');\n const isProjectLocal = vaultDir.startsWith(projectRoot);\n if (!isProjectLocal) {\n configureVaultEnv(projectRoot, vaultDir);\n }\n\n console.log('Next: start a coding session — Myco will begin capturing automatically.');\n}\n"],"mappings":"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","names":["YAML"]}
|