@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,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands for database-wide operations:
|
|
5
|
+
* - stats: Show database statistics
|
|
6
|
+
* - clear: Clear entire database
|
|
7
|
+
* - backup: Backup database
|
|
8
|
+
* - restore: Restore from backup
|
|
9
|
+
*/
|
|
10
|
+
import ora from "ora";
|
|
11
|
+
import { withClient } from "../utils/client.js";
|
|
12
|
+
import { resolveConfig } from "../utils/config.js";
|
|
13
|
+
import { formatOutput, printSuccess, printError, printWarning, printSection, formatTimestamp, formatBytes, } from "../utils/formatting.js";
|
|
14
|
+
import { validateFilePath, requireConfirmation, requireExactConfirmation, } from "../utils/validation.js";
|
|
15
|
+
import { writeFile, readFile } from "fs/promises";
|
|
16
|
+
import pc from "picocolors";
|
|
17
|
+
/**
|
|
18
|
+
* Register database commands
|
|
19
|
+
*/
|
|
20
|
+
export function registerDbCommands(program, config) {
|
|
21
|
+
const db = program.command("db").description("Database-wide operations");
|
|
22
|
+
// db stats
|
|
23
|
+
db.command("stats")
|
|
24
|
+
.description("Show database statistics")
|
|
25
|
+
.option("-f, --format <format>", "Output format: table, json")
|
|
26
|
+
.action(async (options) => {
|
|
27
|
+
const globalOpts = program.opts();
|
|
28
|
+
const resolved = resolveConfig(config, globalOpts);
|
|
29
|
+
const format = (options.format ?? resolved.format);
|
|
30
|
+
const spinner = ora("Loading database statistics...").start();
|
|
31
|
+
try {
|
|
32
|
+
await withClient(config, globalOpts, async (client) => {
|
|
33
|
+
// Get counts from all tables
|
|
34
|
+
const [spacesCount, usersCount] = await Promise.all([
|
|
35
|
+
client.memorySpaces.count(),
|
|
36
|
+
client.users.count(),
|
|
37
|
+
]);
|
|
38
|
+
// Get space-level statistics
|
|
39
|
+
const spaces = await client.memorySpaces.list({ limit: 1000 });
|
|
40
|
+
let totalMemories = 0;
|
|
41
|
+
let totalConversations = 0;
|
|
42
|
+
let totalFacts = 0;
|
|
43
|
+
for (const space of spaces) {
|
|
44
|
+
try {
|
|
45
|
+
const stats = await client.memorySpaces.getStats(space.memorySpaceId);
|
|
46
|
+
totalMemories += stats.totalMemories;
|
|
47
|
+
totalConversations += stats.totalConversations;
|
|
48
|
+
totalFacts += stats.totalFacts;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Skip if stats not available
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
spinner.stop();
|
|
55
|
+
const stats = {
|
|
56
|
+
memorySpaces: spacesCount,
|
|
57
|
+
conversations: totalConversations,
|
|
58
|
+
memories: totalMemories,
|
|
59
|
+
facts: totalFacts,
|
|
60
|
+
users: usersCount,
|
|
61
|
+
immutableRecords: 0, // Would need separate query
|
|
62
|
+
mutableRecords: 0, // Would need separate query
|
|
63
|
+
contexts: 0, // Would need separate query
|
|
64
|
+
};
|
|
65
|
+
if (format === "json") {
|
|
66
|
+
console.log(formatOutput(stats, "json"));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.log();
|
|
70
|
+
printSection("Database Statistics", {
|
|
71
|
+
"Memory Spaces": stats.memorySpaces,
|
|
72
|
+
"Total Memories": stats.memories,
|
|
73
|
+
"Total Conversations": stats.conversations,
|
|
74
|
+
"Total Facts": stats.facts,
|
|
75
|
+
"User Profiles": stats.users,
|
|
76
|
+
});
|
|
77
|
+
// Show deployment info
|
|
78
|
+
const info = (await import("../utils/client.js")).getDeploymentInfo(config, globalOpts);
|
|
79
|
+
console.log(` ${pc.dim("Deployment:")} ${info.url}`);
|
|
80
|
+
console.log(` ${pc.dim("Mode:")} ${info.isLocal ? "Local" : "Cloud"}`);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
spinner.stop();
|
|
86
|
+
printError(error instanceof Error ? error.message : "Failed to load statistics");
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// db clear
|
|
91
|
+
db.command("clear")
|
|
92
|
+
.description("Clear entire database (DANGEROUS!)")
|
|
93
|
+
.option("--confirm <text>", 'Confirmation text: "I understand this is irreversible"')
|
|
94
|
+
.action(async (options) => {
|
|
95
|
+
const globalOpts = program.opts();
|
|
96
|
+
try {
|
|
97
|
+
// Require exact confirmation text
|
|
98
|
+
const expectedText = "I understand this is irreversible";
|
|
99
|
+
if (options.confirm !== expectedText) {
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(pc.red(pc.bold("⚠️ DANGER: This will DELETE ALL DATA in the database!")));
|
|
102
|
+
console.log();
|
|
103
|
+
console.log("This operation will permanently delete:");
|
|
104
|
+
console.log(" • All memory spaces");
|
|
105
|
+
console.log(" • All memories");
|
|
106
|
+
console.log(" • All conversations");
|
|
107
|
+
console.log(" • All facts");
|
|
108
|
+
console.log(" • All user profiles");
|
|
109
|
+
console.log(" • All immutable and mutable records");
|
|
110
|
+
console.log(" • All contexts");
|
|
111
|
+
console.log();
|
|
112
|
+
console.log(pc.yellow("This cannot be undone!"));
|
|
113
|
+
console.log();
|
|
114
|
+
const confirmed = await requireExactConfirmation(expectedText, `To proceed, type exactly: "${expectedText}"`);
|
|
115
|
+
if (!confirmed) {
|
|
116
|
+
printWarning("Operation cancelled");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const spinner = ora("Clearing database...").start();
|
|
121
|
+
await withClient(config, globalOpts, async (client) => {
|
|
122
|
+
// Delete all memory spaces (with cascade)
|
|
123
|
+
const spaces = await client.memorySpaces.list({ limit: 10000 });
|
|
124
|
+
let deletedSpaces = 0;
|
|
125
|
+
for (const space of spaces) {
|
|
126
|
+
try {
|
|
127
|
+
await client.memorySpaces.delete(space.memorySpaceId, {
|
|
128
|
+
cascade: true,
|
|
129
|
+
});
|
|
130
|
+
deletedSpaces++;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Continue on error
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Delete all users
|
|
137
|
+
const users = await client.users.list({ limit: 10000 });
|
|
138
|
+
let deletedUsers = 0;
|
|
139
|
+
for (const user of users) {
|
|
140
|
+
try {
|
|
141
|
+
await client.users.delete(user.id, { cascade: true });
|
|
142
|
+
deletedUsers++;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Continue on error
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
spinner.stop();
|
|
149
|
+
printSuccess("Database cleared");
|
|
150
|
+
printSection("Deletion Summary", {
|
|
151
|
+
"Memory Spaces": deletedSpaces,
|
|
152
|
+
Users: deletedUsers,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
printError(error instanceof Error ? error.message : "Clear failed");
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// db backup
|
|
162
|
+
db.command("backup")
|
|
163
|
+
.description("Backup database to a file")
|
|
164
|
+
.option("-o, --output <file>", "Output file path", "cortex-backup.json")
|
|
165
|
+
.option("--include-all", "Include all data (may be large)", false)
|
|
166
|
+
.action(async (options) => {
|
|
167
|
+
const globalOpts = program.opts();
|
|
168
|
+
const spinner = ora("Creating backup...").start();
|
|
169
|
+
try {
|
|
170
|
+
validateFilePath(options.output);
|
|
171
|
+
await withClient(config, globalOpts, async (client) => {
|
|
172
|
+
const backup = {
|
|
173
|
+
version: "1.0",
|
|
174
|
+
timestamp: Date.now(),
|
|
175
|
+
deployment: resolveConfig(config, globalOpts).url,
|
|
176
|
+
data: {},
|
|
177
|
+
};
|
|
178
|
+
// Backup memory spaces
|
|
179
|
+
spinner.text = "Backing up memory spaces...";
|
|
180
|
+
backup.data.memorySpaces = await client.memorySpaces.list({
|
|
181
|
+
limit: 10000,
|
|
182
|
+
});
|
|
183
|
+
// Backup users
|
|
184
|
+
spinner.text = "Backing up users...";
|
|
185
|
+
backup.data.users = await client.users.list({ limit: 10000 });
|
|
186
|
+
if (options.includeAll) {
|
|
187
|
+
// Backup conversations
|
|
188
|
+
spinner.text = "Backing up conversations...";
|
|
189
|
+
const spaces = backup.data.memorySpaces;
|
|
190
|
+
backup.data.conversations = [];
|
|
191
|
+
for (const space of spaces) {
|
|
192
|
+
const convs = await client.conversations.list({
|
|
193
|
+
memorySpaceId: space.memorySpaceId,
|
|
194
|
+
limit: 10000,
|
|
195
|
+
});
|
|
196
|
+
backup.data.conversations.push(...convs);
|
|
197
|
+
}
|
|
198
|
+
// Backup memories
|
|
199
|
+
spinner.text = "Backing up memories...";
|
|
200
|
+
backup.data.memories = [];
|
|
201
|
+
for (const space of spaces) {
|
|
202
|
+
const memories = await client.memory.list({
|
|
203
|
+
memorySpaceId: space.memorySpaceId,
|
|
204
|
+
limit: 10000,
|
|
205
|
+
});
|
|
206
|
+
backup.data.memories.push(...memories);
|
|
207
|
+
}
|
|
208
|
+
// Backup facts
|
|
209
|
+
spinner.text = "Backing up facts...";
|
|
210
|
+
backup.data.facts = [];
|
|
211
|
+
for (const space of spaces) {
|
|
212
|
+
const facts = await client.facts.list({
|
|
213
|
+
memorySpaceId: space.memorySpaceId,
|
|
214
|
+
limit: 10000,
|
|
215
|
+
});
|
|
216
|
+
backup.data.facts.push(...facts);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Write backup file
|
|
220
|
+
spinner.text = "Writing backup file...";
|
|
221
|
+
const content = JSON.stringify(backup, null, 2);
|
|
222
|
+
await writeFile(options.output, content, "utf-8");
|
|
223
|
+
spinner.stop();
|
|
224
|
+
const size = Buffer.byteLength(content, "utf-8");
|
|
225
|
+
printSuccess(`Backup created: ${options.output}`);
|
|
226
|
+
printSection("Backup Summary", {
|
|
227
|
+
"File Size": formatBytes(size),
|
|
228
|
+
Timestamp: formatTimestamp(backup.timestamp),
|
|
229
|
+
"Memory Spaces": backup.data.memorySpaces?.length ?? 0,
|
|
230
|
+
Users: backup.data.users?.length ?? 0,
|
|
231
|
+
Conversations: options.includeAll
|
|
232
|
+
? (backup.data.conversations?.length ?? 0)
|
|
233
|
+
: "Not included",
|
|
234
|
+
Memories: options.includeAll
|
|
235
|
+
? (backup.data.memories?.length ?? 0)
|
|
236
|
+
: "Not included",
|
|
237
|
+
Facts: options.includeAll
|
|
238
|
+
? (backup.data.facts?.length ?? 0)
|
|
239
|
+
: "Not included",
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
spinner.stop();
|
|
245
|
+
printError(error instanceof Error ? error.message : "Backup failed");
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
// db restore
|
|
250
|
+
db.command("restore")
|
|
251
|
+
.description("Restore database from a backup file")
|
|
252
|
+
.requiredOption("-i, --input <file>", "Backup file path")
|
|
253
|
+
.option("--dry-run", "Preview what would be restored", false)
|
|
254
|
+
.option("-y, --yes", "Skip confirmation", false)
|
|
255
|
+
.action(async (options) => {
|
|
256
|
+
const globalOpts = program.opts();
|
|
257
|
+
try {
|
|
258
|
+
validateFilePath(options.input);
|
|
259
|
+
// Read backup file
|
|
260
|
+
const content = await readFile(options.input, "utf-8");
|
|
261
|
+
const backup = JSON.parse(content);
|
|
262
|
+
// Validate backup format
|
|
263
|
+
if (!backup.version || !backup.timestamp || !backup.data) {
|
|
264
|
+
printError("Invalid backup file format");
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
console.log();
|
|
268
|
+
printSection("Backup Information", {
|
|
269
|
+
Version: backup.version,
|
|
270
|
+
Created: formatTimestamp(backup.timestamp),
|
|
271
|
+
Source: backup.deployment,
|
|
272
|
+
"Memory Spaces": backup.data.memorySpaces?.length ?? 0,
|
|
273
|
+
Users: backup.data.users?.length ?? 0,
|
|
274
|
+
Conversations: backup.data.conversations?.length ?? "N/A",
|
|
275
|
+
Memories: backup.data.memories?.length ?? "N/A",
|
|
276
|
+
Facts: backup.data.facts?.length ?? "N/A",
|
|
277
|
+
});
|
|
278
|
+
if (options.dryRun) {
|
|
279
|
+
printWarning("DRY RUN - No data will be restored");
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (!options.yes) {
|
|
283
|
+
const confirmed = await requireConfirmation("Restore this backup? Existing data may be overwritten.", config);
|
|
284
|
+
if (!confirmed) {
|
|
285
|
+
printWarning("Restore cancelled");
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const spinner = ora("Restoring backup...").start();
|
|
290
|
+
await withClient(config, globalOpts, async (client) => {
|
|
291
|
+
let restored = {
|
|
292
|
+
spaces: 0,
|
|
293
|
+
users: 0,
|
|
294
|
+
conversations: 0,
|
|
295
|
+
memories: 0,
|
|
296
|
+
facts: 0,
|
|
297
|
+
};
|
|
298
|
+
// Restore memory spaces
|
|
299
|
+
if (backup.data.memorySpaces) {
|
|
300
|
+
spinner.text = "Restoring memory spaces...";
|
|
301
|
+
for (const space of backup.data.memorySpaces) {
|
|
302
|
+
try {
|
|
303
|
+
await client.memorySpaces.register({
|
|
304
|
+
memorySpaceId: space.memorySpaceId,
|
|
305
|
+
name: space.name,
|
|
306
|
+
type: space.type,
|
|
307
|
+
metadata: space.metadata,
|
|
308
|
+
});
|
|
309
|
+
restored.spaces++;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// Skip if exists
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Restore users
|
|
317
|
+
if (backup.data.users) {
|
|
318
|
+
spinner.text = "Restoring users...";
|
|
319
|
+
for (const user of backup.data.users) {
|
|
320
|
+
try {
|
|
321
|
+
await client.users.update(user.id, user.data);
|
|
322
|
+
restored.users++;
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
// Skip if exists
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
spinner.stop();
|
|
330
|
+
printSuccess("Restore complete");
|
|
331
|
+
printSection("Restore Summary", {
|
|
332
|
+
"Memory Spaces": restored.spaces,
|
|
333
|
+
Users: restored.users,
|
|
334
|
+
});
|
|
335
|
+
printWarning("Note: Full data restore (conversations, memories, facts) requires --include-all in backup");
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
printError(error instanceof Error ? error.message : "Restore failed");
|
|
340
|
+
process.exit(1);
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
// db export
|
|
344
|
+
db.command("export")
|
|
345
|
+
.description("Export all data to JSON")
|
|
346
|
+
.option("-o, --output <file>", "Output file path", "cortex-export.json")
|
|
347
|
+
.action(async (options) => {
|
|
348
|
+
const globalOpts = program.opts();
|
|
349
|
+
const spinner = ora("Exporting data...").start();
|
|
350
|
+
try {
|
|
351
|
+
validateFilePath(options.output);
|
|
352
|
+
await withClient(config, globalOpts, async (client) => {
|
|
353
|
+
const exportData = {
|
|
354
|
+
exportedAt: Date.now(),
|
|
355
|
+
memorySpaces: await client.memorySpaces.list({ limit: 10000 }),
|
|
356
|
+
users: await client.users.list({ limit: 10000 }),
|
|
357
|
+
};
|
|
358
|
+
const content = JSON.stringify(exportData, null, 2);
|
|
359
|
+
await writeFile(options.output, content, "utf-8");
|
|
360
|
+
spinner.stop();
|
|
361
|
+
printSuccess(`Exported data to ${options.output}`);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
spinner.stop();
|
|
366
|
+
printError(error instanceof Error ? error.message : "Export failed");
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands for development and testing:
|
|
5
|
+
* - seed: Seed test data
|
|
6
|
+
* - clear-test-data: Clear test data
|
|
7
|
+
* - generate-data: Generate sample data
|
|
8
|
+
* - debug: Debugging utilities
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from "commander";
|
|
11
|
+
import type { CLIConfig } from "../types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Register development commands
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerDevCommands(program: Command, config: CLIConfig): void;
|
|
16
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAqG7C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAgkB7E"}
|