@goondocks/myco 0.3.1 → 0.3.2
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/dist/chunk-2UEJVXXE.js +33 -0
- package/dist/chunk-2UEJVXXE.js.map +1 -0
- package/dist/{chunk-NTYYYC32.js → chunk-5BGQJOJN.js} +47 -4
- package/dist/chunk-5BGQJOJN.js.map +1 -0
- package/dist/{cli-ERAS5H43.js → cli-4RR3QBYK.js} +13 -7
- package/dist/cli-4RR3QBYK.js.map +1 -0
- package/dist/{client-HORA3CC4.js → client-43ML4EHJ.js} +3 -2
- package/dist/{init-LLLHUNSY.js → init-HTKEL3YT.js} +4 -4
- package/dist/{main-D4X6XWRT.js → main-DTWU4OAH.js} +13 -7
- package/dist/main-DTWU4OAH.js.map +1 -0
- package/dist/{rebuild-3367GP5R.js → rebuild-TXMFYBOU.js} +7 -7
- package/dist/{reprocess-EM5RIRH4.js → reprocess-ARKHGDWF.js} +13 -13
- package/dist/{restart-NH5MX45I.js → restart-C5BCVG3A.js} +2 -2
- package/dist/{search-W3ECVSTH.js → search-YCKNX2WS.js} +7 -7
- package/dist/{server-I7MRMIOP.js → server-EBKMQISL.js} +15 -27
- package/dist/{server-I7MRMIOP.js.map → server-EBKMQISL.js.map} +1 -1
- package/dist/{session-start-DECLNJDI.js → session-start-ADZLL2YI.js} +3 -2
- package/dist/{session-start-DECLNJDI.js.map → session-start-ADZLL2YI.js.map} +1 -1
- package/dist/src/cli.js +1 -1
- package/dist/src/daemon/main.js +1 -1
- package/dist/src/hooks/post-tool-use.js +2 -1
- package/dist/src/hooks/post-tool-use.js.map +1 -1
- package/dist/src/hooks/session-end.js +2 -1
- package/dist/src/hooks/session-end.js.map +1 -1
- package/dist/src/hooks/session-start.js +1 -1
- package/dist/src/hooks/stop.js +2 -1
- package/dist/src/hooks/stop.js.map +1 -1
- package/dist/src/hooks/user-prompt-submit.js +2 -1
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/version-N55WTRG5.js +11 -0
- package/dist/version-N55WTRG5.js.map +1 -0
- package/package.json +1 -1
- package/skills/myco/SKILL.md +15 -14
- package/dist/chunk-NTYYYC32.js.map +0 -1
- package/dist/cli-ERAS5H43.js.map +0 -1
- package/dist/main-D4X6XWRT.js.map +0 -1
- /package/dist/{client-HORA3CC4.js.map → client-43ML4EHJ.js.map} +0 -0
- /package/dist/{init-LLLHUNSY.js.map → init-HTKEL3YT.js.map} +0 -0
- /package/dist/{rebuild-3367GP5R.js.map → rebuild-TXMFYBOU.js.map} +0 -0
- /package/dist/{reprocess-EM5RIRH4.js.map → reprocess-ARKHGDWF.js.map} +0 -0
- /package/dist/{restart-NH5MX45I.js.map → restart-C5BCVG3A.js.map} +0 -0
- /package/dist/{search-W3ECVSTH.js.map → search-YCKNX2WS.js.map} +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
AgentRegistry
|
|
4
|
+
} from "./chunk-2QEJKG7R.js";
|
|
5
|
+
|
|
6
|
+
// src/version.ts
|
|
7
|
+
import fs from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
var cached;
|
|
10
|
+
function getPluginVersion() {
|
|
11
|
+
if (cached) return cached;
|
|
12
|
+
const pluginRoot = new AgentRegistry().resolvePluginRoot();
|
|
13
|
+
if (pluginRoot) {
|
|
14
|
+
cached = readVersionFrom(pluginRoot);
|
|
15
|
+
if (cached) return cached;
|
|
16
|
+
}
|
|
17
|
+
cached = readVersionFrom(process.cwd()) ?? "0.0.0";
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
function readVersionFrom(dir) {
|
|
21
|
+
const pkgPath = path.join(dir, "package.json");
|
|
22
|
+
try {
|
|
23
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
24
|
+
return pkg.version;
|
|
25
|
+
} catch {
|
|
26
|
+
return void 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
getPluginVersion
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-2UEJVXXE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * Resolve the plugin's package version from package.json.\n * Uses the agent registry to find the plugin root, then reads package.json.\n */\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { AgentRegistry } from './agents/registry.js';\n\nlet cached: string | undefined;\n\nexport function getPluginVersion(): string {\n if (cached) return cached;\n\n // Primary: resolve via agent env var (CLAUDE_PLUGIN_ROOT, etc.)\n const pluginRoot = new AgentRegistry().resolvePluginRoot();\n if (pluginRoot) {\n cached = readVersionFrom(pluginRoot);\n if (cached) return cached;\n }\n\n // Fallback: walk up from cwd\n cached = readVersionFrom(process.cwd()) ?? '0.0.0';\n return cached;\n}\n\nfunction readVersionFrom(dir: string): string | undefined {\n const pkgPath = path.join(dir, 'package.json');\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n return pkg.version;\n } catch {\n return undefined;\n }\n}\n"],"mappings":";;;;;;AAIA,OAAO,QAAQ;AACf,OAAO,UAAU;AAGjB,IAAI;AAEG,SAAS,mBAA2B;AACzC,MAAI,OAAQ,QAAO;AAGnB,QAAM,aAAa,IAAI,cAAc,EAAE,kBAAkB;AACzD,MAAI,YAAY;AACd,aAAS,gBAAgB,UAAU;AACnC,QAAI,OAAQ,QAAO;AAAA,EACrB;AAGA,WAAS,gBAAgB,QAAQ,IAAI,CAAC,KAAK;AAC3C,SAAO;AACT;AAEA,SAAS,gBAAgB,KAAiC;AACxD,QAAM,UAAU,KAAK,KAAK,KAAK,cAAc;AAC7C,MAAI;AACF,UAAM,MAAM,KAAK,MAAM,GAAG,aAAa,SAAS,OAAO,CAAC;AACxD,WAAO,IAAI;AAAA,EACb,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getPluginVersion
|
|
4
|
+
} from "./chunk-2UEJVXXE.js";
|
|
2
5
|
import {
|
|
3
6
|
AgentRegistry
|
|
4
7
|
} from "./chunk-2QEJKG7R.js";
|
|
@@ -63,11 +66,51 @@ var DaemonClient = class {
|
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
69
|
+
* Check if the daemon is running a stale version.
|
|
70
|
+
* Returns true if the daemon's version doesn't match the current plugin version.
|
|
71
|
+
*/
|
|
72
|
+
async isStale() {
|
|
73
|
+
try {
|
|
74
|
+
const info = this.readDaemonJson();
|
|
75
|
+
if (!info) return false;
|
|
76
|
+
const res = await fetch(`http://127.0.0.1:${info.port}/health`, {
|
|
77
|
+
signal: AbortSignal.timeout(DAEMON_HEALTH_CHECK_TIMEOUT_MS)
|
|
78
|
+
});
|
|
79
|
+
if (!res.ok) return false;
|
|
80
|
+
const data = await res.json();
|
|
81
|
+
if (!data.myco) return false;
|
|
82
|
+
if (!data.version) return true;
|
|
83
|
+
return data.version !== getPluginVersion();
|
|
84
|
+
} catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Kill the running daemon process.
|
|
90
|
+
*/
|
|
91
|
+
killDaemon() {
|
|
92
|
+
try {
|
|
93
|
+
const info = this.readDaemonJson();
|
|
94
|
+
if (!info) return;
|
|
95
|
+
process.kill(info.pid, "SIGTERM");
|
|
96
|
+
} catch {
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
fs.unlinkSync(path.join(this.vaultDir, "daemon.json"));
|
|
100
|
+
} catch {
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Ensure the daemon is running the current version. Spawns it if unhealthy
|
|
105
|
+
* or restarts it if the version is stale. Returns true if healthy after this call.
|
|
68
106
|
*/
|
|
69
107
|
async ensureRunning() {
|
|
70
|
-
if (await this.
|
|
108
|
+
if (await this.isStale()) {
|
|
109
|
+
this.killDaemon();
|
|
110
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
111
|
+
} else if (await this.isHealthy()) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
71
114
|
this.spawnDaemon();
|
|
72
115
|
for (const delay of DAEMON_HEALTH_RETRY_DELAYS) {
|
|
73
116
|
await new Promise((r) => setTimeout(r, delay));
|
|
@@ -101,4 +144,4 @@ var DaemonClient = class {
|
|
|
101
144
|
export {
|
|
102
145
|
DaemonClient
|
|
103
146
|
};
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-5BGQJOJN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/client.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { spawn } from 'node:child_process';\nimport { DAEMON_CLIENT_TIMEOUT_MS, DAEMON_HEALTH_CHECK_TIMEOUT_MS, DAEMON_HEALTH_RETRY_DELAYS } from '../constants.js';\nimport { AgentRegistry } from '../agents/registry.js';\nimport { getPluginVersion } from '../version.js';\n\ninterface DaemonInfo {\n pid: number;\n port: number;\n}\n\ninterface HealthResponse {\n myco: boolean;\n version?: string;\n}\n\ninterface ClientResult {\n ok: boolean;\n data?: any;\n}\n\nexport class DaemonClient {\n private vaultDir: string;\n\n constructor(vaultDir: string) {\n this.vaultDir = vaultDir;\n }\n\n async post(endpoint: string, body: unknown): Promise<ClientResult> {\n try {\n const info = this.readDaemonJson();\n if (!info) return { ok: false };\n\n const res = await fetch(`http://127.0.0.1:${info.port}${endpoint}`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS),\n });\n\n if (!res.ok) return { ok: false };\n const data = await res.json();\n return { ok: true, data };\n } catch {\n return { ok: false };\n }\n }\n\n async get(endpoint: string): Promise<ClientResult> {\n try {\n const info = this.readDaemonJson();\n if (!info) return { ok: false };\n\n const res = await fetch(`http://127.0.0.1:${info.port}${endpoint}`, {\n signal: AbortSignal.timeout(DAEMON_CLIENT_TIMEOUT_MS),\n });\n\n if (!res.ok) return { ok: false };\n const data = await res.json();\n return { ok: true, data };\n } catch {\n return { ok: false };\n }\n }\n\n async isHealthy(): Promise<boolean> {\n try {\n const info = this.readDaemonJson();\n if (!info) return false;\n\n const res = await fetch(`http://127.0.0.1:${info.port}/health`, {\n signal: AbortSignal.timeout(DAEMON_HEALTH_CHECK_TIMEOUT_MS),\n });\n if (!res.ok) return false;\n const data = await res.json() as HealthResponse;\n return data.myco === true;\n } catch {\n return false;\n }\n }\n\n /**\n * Check if the daemon is running a stale version.\n * Returns true if the daemon's version doesn't match the current plugin version.\n */\n private async isStale(): Promise<boolean> {\n try {\n const info = this.readDaemonJson();\n if (!info) return false;\n\n const res = await fetch(`http://127.0.0.1:${info.port}/health`, {\n signal: AbortSignal.timeout(DAEMON_HEALTH_CHECK_TIMEOUT_MS),\n });\n if (!res.ok) return false;\n const data = await res.json() as HealthResponse;\n if (!data.myco) return false;\n\n // No version in response = old daemon that predates this check\n if (!data.version) return true;\n\n return data.version !== getPluginVersion();\n } catch {\n return false;\n }\n }\n\n /**\n * Kill the running daemon process.\n */\n private killDaemon(): void {\n try {\n const info = this.readDaemonJson();\n if (!info) return;\n process.kill(info.pid, 'SIGTERM');\n } catch { /* already dead */ }\n try {\n fs.unlinkSync(path.join(this.vaultDir, 'daemon.json'));\n } catch { /* already gone */ }\n }\n\n /**\n * Ensure the daemon is running the current version. Spawns it if unhealthy\n * or restarts it if the version is stale. Returns true if healthy after this call.\n */\n async ensureRunning(): Promise<boolean> {\n // Check if daemon is running but stale (version mismatch)\n if (await this.isStale()) {\n this.killDaemon();\n // Brief pause for port release\n await new Promise((r) => setTimeout(r, 200));\n } else if (await this.isHealthy()) {\n return true;\n }\n\n this.spawnDaemon();\n\n for (const delay of DAEMON_HEALTH_RETRY_DELAYS) {\n await new Promise((r) => setTimeout(r, delay));\n if (await this.isHealthy()) return true;\n }\n return false;\n }\n\n spawnDaemon(): void {\n const pluginRoot = new AgentRegistry().resolvePluginRoot();\n const daemonScript = pluginRoot\n ? path.join(pluginRoot, 'dist', 'src', 'daemon', 'main.js')\n : path.resolve(import.meta.dirname, '..', 'daemon', 'main.js');\n if (!fs.existsSync(daemonScript)) return;\n\n const child = spawn('node', [daemonScript, '--vault', this.vaultDir], {\n detached: true,\n stdio: 'ignore',\n });\n child.unref();\n }\n\n private readDaemonJson(): DaemonInfo | null {\n try {\n const jsonPath = path.join(this.vaultDir, 'daemon.json');\n const content = fs.readFileSync(jsonPath, 'utf-8');\n const info = JSON.parse(content);\n if (typeof info.port !== 'number') return null;\n return info as DaemonInfo;\n } catch {\n return null;\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -31,6 +31,7 @@ Commands:
|
|
|
31
31
|
restart Restart the daemon
|
|
32
32
|
rebuild Reindex the entire vault
|
|
33
33
|
reprocess [options] Re-extract observations and re-index sessions
|
|
34
|
+
version Show plugin version
|
|
34
35
|
`;
|
|
35
36
|
async function main() {
|
|
36
37
|
const [cmd, ...args] = process.argv.slice(2);
|
|
@@ -38,8 +39,13 @@ async function main() {
|
|
|
38
39
|
process.stdout.write(USAGE);
|
|
39
40
|
return;
|
|
40
41
|
}
|
|
41
|
-
if (cmd === "init") return (await import("./init-
|
|
42
|
+
if (cmd === "init") return (await import("./init-HTKEL3YT.js")).run(args);
|
|
42
43
|
if (cmd === "detect-providers") return (await import("./detect-providers-6RQCQZOI.js")).run(args);
|
|
44
|
+
if (cmd === "version" || cmd === "--version" || cmd === "-v") {
|
|
45
|
+
const { getPluginVersion } = await import("./version-N55WTRG5.js");
|
|
46
|
+
console.log(getPluginVersion());
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
43
49
|
const vaultDir = resolveVaultDir();
|
|
44
50
|
if (!fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
|
|
45
51
|
console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);
|
|
@@ -53,17 +59,17 @@ async function main() {
|
|
|
53
59
|
case "stats":
|
|
54
60
|
return (await import("./stats-7VEZN2WF.js")).run(args, vaultDir);
|
|
55
61
|
case "search":
|
|
56
|
-
return (await import("./search-
|
|
62
|
+
return (await import("./search-YCKNX2WS.js")).run(args, vaultDir);
|
|
57
63
|
case "vectors":
|
|
58
|
-
return (await import("./search-
|
|
64
|
+
return (await import("./search-YCKNX2WS.js")).runVectors(args, vaultDir);
|
|
59
65
|
case "session":
|
|
60
66
|
return (await import("./session-5GI2YU6R.js")).run(args, vaultDir);
|
|
61
67
|
case "restart":
|
|
62
|
-
return (await import("./restart-
|
|
68
|
+
return (await import("./restart-C5BCVG3A.js")).run(args, vaultDir);
|
|
63
69
|
case "rebuild":
|
|
64
|
-
return (await import("./rebuild-
|
|
70
|
+
return (await import("./rebuild-TXMFYBOU.js")).run(args, vaultDir);
|
|
65
71
|
case "reprocess":
|
|
66
|
-
return (await import("./reprocess-
|
|
72
|
+
return (await import("./reprocess-ARKHGDWF.js")).run(args, vaultDir);
|
|
67
73
|
case "logs":
|
|
68
74
|
return (await import("./logs-BSTBZHDR.js")).run(args, vaultDir);
|
|
69
75
|
default:
|
|
@@ -76,4 +82,4 @@ main().catch((err) => {
|
|
|
76
82
|
console.error(`myco: ${err.message}`);
|
|
77
83
|
process.exit(1);
|
|
78
84
|
});
|
|
79
|
-
//# sourceMappingURL=cli-
|
|
85
|
+
//# sourceMappingURL=cli-4RR3QBYK.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 version Show plugin version\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 if (cmd === 'version' || cmd === '--version' || cmd === '-v') {\n const { getPluginVersion } = await import('./version.js');\n console.log(getPluginVersion());\n return;\n }\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;AAAA;AAkBd,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;AAC3F,MAAI,QAAQ,aAAa,QAAQ,eAAe,QAAQ,MAAM;AAC5D,UAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,uBAAc;AACxD,YAAQ,IAAI,iBAAiB,CAAC;AAC9B;AAAA,EACF;AAEA,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":[]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
DaemonClient
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5BGQJOJN.js";
|
|
5
|
+
import "./chunk-2UEJVXXE.js";
|
|
5
6
|
import "./chunk-2QEJKG7R.js";
|
|
6
7
|
import "./chunk-Q7BEFSOV.js";
|
|
7
8
|
import "./chunk-PZUWP5VK.js";
|
|
8
9
|
export {
|
|
9
10
|
DaemonClient
|
|
10
11
|
};
|
|
11
|
-
//# sourceMappingURL=client-
|
|
12
|
+
//# sourceMappingURL=client-43ML4EHJ.js.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
initFts
|
|
4
|
-
} from "./chunk-6FQISQNA.js";
|
|
5
2
|
import {
|
|
6
3
|
DASHBOARD_CONTENT,
|
|
7
4
|
PROVIDER_DEFAULTS,
|
|
@@ -11,6 +8,9 @@ import {
|
|
|
11
8
|
import {
|
|
12
9
|
parseStringFlag
|
|
13
10
|
} from "./chunk-SAKJMNSR.js";
|
|
11
|
+
import {
|
|
12
|
+
initFts
|
|
13
|
+
} from "./chunk-6FQISQNA.js";
|
|
14
14
|
import {
|
|
15
15
|
MycoIndex
|
|
16
16
|
} from "./chunk-PA3VMINE.js";
|
|
@@ -117,4 +117,4 @@ async function run(args) {
|
|
|
117
117
|
export {
|
|
118
118
|
run
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=init-
|
|
120
|
+
//# sourceMappingURL=init-HTKEL3YT.js.map
|
|
@@ -22,22 +22,22 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
generateEmbedding
|
|
24
24
|
} from "./chunk-RGVBGTD6.js";
|
|
25
|
+
import {
|
|
26
|
+
VectorIndex
|
|
27
|
+
} from "./chunk-XQXXF6MU.js";
|
|
25
28
|
import {
|
|
26
29
|
DaemonLogger
|
|
27
30
|
} from "./chunk-5EZ7QF6J.js";
|
|
28
31
|
import {
|
|
29
32
|
initFts
|
|
30
33
|
} from "./chunk-6FQISQNA.js";
|
|
34
|
+
import {
|
|
35
|
+
MycoIndex
|
|
36
|
+
} from "./chunk-PA3VMINE.js";
|
|
31
37
|
import {
|
|
32
38
|
createEmbeddingProvider,
|
|
33
39
|
createLlmProvider
|
|
34
40
|
} from "./chunk-N6IAW33G.js";
|
|
35
|
-
import {
|
|
36
|
-
VectorIndex
|
|
37
|
-
} from "./chunk-XQXXF6MU.js";
|
|
38
|
-
import {
|
|
39
|
-
MycoIndex
|
|
40
|
-
} from "./chunk-PA3VMINE.js";
|
|
41
41
|
import "./chunk-XW3OL55U.js";
|
|
42
42
|
import {
|
|
43
43
|
external_exports,
|
|
@@ -49,6 +49,9 @@ import {
|
|
|
49
49
|
import {
|
|
50
50
|
EventBuffer
|
|
51
51
|
} from "./chunk-I7PMGO6S.js";
|
|
52
|
+
import {
|
|
53
|
+
getPluginVersion
|
|
54
|
+
} from "./chunk-2UEJVXXE.js";
|
|
52
55
|
import {
|
|
53
56
|
claudeCodeAdapter,
|
|
54
57
|
createPerProjectAdapter,
|
|
@@ -79,6 +82,7 @@ import fs from "fs";
|
|
|
79
82
|
import path from "path";
|
|
80
83
|
var DaemonServer = class {
|
|
81
84
|
port = 0;
|
|
85
|
+
version;
|
|
82
86
|
server = null;
|
|
83
87
|
vaultDir;
|
|
84
88
|
logger;
|
|
@@ -86,6 +90,7 @@ var DaemonServer = class {
|
|
|
86
90
|
constructor(config) {
|
|
87
91
|
this.vaultDir = config.vaultDir;
|
|
88
92
|
this.logger = config.logger;
|
|
93
|
+
this.version = getPluginVersion();
|
|
89
94
|
this.registerDefaultRoutes();
|
|
90
95
|
}
|
|
91
96
|
registerRoute(method, routePath, handler) {
|
|
@@ -120,6 +125,7 @@ var DaemonServer = class {
|
|
|
120
125
|
registerDefaultRoutes() {
|
|
121
126
|
this.registerRoute("GET", "/health", async () => ({
|
|
122
127
|
myco: true,
|
|
128
|
+
version: this.version,
|
|
123
129
|
pid: process.pid,
|
|
124
130
|
uptime: process.uptime()
|
|
125
131
|
}));
|
|
@@ -2940,4 +2946,4 @@ export {
|
|
|
2940
2946
|
chokidar/index.js:
|
|
2941
2947
|
(*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) *)
|
|
2942
2948
|
*/
|
|
2943
|
-
//# sourceMappingURL=main-
|
|
2949
|
+
//# sourceMappingURL=main-DTWU4OAH.js.map
|