@cortexmemory/cli 0.22.2 → 0.24.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 (71) hide show
  1. package/dist/commands/conversations.d.ts.map +1 -1
  2. package/dist/commands/conversations.js +9 -3
  3. package/dist/commands/conversations.js.map +1 -1
  4. package/dist/commands/convex.d.ts.map +1 -1
  5. package/dist/commands/convex.js +79 -260
  6. package/dist/commands/convex.js.map +1 -1
  7. package/dist/commands/db.d.ts.map +1 -1
  8. package/dist/commands/db.js +14 -6
  9. package/dist/commands/db.js.map +1 -1
  10. package/dist/commands/deploy.d.ts +14 -0
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +330 -0
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/commands/dev.d.ts.map +1 -1
  15. package/dist/commands/dev.js +66 -18
  16. package/dist/commands/dev.js.map +1 -1
  17. package/dist/commands/facts.d.ts.map +1 -1
  18. package/dist/commands/facts.js +13 -4
  19. package/dist/commands/facts.js.map +1 -1
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +73 -15
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/memory.d.ts.map +1 -1
  24. package/dist/commands/memory.js +15 -5
  25. package/dist/commands/memory.js.map +1 -1
  26. package/dist/commands/setup.d.ts.map +1 -1
  27. package/dist/commands/setup.js +26 -11
  28. package/dist/commands/setup.js.map +1 -1
  29. package/dist/commands/spaces.d.ts.map +1 -1
  30. package/dist/commands/spaces.js +15 -5
  31. package/dist/commands/spaces.js.map +1 -1
  32. package/dist/commands/status.d.ts.map +1 -1
  33. package/dist/commands/status.js +38 -15
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/commands/users.d.ts.map +1 -1
  36. package/dist/commands/users.js +9 -3
  37. package/dist/commands/users.js.map +1 -1
  38. package/dist/index.js +11 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/utils/__tests__/env-file.test.js +24 -4
  41. package/dist/utils/__tests__/env-file.test.js.map +1 -1
  42. package/dist/utils/__tests__/shell.test.js +1 -1
  43. package/dist/utils/__tests__/shell.test.js.map +1 -1
  44. package/dist/utils/deployment-selector.d.ts.map +1 -1
  45. package/dist/utils/deployment-selector.js.map +1 -1
  46. package/dist/utils/init/convex-setup.d.ts.map +1 -1
  47. package/dist/utils/init/convex-setup.js.map +1 -1
  48. package/dist/utils/init/env-generator.d.ts +1 -1
  49. package/dist/utils/init/env-generator.d.ts.map +1 -1
  50. package/dist/utils/init/env-generator.js +18 -6
  51. package/dist/utils/init/env-generator.js.map +1 -1
  52. package/dist/utils/init/file-operations.d.ts.map +1 -1
  53. package/dist/utils/init/file-operations.js.map +1 -1
  54. package/dist/utils/init/graph-setup.d.ts.map +1 -1
  55. package/dist/utils/init/graph-setup.js +75 -7
  56. package/dist/utils/init/graph-setup.js.map +1 -1
  57. package/dist/utils/init/types.d.ts +1 -0
  58. package/dist/utils/init/types.d.ts.map +1 -1
  59. package/dist/utils/schema-sync.d.ts +64 -0
  60. package/dist/utils/schema-sync.d.ts.map +1 -0
  61. package/dist/utils/schema-sync.js +219 -0
  62. package/dist/utils/schema-sync.js.map +1 -0
  63. package/dist/utils/shell-utils.d.ts +23 -0
  64. package/dist/utils/shell-utils.d.ts.map +1 -0
  65. package/dist/utils/shell-utils.js +48 -0
  66. package/dist/utils/shell-utils.js.map +1 -0
  67. package/dist/utils/shell.d.ts +7 -12
  68. package/dist/utils/shell.d.ts.map +1 -1
  69. package/dist/utils/shell.js +18 -44
  70. package/dist/utils/shell.js.map +1 -1
  71. package/package.json +12 -12
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Schema Sync Utility
3
+ *
4
+ * Syncs Convex schema files from @cortexmemory/sdk to the project's convex folder.
5
+ * This ensures the project always has the latest schema that matches the SDK version.
6
+ *
7
+ * For CLI development, you can override the SDK path using the CORTEX_SDK_DEV_PATH
8
+ * environment variable to point to a local SDK development directory:
9
+ *
10
+ * export CORTEX_SDK_DEV_PATH=/path/to/Project-Cortex
11
+ *
12
+ * This will use the schema files from that directory's convex-dev folder instead
13
+ * of the installed @cortexmemory/sdk package.
14
+ */
15
+ import { existsSync, readFileSync } from "fs";
16
+ import { copyFile, mkdir } from "fs/promises";
17
+ import { createHash } from "crypto";
18
+ import { join, dirname } from "path";
19
+ import pc from "picocolors";
20
+ /**
21
+ * Files to sync from SDK to project
22
+ * These are the Convex backend files that define the schema and mutations
23
+ */
24
+ const SCHEMA_FILES = [
25
+ "schema.ts",
26
+ "a2a.ts",
27
+ "admin.ts",
28
+ "agents.ts",
29
+ "contexts.ts",
30
+ "conversations.ts",
31
+ "facts.ts",
32
+ "governance.ts",
33
+ "graphSync.ts",
34
+ "immutable.ts",
35
+ "memories.ts",
36
+ "memorySpaces.ts",
37
+ "mutable.ts",
38
+ "users.ts",
39
+ "tsconfig.json",
40
+ ];
41
+ /**
42
+ * Find the @cortexmemory/sdk package
43
+ *
44
+ * Order of precedence:
45
+ * 1. CORTEX_SDK_DEV_PATH environment variable (for CLI development)
46
+ * 2. Project's node_modules/@cortexmemory/sdk
47
+ * 3. Walk up directory tree looking for node_modules
48
+ */
49
+ function findSdkPath(projectPath) {
50
+ // Check for development override first
51
+ const devPath = process.env.CORTEX_SDK_DEV_PATH;
52
+ if (devPath) {
53
+ if (existsSync(devPath)) {
54
+ return devPath;
55
+ }
56
+ // Dev path was set but doesn't exist - warn but continue with normal lookup
57
+ console.warn(pc.yellow(` ⚠ CORTEX_SDK_DEV_PATH set but path not found: ${devPath}`));
58
+ }
59
+ // Check in project's node_modules
60
+ const directPath = join(projectPath, "node_modules", "@cortexmemory", "sdk");
61
+ if (existsSync(directPath)) {
62
+ return directPath;
63
+ }
64
+ // Walk up the directory tree looking for node_modules
65
+ let currentPath = projectPath;
66
+ while (currentPath !== dirname(currentPath)) {
67
+ const parentModules = join(currentPath, "node_modules", "@cortexmemory", "sdk");
68
+ if (existsSync(parentModules)) {
69
+ return parentModules;
70
+ }
71
+ currentPath = dirname(currentPath);
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Get the SDK version from package.json
77
+ */
78
+ function getSdkVersion(sdkPath) {
79
+ try {
80
+ const packageJsonPath = join(sdkPath, "package.json");
81
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
82
+ return packageJson.version || "unknown";
83
+ }
84
+ catch {
85
+ return "unknown";
86
+ }
87
+ }
88
+ /**
89
+ * Calculate MD5 hash of a file for comparison
90
+ */
91
+ function getFileHash(filePath) {
92
+ try {
93
+ const content = readFileSync(filePath);
94
+ return createHash("md5").update(content).digest("hex");
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ /**
101
+ * Sync Convex schema files from SDK to project
102
+ *
103
+ * @param projectPath - Path to the project root (where convex/ folder should be)
104
+ * @param options - Sync options
105
+ * @returns Sync result with details about what was updated
106
+ */
107
+ export async function syncConvexSchema(projectPath, options) {
108
+ const result = {
109
+ synced: false,
110
+ filesUpdated: [],
111
+ filesAdded: [],
112
+ sdkVersion: "unknown",
113
+ sdkConvexPath: "",
114
+ projectConvexPath: join(projectPath, "convex"),
115
+ isDevOverride: false,
116
+ };
117
+ // Check if using development override
118
+ const devPath = process.env.CORTEX_SDK_DEV_PATH;
119
+ result.isDevOverride = !!devPath && existsSync(devPath);
120
+ // Find SDK package
121
+ const sdkPath = findSdkPath(projectPath);
122
+ if (!sdkPath) {
123
+ result.error =
124
+ "@cortexmemory/sdk not found in node_modules. Please install it first.";
125
+ return result;
126
+ }
127
+ // Check for convex-dev folder in SDK
128
+ const sdkConvexPath = join(sdkPath, "convex-dev");
129
+ if (!existsSync(sdkConvexPath)) {
130
+ result.error = `SDK convex-dev folder not found at ${sdkConvexPath}. SDK may be outdated.`;
131
+ return result;
132
+ }
133
+ result.sdkConvexPath = sdkConvexPath;
134
+ result.sdkVersion = getSdkVersion(sdkPath);
135
+ // Ensure project's convex folder exists
136
+ if (!existsSync(result.projectConvexPath)) {
137
+ if (!options?.dryRun) {
138
+ await mkdir(result.projectConvexPath, { recursive: true });
139
+ }
140
+ }
141
+ // Compare and sync each file
142
+ for (const fileName of SCHEMA_FILES) {
143
+ const sdkFilePath = join(sdkConvexPath, fileName);
144
+ const projectFilePath = join(result.projectConvexPath, fileName);
145
+ // Skip if SDK doesn't have this file
146
+ if (!existsSync(sdkFilePath)) {
147
+ continue;
148
+ }
149
+ const sdkHash = getFileHash(sdkFilePath);
150
+ const projectHash = getFileHash(projectFilePath);
151
+ const fileExists = existsSync(projectFilePath);
152
+ // Check if file needs updating
153
+ const needsUpdate = options?.force || sdkHash !== projectHash;
154
+ if (needsUpdate) {
155
+ if (!options?.dryRun) {
156
+ await copyFile(sdkFilePath, projectFilePath);
157
+ }
158
+ if (fileExists) {
159
+ result.filesUpdated.push(fileName);
160
+ }
161
+ else {
162
+ result.filesAdded.push(fileName);
163
+ }
164
+ result.synced = true;
165
+ }
166
+ }
167
+ return result;
168
+ }
169
+ /**
170
+ * Print schema sync result to console
171
+ */
172
+ export function printSyncResult(result, quiet) {
173
+ if (quiet)
174
+ return;
175
+ if (result.error) {
176
+ console.log(pc.red(` ✗ Schema sync failed: ${result.error}`));
177
+ return;
178
+ }
179
+ // Show dev mode indicator
180
+ const devIndicator = result.isDevOverride
181
+ ? pc.magenta(" [DEV OVERRIDE]")
182
+ : "";
183
+ if (!result.synced) {
184
+ const source = result.isDevOverride
185
+ ? `local SDK${devIndicator}`
186
+ : `SDK v${result.sdkVersion}`;
187
+ console.log(pc.dim(` Schema files are up to date (${source})`));
188
+ if (result.isDevOverride) {
189
+ console.log(pc.dim(` Source: ${result.sdkConvexPath}`));
190
+ }
191
+ return;
192
+ }
193
+ const source = result.isDevOverride
194
+ ? `local SDK${devIndicator}`
195
+ : `@cortexmemory/sdk v${result.sdkVersion}`;
196
+ console.log(pc.cyan(` ↓ Synced schema from ${source}`));
197
+ if (result.isDevOverride) {
198
+ console.log(pc.dim(` Source: ${result.sdkConvexPath}`));
199
+ }
200
+ if (result.filesUpdated.length > 0) {
201
+ console.log(pc.dim(` Updated: ${result.filesUpdated.join(", ")}`));
202
+ }
203
+ if (result.filesAdded.length > 0) {
204
+ console.log(pc.dim(` Added: ${result.filesAdded.join(", ")}`));
205
+ }
206
+ }
207
+ /**
208
+ * Check if schema sync is needed (without modifying files)
209
+ */
210
+ export async function checkSchemaSync(projectPath) {
211
+ const result = await syncConvexSchema(projectPath, { dryRun: true });
212
+ return {
213
+ needsSync: result.synced,
214
+ filesOutdated: result.filesUpdated,
215
+ filesMissing: result.filesAdded,
216
+ sdkVersion: result.sdkVersion,
217
+ };
218
+ }
219
+ //# sourceMappingURL=schema-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-sync.js","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shell Utilities - Pure Functions
3
+ *
4
+ * Pure utility functions that don't require ESM-specific features.
5
+ * Separated for testability with Jest.
6
+ */
7
+ /**
8
+ * Allowlist of safe commands that can be executed
9
+ */
10
+ export declare const ALLOWED_COMMANDS: string[];
11
+ /**
12
+ * Validate project name
13
+ */
14
+ export declare function isValidProjectName(name: string): boolean;
15
+ /**
16
+ * Check if directory is empty
17
+ */
18
+ export declare function isDirectoryEmpty(dirPath: string): boolean;
19
+ /**
20
+ * Parse Convex URL to determine if it's local or cloud
21
+ */
22
+ export declare function isLocalConvexUrl(url: string): boolean;
23
+ //# sourceMappingURL=shell-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-utils.d.ts","sourceRoot":"","sources":["../../src/utils/shell-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAc5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Shell Utilities - Pure Functions
3
+ *
4
+ * Pure utility functions that don't require ESM-specific features.
5
+ * Separated for testability with Jest.
6
+ */
7
+ import { existsSync, readdirSync } from "fs";
8
+ /**
9
+ * Allowlist of safe commands that can be executed
10
+ */
11
+ export const ALLOWED_COMMANDS = [
12
+ "npx",
13
+ "convex",
14
+ "npm",
15
+ "pnpm",
16
+ "yarn",
17
+ "bun",
18
+ "git",
19
+ "node",
20
+ "docker",
21
+ // Process inspection commands (for kill menu)
22
+ "lsof",
23
+ "pgrep",
24
+ "ps",
25
+ ];
26
+ /**
27
+ * Validate project name
28
+ */
29
+ export function isValidProjectName(name) {
30
+ return /^[a-z0-9-_]+$/.test(name);
31
+ }
32
+ /**
33
+ * Check if directory is empty
34
+ */
35
+ export function isDirectoryEmpty(dirPath) {
36
+ if (!existsSync(dirPath)) {
37
+ return true;
38
+ }
39
+ const files = readdirSync(dirPath);
40
+ return files.length === 0 || (files.length === 1 && files[0] === ".git");
41
+ }
42
+ /**
43
+ * Parse Convex URL to determine if it's local or cloud
44
+ */
45
+ export function isLocalConvexUrl(url) {
46
+ return url.includes("localhost") || url.includes("127.0.0.1");
47
+ }
48
+ //# sourceMappingURL=shell-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-utils.js","sourceRoot":"","sources":["../../src/utils/shell-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,8CAA8C;IAC9C,MAAM;IACN,OAAO;IACP,IAAI;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Shared utilities for executing shell commands safely.
5
5
  * Used by init wizard and other CLI commands.
6
6
  */
7
+ export { isValidProjectName, isLocalConvexUrl, isDirectoryEmpty, ALLOWED_COMMANDS, } from "./shell-utils.js";
7
8
  /**
8
9
  * Check if a command exists in the system
9
10
  */
@@ -33,23 +34,17 @@ export declare function execCommandLive(command: string, args: string[], options
33
34
  cwd?: string;
34
35
  env?: Record<string, string | undefined>;
35
36
  }): Promise<number>;
36
- /**
37
- * Validate project name
38
- */
39
- export declare function isValidProjectName(name: string): boolean;
40
- /**
41
- * Check if directory is empty
42
- */
43
- export declare function isDirectoryEmpty(dirPath: string): boolean;
44
37
  /**
45
38
  * Get the path to the installed SDK package
39
+ *
40
+ * Order of precedence:
41
+ * 1. CORTEX_SDK_DEV_PATH environment variable (for CLI development)
42
+ * 2. Project's node_modules/@cortexmemory/sdk
43
+ * 3. Fallback to require.resolve
44
+ *
46
45
  * @param projectPath - Optional project path to look in (defaults to current directory)
47
46
  */
48
47
  export declare function getSDKPath(projectPath?: string): string | null;
49
- /**
50
- * Parse Convex URL to determine if it's local or cloud
51
- */
52
- export declare function isLocalConvexUrl(url: string): boolean;
53
48
  /**
54
49
  * Fetch the latest SDK package.json from npm registry
55
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACxF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC3D;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GACvE,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAyCD"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAO1B;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC3D;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GACvE,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B9D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAyCD"}
@@ -5,29 +5,14 @@
5
5
  * Used by init wizard and other CLI commands.
6
6
  */
7
7
  import { spawn } from "child_process";
8
- import { existsSync, readdirSync } from "fs";
8
+ import { existsSync } from "fs";
9
9
  import path from "path";
10
10
  import { createRequire } from "module";
11
- // Create require function for ES modules
12
- const require = createRequire(import.meta.url);
13
- /**
14
- * Allowlist of safe commands that can be executed
15
- */
16
- const ALLOWED_COMMANDS = [
17
- "npx",
18
- "convex",
19
- "npm",
20
- "pnpm",
21
- "yarn",
22
- "bun",
23
- "git",
24
- "node",
25
- "docker",
26
- // Process inspection commands (for kill menu)
27
- "lsof",
28
- "pgrep",
29
- "ps",
30
- ];
11
+ // Re-export pure functions from shell-utils (for backwards compatibility)
12
+ export { isValidProjectName, isLocalConvexUrl, isDirectoryEmpty, ALLOWED_COMMANDS, } from "./shell-utils.js";
13
+ import { ALLOWED_COMMANDS } from "./shell-utils.js";
14
+ // Create require function for ES modules (named to avoid conflict with Jest's require)
15
+ const esmRequire = createRequire(import.meta.url);
31
16
  /**
32
17
  * Check if a command exists in the system
33
18
  */
@@ -104,28 +89,23 @@ export async function execCommandLive(command, args, options = {}) {
104
89
  });
105
90
  });
