@steno-ai/mcp 0.1.5 → 0.1.6
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/dist/init.d.ts +3 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +121 -105
- package/dist/init.js.map +1 -0
- package/package.json +7 -2
package/dist/init.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":""}
|
package/dist/init.js
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
/**
|
|
3
|
+
* steno-mcp init — interactive setup wizard
|
|
4
|
+
*
|
|
5
|
+
* 1. Asks for Supabase + OpenAI keys
|
|
6
|
+
* 2. Runs all migrations automatically
|
|
7
|
+
* 3. Writes Claude Desktop config
|
|
8
|
+
* 4. Tests the connection
|
|
9
|
+
*/
|
|
10
|
+
import { createClient } from '@supabase/supabase-js';
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import * as os from 'os';
|
|
14
|
+
import * as readline from 'readline';
|
|
15
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
const ask = (q) => new Promise(r => rl.question(q, r));
|
|
17
|
+
// All migrations in order
|
|
18
|
+
const MIGRATIONS = [
|
|
19
|
+
`CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`,
|
|
20
|
+
`CREATE EXTENSION IF NOT EXISTS "vector";`,
|
|
21
|
+
`CREATE EXTENSION IF NOT EXISTS "pg_trgm";`,
|
|
22
|
+
// Tenants
|
|
23
|
+
`CREATE TABLE IF NOT EXISTS tenants (
|
|
18
24
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
19
25
|
name TEXT NOT NULL,
|
|
20
26
|
slug TEXT NOT NULL UNIQUE,
|
|
@@ -28,8 +34,8 @@ var MIGRATIONS = [
|
|
|
28
34
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
29
35
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
30
36
|
);`,
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
// API Keys
|
|
38
|
+
`CREATE TABLE IF NOT EXISTS api_keys (
|
|
33
39
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
34
40
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
35
41
|
key_hash TEXT NOT NULL,
|
|
@@ -41,8 +47,8 @@ var MIGRATIONS = [
|
|
|
41
47
|
active BOOLEAN NOT NULL DEFAULT true,
|
|
42
48
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
43
49
|
);`,
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
// Sessions
|
|
51
|
+
`CREATE TABLE IF NOT EXISTS sessions (
|
|
46
52
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
47
53
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
48
54
|
scope TEXT NOT NULL,
|
|
@@ -56,8 +62,8 @@ var MIGRATIONS = [
|
|
|
56
62
|
metadata JSONB NOT NULL DEFAULT '{}',
|
|
57
63
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
58
64
|
);`,
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
// Extractions
|
|
66
|
+
`CREATE TABLE IF NOT EXISTS extractions (
|
|
61
67
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
62
68
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
63
69
|
status TEXT NOT NULL DEFAULT 'queued',
|
|
@@ -84,8 +90,8 @@ var MIGRATIONS = [
|
|
|
84
90
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
85
91
|
completed_at TIMESTAMPTZ
|
|
86
92
|
);`,
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
// Facts
|
|
94
|
+
`CREATE TABLE IF NOT EXISTS facts (
|
|
89
95
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
90
96
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
91
97
|
scope TEXT NOT NULL CHECK (scope IN ('user','agent','session','hive')),
|
|
@@ -122,15 +128,15 @@ var MIGRATIONS = [
|
|
|
122
128
|
source_chunk TEXT,
|
|
123
129
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
124
130
|
);`,
|
|
125
|
-
|
|
126
|
-
|
|
131
|
+
// Fact indexes
|
|
132
|
+
`CREATE INDEX IF NOT EXISTS idx_facts_tenant_scope ON facts(tenant_id, scope, scope_id);
|
|
127
133
|
CREATE INDEX IF NOT EXISTS idx_facts_lineage ON facts(tenant_id, lineage_id);
|
|
128
134
|
CREATE INDEX IF NOT EXISTS idx_facts_search_vector ON facts USING GIN(search_vector);
|
|
129
135
|
CREATE INDEX IF NOT EXISTS idx_facts_event_date ON facts(event_date) WHERE event_date IS NOT NULL;`,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
// HNSW vector index
|
|
137
|
+
`CREATE INDEX IF NOT EXISTS idx_facts_embedding_hnsw ON facts USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`,
|
|
138
|
+
// Entities
|
|
139
|
+
`CREATE TABLE IF NOT EXISTS entities (
|
|
134
140
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
135
141
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
136
142
|
name TEXT NOT NULL,
|
|
@@ -145,16 +151,16 @@ var MIGRATIONS = [
|
|
|
145
151
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
146
152
|
);
|
|
147
153
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_entities_canonical ON entities(tenant_id, canonical_name, entity_type);`,
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
// Fact-Entity junction
|
|
155
|
+
`CREATE TABLE IF NOT EXISTS fact_entities (
|
|
150
156
|
fact_id UUID NOT NULL REFERENCES facts(id) ON DELETE CASCADE,
|
|
151
157
|
entity_id UUID NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
|
|
152
158
|
role TEXT NOT NULL DEFAULT 'mentioned',
|
|
153
159
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
154
160
|
PRIMARY KEY (fact_id, entity_id)
|
|
155
161
|
);`,
|
|
156
|
-
|
|
157
|
-
|
|
162
|
+
// Edges
|
|
163
|
+
`CREATE TABLE IF NOT EXISTS edges (
|
|
158
164
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
159
165
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
160
166
|
source_id UUID NOT NULL REFERENCES entities(id),
|
|
@@ -171,8 +177,8 @@ var MIGRATIONS = [
|
|
|
171
177
|
);
|
|
172
178
|
CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(tenant_id, source_id);
|
|
173
179
|
CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(tenant_id, target_id);`,
|
|
174
|
-
|
|
175
|
-
|
|
180
|
+
// Triggers
|
|
181
|
+
`CREATE TABLE IF NOT EXISTS triggers (
|
|
176
182
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
177
183
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
178
184
|
scope TEXT NOT NULL,
|
|
@@ -187,8 +193,8 @@ var MIGRATIONS = [
|
|
|
187
193
|
last_fired_at TIMESTAMPTZ,
|
|
188
194
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
189
195
|
);`,
|
|
190
|
-
|
|
191
|
-
|
|
196
|
+
// Memory accesses
|
|
197
|
+
`CREATE TABLE IF NOT EXISTS memory_accesses (
|
|
192
198
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
193
199
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
194
200
|
fact_id UUID NOT NULL REFERENCES facts(id),
|
|
@@ -203,8 +209,8 @@ var MIGRATIONS = [
|
|
|
203
209
|
trigger_id UUID,
|
|
204
210
|
accessed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
205
211
|
);`,
|
|
206
|
-
|
|
207
|
-
|
|
212
|
+
// Usage records
|
|
213
|
+
`CREATE TABLE IF NOT EXISTS usage_records (
|
|
208
214
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
209
215
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
210
216
|
period_start TIMESTAMPTZ NOT NULL,
|
|
@@ -216,8 +222,8 @@ var MIGRATIONS = [
|
|
|
216
222
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
217
223
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
218
224
|
);`,
|
|
219
|
-
|
|
220
|
-
|
|
225
|
+
// Webhooks
|
|
226
|
+
`CREATE TABLE IF NOT EXISTS webhooks (
|
|
221
227
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
222
228
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
223
229
|
url TEXT NOT NULL,
|
|
@@ -227,8 +233,8 @@ var MIGRATIONS = [
|
|
|
227
233
|
active BOOLEAN NOT NULL DEFAULT true,
|
|
228
234
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
229
235
|
);`,
|
|
230
|
-
|
|
231
|
-
|
|
236
|
+
// Compound search RPC
|
|
237
|
+
`CREATE OR REPLACE FUNCTION steno_search(
|
|
232
238
|
query_embedding TEXT, search_query TEXT, match_tenant_id UUID,
|
|
233
239
|
match_scope TEXT, match_scope_id TEXT, match_count INT DEFAULT 20, min_similarity FLOAT DEFAULT 0.0
|
|
234
240
|
) RETURNS TABLE (
|
|
@@ -270,79 +276,89 @@ var MIGRATIONS = [
|
|
|
270
276
|
AND f.search_vector @@ plainto_tsquery('english', search_query)
|
|
271
277
|
ORDER BY ts_rank(f.search_vector, plainto_tsquery('english', search_query)) DESC LIMIT match_count);
|
|
272
278
|
END; $$;`,
|
|
273
|
-
|
|
274
|
-
|
|
279
|
+
// Default tenant
|
|
280
|
+
`INSERT INTO tenants (id, name, slug, plan) VALUES ('00000000-0000-0000-0000-000000000001', 'Default', 'default', 'enterprise') ON CONFLICT DO NOTHING;`,
|
|
275
281
|
];
|
|
276
282
|
async function main() {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
283
|
+
console.log('\n 🧠 Steno Memory — Setup Wizard\n');
|
|
284
|
+
// 1. Get keys
|
|
285
|
+
const supabaseUrl = await ask(' Supabase URL: ');
|
|
286
|
+
const supabaseKey = await ask(' Supabase Service Role Key: ');
|
|
287
|
+
const openaiKey = await ask(' OpenAI API Key: ');
|
|
288
|
+
const perplexityKey = await ask(' Perplexity API Key (optional, press Enter to skip): ');
|
|
289
|
+
if (!supabaseUrl || !supabaseKey || !openaiKey) {
|
|
290
|
+
console.error('\n ❌ Supabase URL, Service Role Key, and OpenAI Key are required.\n');
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
// 2. Run migrations
|
|
294
|
+
console.log('\n Running database migrations...');
|
|
295
|
+
const supabase = createClient(supabaseUrl, supabaseKey);
|
|
296
|
+
let success = 0;
|
|
297
|
+
let skipped = 0;
|
|
298
|
+
for (let i = 0; i < MIGRATIONS.length; i++) {
|
|
299
|
+
try {
|
|
300
|
+
const { error } = await supabase.rpc('exec_sql', { query: MIGRATIONS[i] }).catch(() => ({ error: { message: 'rpc not available' } }));
|
|
301
|
+
if (error) {
|
|
302
|
+
// Try direct REST approach
|
|
303
|
+
const res = await fetch(`${supabaseUrl}/rest/v1/rpc/exec_sql`, {
|
|
304
|
+
method: 'POST',
|
|
305
|
+
headers: { 'apikey': supabaseKey, 'Authorization': `Bearer ${supabaseKey}`, 'Content-Type': 'application/json' },
|
|
306
|
+
body: JSON.stringify({ query: MIGRATIONS[i] }),
|
|
307
|
+
});
|
|
308
|
+
if (res.ok) {
|
|
309
|
+
success++;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
skipped++;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
success++;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
skipped++;
|
|
303
321
|
}
|
|
304
|
-
} else {
|
|
305
|
-
success++;
|
|
306
|
-
}
|
|
307
|
-
} catch {
|
|
308
|
-
skipped++;
|
|
309
322
|
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
} catch {
|
|
318
|
-
}
|
|
319
|
-
if (!config.mcpServers) config.mcpServers = {};
|
|
320
|
-
config.mcpServers["steno-memory"] = {
|
|
321
|
-
command: "npx",
|
|
322
|
-
args: ["-y", "@steno-ai/mcp"],
|
|
323
|
-
env: {
|
|
324
|
-
SUPABASE_URL: supabaseUrl,
|
|
325
|
-
SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
|
|
326
|
-
OPENAI_API_KEY: openaiKey,
|
|
327
|
-
...perplexityKey ? { PERPLEXITY_API_KEY: perplexityKey } : {}
|
|
323
|
+
console.log(` ✓ ${success} migrations applied, ${skipped} skipped (may already exist)`);
|
|
324
|
+
// 3. Write Claude Desktop config
|
|
325
|
+
const configDir = path.join(os.homedir(), 'Library', 'Application Support', 'Claude');
|
|
326
|
+
const configPath = path.join(configDir, 'claude_desktop_config.json');
|
|
327
|
+
let config = {};
|
|
328
|
+
try {
|
|
329
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
328
330
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
331
|
+
catch { /* new config */ }
|
|
332
|
+
if (!config.mcpServers)
|
|
333
|
+
config.mcpServers = {};
|
|
334
|
+
config.mcpServers['steno-memory'] = {
|
|
335
|
+
command: 'npx',
|
|
336
|
+
args: ['-y', '@steno-ai/mcp'],
|
|
337
|
+
env: {
|
|
338
|
+
SUPABASE_URL: supabaseUrl,
|
|
339
|
+
SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
|
|
340
|
+
OPENAI_API_KEY: openaiKey,
|
|
341
|
+
...(perplexityKey ? { PERPLEXITY_API_KEY: perplexityKey } : {}),
|
|
342
|
+
},
|
|
343
|
+
};
|
|
344
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
345
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
346
|
+
console.log(` ✓ Claude Desktop config written to ${configPath}`);
|
|
347
|
+
// 4. Done
|
|
348
|
+
console.log(`
|
|
349
|
+
✅ Setup complete!
|
|
335
350
|
|
|
336
351
|
Next steps:
|
|
337
352
|
1. Restart Claude Desktop (Cmd+Q, reopen)
|
|
338
353
|
2. Go to Settings > General > set "Tools already loaded"
|
|
339
|
-
3. Start chatting
|
|
354
|
+
3. Start chatting — Claude will remember everything
|
|
340
355
|
|
|
341
356
|
Your data stays in YOUR Supabase. Nothing is shared.
|
|
342
357
|
`);
|
|
343
|
-
|
|
358
|
+
rl.close();
|
|
344
359
|
}
|
|
345
360
|
main().catch((err) => {
|
|
346
|
-
|
|
347
|
-
|
|
361
|
+
console.error('Setup failed:', err.message);
|
|
362
|
+
process.exit(1);
|
|
348
363
|
});
|
|
364
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACtF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAmB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhF,0BAA0B;AAC1B,MAAM,UAAU,GAAG;IACjB,6CAA6C;IAC7C,0CAA0C;IAC1C,2CAA2C;IAC3C,UAAU;IACV;;;;;;;;;;;;;KAaG;IACH,WAAW;IACX;;;;;;;;;;;KAWG;IACH,WAAW;IACX;;;;;;;;;;;;;KAaG;IACH,cAAc;IACd;;;;;;;;;;;;;;;;;;;;;;;;;;KA0BG;IACH,QAAQ;IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCG;IACH,eAAe;IACf;;;sGAGoG;IACpG,oBAAoB;IACpB,4IAA4I;IAC5I,WAAW;IACX;;;;;;;;;;;;;;gHAc8G;IAC9G,uBAAuB;IACvB;;;;;;KAMG;IACH,QAAQ;IACR;;;;;;;;;;;;;;;;8EAgB4E;IAC5E,WAAW;IACX;;;;;;;;;;;;;;KAcG;IACH,kBAAkB;IAClB;;;;;;;;;;;;;;KAcG;IACH,gBAAgB;IAChB;;;;;;;;;;;KAWG;IACH,WAAW;IACX;;;;;;;;;KASG;IACH,sBAAsB;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAyCS;IACT,iBAAiB;IACjB,wJAAwJ;CACzJ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,cAAc;IACd,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAE1F,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAExD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;YACtI,IAAI,KAAK,EAAE,CAAC;gBACV,2BAA2B;gBAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,uBAAuB,EAAE;oBAC7D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,WAAW,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAChH,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBAAC,OAAO,EAAE,CAAC;gBAAC,CAAC;qBAAM,CAAC;oBAAC,OAAO,EAAE,CAAC;gBAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,wBAAwB,OAAO,8BAA8B,CAAC,CAAC;IAEzF,iCAAiC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IAEtE,IAAI,MAAM,GAAQ,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IAC/C,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC;QAC7B,GAAG,EAAE;YACH,YAAY,EAAE,WAAW;YACzB,yBAAyB,EAAE,WAAW;YACtC,cAAc,EAAE,SAAS;YACzB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE;KACF,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;IAElE,UAAU;IACV,OAAO,CAAC,GAAG,CAAC;;;;;;;;;GASX,CAAC,CAAC;IAEH,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steno-ai/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "MCP server for Claude Code, Claude Desktop, and other MCP clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"bin": {
|
|
13
|
+
"mcp": "./dist/cli.js",
|
|
13
14
|
"steno-mcp": "./dist/cli.js",
|
|
14
15
|
"steno-mcp-init": "./dist/init.js"
|
|
15
16
|
},
|
|
@@ -21,7 +22,11 @@
|
|
|
21
22
|
}
|
|
22
23
|
},
|
|
23
24
|
"types": "./dist/index.d.ts",
|
|
24
|
-
"files": [
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"src",
|
|
28
|
+
"README.md"
|
|
29
|
+
],
|
|
25
30
|
"scripts": {
|
|
26
31
|
"test": "vitest run",
|
|
27
32
|
"build": "tsc",
|