@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.
- package/README.md +325 -0
- package/dist/commands/conversations.d.ts +16 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +421 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/convex.d.ts +17 -0
- package/dist/commands/convex.d.ts.map +1 -0
- package/dist/commands/convex.js +442 -0
- package/dist/commands/convex.js.map +1 -0
- package/dist/commands/db.d.ts +16 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +371 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/dev.d.ts +16 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +558 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/facts.d.ts +17 -0
- package/dist/commands/facts.d.ts.map +1 -0
- package/dist/commands/facts.js +386 -0
- package/dist/commands/facts.js.map +1 -0
- package/dist/commands/memory.d.ts +18 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +486 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/setup.d.ts +14 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +494 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/spaces.d.ts +18 -0
- package/dist/commands/spaces.d.ts.map +1 -0
- package/dist/commands/spaces.js +553 -0
- package/dist/commands/spaces.js.map +1 -0
- package/dist/commands/users.d.ts +18 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +486 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/__tests__/config.test.d.ts +5 -0
- package/dist/utils/__tests__/config.test.d.ts.map +1 -0
- package/dist/utils/__tests__/config.test.js +127 -0
- package/dist/utils/__tests__/config.test.js.map +1 -0
- package/dist/utils/__tests__/formatting.test.d.ts +5 -0
- package/dist/utils/__tests__/formatting.test.d.ts.map +1 -0
- package/dist/utils/__tests__/formatting.test.js +132 -0
- package/dist/utils/__tests__/formatting.test.js.map +1 -0
- package/dist/utils/__tests__/validation.test.d.ts +5 -0
- package/dist/utils/__tests__/validation.test.d.ts.map +1 -0
- package/dist/utils/__tests__/validation.test.js +207 -0
- package/dist/utils/__tests__/validation.test.js.map +1 -0
- package/dist/utils/client.d.ts +42 -0
- package/dist/utils/client.d.ts.map +1 -0
- package/dist/utils/client.js +108 -0
- package/dist/utils/client.js.map +1 -0
- package/dist/utils/config.d.ts +67 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +261 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/formatting.d.ts +81 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +239 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/validation.d.ts +83 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +243 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +72 -0
- 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"}
|