@cortexmemory/cli 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.
Files changed (75) hide show
  1. package/README.md +325 -0
  2. package/dist/commands/conversations.d.ts +16 -0
  3. package/dist/commands/conversations.d.ts.map +1 -0
  4. package/dist/commands/conversations.js +421 -0
  5. package/dist/commands/conversations.js.map +1 -0
  6. package/dist/commands/convex.d.ts +17 -0
  7. package/dist/commands/convex.d.ts.map +1 -0
  8. package/dist/commands/convex.js +442 -0
  9. package/dist/commands/convex.js.map +1 -0
  10. package/dist/commands/db.d.ts +16 -0
  11. package/dist/commands/db.d.ts.map +1 -0
  12. package/dist/commands/db.js +371 -0
  13. package/dist/commands/db.js.map +1 -0
  14. package/dist/commands/dev.d.ts +16 -0
  15. package/dist/commands/dev.d.ts.map +1 -0
  16. package/dist/commands/dev.js +558 -0
  17. package/dist/commands/dev.js.map +1 -0
  18. package/dist/commands/facts.d.ts +17 -0
  19. package/dist/commands/facts.d.ts.map +1 -0
  20. package/dist/commands/facts.js +386 -0
  21. package/dist/commands/facts.js.map +1 -0
  22. package/dist/commands/memory.d.ts +18 -0
  23. package/dist/commands/memory.d.ts.map +1 -0
  24. package/dist/commands/memory.js +486 -0
  25. package/dist/commands/memory.js.map +1 -0
  26. package/dist/commands/setup.d.ts +14 -0
  27. package/dist/commands/setup.d.ts.map +1 -0
  28. package/dist/commands/setup.js +494 -0
  29. package/dist/commands/setup.js.map +1 -0
  30. package/dist/commands/spaces.d.ts +18 -0
  31. package/dist/commands/spaces.d.ts.map +1 -0
  32. package/dist/commands/spaces.js +553 -0
  33. package/dist/commands/spaces.js.map +1 -0
  34. package/dist/commands/users.d.ts +18 -0
  35. package/dist/commands/users.d.ts.map +1 -0
  36. package/dist/commands/users.js +486 -0
  37. package/dist/commands/users.js.map +1 -0
  38. package/dist/index.d.ts +9 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +70 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types.d.ts +144 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +5 -0
  45. package/dist/types.js.map +1 -0
  46. package/dist/utils/__tests__/config.test.d.ts +5 -0
  47. package/dist/utils/__tests__/config.test.d.ts.map +1 -0
  48. package/dist/utils/__tests__/config.test.js +127 -0
  49. package/dist/utils/__tests__/config.test.js.map +1 -0
  50. package/dist/utils/__tests__/formatting.test.d.ts +5 -0
  51. package/dist/utils/__tests__/formatting.test.d.ts.map +1 -0
  52. package/dist/utils/__tests__/formatting.test.js +132 -0
  53. package/dist/utils/__tests__/formatting.test.js.map +1 -0
  54. package/dist/utils/__tests__/validation.test.d.ts +5 -0
  55. package/dist/utils/__tests__/validation.test.d.ts.map +1 -0
  56. package/dist/utils/__tests__/validation.test.js +207 -0
  57. package/dist/utils/__tests__/validation.test.js.map +1 -0
  58. package/dist/utils/client.d.ts +42 -0
  59. package/dist/utils/client.d.ts.map +1 -0
  60. package/dist/utils/client.js +108 -0
  61. package/dist/utils/client.js.map +1 -0
  62. package/dist/utils/config.d.ts +67 -0
  63. package/dist/utils/config.d.ts.map +1 -0
  64. package/dist/utils/config.js +261 -0
  65. package/dist/utils/config.js.map +1 -0
  66. package/dist/utils/formatting.d.ts +81 -0
  67. package/dist/utils/formatting.d.ts.map +1 -0
  68. package/dist/utils/formatting.js +239 -0
  69. package/dist/utils/formatting.js.map +1 -0
  70. package/dist/utils/validation.d.ts +83 -0
  71. package/dist/utils/validation.d.ts.map +1 -0
  72. package/dist/utils/validation.js +243 -0
  73. package/dist/utils/validation.js.map +1 -0
  74. package/package.json +72 -0
  75. package/templates/.cortexrc.template +15 -0
