@cortexmemory/cli 0.1.0 → 0.22.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 (114) hide show
  1. package/README.md +8 -0
  2. package/dist/commands/conversations.d.ts +1 -1
  3. package/dist/commands/conversations.d.ts.map +1 -1
  4. package/dist/commands/conversations.js +58 -28
  5. package/dist/commands/conversations.js.map +1 -1
  6. package/dist/commands/convex.d.ts +1 -1
  7. package/dist/commands/convex.d.ts.map +1 -1
  8. package/dist/commands/convex.js +237 -64
  9. package/dist/commands/convex.js.map +1 -1
  10. package/dist/commands/db.d.ts +1 -1
  11. package/dist/commands/db.d.ts.map +1 -1
  12. package/dist/commands/db.js +511 -113
  13. package/dist/commands/db.js.map +1 -1
  14. package/dist/commands/dev.d.ts +8 -8
  15. package/dist/commands/dev.d.ts.map +1 -1
  16. package/dist/commands/dev.js +734 -513
  17. package/dist/commands/dev.js.map +1 -1
  18. package/dist/commands/facts.d.ts +1 -1
  19. package/dist/commands/facts.d.ts.map +1 -1
  20. package/dist/commands/facts.js +79 -49
  21. package/dist/commands/facts.js.map +1 -1
  22. package/dist/commands/init.d.ts +28 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +895 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/memory.d.ts +1 -1
  27. package/dist/commands/memory.d.ts.map +1 -1
  28. package/dist/commands/memory.js +84 -48
  29. package/dist/commands/memory.js.map +1 -1
  30. package/dist/commands/setup.d.ts +4 -5
  31. package/dist/commands/setup.d.ts.map +1 -1
  32. package/dist/commands/setup.js +613 -265
  33. package/dist/commands/setup.js.map +1 -1
  34. package/dist/commands/spaces.d.ts +1 -1
  35. package/dist/commands/spaces.d.ts.map +1 -1
  36. package/dist/commands/spaces.js +100 -43
  37. package/dist/commands/spaces.js.map +1 -1
  38. package/dist/commands/status.d.ts +17 -0
  39. package/dist/commands/status.d.ts.map +1 -0
  40. package/dist/commands/status.js +314 -0
  41. package/dist/commands/status.js.map +1 -0
  42. package/dist/commands/users.d.ts +1 -1
  43. package/dist/commands/users.d.ts.map +1 -1
  44. package/dist/commands/users.js +152 -45
  45. package/dist/commands/users.js.map +1 -1
  46. package/dist/index.js +61 -19
  47. package/dist/index.js.map +1 -1
  48. package/dist/types.d.ts +11 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utils/__tests__/client.test.d.ts +5 -0
  51. package/dist/utils/__tests__/client.test.d.ts.map +1 -0
  52. package/dist/utils/__tests__/client.test.js +88 -0
  53. package/dist/utils/__tests__/client.test.js.map +1 -0
  54. package/dist/utils/__tests__/env-file.test.d.ts +7 -0
  55. package/dist/utils/__tests__/env-file.test.d.ts.map +1 -0
  56. package/dist/utils/__tests__/env-file.test.js +196 -0
  57. package/dist/utils/__tests__/env-file.test.js.map +1 -0
  58. package/dist/utils/__tests__/shell.test.d.ts +7 -0
  59. package/dist/utils/__tests__/shell.test.d.ts.map +1 -0
  60. package/dist/utils/__tests__/shell.test.js +89 -0
  61. package/dist/utils/__tests__/shell.test.js.map +1 -0
  62. package/dist/utils/client.d.ts +1 -0
  63. package/dist/utils/client.d.ts.map +1 -1
  64. package/dist/utils/client.js +7 -1
  65. package/dist/utils/client.js.map +1 -1
  66. package/dist/utils/config.d.ts.map +1 -1
  67. package/dist/utils/config.js +12 -39
  68. package/dist/utils/config.js.map +1 -1
  69. package/dist/utils/deployment-selector.d.ts +50 -0
  70. package/dist/utils/deployment-selector.d.ts.map +1 -0
  71. package/dist/utils/deployment-selector.js +129 -0
  72. package/dist/utils/deployment-selector.js.map +1 -0
  73. package/dist/utils/env-file.d.ts +48 -0
  74. package/dist/utils/env-file.d.ts.map +1 -0
  75. package/dist/utils/env-file.js +152 -0
  76. package/dist/utils/env-file.js.map +1 -0
  77. package/dist/utils/formatting.d.ts.map +1 -1
  78. package/dist/utils/formatting.js +4 -0
  79. package/dist/utils/formatting.js.map +1 -1
  80. package/dist/utils/init/convex-setup.d.ts +30 -0
  81. package/dist/utils/init/convex-setup.d.ts.map +1 -0
  82. package/dist/utils/init/convex-setup.js +225 -0
  83. package/dist/utils/init/convex-setup.js.map +1 -0
  84. package/dist/utils/init/env-generator.d.ts +32 -0
  85. package/dist/utils/init/env-generator.d.ts.map +1 -0
  86. package/dist/utils/init/env-generator.js +210 -0
  87. package/dist/utils/init/env-generator.js.map +1 -0
  88. package/dist/utils/init/file-operations.d.ts +22 -0
  89. package/dist/utils/init/file-operations.d.ts.map +1 -0
  90. package/dist/utils/init/file-operations.js +211 -0
  91. package/dist/utils/init/file-operations.js.map +1 -0
  92. package/dist/utils/init/graph-setup.d.ts +35 -0
  93. package/dist/utils/init/graph-setup.d.ts.map +1 -0
  94. package/dist/utils/init/graph-setup.js +413 -0
  95. package/dist/utils/init/graph-setup.js.map +1 -0
  96. package/dist/utils/init/index.d.ts +11 -0
  97. package/dist/utils/init/index.d.ts.map +1 -0
  98. package/dist/utils/init/index.js +11 -0
  99. package/dist/utils/init/index.js.map +1 -0
  100. package/dist/utils/init/types.d.ts +73 -0
  101. package/dist/utils/init/types.d.ts.map +1 -0
  102. package/dist/utils/init/types.js +5 -0
  103. package/dist/utils/init/types.js.map +1 -0
  104. package/dist/utils/shell.d.ts +60 -0
  105. package/dist/utils/shell.d.ts.map +1 -0
  106. package/dist/utils/shell.js +188 -0
  107. package/dist/utils/shell.js.map +1 -0
  108. package/package.json +30 -19
  109. package/templates/basic/README.md +105 -0
  110. package/templates/basic/dev-runner.mjs +215 -0
  111. package/templates/basic/package-lock.json +1263 -0
  112. package/templates/basic/package.json +22 -0
  113. package/templates/basic/src/index.ts +85 -0
  114. package/templates/basic/tsconfig.json +17 -0
