@withone/mem 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js ADDED
@@ -0,0 +1,656 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mem - Memory for AI agents
4
+ * https://mem.now
5
+ *
6
+ * Usage:
7
+ * mem <command> [args...]
8
+ *
9
+ * Commands:
10
+ * init Interactive setup
11
+ * add <type> '<json>' Add memory
12
+ * get <id> [--with-links] Get by ID
13
+ * list <type> [--filter key=val] List memories
14
+ * update <id> '<json>' Update
15
+ * delete <id> Delete
16
+ * link <from> <relation> <to> Create link
17
+ * unlink <from> <relation> <to> Remove link
18
+ * linked <id> [relation] Get linked
19
+ * search <query> [-t type] [-n N] Hybrid search
20
+ * context [-n N] [-t types] Startup context
21
+ * weight <id> <1-10> Set importance
22
+ * archive <id> Archive
23
+ * unarchive <id> Restore
24
+ * flush <id> Reset access
25
+ * migrate Apply schema
26
+ */
27
+ import { Command } from "commander";
28
+ import * as p from "@clack/prompts";
29
+ import pc from "picocolors";
30
+ import { execSync, spawnSync } from "child_process";
31
+ import { existsSync, writeFileSync, readFileSync, mkdirSync, cpSync } from "fs";
32
+ import { dirname, join } from "path";
33
+ import { fileURLToPath } from "url";
34
+ const __filename = fileURLToPath(import.meta.url);
35
+ const __dirname = dirname(__filename);
36
+ import { add, get, list, update, remove, link, unlink, linked, search, context, archive, unarchive, flush, weight, } from "./client.js";
37
+ import { SCHEMA_VERSION, getMigrationSQL } from "./schema.js";
38
+ const program = new Command();
39
+ program
40
+ .name("mem")
41
+ .description("Memory for AI agents")
42
+ .version(SCHEMA_VERSION);
43
+ // =============================================================================
44
+ // CRUD Commands
45
+ // =============================================================================
46
+ program
47
+ .command("add <type> <json>")
48
+ .description("Add a new memory")
49
+ .action(async (type, jsonStr) => {
50
+ try {
51
+ const data = JSON.parse(jsonStr);
52
+ const tags = data.tags;
53
+ const weightVal = data.weight;
54
+ delete data.tags;
55
+ delete data.weight;
56
+ const result = await add(type, data, { tags, weight: weightVal });
57
+ if (result) {
58
+ const name = data.content?.slice(0, 50) || data.topic || data.title || result.id;
59
+ console.log(`Added ${type}: ${name}`);
60
+ console.log(`ID: ${result.id}`);
61
+ if (weightVal)
62
+ console.log(`Weight: ${weightVal}`);
63
+ }
64
+ else {
65
+ console.error("Failed to add memory");
66
+ process.exit(1);
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.error("Error:", error.message);
71
+ process.exit(1);
72
+ }
73
+ });
74
+ program
75
+ .command("get <id>")
76
+ .description("Get a memory by ID")
77
+ .option("--with-links", "Include linked records")
78
+ .action(async (id, options) => {
79
+ const result = await get(id, options.withLinks);
80
+ if (result) {
81
+ console.log(JSON.stringify(result, null, 2));
82
+ }
83
+ else {
84
+ console.log("Memory not found");
85
+ process.exit(1);
86
+ }
87
+ });
88
+ program
89
+ .command("list <type>")
90
+ .description("List memories by type")
91
+ .option("--filter <key=value>", "Filter by field")
92
+ .option("-n, --limit <number>", "Max results", "100")
93
+ .action(async (type, options) => {
94
+ let filterField;
95
+ let filterValue;
96
+ if (options.filter) {
97
+ const [key, value] = options.filter.split("=");
98
+ filterField = key;
99
+ filterValue = value;
100
+ }
101
+ const results = await list(type, {
102
+ filterField,
103
+ filterValue,
104
+ limit: parseInt(options.limit, 10),
105
+ });
106
+ console.log(JSON.stringify(results, null, 2));
107
+ console.log(`\n${results.length} memories`);
108
+ });
109
+ program
110
+ .command("update <id> <json>")
111
+ .description("Update a memory")
112
+ .action(async (id, jsonStr) => {
113
+ try {
114
+ const data = JSON.parse(jsonStr);
115
+ const tags = data.tags;
116
+ delete data.tags;
117
+ const result = await update(id, data, { tags });
118
+ if (result) {
119
+ console.log(`Updated: ${result.id}`);
120
+ }
121
+ else {
122
+ console.log("Memory not found");
123
+ process.exit(1);
124
+ }
125
+ }
126
+ catch (error) {
127
+ console.error("Error:", error.message);
128
+ process.exit(1);
129
+ }
130
+ });
131
+ program
132
+ .command("delete <id>")
133
+ .description("Delete a memory")
134
+ .action(async (id) => {
135
+ if (await remove(id)) {
136
+ console.log(`Deleted: ${id}`);
137
+ }
138
+ else {
139
+ console.log("Memory not found");
140
+ process.exit(1);
141
+ }
142
+ });
143
+ // =============================================================================
144
+ // Link Commands
145
+ // =============================================================================
146
+ program
147
+ .command("link <from> <relation> <to>")
148
+ .description("Create a link between memories")
149
+ .option("--bi", "Make link bidirectional")
150
+ .action(async (from, relation, to, options) => {
151
+ const result = await link(from, to, relation, {
152
+ bidirectional: options.bi,
153
+ });
154
+ if (result) {
155
+ const arrow = options.bi ? "<--" : "--";
156
+ console.log(`Created link: ${from} ${arrow}${relation}${arrow}> ${to}`);
157
+ }
158
+ else {
159
+ console.error("Failed to create link");
160
+ process.exit(1);
161
+ }
162
+ });
163
+ program
164
+ .command("unlink <from> <relation> <to>")
165
+ .description("Remove a link between memories")
166
+ .action(async (from, relation, to) => {
167
+ if (await unlink(from, to, relation)) {
168
+ console.log(`Removed link: ${from} --${relation}--> ${to}`);
169
+ }
170
+ else {
171
+ console.log("Link not found");
172
+ process.exit(1);
173
+ }
174
+ });
175
+ program
176
+ .command("linked <id> [relation]")
177
+ .description("Get linked memories")
178
+ .option("--dir <direction>", "Direction: outgoing, incoming, or both", "outgoing")
179
+ .action(async (id, relation, options) => {
180
+ const results = await linked(id, { relation, direction: options.dir });
181
+ console.log(JSON.stringify(results, null, 2));
182
+ console.log(`\n${results.length} linked memories`);
183
+ });
184
+ // =============================================================================
185
+ // Search Commands
186
+ // =============================================================================
187
+ program
188
+ .command("search <query>")
189
+ .description("Search memories (hybrid: semantic + keyword)")
190
+ .option("-t, --type <type>", "Filter by type")
191
+ .option("-n, --limit <number>", "Max results", "10")
192
+ .action(async (query, options) => {
193
+ const results = await search(query, {
194
+ type: options.type,
195
+ limit: parseInt(options.limit, 10),
196
+ });
197
+ for (const r of results) {
198
+ const data = r.data;
199
+ const name = data.content?.slice(0, 50) ||
200
+ data.topic ||
201
+ data.title ||
202
+ r.id.slice(0, 8);
203
+ console.log(`[${r.combined_score.toFixed(3)}] ${r.type}: ${name}`);
204
+ const content = data.content ||
205
+ data.notes ||
206
+ data.summary;
207
+ if (content && content.length > 60) {
208
+ console.log(` ${content.slice(0, 100)}...`);
209
+ }
210
+ console.log();
211
+ }
212
+ console.log(`${results.length} results`);
213
+ });
214
+ // =============================================================================
215
+ // Context Commands
216
+ // =============================================================================
217
+ program
218
+ .command("context")
219
+ .description("Get startup context (most relevant memories)")
220
+ .option("-n, --limit <number>", "Max results", "20")
221
+ .option("-t, --types <types>", "Comma-separated types")
222
+ .action(async (options) => {
223
+ const types = options.types
224
+ ? options.types.split(",").map((t) => t.trim())
225
+ : undefined;
226
+ const results = await context({
227
+ limit: parseInt(options.limit, 10),
228
+ types,
229
+ });
230
+ console.log("Startup Context (by relevance):\n");
231
+ for (const r of results) {
232
+ const data = r.data;
233
+ const name = data.content?.slice(0, 50) ||
234
+ data.topic ||
235
+ data.title ||
236
+ r.id.slice(0, 8);
237
+ const score = r.relevance_score.toFixed(3);
238
+ console.log(`[${score}] ${r.type}: ${name}`);
239
+ console.log(` weight=${r.weight}, accesses=${r.access_count}`);
240
+ const content = data.content ||
241
+ data.notes ||
242
+ data.summary;
243
+ if (content && content.length > 60) {
244
+ console.log(` ${content.slice(0, 80)}...`);
245
+ }
246
+ console.log();
247
+ }
248
+ console.log(`${results.length} memories`);
249
+ });
250
+ // =============================================================================
251
+ // Relevance Commands
252
+ // =============================================================================
253
+ program
254
+ .command("weight <id> <value>")
255
+ .description("Set importance weight (1=low, 5=default, 10=high)")
256
+ .action(async (id, value) => {
257
+ const weightVal = parseInt(value, 10);
258
+ if (weightVal < 1 || weightVal > 10) {
259
+ console.error("Weight must be between 1 and 10");
260
+ process.exit(1);
261
+ }
262
+ if (await weight(id, weightVal)) {
263
+ console.log(`Set weight=${weightVal} for ${id}`);
264
+ }
265
+ else {
266
+ console.error("Failed to set weight");
267
+ process.exit(1);
268
+ }
269
+ });
270
+ program
271
+ .command("archive <id...>")
272
+ .description("Archive memories (exclude from context)")
273
+ .action(async (ids) => {
274
+ const count = await archive(ids);
275
+ console.log(`Archived ${count} memories`);
276
+ });
277
+ program
278
+ .command("unarchive <id...>")
279
+ .description("Restore archived memories")
280
+ .action(async (ids) => {
281
+ const count = await unarchive(ids);
282
+ console.log(`Unarchived ${count} memories`);
283
+ });
284
+ program
285
+ .command("flush <id...>")
286
+ .description("Reset access count (let relevance decay)")
287
+ .action(async (ids) => {
288
+ const count = await flush(ids);
289
+ console.log(`Flushed ${count} memories (access count reset)`);
290
+ });
291
+ // =============================================================================
292
+ // Setup Commands
293
+ // =============================================================================
294
+ function hasSupabaseCLI() {
295
+ try {
296
+ execSync("which supabase", { stdio: "ignore" });
297
+ return true;
298
+ }
299
+ catch {
300
+ return false;
301
+ }
302
+ }
303
+ function runSupabaseMigration(sqlFile) {
304
+ try {
305
+ const result = spawnSync("supabase", ["db", "execute", "--file", sqlFile], {
306
+ stdio: "inherit",
307
+ });
308
+ return result.status === 0;
309
+ }
310
+ catch {
311
+ return false;
312
+ }
313
+ }
314
+ function readExistingEnv() {
315
+ const env = {};
316
+ if (existsSync(".env")) {
317
+ const content = readFileSync(".env", "utf8");
318
+ for (const line of content.split("\n")) {
319
+ const match = line.match(/^([^#=]+)=(.*)$/);
320
+ if (match) {
321
+ env[match[1].trim()] = match[2].trim();
322
+ }
323
+ }
324
+ }
325
+ return env;
326
+ }
327
+ program
328
+ .command("init")
329
+ .description("Interactive setup")
330
+ .action(async () => {
331
+ p.intro(pc.bgCyan(pc.black(" mem.now ")));
332
+ const existingEnv = readExistingEnv();
333
+ const hasExistingConfig = Object.keys(existingEnv).length > 0;
334
+ if (hasExistingConfig) {
335
+ const shouldContinue = await p.confirm({
336
+ message: "Found existing .env. Reconfigure?",
337
+ initialValue: false,
338
+ });
339
+ if (p.isCancel(shouldContinue) || !shouldContinue) {
340
+ p.outro("Keeping existing configuration.");
341
+ return;
342
+ }
343
+ }
344
+ // Step 1: Supabase URL
345
+ p.note(`Find at: ${pc.cyan("supabase.com/dashboard/project/<ref>/settings/api")}\n` +
346
+ `Format: ${pc.dim("https://xxxxx.supabase.co")}`, "Supabase Project URL");
347
+ const supabaseUrl = await p.text({
348
+ message: "Supabase URL:",
349
+ placeholder: "https://xxxxx.supabase.co",
350
+ initialValue: existingEnv.SUPABASE_URL || "",
351
+ validate: (value) => {
352
+ if (!value)
353
+ return "Supabase URL is required";
354
+ if (!value.startsWith("https://") || !value.includes("supabase.co")) {
355
+ return "URL should be https://xxxxx.supabase.co";
356
+ }
357
+ return undefined;
358
+ },
359
+ });
360
+ if (p.isCancel(supabaseUrl)) {
361
+ p.cancel("Setup cancelled.");
362
+ process.exit(0);
363
+ }
364
+ // Step 2: Service Key
365
+ p.note(`Find at: ${pc.cyan("Project Settings > API > service_role (secret)")}\n` +
366
+ `${pc.dim("Use the service_role key, not the anon key")}`, "Service Role Key");
367
+ const serviceKey = await p.text({
368
+ message: "Service Key:",
369
+ placeholder: "your-service-role-key",
370
+ initialValue: existingEnv.SUPABASE_SERVICE_KEY || "",
371
+ validate: (value) => {
372
+ if (!value)
373
+ return "Service key is required";
374
+ if (value.length < 20)
375
+ return "Service key seems too short";
376
+ return undefined;
377
+ },
378
+ });
379
+ if (p.isCancel(serviceKey)) {
380
+ p.cancel("Setup cancelled.");
381
+ process.exit(0);
382
+ }
383
+ // Step 3: OpenAI Key (optional)
384
+ p.note(`Find at: ${pc.cyan("platform.openai.com/api-keys")}\n` +
385
+ `${pc.dim("Optional - enables semantic search. Press enter to skip.")}`, "OpenAI API Key");
386
+ const openaiKey = await p.text({
387
+ message: "OpenAI Key (optional):",
388
+ placeholder: "sk-... (press enter to skip)",
389
+ initialValue: existingEnv.OPENAI_API_KEY || "",
390
+ });
391
+ if (p.isCancel(openaiKey)) {
392
+ p.cancel("Setup cancelled.");
393
+ process.exit(0);
394
+ }
395
+ // Write .env
396
+ let envContent = `# Mem Configuration (mem.now)\n`;
397
+ envContent += `SUPABASE_URL=${supabaseUrl}\n`;
398
+ envContent += `SUPABASE_SERVICE_KEY=${serviceKey}\n`;
399
+ if (openaiKey) {
400
+ envContent += `OPENAI_API_KEY=${openaiKey}\n`;
401
+ }
402
+ writeFileSync(".env", envContent);
403
+ p.log.success("Saved .env");
404
+ // Write migration SQL
405
+ const migrationSql = getMigrationSQL();
406
+ writeFileSync("mem-migration.sql", migrationSql);
407
+ p.log.success("Saved mem-migration.sql");
408
+ // Step 4: Run migration
409
+ const hasCliTool = hasSupabaseCLI();
410
+ if (hasCliTool) {
411
+ const runMigration = await p.confirm({
412
+ message: "Supabase CLI detected. Run migration now?",
413
+ initialValue: true,
414
+ });
415
+ if (!p.isCancel(runMigration) && runMigration) {
416
+ p.note(`Make sure you've linked your project:\n` +
417
+ ` ${pc.cyan("supabase link --project-ref <ref>")}`, "Migration");
418
+ const proceed = await p.confirm({
419
+ message: "Proceed with migration?",
420
+ initialValue: true,
421
+ });
422
+ if (!p.isCancel(proceed) && proceed) {
423
+ const spinner = p.spinner();
424
+ spinner.start("Running migration...");
425
+ const success = runSupabaseMigration("mem-migration.sql");
426
+ if (success) {
427
+ spinner.stop("Migration complete!");
428
+ }
429
+ else {
430
+ spinner.stop("Migration failed");
431
+ p.log.warn("Run manually: supabase db execute --file mem-migration.sql");
432
+ }
433
+ }
434
+ }
435
+ }
436
+ else {
437
+ p.note(`Option A: ${pc.cyan("Supabase CLI")}\n` +
438
+ ` brew install supabase/tap/supabase\n` +
439
+ ` supabase link --project-ref <ref>\n` +
440
+ ` supabase db execute --file mem-migration.sql\n\n` +
441
+ `Option B: ${pc.cyan("SQL Editor")}\n` +
442
+ ` 1. Open supabase.com/dashboard/project/<ref>/sql\n` +
443
+ ` 2. Paste contents of mem-migration.sql\n` +
444
+ ` 3. Click Run`, "Apply Schema");
445
+ }
446
+ // Step 5: CLAUDE.md
447
+ const hasClaudeMd = existsSync("CLAUDE.md");
448
+ const claudeMdAction = hasClaudeMd ? "Append to" : "Create";
449
+ const createClaudeMd = await p.confirm({
450
+ message: `${claudeMdAction} CLAUDE.md with Mem instructions?`,
451
+ initialValue: true,
452
+ });
453
+ if (!p.isCancel(createClaudeMd) && createClaudeMd) {
454
+ const claudeContent = getClaudeMdContent();
455
+ if (hasClaudeMd) {
456
+ const existing = readFileSync("CLAUDE.md", "utf8");
457
+ writeFileSync("CLAUDE.md", existing + "\n\n" + claudeContent);
458
+ p.log.success("Appended to CLAUDE.md");
459
+ }
460
+ else {
461
+ writeFileSync("CLAUDE.md", claudeContent);
462
+ p.log.success("Created CLAUDE.md");
463
+ }
464
+ }
465
+ // Step 6: Install skills
466
+ const installSkillsChoice = await p.select({
467
+ message: "Install Claude Code skills?",
468
+ options: [
469
+ {
470
+ value: "project",
471
+ label: "Project (.claude/skills/mem/)",
472
+ hint: "Only available in this project",
473
+ },
474
+ {
475
+ value: "global",
476
+ label: "Global (~/.claude/skills/mem/)",
477
+ hint: "Available in all projects",
478
+ },
479
+ {
480
+ value: "skip",
481
+ label: "Skip",
482
+ hint: "Don't install skills",
483
+ },
484
+ ],
485
+ });
486
+ if (!p.isCancel(installSkillsChoice) && installSkillsChoice !== "skip") {
487
+ const memRoot = join(__dirname, "..");
488
+ const { success, path } = installSkills(memRoot, installSkillsChoice);
489
+ if (success) {
490
+ p.log.success(`Installed skills to ${path}`);
491
+ }
492
+ else {
493
+ p.log.warn("Failed to install skills");
494
+ p.log.info("Manual: cp -r node_modules/@anthropic/mem/skills .claude/skills/mem");
495
+ }
496
+ }
497
+ // Done
498
+ p.note(`${pc.cyan("mem add note")} '{"content": "Hello!"}'\n` +
499
+ `${pc.cyan("mem search")} "hello"\n` +
500
+ `${pc.cyan("mem context")}`, "Test Commands");
501
+ p.outro("Setup complete!");
502
+ });
503
+ function showManualInstructions() {
504
+ p.note(`Option A: ${pc.cyan("Supabase CLI")}\n` +
505
+ ` brew install supabase/tap/supabase\n` +
506
+ ` supabase link --project-ref <ref>\n` +
507
+ ` supabase db execute --file mem-migration.sql\n\n` +
508
+ `Option B: ${pc.cyan("SQL Editor")}\n` +
509
+ ` 1. Open supabase.com/dashboard/project/<ref>/sql\n` +
510
+ ` 2. Paste contents of mem-migration.sql\n` +
511
+ ` 3. Click Run`, "Apply Schema");
512
+ }
513
+ function getClaudeMdContent() {
514
+ return `# Project Memory
515
+
516
+ This project uses [Mem](https://mem.now) for persistent AI memory.
517
+
518
+ ## Session Startup
519
+
520
+ Run at the start of each session to load relevant context:
521
+
522
+ \`\`\`bash
523
+ mem context
524
+ \`\`\`
525
+
526
+ ## Quick Commands
527
+
528
+ \`\`\`bash
529
+ # Add memories
530
+ mem add note '{"content": "..."}'
531
+ mem add decision '{"topic": "...", "content": "...", "weight": 9}'
532
+ mem add preference '{"content": "...", "weight": 8}'
533
+
534
+ # Search
535
+ mem search "query"
536
+ mem search "query" -t decision
537
+
538
+ # Get context
539
+ mem context
540
+ mem context -n 10 -t decision,preference
541
+
542
+ # Manage relevance
543
+ mem weight <id> 9 # Set importance (1-10)
544
+ mem archive <id> # Exclude from context
545
+ mem unarchive <id> # Restore
546
+
547
+ # Links
548
+ mem link <id1> related_to <id2> --bi # Bidirectional
549
+ mem link <id1> supersedes <id2> # Directional
550
+ \`\`\`
551
+
552
+ ## When to Remember
553
+
554
+ **Save to memory when:**
555
+ - User says "remember this", "note that", "save this"
556
+ - A decision is made with its rationale
557
+ - A preference is expressed ("I prefer X over Y")
558
+ - Important context is shared about people/projects
559
+ - A lesson is learned or mistake identified
560
+
561
+ ## Memory Types
562
+
563
+ | Type | Use Case | Typical Weight |
564
+ |------|----------|----------------|
565
+ | \`note\` | General information | 5 |
566
+ | \`decision\` | Choices with rationale | 7-9 |
567
+ | \`preference\` | How user likes things | 8-10 |
568
+ | \`insight\` | Learnings, realizations | 6-8 |
569
+ | \`context\` | Background info | 5-7 |
570
+
571
+ ## Auto-Remember Triggers
572
+
573
+ Proactively save when you notice:
574
+ - **Preferences**: "I like X", "I prefer Y", "Don't do Z"
575
+ - **Decisions**: "Let's go with A", "We decided B"
576
+ - **Learnings**: "This worked because...", "Next time..."
577
+ - **Corrections**: "Actually, it's X not Y"
578
+
579
+ When auto-remembering, briefly note: "I'll remember that you prefer X."
580
+
581
+ ## Proactive Search
582
+
583
+ Before saying "I don't have information about X", search memory:
584
+
585
+ \`\`\`bash
586
+ mem search "X"
587
+ \`\`\`
588
+
589
+ Report findings or note that nothing was found.
590
+
591
+ ## Relevance Scoring
592
+
593
+ Score = weight (40%) + access frequency (30%) + recency (30%)
594
+
595
+ - High-weight items always surface
596
+ - Frequently accessed items rise naturally
597
+ - Unused items fade over ~30 days
598
+ - Archive when done to exclude from context
599
+ `;
600
+ }
601
+ function installSkills(memRoot, scope) {
602
+ const skillsSource = join(memRoot, "skills");
603
+ const skillsTarget = scope === "global"
604
+ ? join(process.env.HOME || "~", ".claude", "skills", "mem")
605
+ : join(process.cwd(), ".claude", "skills", "mem");
606
+ if (!existsSync(skillsSource)) {
607
+ return { success: false, path: skillsTarget };
608
+ }
609
+ try {
610
+ // Create target directory
611
+ mkdirSync(skillsTarget, { recursive: true });
612
+ // Copy skills
613
+ cpSync(skillsSource, skillsTarget, { recursive: true });
614
+ return { success: true, path: skillsTarget };
615
+ }
616
+ catch {
617
+ return { success: false, path: skillsTarget };
618
+ }
619
+ }
620
+ program
621
+ .command("migrate")
622
+ .description("Apply database schema to Supabase")
623
+ .option("--dry-run", "Print SQL without executing")
624
+ .action(async (options) => {
625
+ if (options.dryRun) {
626
+ console.log(getMigrationSQL());
627
+ return;
628
+ }
629
+ const migrationSql = getMigrationSQL();
630
+ writeFileSync("mem-migration.sql", migrationSql);
631
+ p.log.success("Saved mem-migration.sql");
632
+ if (hasSupabaseCLI()) {
633
+ const spinner = p.spinner();
634
+ spinner.start("Running migration via Supabase CLI...");
635
+ const success = runSupabaseMigration("mem-migration.sql");
636
+ if (success) {
637
+ spinner.stop("Migration complete!");
638
+ p.note(`${pc.cyan("mem add note")} '{"content": "Test memory"}'\n` +
639
+ `${pc.cyan("mem search")} "test"\n` +
640
+ `${pc.cyan("mem context")}`, "Try it out");
641
+ }
642
+ else {
643
+ spinner.stop("Migration failed");
644
+ showManualInstructions();
645
+ }
646
+ }
647
+ else {
648
+ p.log.warn("Supabase CLI not found");
649
+ showManualInstructions();
650
+ }
651
+ });
652
+ // =============================================================================
653
+ // Run
654
+ // =============================================================================
655
+ program.parse();
656
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}