106
91
  }
107
- /**
108
- * Validate project name
109
- */
110
- export function isValidProjectName(name) {
111
- return /^[a-z0-9-_]+$/.test(name);
112
- }
113
- /**
114
- * Check if directory is empty
115
- */
116
- export function isDirectoryEmpty(dirPath) {
117
- if (!existsSync(dirPath)) {
118
- return true;
119
- }
120
- const files = readdirSync(dirPath);
121
- return files.length === 0 || (files.length === 1 && files[0] === ".git");
122
- }
123
92
  /**
124
93
  * Get the path to the installed SDK package
94
+ *
95
+ * Order of precedence:
96
+ * 1. CORTEX_SDK_DEV_PATH environment variable (for CLI development)
97
+ * 2. Project's node_modules/@cortexmemory/sdk
98
+ * 3. Fallback to require.resolve
99
+ *
125
100
  * @param projectPath - Optional project path to look in (defaults to current directory)
126
101
  */
127
102
  export function getSDKPath(projectPath) {
128
103
  try {
104
+ // Check for development override first
105
+ const devPath = process.env.CORTEX_SDK_DEV_PATH;
106
+ if (devPath && existsSync(devPath)) {
107
+ return devPath;
108
+ }
129
109
  // If projectPath provided, look in that project's node_modules
130
110
  if (projectPath) {
131
111
  const sdkPath = path.join(projectPath, "node_modules", "@cortexmemory", "sdk");
@@ -134,19 +114,13 @@ export function getSDKPath(projectPath) {
134
114
  }
135
115
  }
136
116
  // Fallback: use require.resolve from current location
137
- const sdkPackageJson = require.resolve("@cortexmemory/sdk/package.json");
117
+ const sdkPackageJson = esmRequire.resolve("@cortexmemory/sdk/package.json");
138
118
  return path.dirname(sdkPackageJson);
139
119
  }
140
120
  catch {
141
121
  return null;
142
122
  }
143
123
  }