@@ -0,0 +1,215 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable no-undef */
3
+ /**
4
+ * Development runner for Cortex projects
5
+ * Starts Convex in watch mode
6
+ */
7
+
8
+ import { spawn } from "child_process";
9
+ import { config } from "dotenv";
10
+ import { existsSync } from "fs";
11
+
12
+ // Load environment variables
13
+ config({ path: ".env.local" });
14
+
15
+ const CONVEX_URL = process.env.CONVEX_URL || "";
16
+ const isLocal =
17
+ CONVEX_URL.includes("localhost") || CONVEX_URL.includes("127.0.0.1");
18
+ const hasGraphConfig = process.env.NEO4J_URI || process.env.NEO4J_USERNAME;
19
+ const hasDockerCompose = existsSync("./docker-compose.graph.yml");
20
+
21
+ console.log("🚀 Starting Cortex development environment...\n");
22
+
23
+ // Start graph database if configured
24
+ if (hasGraphConfig && hasDockerCompose) {
25
+ console.log("🕸️ Starting graph database...");
26
+
27
+ // First check if Docker daemon is running
28
+ const dockerCheck = spawn("docker", ["info"], { stdio: "pipe" });
29
+
30
+ const dockerRunning = await new Promise((resolve) => {
31
+ let stderr = "";
32
+ dockerCheck.stderr?.on("data", (data) => {
33
+ stderr += data.toString();
34
+ });
35
+
36
+ dockerCheck.on("close", (code) => {
37
+ if (
38
+ code !== 0 &&
39
+ stderr.includes("Cannot connect to the Docker daemon")
40
+ ) {
41
+ console.log(" ❌ Docker is not running");
42
+ console.log(" 💡 Start Docker Desktop and run npm run dev again");
43
+ console.log("");
44
+ resolve(false);
45
+ } else {
46
+ resolve(true);
47
+ }
48
+ });
49
+
50
+ dockerCheck.on("error", () => {
51
+ console.log(" ⚠️ Docker not installed");
52
+ console.log(" 💡 Install: https://docker.com/products/docker-desktop");
53
+ console.log("");
54
+ resolve(false);
55
+ });
56
+ });
57
+
58
+ if (!dockerRunning) {
59
+ // Skip graph database startup
60
+ } else {
61
+ // Docker is running, start/restart containers
62
+ // Use 'up -d' which will start existing stopped containers or create new ones
63
+ const dockerUp = spawn(
64
+ "docker-compose",
65
+ ["-f", "docker-compose.graph.yml", "up", "-d", "--remove-orphans"],
66
+ {
67
+ stdio: "pipe",
68
+ },
69
+ );
70
+
71
+ await new Promise((resolve) => {
72
+ let stdout = "";
73
+ let stderr = "";
74
+
75
+ dockerUp.stdout?.on("data", (data) => {
76
+ stdout += data.toString();
77
+ });
78
+
79
+ dockerUp.stderr?.on("data", (data) => {
80
+ stderr += data.toString();
81
+ });
82
+
83
+ dockerUp.on("close", (code) => {
84
+ if (code === 0) {
85
+ // Check if containers started or were already running
86
+ if (stdout.includes("Running") || stdout.includes("Started")) {
87
+ if (stdout.includes("Running")) {
88
+ console.log(" ✓ Graph database already running");
89
+ } else {
90
+ console.log(" ✓ Graph database started");
91
+ }
92
+
93
+ if (
94
+ process.env.NEO4J_URI?.includes("neo4j") ||
95
+ stdout.includes("neo4j")
96
+ ) {
97
+ console.log(" Browser: http://localhost:7474");
98
+ } else {
99
+ console.log(" Lab: http://localhost:3000");
100
+ }
101
+ } else {
102
+ console.log(" ✓ Graph database ready");
103
+ }
104
+ } else {
105
+ console.log(" ⚠️ Failed to start graph database");
106
+
107
+ // Check common issues
108
+ if (stderr.includes("Cannot connect to the Docker daemon")) {
109
+ console.log(" ❌ Docker is not running");
110
+ console.log(" 💡 Start Docker Desktop and try again");
111
+ } else if (
112
+ stderr.includes("already in use") ||
113
+ stderr.includes("Conflict")
114
+ ) {
115
+ console.log(
116
+ " ⚠️ Container name conflict (old stopped container)",
117
+ );
118
+ console.log(" 💡 Fix: docker rm cortex-neo4j cortex-memgraph");
119
+ console.log(" Then run: npm run dev");
120
+ } else if (stderr.includes("already running")) {
121
+ console.log(" ✓ Container already running (that's fine!)");
122
+ } else if (stderr) {
123
+ console.log(
124
+ " Error:",
125
+ stderr.split("\n").find((l) => l.trim()) || stderr.split("\n")[0],
126
+ );
127
+ }
128
+ }
129
+ resolve();
130
+ });
131
+
132
+ dockerUp.on("error", () => {
133
+ console.log(" ⚠️ docker-compose command not found");
134
+ console.log(
135
+ " 💡 Install Docker Desktop: https://docker.com/products/docker-desktop",
136
+ );
137
+ resolve();
138
+ });
139
+ });
140
+ console.log("");
141
+ }
142
+ }
143
+
144
+ if (isLocal) {
145
+ console.log("📝 Mode: LOCAL");
146
+ console.log("🌐 Convex: http://127.0.0.1:3210");
147
+ } else {
148
+ console.log("📝 Mode: CLOUD");
149
+ console.log("🌐 Convex:", CONVEX_URL);
150
+ }
151
+
152
+ console.log("\n🔄 Watching for changes...");
153
+ console.log(" Press Ctrl+C to stop\n");
154
+
155
+ // Start Convex dev in watch mode
156
+ const args = ["convex", "dev"];
157
+
158
+ if (isLocal) {
159
+ args.push("--url", "http://127.0.0.1:3210");
160
+ }
161
+
162
+ const child = spawn("npx", args, {
163
+ stdio: "inherit",
164
+ env: process.env,
165
+ });
166
+
167
+ child.on("error", (err) => {
168
+ console.error("❌ Failed to start Convex:", err);
169
+ process.exit(1);
170
+ });
171
+
172
+ child.on("close", (code) => {
173
+ if (code !== 0 && !stopping) {
174
+ // Only show error if we're not intentionally stopping
175
+ console.error(`\n❌ Convex exited unexpectedly with code ${code}`);
176
+ process.exit(code);
177
+ }
178
+ });
179
+
180
+ // Handle Ctrl+C
181
+ let stopping = false;
182
+ process.on("SIGINT", () => {
183
+ if (stopping) return; // Prevent double execution
184
+ stopping = true;
185
+
186
+ console.log("\n\n👋 Stopping development environment...");
187
+
188
+ // Kill Convex gracefully
189
+ child.kill("SIGTERM");
190
+
191
+ // Stop graph database if it was started
192
+ if (hasGraphConfig && hasDockerCompose) {
193
+ console.log("🕸️ Stopping graph database...");
194
+ const dockerDown = spawn(
195
+ "docker-compose",
196
+ ["-f", "docker-compose.graph.yml", "stop"],
197
+ {
198
+ stdio: "pipe",
199
+ },
200
+ );
201
+
202
+ dockerDown.on("close", () => {
203
+ console.log(" ✓ Graph database stopped");
204
+ process.exit(0);
205
+ });
206
+
207
+ // Timeout after 5 seconds
208
+ setTimeout(() => {
209
+ console.log(" ⏱️ Timeout - forcing exit");
210
+ process.exit(0);
211
+ }, 5000);
212
+ } else {
213
+ process.exit(0);
214
+ }
215
+ });