@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.
- package/README.md +8 -0
- package/dist/commands/conversations.d.ts +1 -1
- package/dist/commands/conversations.d.ts.map +1 -1
- package/dist/commands/conversations.js +58 -28
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/convex.d.ts +1 -1
- package/dist/commands/convex.d.ts.map +1 -1
- package/dist/commands/convex.js +237 -64
- package/dist/commands/convex.js.map +1 -1
- package/dist/commands/db.d.ts +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +511 -113
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/dev.d.ts +8 -8
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +734 -513
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/facts.d.ts +1 -1
- package/dist/commands/facts.d.ts.map +1 -1
- package/dist/commands/facts.js +79 -49
- package/dist/commands/facts.js.map +1 -1
- package/dist/commands/init.d.ts +28 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +895 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +1 -1
- package/dist/commands/memory.d.ts.map +1 -1
- package/dist/commands/memory.js +84 -48
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/setup.d.ts +4 -5
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +613 -265
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spaces.d.ts +1 -1
- package/dist/commands/spaces.d.ts.map +1 -1
- package/dist/commands/spaces.js +100 -43
- package/dist/commands/spaces.js.map +1 -1
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +314 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/users.d.ts +1 -1
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +152 -45
- package/dist/commands/users.js.map +1 -1
- package/dist/index.js +61 -19
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/__tests__/client.test.d.ts +5 -0
- package/dist/utils/__tests__/client.test.d.ts.map +1 -0
- package/dist/utils/__tests__/client.test.js +88 -0
- package/dist/utils/__tests__/client.test.js.map +1 -0
- package/dist/utils/__tests__/env-file.test.d.ts +7 -0
- package/dist/utils/__tests__/env-file.test.d.ts.map +1 -0
- package/dist/utils/__tests__/env-file.test.js +196 -0
- package/dist/utils/__tests__/env-file.test.js.map +1 -0
- package/dist/utils/__tests__/shell.test.d.ts +7 -0
- package/dist/utils/__tests__/shell.test.d.ts.map +1 -0
- package/dist/utils/__tests__/shell.test.js +89 -0
- package/dist/utils/__tests__/shell.test.js.map +1 -0
- package/dist/utils/client.d.ts +1 -0
- package/dist/utils/client.d.ts.map +1 -1
- package/dist/utils/client.js +7 -1
- package/dist/utils/client.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -39
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/deployment-selector.d.ts +50 -0
- package/dist/utils/deployment-selector.d.ts.map +1 -0
- package/dist/utils/deployment-selector.js +129 -0
- package/dist/utils/deployment-selector.js.map +1 -0
- package/dist/utils/env-file.d.ts +48 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +152 -0
- package/dist/utils/env-file.js.map +1 -0
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +4 -0
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/init/convex-setup.d.ts +30 -0
- package/dist/utils/init/convex-setup.d.ts.map +1 -0
- package/dist/utils/init/convex-setup.js +225 -0
- package/dist/utils/init/convex-setup.js.map +1 -0
- package/dist/utils/init/env-generator.d.ts +32 -0
- package/dist/utils/init/env-generator.d.ts.map +1 -0
- package/dist/utils/init/env-generator.js +210 -0
- package/dist/utils/init/env-generator.js.map +1 -0
- package/dist/utils/init/file-operations.d.ts +22 -0
- package/dist/utils/init/file-operations.d.ts.map +1 -0
- package/dist/utils/init/file-operations.js +211 -0
- package/dist/utils/init/file-operations.js.map +1 -0
- package/dist/utils/init/graph-setup.d.ts +35 -0
- package/dist/utils/init/graph-setup.d.ts.map +1 -0
- package/dist/utils/init/graph-setup.js +413 -0
- package/dist/utils/init/graph-setup.js.map +1 -0
- package/dist/utils/init/index.d.ts +11 -0
- package/dist/utils/init/index.d.ts.map +1 -0
- package/dist/utils/init/index.js +11 -0
- package/dist/utils/init/index.js.map +1 -0
- package/dist/utils/init/types.d.ts +73 -0
- package/dist/utils/init/types.d.ts.map +1 -0
- package/dist/utils/init/types.js +5 -0
- package/dist/utils/init/types.js.map +1 -0
- package/dist/utils/shell.d.ts +60 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +188 -0
- package/dist/utils/shell.js.map +1 -0
- package/package.json +30 -19
- package/templates/basic/README.md +105 -0
- package/templates/basic/dev-runner.mjs +215 -0
- package/templates/basic/package-lock.json +1263 -0
- package/templates/basic/package.json +22 -0
- package/templates/basic/src/index.ts +85 -0
- 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
|
+
});
|