144
- /**
145
- * Parse Convex URL to determine if it's local or cloud
146
- */
147
- export function isLocalConvexUrl(url) {
148
- return url.includes("localhost") || url.includes("127.0.0.1");
149
- }
150
124
  /**
151
125
  * Fetch the latest SDK package.json from npm registry
152
126
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexmemory/cli",
3
- "version": "0.22.2",
3
+ "version": "0.24.0",
4
4
  "description": "CLI tool for managing Cortex Memory deployments, performing administrative tasks, and streamlining development workflows",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,14 +17,14 @@
17
17
  "build": "tsc && chmod +x dist/index.js",
18
18
  "dev": "tsc --watch",
19
19
  "lint": "eslint . --report-unused-disable-directives",
20
- "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
21
- "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
22
- "test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
23
- "test:unit": "node --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects unit",
24
- "test:commands": "node --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects commands",
25
- "test:e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects e2e",
26
- "test:integration": "node --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects e2e",
27
- "test:fast": "node --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects unit commands",
20
+ "test": "node --experimental-vm-modules $(npm root)/.bin/jest",
21
+ "test:watch": "node --experimental-vm-modules $(npm root)/.bin/jest --watch",
22
+ "test:coverage": "node --experimental-vm-modules $(npm root)/.bin/jest --coverage",
23
+ "test:unit": "node --experimental-vm-modules $(npm root)/.bin/jest --selectProjects unit",
24
+ "test:commands": "node --experimental-vm-modules $(npm root)/.bin/jest --selectProjects commands",
25
+ "test:e2e": "node --experimental-vm-modules $(npm root)/.bin/jest --selectProjects e2e",
26
+ "test:integration": "node --experimental-vm-modules $(npm root)/.bin/jest --selectProjects e2e",
27
+ "test:fast": "node --experimental-vm-modules $(npm root)/.bin/jest --selectProjects unit commands",
28
28
  "typecheck": "tsc --noEmit",
29
29
  "prepublishOnly": "npm run lint && npm run build && npm run test:unit"
30
30
  },
@@ -54,7 +54,7 @@
54
54
  "node": ">=20"
55
55
  },
56
56
  "dependencies": {
57
- "@cortexmemory/sdk": "^0.21.0",
57
+ "@cortexmemory/sdk": "*",
58
58
  "cli-table3": "^0.6.5",
59
59
  "commander": "^14.0.2",
60
60
  "convex": "^1.31.2",
@@ -72,8 +72,8 @@
72
72
  "@types/jest": "^30.0.0",
73
73
  "@types/node": "^25.0.3",
74
74
  "@types/prompts": "^2.4.9",
75
- "@typescript-eslint/eslint-plugin": "^8.50.0",
76
- "@typescript-eslint/parser": "^8.50.0",
75
+ "@typescript-eslint/eslint-plugin": "^8.50.1",
76
+ "@typescript-eslint/parser": "^8.50.1",
77
77
  "eslint": "^9.39.2",
78
78
  "globals": "^16.5.0",
79
79
  "jest": "^30.2.0",