@mokoconsulting/mokomysql-mcp 0.0.0-stage → 2.6.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /** True when the value is already a `file:<path>` reference (nothing to migrate). */
2
+ declare function isFileRef(value: unknown): boolean;
3
+ /** True when the value is a non-empty inline literal that must be migrated. */
4
+ declare function isInlineSecret(value: unknown): value is string;
5
+ /** Sanitize a slug component to the `[A-Za-z0-9._-]` alphabet. */
6
+ declare function sanitize(part: string): string;
7
+ /**
8
+ * One sensitive field discovered inline on a connection, with the slug its
9
+ * secret file should take. `field` is the config key to rewrite; `get`/`set`
10
+ * read and replace the value in the parsed object.
11
+ */
12
+ interface InlineField {
13
+ connectionKey: string;
14
+ /** Human label for warnings, e.g. "prod.password" or "prod.ssl.key". */
15
+ label: string;
16
+ slug: string;
17
+ value: string;
18
+ /** Replace the inline value with a `file:` ref in the parsed object. */
19
+ apply(ref: string): void;
20
+ }
21
+ /**
22
+ * Enumerate every inline secret across all connections. The ONLY top-level
23
+ * connection secret in this config shape is `password`; an inline PEM private
24
+ * key under `ssl.key` is also a secret value (a key *value*, not a path) and is
25
+ * migrated too. A `file:` ref or empty value is skipped.
26
+ */
27
+ declare function findInlineSecrets(connections: Record<string, unknown>): InlineField[];
28
+ /** Collapse an absolute path under $HOME back to a portable `~/...` form. */
29
+ declare function tildeify(absPath: string): string;
30
+ /**
31
+ * Self-heal inline secrets in the parsed config, mutating `parsed` in place so
32
+ * the subsequent `resolveSecretRefs` pass picks up the new `file:` refs.
33
+ *
34
+ * Behavior (no-inline-secrets policy):
35
+ * - For each inline secret: warn to stderr (never echo the value), write a RAW
36
+ * token file under `~/.ssh/tokens/`, and rewrite the config so the field is a
37
+ * `file:` ref with the inline literal removed.
38
+ * - Existing token files are reused, never overwritten.
39
+ * - Config is backed up once to `<config>.bak`; writes are atomic; mode 0600.
40
+ * - On ANY error (read-only FS, perms, unwritable config) → warn only and keep
41
+ * the inline value for this run. Never throws, never loses the credential.
42
+ *
43
+ * Only runs against the real on-disk config path (the resolved
44
+ * `~/.mcp_mokomysql.json` or its `MYSQL_MCP_CONFIG` override).
45
+ */
46
+ export declare function migrateInlineSecrets(parsed: {
47
+ connections?: Record<string, unknown>;
48
+ }, configPath: string): Promise<void>;
49
+ export declare const __test: {
50
+ sanitize: typeof sanitize;
51
+ isInlineSecret: typeof isInlineSecret;
52
+ isFileRef: typeof isFileRef;
53
+ findInlineSecrets: typeof findInlineSecrets;
54
+ tildeify: typeof tildeify;
55
+ };
56
+ export {};
57
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../source/migrate.ts"],"names":[],"mappings":"AAkCA,qFAAqF;AACrF,iBAAS,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1C;AAED,+EAA+E;AAC/E,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,kEAAkE;AAClE,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtC;AAOD;;;;GAIG;AACH,UAAU,WAAW;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;GAKG;AACH,iBAAS,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAsC9E;AAsCD,6EAA6E;AAC7E,iBAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzC;AAuBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACjD,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED,eAAO,MAAM,MAAM;;;;;;CAAuE,CAAC"}
@@ -0,0 +1,224 @@
1
+ /* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+ *
3
+ * This file is part of a Moko Consulting project.
4
+ *
5
+ * SPDX-License-Identifier: GPL-3.0-or-later
6
+ *
7
+ * FILE INFORMATION
8
+ * DEFGROUP: mokomysql-mcp.Migrate
9
+ * INGROUP: mokomysql-mcp
10
+ * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokomysql-mcp
11
+ * PATH: /source/migrate.ts
12
+ * BRIEF: Self-heal inline secrets in the MySQL MCP config into file-backed refs.
13
+ *
14
+ * No-inline-secrets policy (MokoCLI #1043). Any secret found INLINE in the
15
+ * on-disk `~/.mcp_mokomysql.json` is migrated to `~/.ssh/tokens/<slug>.token`
16
+ * and the config is rewritten so the field becomes `file:<path>`.
17
+ *
18
+ * mysql-specific: secret files are written as RAW values (NOT JSON). A MySQL
19
+ * password is an opaque string; `resolveRef()` reads the file verbatim, so a
20
+ * JSON wrapper would be read back literally and corrupt the credential. This
21
+ * intentionally diverges from the GitHub/OAuth JSON token-file shape used by
22
+ * token-based MCPs.
23
+ */
24
+ import { constants as FS } from 'node:fs';
25
+ import { access, chmod, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
26
+ import { homedir } from 'node:os';
27
+ import { resolve } from 'node:path';
28
+ /** Directory that holds file-backed secrets. */
29
+ function tokensDir() {
30
+ return resolve(homedir(), '.ssh', 'tokens');
31
+ }
32
+ /** True when the value is already a `file:<path>` reference (nothing to migrate). */
33
+ function isFileRef(value) {
34
+ return typeof value === 'string' && /^file:/.test(value.trim());
35
+ }
36
+ /** True when the value is a non-empty inline literal that must be migrated. */
37
+ function isInlineSecret(value) {
38
+ return typeof value === 'string' && value.trim() !== '' && !isFileRef(value);
39
+ }
40
+ /** Sanitize a slug component to the `[A-Za-z0-9._-]` alphabet. */
41
+ function sanitize(part) {
42
+ return part.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
43
+ }
44
+ /** stderr only — stdout is the MCP stdio channel and must never carry logs. */
45
+ function warn(message) {
46
+ process.stderr.write(`[mokomysql] WARNING: ${message}\n`);
47
+ }
48
+ /**
49
+ * Enumerate every inline secret across all connections. The ONLY top-level
50
+ * connection secret in this config shape is `password`; an inline PEM private
51
+ * key under `ssl.key` is also a secret value (a key *value*, not a path) and is
52
+ * migrated too. A `file:` ref or empty value is skipped.
53
+ */
54
+ function findInlineSecrets(connections) {
55
+ const out = [];
56
+ for (const [key, raw] of Object.entries(connections)) {
57
+ if (!raw || typeof raw !== 'object')
58
+ continue;
59
+ const conn = raw;
60
+ const connSlug = sanitize(key) || 'connection';
61
+ if (isInlineSecret(conn.password)) {
62
+ out.push({
63
+ connectionKey: key,
64
+ label: `${key}.password`,
65
+ slug: `mysql-${connSlug}-password`,
66
+ value: conn.password,
67
+ apply: (ref) => {
68
+ conn.password = ref;
69
+ },
70
+ });
71
+ }
72
+ const ssl = conn.ssl;
73
+ if (ssl && typeof ssl === 'object') {
74
+ const sslRec = ssl;
75
+ // An inline PEM private-key *value* (begins with a PEM header) is a
76
+ // secret; a short reference/path is left alone.
77
+ if (isInlineSecret(sslRec.key) && /BEGIN[^\n]*PRIVATE KEY/.test(sslRec.key)) {
78
+ out.push({
79
+ connectionKey: key,
80
+ label: `${key}.ssl.key`,
81
+ slug: `mysql-${connSlug}-ssl-key`,
82
+ value: sslRec.key,
83
+ apply: (ref) => {
84
+ sslRec.key = ref;
85
+ },
86
+ });
87
+ }
88
+ }
89
+ }
90
+ return out;
91
+ }
92
+ /** True if the path exists. */
93
+ async function exists(path) {
94
+ try {
95
+ await access(path, FS.F_OK);
96
+ return true;
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ /**
103
+ * Write the raw secret to `~/.ssh/tokens/<slug>.token` (mode 0600). If the file
104
+ * already exists it is NOT overwritten — the existing file is reused. Returns
105
+ * the absolute token path. mysql reads this file RAW, so the content is the
106
+ * verbatim secret with no trailing newline and no JSON wrapper.
107
+ */
108
+ async function writeTokenFile(slug, secret) {
109
+ const dir = tokensDir();
110
+ await mkdir(dir, { recursive: true, mode: 0o700 });
111
+ // Best-effort tighten perms if the dir pre-existed with looser bits.
112
+ await chmod(dir, 0o700).catch(() => { });
113
+ const tokenPath = resolve(dir, `${slug}.token`);
114
+ if (await exists(tokenPath)) {
115
+ warn(`secret file already exists, reusing without overwrite: ${tokenPath}`);
116
+ return tokenPath;
117
+ }
118
+ // Atomic: write temp in the same dir, chmod, rename into place.
119
+ const tmp = `${tokenPath}.tmp-${process.pid}`;
120
+ await writeFile(tmp, secret, { encoding: 'utf-8', mode: 0o600 });
121
+ await chmod(tmp, 0o600).catch(() => { });
122
+ await rename(tmp, tokenPath);
123
+ return tokenPath;
124
+ }
125
+ /** Collapse an absolute path under $HOME back to a portable `~/...` form. */
126
+ function tildeify(absPath) {
127
+ const home = homedir();
128
+ if (absPath === home)
129
+ return '~';
130
+ const prefix = home.endsWith('/') || home.endsWith('\\') ? home : home + '/';
131
+ const prefixBack = home.endsWith('/') || home.endsWith('\\') ? home : home + '\\';
132
+ if (absPath.startsWith(prefix))
133
+ return '~/' + absPath.slice(prefix.length).replace(/\\/g, '/');
134
+ if (absPath.startsWith(prefixBack))
135
+ return '~/' + absPath.slice(prefixBack.length).replace(/\\/g, '/');
136
+ return absPath;
137
+ }
138
+ /**
139
+ * Atomically rewrite the config file with the migrated `file:` refs. Backs the
140
+ * original up to `<config>.bak` once (only if no `.bak` exists yet). The config
141
+ * is written mode 0600.
142
+ */
143
+ async function rewriteConfig(configPath, parsed) {
144
+ const bak = `${configPath}.bak`;
145
+ if (!(await exists(bak))) {
146
+ const original = await readFile(configPath, 'utf-8');
147
+ await writeFile(bak, original, { encoding: 'utf-8', mode: 0o600 });
148
+ await chmod(bak, 0o600).catch(() => { });
149
+ }
150
+ const serialized = JSON.stringify(parsed, null, '\t') + '\n';
151
+ const tmp = `${configPath}.tmp-${process.pid}`;
152
+ await writeFile(tmp, serialized, { encoding: 'utf-8', mode: 0o600 });
153
+ await chmod(tmp, 0o600).catch(() => { });
154
+ await rename(tmp, configPath);
155
+ await chmod(configPath, 0o600).catch(() => { });
156
+ }
157
+ /**
158
+ * Self-heal inline secrets in the parsed config, mutating `parsed` in place so
159
+ * the subsequent `resolveSecretRefs` pass picks up the new `file:` refs.
160
+ *
161
+ * Behavior (no-inline-secrets policy):
162
+ * - For each inline secret: warn to stderr (never echo the value), write a RAW
163
+ * token file under `~/.ssh/tokens/`, and rewrite the config so the field is a
164
+ * `file:` ref with the inline literal removed.
165
+ * - Existing token files are reused, never overwritten.
166
+ * - Config is backed up once to `<config>.bak`; writes are atomic; mode 0600.
167
+ * - On ANY error (read-only FS, perms, unwritable config) → warn only and keep
168
+ * the inline value for this run. Never throws, never loses the credential.
169
+ *
170
+ * Only runs against the real on-disk config path (the resolved
171
+ * `~/.mcp_mokomysql.json` or its `MYSQL_MCP_CONFIG` override).
172
+ */
173
+ export async function migrateInlineSecrets(parsed, configPath) {
174
+ try {
175
+ if (!parsed.connections || typeof parsed.connections !== 'object')
176
+ return;
177
+ const inline = findInlineSecrets(parsed.connections);
178
+ if (inline.length === 0)
179
+ return;
180
+ // Only touch the config if it is the real on-disk file we can read.
181
+ if (!(await exists(configPath))) {
182
+ warn(`${inline.length} inline secret(s) found but config path is not a readable file ` +
183
+ `(${configPath}); leaving inline for this run.`);
184
+ return;
185
+ }
186
+ let migratedAny = false;
187
+ for (const field of inline) {
188
+ try {
189
+ warn(`inline secret detected at ${field.label}; migrating to a file-backed secret ` +
190
+ `(no-inline-secrets policy, MokoCLI #1043). The value is NOT shown.`);
191
+ const tokenPath = await writeTokenFile(field.slug, field.value);
192
+ field.apply(`file:${tildeify(tokenPath)}`);
193
+ migratedAny = true;
194
+ }
195
+ catch (err) {
196
+ const msg = err instanceof Error ? err.message : String(err);
197
+ warn(`failed to migrate ${field.label} to a file (${msg}); ` +
198
+ `keeping the inline value for this run.`);
199
+ // Revert any ref we may have set on this field so resolution uses the literal.
200
+ field.apply(field.value);
201
+ }
202
+ }
203
+ if (migratedAny) {
204
+ try {
205
+ await rewriteConfig(configPath, parsed);
206
+ warn(`config rewritten with file-backed secret ref(s): ${configPath} ` +
207
+ `(backup at ${configPath}.bak).`);
208
+ }
209
+ catch (err) {
210
+ const msg = err instanceof Error ? err.message : String(err);
211
+ warn(`token file(s) written but rewriting the config failed (${msg}); ` +
212
+ `the config still references the secret value(s) inline. ` +
213
+ `The file-backed ref(s) are used for this run only.`);
214
+ }
215
+ }
216
+ }
217
+ catch (err) {
218
+ // Absolute backstop — migration must never crash the server.
219
+ const msg = err instanceof Error ? err.message : String(err);
220
+ warn(`secret auto-migration aborted (${msg}); continuing with config as-is.`);
221
+ }
222
+ }
223
+ export const __test = { sanitize, isInlineSecret, isFileRef, findInlineSecrets, tildeify };
224
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../source/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Recursively resolve every "file:" secret reference in a parsed config object,
3
+ * in place. Lets secrets (tokens, passwords, API keys) live in files such as
4
+ * ~/.ssh/tokens/* instead of inline in the config JSON. Plain values are left
5
+ * untouched, so pre-existing inline configs remain valid.
6
+ */
7
+ export declare function resolveSecretRefs(obj: unknown): Promise<void>;
8
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../source/secrets.ts"],"names":[],"mappings":"AAwDA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAenE"}
@@ -0,0 +1,81 @@
1
+ /* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+ *
3
+ * This file is part of a Moko Consulting project.
4
+ *
5
+ * SPDX-License-Identifier: GPL-3.0-or-later
6
+ *
7
+ * FILE INFORMATION
8
+ * DEFGROUP: mokomysql-mcp.Secrets
9
+ * INGROUP: mokomysql-mcp
10
+ * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokomysql-mcp
11
+ * PATH: /source/secrets.ts
12
+ * BRIEF: Resolve file-backed secret references in a parsed config object.
13
+ */
14
+ import { readFile } from 'node:fs/promises';
15
+ import { homedir } from 'node:os';
16
+ import { resolve } from 'node:path';
17
+ /** Expand a leading "~" to the user's home directory, then resolve to absolute. */
18
+ function expandHome(p) {
19
+ if (p === '~')
20
+ return homedir();
21
+ if (p.startsWith('~/') || p.startsWith('~\\')) {
22
+ return resolve(homedir(), p.slice(2));
23
+ }
24
+ return resolve(p);
25
+ }
26
+ /**
27
+ * Resolve a single config string.
28
+ * - "file:<path>" -> the trimmed contents of <path> (a leading "~" expands to $HOME).
29
+ * - anything else -> returned unchanged, so inline literals keep working.
30
+ *
31
+ * A missing/unreadable file throws (fail loud) — a secret must never silently
32
+ * degrade to the literal "file:..." string. An empty or whitespace-only file
33
+ * also throws, so a blank secret file never goes out as an empty value.
34
+ */
35
+ async function resolveRef(value) {
36
+ const m = /^file:(.+)$/s.exec(value.trim());
37
+ if (!m)
38
+ return value;
39
+ const path = expandHome(m[1].trim());
40
+ let trimmed;
41
+ try {
42
+ const raw = await readFile(path, 'utf-8');
43
+ trimmed = raw.replace(/\r?\n+$/, '');
44
+ }
45
+ catch (err) {
46
+ const msg = err instanceof Error ? err.message : String(err);
47
+ throw new Error(`Failed to read secret file "${path}" (referenced as "${value}"): ${msg}`);
48
+ }
49
+ if (trimmed.trim() === '') {
50
+ throw new Error(`Secret file "${path}" (referenced as "${value}") is empty or whitespace-only; refusing to use an empty secret value.`);
51
+ }
52
+ return trimmed;
53
+ }
54
+ /**
55
+ * Recursively resolve every "file:" secret reference in a parsed config object,
56
+ * in place. Lets secrets (tokens, passwords, API keys) live in files such as
57
+ * ~/.ssh/tokens/* instead of inline in the config JSON. Plain values are left
58
+ * untouched, so pre-existing inline configs remain valid.
59
+ */
60
+ export async function resolveSecretRefs(obj) {
61
+ if (Array.isArray(obj)) {
62
+ for (let i = 0; i < obj.length; i++) {
63
+ const v = obj[i];
64
+ if (typeof v === 'string')
65
+ obj[i] = await resolveRef(v);
66
+ else if (v && typeof v === 'object')
67
+ await resolveSecretRefs(v);
68
+ }
69
+ }
70
+ else if (obj && typeof obj === 'object') {
71
+ const rec = obj;
72
+ for (const k of Object.keys(rec)) {
73
+ const v = rec[k];
74
+ if (typeof v === 'string')
75
+ rec[k] = await resolveRef(v);
76
+ else if (v && typeof v === 'object')
77
+ await resolveSecretRefs(v);
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../source/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { JoomlaMarker, MySqlState } from './types.js';
2
+ /** Stable key for a learned verdict: identifies the physical database target. */
3
+ export declare function markerKey(host: string, port: number, database: string): string;
4
+ /** Load the sidecar once into memory; a missing/corrupt file is an empty store. */
5
+ export declare function loadState(): Promise<MySqlState>;
6
+ export declare function getMarker(key: string): Promise<JoomlaMarker | undefined>;
7
+ /**
8
+ * Record a learned verdict and persist it. The write is best-effort: an unwritable
9
+ * sidecar (read-only home, permissions) must not break queries — the in-memory
10
+ * cache still carries the verdict for this process, we just can't remember it next time.
11
+ */
12
+ export declare function setMarker(key: string, marker: JoomlaMarker): Promise<void>;
13
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../source/state.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM3D,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,mFAAmF;AACnF,wBAAsB,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAWrD;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAE9E;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhF"}
package/dist/state.js ADDED
@@ -0,0 +1,59 @@
1
+ /* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+ *
3
+ * This file is part of a Moko Consulting project.
4
+ *
5
+ * SPDX-License-Identifier: GPL-3.0-or-later
6
+ *
7
+ * FILE INFORMATION
8
+ * DEFGROUP: mokomysql.State
9
+ * INGROUP: mokomysql
10
+ * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokomysql-mcp
11
+ * PATH: /source/state.ts
12
+ * BRIEF: Sidecar state store for learned Joomla markers (per host:port/database).
13
+ */
14
+ import { readFile, writeFile } from 'node:fs/promises';
15
+ import { getStatePath } from './config.js';
16
+ let cache = null;
17
+ /** Serializes write-through so concurrent setMarker calls can't clobber the file. */
18
+ let writeChain = Promise.resolve();
19
+ /** Stable key for a learned verdict: identifies the physical database target. */
20
+ export function markerKey(host, port, database) {
21
+ return `${host}:${port}/${database}`;
22
+ }
23
+ /** Load the sidecar once into memory; a missing/corrupt file is an empty store. */
24
+ export async function loadState() {
25
+ if (cache)
26
+ return cache;
27
+ try {
28
+ const parsed = JSON.parse(await readFile(getStatePath(), 'utf-8'));
29
+ cache = parsed && typeof parsed.markers === 'object' && parsed.markers !== null
30
+ ? { markers: parsed.markers }
31
+ : { markers: {} };
32
+ }
33
+ catch {
34
+ cache = { markers: {} };
35
+ }
36
+ return cache;
37
+ }
38
+ export async function getMarker(key) {
39
+ return (await loadState()).markers[key];
40
+ }
41
+ /**
42
+ * Record a learned verdict and persist it. The write is best-effort: an unwritable
43
+ * sidecar (read-only home, permissions) must not break queries — the in-memory
44
+ * cache still carries the verdict for this process, we just can't remember it next time.
45
+ */
46
+ export async function setMarker(key, marker) {
47
+ const state = await loadState();
48
+ state.markers[key] = marker;
49
+ writeChain = writeChain.then(async () => {
50
+ try {
51
+ await writeFile(getStatePath(), JSON.stringify(state, null, '\t') + '\n', 'utf-8');
52
+ }
53
+ catch (e) {
54
+ process.stderr.write(`mokomysql: could not write state file ${getStatePath()}: ${e}\n`);
55
+ }
56
+ });
57
+ await writeChain;
58
+ }
59
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../source/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,IAAI,KAAK,GAAsB,IAAI,CAAC;AACpC,qFAAqF;AACrF,IAAI,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAElD,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,QAAgB;IACrE,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,SAAS;IAC9B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC1F,KAAK,GAAG,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;YAC9E,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;YAC7B,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IAC1C,OAAO,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,MAAoB;IAChE,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC5B,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC;YACJ,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,CAAC;AAClB,CAAC"}
@@ -0,0 +1,73 @@
1
+ export interface MySqlSslConfig {
2
+ /** Verify the server certificate against a CA. Defaults to true. */
3
+ rejectUnauthorized?: boolean;
4
+ /** PEM CA certificate(s) to trust. */
5
+ ca?: string;
6
+ /** PEM client certificate. */
7
+ cert?: string;
8
+ /** PEM client private key. */
9
+ key?: string;
10
+ }
11
+ export interface MySqlConnection {
12
+ host: string;
13
+ port?: number;
14
+ user: string;
15
+ password: string;
16
+ database?: string;
17
+ /**
18
+ * TLS for the connection. `true` enables TLS with certificate verification
19
+ * (secure default). Pass an object to customize — e.g. `{ ca: '...' }` for a
20
+ * private CA, or `{ rejectUnauthorized: false }` to explicitly opt out of
21
+ * verification (insecure; only for trusted internal hosts with self-signed
22
+ * certs). A bare `true` is never silently downgraded.
23
+ */
24
+ ssl?: boolean | MySqlSslConfig;
25
+ timezone?: string;
26
+ /**
27
+ * Extra keyword shortcuts that resolve to this connection.
28
+ * Matched case-insensitively with all punctuation stripped, so
29
+ * "moko.live", "moko-live", "Moko Live" and "mokolive" are equivalent.
30
+ */
31
+ tags?: string[];
32
+ /**
33
+ * Marks this connection as pointing at a Joomla database. Writes to a Joomla DB
34
+ * require the two-step `confirm_token` handshake (first call returns a token and
35
+ * does not execute; the same call repeated with the token runs it) on top of the
36
+ * usual `confirm: true` — reads stay unrestricted. Leave unset to auto-detect from
37
+ * the schema signature (presence of `<prefix>extensions` + `<prefix>assets`);
38
+ * set `true` to force the gate on, or `false` to force it off and skip detection.
39
+ */
40
+ joomla?: boolean;
41
+ /**
42
+ * Joomla table prefix for this connection (e.g. "jos_", "vkw4n_"). Only used when
43
+ * `joomla: true` is set explicitly — it lets the nested-set guard recognize
44
+ * `#__assets`/`#__categories`/`#__menu` without a schema probe. When omitted, the
45
+ * prefix is derived from the detected signature tables.
46
+ */
47
+ joomlaPrefix?: string;
48
+ }
49
+ export interface MySqlConfig {
50
+ connections: Record<string, MySqlConnection>;
51
+ defaultConnection: string;
52
+ }
53
+ /**
54
+ * A learned Joomla verdict for one `host:port/database` target, persisted to the
55
+ * sidecar state file so the server knows the target is Joomla on future connects
56
+ * without re-probing the schema.
57
+ */
58
+ export interface JoomlaMarker {
59
+ joomla: boolean;
60
+ /** Live table prefix (e.g. "jos_", "vkw4n_") when known. */
61
+ prefix: string | null;
62
+ /** ISO timestamp of when the verdict was learned. */
63
+ detectedAt: string;
64
+ }
65
+ /**
66
+ * Sidecar state the MCP manages itself (distinct from the user-authored config).
67
+ * Lives next to the config as `<config>.state.json`. Pure cache: delete it and
68
+ * the server re-detects; an explicit per-connection `joomla` flag overrides it.
69
+ */
70
+ export interface MySqlState {
71
+ markers: Record<string, JoomlaMarker>;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../source/types.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC9B,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sCAAsC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC"}