@@ -0,0 +1,553 @@
1
+ /**
2
+ * Memory Space Commands
3
+ *
4
+ * Commands for managing memory spaces:
5
+ * - list: List memory spaces
6
+ * - create: Create a new memory space
7
+ * - delete: Delete a memory space
8
+ * - archive: Archive a memory space
9
+ * - stats: Get memory space statistics
10
+ * - participants: Manage participants
11
+ */
12
+ import ora from "ora";
13
+ import { withClient } from "../utils/client.js";
14
+ import { resolveConfig } from "../utils/config.js";
15
+ import { formatOutput, printSuccess, printError, printWarning, printSection, formatCount, formatTimestamp, formatRelativeTime, } from "../utils/formatting.js";
16
+ import { validateMemorySpaceId, validateMemorySpaceType, validateMemorySpaceStatus, validateLimit, requireConfirmation, requireExactConfirmation, } from "../utils/validation.js";
17
+ /**
18
+ * Register memory space commands
19
+ */
20
+ export function registerSpaceCommands(program, config) {
21
+ const spaces = program.command("spaces").description("Manage memory spaces");
22
+ // spaces list
23
+ spaces
24
+ .command("list")
25
+ .description("List all memory spaces")
26
+ .option("-t, --type <type>", "Filter by type: personal, team, project, custom")
27
+ .option("-s, --status <status>", "Filter by status: active, archived")
28
+ .option("-l, --limit <number>", "Maximum number of results", "100")
29
+ .option("-f, --format <format>", "Output format: table, json, csv")
30
+ .action(async (options) => {
31
+ const globalOpts = program.opts();
32
+ const resolved = resolveConfig(config, globalOpts);
33
+ const format = (options.format ?? resolved.format);
34
+ const spinner = ora("Loading memory spaces...").start();
35
+ try {
36
+ const filterType = options.type
37
+ ? validateMemorySpaceType(options.type)
38
+ : undefined;
39
+ const filterStatus = options.status
40
+ ? validateMemorySpaceStatus(options.status)
41
+ : undefined;
42
+ const limit = validateLimit(parseInt(options.limit, 10));
43
+ await withClient(config, globalOpts, async (client) => {
44
+ const spacesList = await client.memorySpaces.list({
45
+ type: filterType,
46
+ status: filterStatus,
47
+ limit,
48
+ });
49
+ spinner.stop();
50
+ if (spacesList.length === 0) {
51
+ printWarning("No memory spaces found");
52
+ return;
53
+ }
54
+ // Format spaces for display
55
+ const displayData = spacesList.map((s) => ({
56
+ id: s.memorySpaceId,
57
+ name: s.name ?? "-",
58
+ type: s.type,
59
+ status: s.status,
60
+ participants: s.participants?.length ?? 0,
61
+ created: formatRelativeTime(s.createdAt),
62
+ }));
63
+ console.log(formatOutput(displayData, format, {
64
+ title: "Memory Spaces",
65
+ headers: [
66
+ "id",
67
+ "name",
68
+ "type",
69
+ "status",
70
+ "participants",
71
+ "created",
72
+ ],
73
+ }));
74
+ printSuccess(`Found ${formatCount(spacesList.length, "memory space")}`);
75
+ });
76
+ }
77
+ catch (error) {
78
+ spinner.stop();
79
+ printError(error instanceof Error ? error.message : "Failed to list spaces");
80
+ process.exit(1);
81
+ }
82
+ });
83
+ // spaces create
84
+ spaces
85
+ .command("create <spaceId>")
86
+ .description("Create a new memory space")
87
+ .requiredOption("-t, --type <type>", "Space type: personal, team, project, custom")
88
+ .option("-n, --name <name>", "Human-readable name")
89
+ .option("-m, --metadata <json>", "JSON metadata", "{}")
90
+ .action(async (spaceId, options) => {
91
+ const globalOpts = program.opts();
92
+ const spinner = ora("Creating memory space...").start();
93
+ try {
94
+ validateMemorySpaceId(spaceId);
95
+ const spaceType = validateMemorySpaceType(options.type);
96
+ const metadata = JSON.parse(options.metadata);
97
+ await withClient(config, globalOpts, async (client) => {
98
+ // Check if space already exists
99
+ const existing = await client.memorySpaces.get(spaceId);
100
+ if (existing) {
101
+ spinner.stop();
102
+ printError(`Memory space ${spaceId} already exists`);
103
+ process.exit(1);
104
+ }
105
+ const space = await client.memorySpaces.register({
106
+ memorySpaceId: spaceId,
107
+ name: options.name,
108
+ type: spaceType,
109
+ metadata,
110
+ });
111
+ spinner.stop();
112
+ printSuccess(`Created memory space ${spaceId}`);
113
+ console.log(` Type: ${space.type}`);
114
+ console.log(` Name: ${space.name ?? "-"}`);
115
+ console.log(` Created: ${formatTimestamp(space.createdAt)}`);
116
+ });
117
+ }
118
+ catch (error) {
119
+ spinner.stop();
120
+ printError(error instanceof Error ? error.message : "Create failed");
121
+ process.exit(1);
122
+ }
123
+ });
124
+ // spaces get
125
+ spaces
126
+ .command("get <spaceId>")
127
+ .description("Get memory space details")
128
+ .option("-f, --format <format>", "Output format: table, json")
129
+ .action(async (spaceId, options) => {
130
+ const globalOpts = program.opts();
131
+ const resolved = resolveConfig(config, globalOpts);
132
+ const format = (options.format ?? resolved.format);
133
+ const spinner = ora("Loading memory space...").start();
134
+ try {
135
+ validateMemorySpaceId(spaceId);
136
+ await withClient(config, globalOpts, async (client) => {
137
+ const space = await client.memorySpaces.get(spaceId);
138
+ if (!space) {
139
+ spinner.stop();
140
+ printError(`Memory space ${spaceId} not found`);
141
+ process.exit(1);
142
+ }
143
+ spinner.stop();
144
+ if (format === "json") {
145
+ console.log(formatOutput(space, "json"));
146
+ }
147
+ else {
148
+ printSection(`Memory Space: ${spaceId}`, {
149
+ ID: space.memorySpaceId,
150
+ Name: space.name ?? "-",
151
+ Type: space.type,
152
+ Status: space.status,
153
+ Participants: space.participants?.length ?? 0,
154
+ Created: formatTimestamp(space.createdAt),
155
+ Updated: formatTimestamp(space.updatedAt),
156
+ });
157
+ if (space.participants && space.participants.length > 0) {
158
+ console.log("\n Participants:");
159
+ for (const p of space.participants) {
160
+ console.log(` • ${p.id} (${p.type}) - joined ${formatRelativeTime(p.joinedAt)}`);
161
+ }
162
+ }
163
+ if (space.metadata && Object.keys(space.metadata).length > 0) {
164
+ console.log("\n Metadata:");
165
+ for (const [key, value] of Object.entries(space.metadata)) {
166
+ console.log(` ${key}: ${JSON.stringify(value)}`);
167
+ }
168
+ }
169
+ }
170
+ });
171
+ }
172
+ catch (error) {
173
+ spinner.stop();
174
+ printError(error instanceof Error ? error.message : "Failed to get space");
175
+ process.exit(1);
176
+ }
177
+ });
178
+ // spaces delete (with cascade)
179
+ spaces
180
+ .command("delete <spaceId>")
181
+ .description("Delete a memory space")
182
+ .option("--cascade", "Delete all data in the space (memories, facts, etc.)", false)
183
+ .option("-y, --yes", "Skip confirmation prompt", false)
184
+ .action(async (spaceId, options) => {
185
+ const globalOpts = program.opts();
186
+ try {
187
+ validateMemorySpaceId(spaceId);
188
+ if (options.cascade && !options.yes) {
189
+ console.log("\n⚠️ CASCADE DELETION");
190
+ console.log("This will permanently delete the memory space and ALL its data:");
191
+ console.log(" • All memories");
192
+ console.log(" • All facts");
193
+ console.log(" • All conversations");
194
+ console.log(" • All contexts\n");
195
+ const confirmed = await requireExactConfirmation(spaceId, `Type the space ID "${spaceId}" to confirm cascade deletion:`);
196
+ if (!confirmed) {
197
+ printWarning("Operation cancelled");
198
+ return;
199
+ }
200
+ }
201
+ else if (!options.yes) {
202
+ const confirmed = await requireConfirmation(`Delete memory space ${spaceId}?`, config);
203
+ if (!confirmed) {
204
+ printWarning("Operation cancelled");
205
+ return;
206
+ }
207
+ }
208
+ const spinner = ora(options.cascade
209
+ ? "Deleting memory space and all data..."
210
+ : "Deleting memory space...").start();
211
+ await withClient(config, globalOpts, async (client) => {
212
+ const result = await client.memorySpaces.delete(spaceId, {
213
+ cascade: options.cascade,
214
+ });
215
+ spinner.stop();
216
+ if (result.deleted) {
217
+ printSuccess(`Deleted memory space ${spaceId}`);
218
+ if (result.cascaded) {
219
+ printSuccess("All associated data was also deleted");
220
+ }
221
+ }
222
+ else {
223
+ printError("Memory space not found or could not be deleted");
224
+ }
225
+ });
226
+ }
227
+ catch (error) {
228
+ printError(error instanceof Error ? error.message : "Delete failed");
229
+ process.exit(1);
230
+ }
231
+ });
232
+ // spaces archive
233
+ spaces
234
+ .command("archive <spaceId>")
235
+ .description("Archive a memory space (soft delete)")
236
+ .option("-r, --reason <reason>", "Reason for archiving")
237
+ .option("-y, --yes", "Skip confirmation prompt", false)
238
+ .action(async (spaceId, options) => {
239
+ const globalOpts = program.opts();
240
+ try {
241
+ validateMemorySpaceId(spaceId);
242
+ if (!options.yes) {
243
+ const confirmed = await requireConfirmation(`Archive memory space ${spaceId}?`, config);
244
+ if (!confirmed) {
245
+ printWarning("Operation cancelled");
246
+ return;
247
+ }
248
+ }
249
+ const spinner = ora("Archiving memory space...").start();
250
+ await withClient(config, globalOpts, async (client) => {
251
+ const space = await client.memorySpaces.archive(spaceId, {
252
+ reason: options.reason,
253
+ });
254
+ spinner.stop();
255
+ printSuccess(`Archived memory space ${spaceId}`);
256
+ console.log(` Status: ${space.status}`);
257
+ });
258
+ }
259
+ catch (error) {
260
+ printError(error instanceof Error ? error.message : "Archive failed");
261
+ process.exit(1);
262
+ }
263
+ });
264
+ // spaces reactivate
265
+ spaces
266
+ .command("reactivate <spaceId>")
267
+ .description("Reactivate an archived memory space")
268
+ .action(async (spaceId) => {
269
+ const globalOpts = program.opts();
270
+ const spinner = ora("Reactivating memory space...").start();
271
+ try {
272
+ validateMemorySpaceId(spaceId);
273
+ await withClient(config, globalOpts, async (client) => {
274
+ const space = await client.memorySpaces.reactivate(spaceId);
275
+ spinner.stop();
276
+ printSuccess(`Reactivated memory space ${spaceId}`);
277
+ console.log(` Status: ${space.status}`);
278
+ });
279
+ }
280
+ catch (error) {
281
+ spinner.stop();
282
+ printError(error instanceof Error ? error.message : "Reactivate failed");
283
+ process.exit(1);
284
+ }
285
+ });
286
+ // spaces stats
287
+ spaces
288
+ .command("stats <spaceId>")
289
+ .description("Get statistics for a memory space")
290
+ .option("-f, --format <format>", "Output format: table, json")
291
+ .action(async (spaceId, options) => {
292
+ const globalOpts = program.opts();
293
+ const resolved = resolveConfig(config, globalOpts);
294
+ const format = (options.format ?? resolved.format);
295
+ const spinner = ora("Loading statistics...").start();
296
+ try {
297
+ validateMemorySpaceId(spaceId);
298
+ await withClient(config, globalOpts, async (client) => {
299
+ const stats = await client.memorySpaces.getStats(spaceId);
300
+ spinner.stop();
301
+ if (format === "json") {
302
+ console.log(formatOutput(stats, "json"));
303
+ }
304
+ else {
305
+ printSection(`Statistics for ${spaceId}`, {
306
+ Conversations: stats.totalConversations,
307
+ Memories: stats.totalMemories,
308
+ Facts: stats.totalFacts,
309
+ "Total Messages": stats.totalMessages,
310
+ Participants: stats.participants?.length ?? 0,
311
+ "Top Tags": stats.topTags.length > 0
312
+ ? stats.topTags.slice(0, 5).join(", ")
313
+ : "-",
314
+ });
315
+ }
316
+ });
317
+ }
318
+ catch (error) {
319
+ spinner.stop();
320
+ printError(error instanceof Error ? error.message : "Failed to load statistics");
321
+ process.exit(1);
322
+ }
323
+ });
324
+ // spaces participants
325
+ spaces
326
+ .command("participants <spaceId>")
327
+ .description("List participants in a memory space")
328
+ .option("-f, --format <format>", "Output format: table, json")
329
+ .action(async (spaceId, options) => {
330
+ const globalOpts = program.opts();
331
+ const resolved = resolveConfig(config, globalOpts);
332
+ const format = (options.format ?? resolved.format);
333
+ const spinner = ora("Loading participants...").start();
334
+ try {
335
+ validateMemorySpaceId(spaceId);
336
+ await withClient(config, globalOpts, async (client) => {
337
+ const space = await client.memorySpaces.get(spaceId);
338
+ if (!space) {
339
+ spinner.stop();
340
+ printError(`Memory space ${spaceId} not found`);
341
+ process.exit(1);
342
+ }
343
+ spinner.stop();
344
+ const participants = space.participants ?? [];
345
+ if (participants.length === 0) {
346
+ printWarning("No participants in this space");
347
+ return;
348
+ }
349
+ const displayData = participants.map((p) => ({
350
+ id: p.id,
351
+ type: p.type,
352
+ joined: formatRelativeTime(p.joinedAt),
353
+ }));
354
+ console.log(formatOutput(displayData, format, {
355
+ title: `Participants in ${spaceId}`,
356
+ headers: ["id", "type", "joined"],
357
+ }));
358
+ printSuccess(`${formatCount(participants.length, "participant")}`);
359
+ });
360
+ }
361
+ catch (error) {
362
+ spinner.stop();
363
+ printError(error instanceof Error
364
+ ? error.message
365
+ : "Failed to list participants");
366
+ process.exit(1);
367
+ }
368
+ });
369
+ // spaces add-participant
370
+ spaces
371
+ .command("add-participant <spaceId>")
372
+ .description("Add a participant to a memory space")
373
+ .requiredOption("-i, --id <participantId>", "Participant ID")
374
+ .requiredOption("-t, --type <type>", "Participant type (e.g., user, ai-tool, ai-agent)")
375
+ .action(async (spaceId, options) => {
376
+ const globalOpts = program.opts();
377
+ const spinner = ora("Adding participant...").start();
378
+ try {
379
+ validateMemorySpaceId(spaceId);
380
+ await withClient(config, globalOpts, async (client) => {
381
+ const space = await client.memorySpaces.addParticipant(spaceId, {
382
+ id: options.id,
383
+ type: options.type,
384
+ joinedAt: Date.now(),
385
+ });
386
+ spinner.stop();
387
+ printSuccess(`Added participant ${options.id} to ${spaceId}`);
388
+ console.log(` Total participants: ${space.participants?.length ?? 0}`);
389
+ });
390
+ }
391
+ catch (error) {
392
+ spinner.stop();
393
+ printError(error instanceof Error ? error.message : "Failed to add participant");
394
+ process.exit(1);
395
+ }
396
+ });
397
+ // spaces remove-participant
398
+ spaces
399
+ .command("remove-participant <spaceId>")
400
+ .description("Remove a participant from a memory space")
401
+ .requiredOption("-i, --id <participantId>", "Participant ID to remove")
402
+ .option("-y, --yes", "Skip confirmation prompt", false)
403
+ .action(async (spaceId, options) => {
404
+ const globalOpts = program.opts();
405
+ try {
406
+ validateMemorySpaceId(spaceId);
407
+ if (!options.yes) {
408
+ const confirmed = await requireConfirmation(`Remove participant ${options.id} from ${spaceId}?`, config);
409
+ if (!confirmed) {
410
+ printWarning("Operation cancelled");
411
+ return;
412
+ }
413
+ }
414
+ const spinner = ora("Removing participant...").start();
415
+ await withClient(config, globalOpts, async (client) => {
416
+ const space = await client.memorySpaces.removeParticipant(spaceId, options.id);
417
+ spinner.stop();
418
+ printSuccess(`Removed participant ${options.id} from ${spaceId}`);
419
+ console.log(` Remaining participants: ${space.participants?.length ?? 0}`);
420
+ });
421
+ }
422
+ catch (error) {
423
+ printError(error instanceof Error
424
+ ? error.message
425
+ : "Failed to remove participant");
426
+ process.exit(1);
427
+ }
428
+ });
429
+ // spaces update
430
+ spaces
431
+ .command("update <spaceId>")
432
+ .description("Update a memory space")
433
+ .option("-n, --name <name>", "New name")
434
+ .option("-s, --status <status>", "New status: active, archived")
435
+ .option("-m, --metadata <json>", "JSON metadata to merge")
436
+ .action(async (spaceId, options) => {
437
+ const globalOpts = program.opts();
438
+ try {
439
+ validateMemorySpaceId(spaceId);
440
+ if (!options.name && !options.status && !options.metadata) {
441
+ printError("At least one of --name, --status, or --metadata is required");
442
+ process.exit(1);
443
+ }
444
+ const updates = {};
445
+ if (options.name) {
446
+ updates.name = options.name;
447
+ }
448
+ if (options.status) {
449
+ updates.status = validateMemorySpaceStatus(options.status);
450
+ }
451
+ if (options.metadata) {
452
+ updates.metadata = JSON.parse(options.metadata);
453
+ }
454
+ const spinner = ora("Updating memory space...").start();
455
+ await withClient(config, globalOpts, async (client) => {
456
+ const space = await client.memorySpaces.update(spaceId, updates);
457
+ spinner.stop();
458
+ printSuccess(`Updated memory space ${spaceId}`);
459
+ if (updates.name)
460
+ console.log(` Name: ${space.name}`);
461
+ if (updates.status)
462
+ console.log(` Status: ${space.status}`);
463
+ });
464
+ }
465
+ catch (error) {
466
+ printError(error instanceof Error ? error.message : "Update failed");
467
+ process.exit(1);
468
+ }
469
+ });
470
+ // spaces count
471
+ spaces
472
+ .command("count")
473
+ .description("Count memory spaces")
474
+ .option("-t, --type <type>", "Filter by type")
475
+ .option("-s, --status <status>", "Filter by status")
476
+ .action(async (options) => {
477
+ const globalOpts = program.opts();
478
+ const spinner = ora("Counting memory spaces...").start();
479
+ try {
480
+ const filterType = options.type
481
+ ? validateMemorySpaceType(options.type)
482
+ : undefined;
483
+ const filterStatus = options.status
484
+ ? validateMemorySpaceStatus(options.status)
485
+ : undefined;
486
+ await withClient(config, globalOpts, async (client) => {
487
+ const count = await client.memorySpaces.count({
488
+ type: filterType,
489
+ status: filterStatus,
490
+ });
491
+ spinner.stop();
492
+ printSuccess(`${formatCount(count, "memory space")}`);
493
+ });
494
+ }
495
+ catch (error) {
496
+ spinner.stop();
497
+ printError(error instanceof Error ? error.message : "Count failed");
498
+ process.exit(1);
499
+ }
500
+ });
501
+ // spaces search
502
+ spaces
503
+ .command("search <query>")
504
+ .description("Search memory spaces by name")
505
+ .option("-t, --type <type>", "Filter by type")
506
+ .option("-s, --status <status>", "Filter by status")
507
+ .option("-l, --limit <number>", "Maximum results", "20")
508
+ .option("-f, --format <format>", "Output format: table, json")
509
+ .action(async (query, options) => {
510
+ const globalOpts = program.opts();
511
+ const resolved = resolveConfig(config, globalOpts);
512
+ const format = (options.format ?? resolved.format);
513
+ const spinner = ora("Searching memory spaces...").start();
514
+ try {
515
+ const filterType = options.type
516
+ ? validateMemorySpaceType(options.type)
517
+ : undefined;
518
+ const filterStatus = options.status
519
+ ? validateMemorySpaceStatus(options.status)
520
+ : undefined;
521
+ const limit = validateLimit(parseInt(options.limit, 10));
522
+ await withClient(config, globalOpts, async (client) => {
523
+ const results = await client.memorySpaces.search(query, {
524
+ type: filterType,
525
+ status: filterStatus,
526
+ limit,
527
+ });
528
+ spinner.stop();
529
+ if (results.length === 0) {
530
+ printWarning("No memory spaces found matching your query");
531
+ return;
532
+ }
533
+ const displayData = results.map((s) => ({
534
+ id: s.memorySpaceId,
535
+ name: s.name ?? "-",
536
+ type: s.type,
537
+ status: s.status,
538
+ }));
539
+ console.log(formatOutput(displayData, format, {
540
+ title: `Search results for "${query}"`,
541
+ headers: ["id", "name", "type", "status"],
542
+ }));
543
+ printSuccess(`Found ${formatCount(results.length, "space")}`);
544
+ });
545
+ }
546
+ catch (error) {
547
+ spinner.stop();
548
+ printError(error instanceof Error ? error.message : "Search failed");
549
+ process.exit(1);
550
+ }
551
+ });
552
+ }
553
+ //# sourceMappingURL=spaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../../src/commands/spaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * User Commands
3
+ *
4
+ * Commands for managing users with GDPR cascade deletion support:
5
+ * - list: List all users
6
+ * - get: Get user profile
7
+ * - delete: Delete user with optional cascade
8
+ * - delete-many: Delete multiple users
9
+ * - export: Export user data
10
+ * - stats: Show user statistics
11
+ */
12
+ import { Command } from "commander";
13
+ import type { CLIConfig } from "../types.js";
14
+ /**
15
+ * Register user commands
16
+ */
17
+ export declare function registerUserCommands(program: Command, config: CLIConfig): void;
18
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AAsB3D;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,GAChB,IAAI,CAyjBN"}