@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.
Files changed (75) hide show
  1. package/README.md +325 -0
  2. package/dist/commands/conversations.d.ts +16 -0
  3. package/dist/commands/conversations.d.ts.map +1 -0
  4. package/dist/commands/conversations.js +421 -0
  5. package/dist/commands/conversations.js.map +1 -0
  6. package/dist/commands/convex.d.ts +17 -0
  7. package/dist/commands/convex.d.ts.map +1 -0
  8. package/dist/commands/convex.js +442 -0
  9. package/dist/commands/convex.js.map +1 -0
  10. package/dist/commands/db.d.ts +16 -0
  11. package/dist/commands/db.d.ts.map +1 -0
  12. package/dist/commands/db.js +371 -0
  13. package/dist/commands/db.js.map +1 -0
  14. package/dist/commands/dev.d.ts +16 -0
  15. package/dist/commands/dev.d.ts.map +1 -0
  16. package/dist/commands/dev.js +558 -0
  17. package/dist/commands/dev.js.map +1 -0
  18. package/dist/commands/facts.d.ts +17 -0
  19. package/dist/commands/facts.d.ts.map +1 -0
  20. package/dist/commands/facts.js +386 -0
  21. package/dist/commands/facts.js.map +1 -0
  22. package/dist/commands/memory.d.ts +18 -0
  23. package/dist/commands/memory.d.ts.map +1 -0
  24. package/dist/commands/memory.js +486 -0
  25. package/dist/commands/memory.js.map +1 -0
  26. package/dist/commands/setup.d.ts +14 -0
  27. package/dist/commands/setup.d.ts.map +1 -0
  28. package/dist/commands/setup.js +494 -0
  29. package/dist/commands/setup.js.map +1 -0
  30. package/dist/commands/spaces.d.ts +18 -0
  31. package/dist/commands/spaces.d.ts.map +1 -0
  32. package/dist/commands/spaces.js +553 -0
  33. package/dist/commands/spaces.js.map +1 -0
  34. package/dist/commands/users.d.ts +18 -0
  35. package/dist/commands/users.d.ts.map +1 -0
  36. package/dist/commands/users.js +486 -0
  37. package/dist/commands/users.js.map +1 -0
  38. package/dist/index.d.ts +9 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +70 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types.d.ts +144 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +5 -0
  45. package/dist/types.js.map +1 -0
  46. package/dist/utils/__tests__/config.test.d.ts +5 -0
  47. package/dist/utils/__tests__/config.test.d.ts.map +1 -0
  48. package/dist/utils/__tests__/config.test.js +127 -0
  49. package/dist/utils/__tests__/config.test.js.map +1 -0
  50. package/dist/utils/__tests__/formatting.test.d.ts +5 -0
  51. package/dist/utils/__tests__/formatting.test.d.ts.map +1 -0
  52. package/dist/utils/__tests__/formatting.test.js +132 -0
  53. package/dist/utils/__tests__/formatting.test.js.map +1 -0
  54. package/dist/utils/__tests__/validation.test.d.ts +5 -0
  55. package/dist/utils/__tests__/validation.test.d.ts.map +1 -0
  56. package/dist/utils/__tests__/validation.test.js +207 -0
  57. package/dist/utils/__tests__/validation.test.js.map +1 -0
  58. package/dist/utils/client.d.ts +42 -0
  59. package/dist/utils/client.d.ts.map +1 -0
  60. package/dist/utils/client.js +108 -0
  61. package/dist/utils/client.js.map +1 -0
  62. package/dist/utils/config.d.ts +67 -0
  63. package/dist/utils/config.d.ts.map +1 -0
  64. package/dist/utils/config.js +261 -0
  65. package/dist/utils/config.js.map +1 -0
  66. package/dist/utils/formatting.d.ts +81 -0
  67. package/dist/utils/formatting.d.ts.map +1 -0
  68. package/dist/utils/formatting.js +239 -0
  69. package/dist/utils/formatting.js.map +1 -0
  70. package/dist/utils/validation.d.ts +83 -0
  71. package/dist/utils/validation.d.ts.map +1 -0
  72. package/dist/utils/validation.js +243 -0
  73. package/dist/utils/validation.js.map +1 -0
  74. package/package.json +72 -0
  75. package/templates/.cortexrc.template +15 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Cortex CLI Types
3
+ */
4
+ /**
5
+ * Output format options
6
+ */
7
+ export type OutputFormat = "table" | "json" | "csv";
8
+ /**
9
+ * CLI configuration stored in ~/.cortexrc or ./cortex.config.json
10
+ */
11
+ export interface CLIConfig {
12
+ deployments: Record<string, DeploymentConfig>;
13
+ default: string;
14
+ format: OutputFormat;
15
+ confirmDangerous: boolean;
16
+ }
17
+ /**
18
+ * Configuration for a single deployment
19
+ */
20
+ export interface DeploymentConfig {
21
+ url: string;
22
+ key?: string;
23
+ deployment?: string;
24
+ }
25
+ /**
26
+ * Global CLI options that can be passed to any command
27
+ */
28
+ export interface GlobalOptions {
29
+ deployment?: string;
30
+ url?: string;
31
+ key?: string;
32
+ format?: OutputFormat;
33
+ quiet?: boolean;
34
+ debug?: boolean;
35
+ }
36
+ /**
37
+ * Memory space types
38
+ */
39
+ export type MemorySpaceType = "personal" | "team" | "project" | "custom";
40
+ /**
41
+ * Memory space status
42
+ */
43
+ export type MemorySpaceStatus = "active" | "archived";
44
+ /**
45
+ * Fact types
46
+ */
47
+ export type FactType = "preference" | "identity" | "knowledge" | "relationship" | "event" | "observation" | "custom";
48
+ /**
49
+ * Source types for memories
50
+ */
51
+ export type SourceType = "conversation" | "system" | "tool" | "a2a" | "fact-extraction";
52
+ /**
53
+ * Statistics result for memory spaces
54
+ */
55
+ export interface SpaceStats {
56
+ memorySpaceId: string;
57
+ conversationCount: number;
58
+ memoryCount: number;
59
+ factCount: number;
60
+ participantCount: number;
61
+ lastActivity?: number;
62
+ }
63
+ /**
64
+ * Database statistics
65
+ */
66
+ export interface DatabaseStats {
67
+ memorySpaces: number;
68
+ conversations: number;
69
+ memories: number;
70
+ facts: number;
71
+ users: number;
72
+ immutableRecords: number;
73
+ mutableRecords: number;
74
+ contexts: number;
75
+ }
76
+ /**
77
+ * Backup data structure
78
+ */
79
+ export interface BackupData {
80
+ version: string;
81
+ timestamp: number;
82
+ deployment: string;
83
+ data: {
84
+ memorySpaces?: unknown[];
85
+ conversations?: unknown[];
86
+ memories?: unknown[];
87
+ facts?: unknown[];
88
+ users?: unknown[];
89
+ immutable?: unknown[];
90
+ mutable?: unknown[];
91
+ contexts?: unknown[];
92
+ };
93
+ }
94
+ /**
95
+ * Result of a delete operation
96
+ */
97
+ export interface DeleteResult {
98
+ deleted: boolean;
99
+ count: number;
100
+ ids: string[];
101
+ }
102
+ /**
103
+ * Result of a cascade deletion
104
+ */
105
+ export interface CascadeDeleteResult {
106
+ deleted: boolean;
107
+ memoriesDeleted: number;
108
+ conversationsDeleted: number;
109
+ factsDeleted: number;
110
+ contextsDeleted: number;
111
+ totalDeleted: number;
112
+ }
113
+ /**
114
+ * User delete result with GDPR cascade
115
+ */
116
+ export interface UserDeleteResult {
117
+ userId: string;
118
+ deletedAt: number;
119
+ conversationsDeleted: number;
120
+ conversationMessagesDeleted: number;
121
+ immutableRecordsDeleted: number;
122
+ mutableKeysDeleted: number;
123
+ vectorMemoriesDeleted: number;
124
+ factsDeleted: number;
125
+ graphNodesDeleted?: number;
126
+ verification: {
127
+ complete: boolean;
128
+ issues: string[];
129
+ };
130
+ totalDeleted: number;
131
+ deletedLayers: string[];
132
+ }
133
+ /**
134
+ * Command handler context
135
+ */
136
+ export interface CommandContext {
137
+ config: CLIConfig;
138
+ convexUrl: string;
139
+ convexKey?: string;
140
+ format: OutputFormat;
141
+ quiet: boolean;
142
+ debug: boolean;
143
+ }
144
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Cortex CLI Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Config Utilities Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/config.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Config Utilities Tests
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from "@jest/globals";
5
+ import { getDeployment, resolveConfig, listDeployments } from "../config.js";
6
+ describe("config utilities", () => {
7
+ const mockConfig = {
8
+ deployments: {
9
+ local: {
10
+ url: "http://127.0.0.1:3210",
11
+ deployment: "anonymous:local",
12
+ },
13
+ staging: {
14
+ url: "https://staging.convex.cloud",
15
+ key: "staging-key",
16
+ },
17
+ production: {
18
+ url: "https://prod.convex.cloud",
19
+ key: "prod-key",
20
+ },
21
+ },
22
+ default: "local",
23
+ format: "table",
24
+ confirmDangerous: true,
25
+ };
26
+ describe("getDeployment", () => {
27
+ it("should return deployment by name", () => {
28
+ const deployment = getDeployment(mockConfig, "staging");
29
+ expect(deployment).toEqual({
30
+ url: "https://staging.convex.cloud",
31
+ key: "staging-key",
32
+ });
33
+ });
34
+ it("should return default deployment when name not provided", () => {
35
+ const deployment = getDeployment(mockConfig);
36
+ expect(deployment).toEqual({
37
+ url: "http://127.0.0.1:3210",
38
+ deployment: "anonymous:local",
39
+ });
40
+ });
41
+ it("should return null for non-existent deployment", () => {
42
+ const deployment = getDeployment(mockConfig, "nonexistent");
43
+ expect(deployment).toBeNull();
44
+ });
45
+ });
46
+ describe("resolveConfig", () => {
47
+ it("should use URL from options if provided", () => {
48
+ const resolved = resolveConfig(mockConfig, {
49
+ url: "http://custom:3000",
50
+ key: "custom-key",
51
+ });
52
+ expect(resolved.url).toBe("http://custom:3000");
53
+ expect(resolved.key).toBe("custom-key");
54
+ });
55
+ it("should use deployment from options", () => {
56
+ const resolved = resolveConfig(mockConfig, {
57
+ deployment: "production",
58
+ });
59
+ expect(resolved.url).toBe("https://prod.convex.cloud");
60
+ expect(resolved.key).toBe("prod-key");
61
+ });
62
+ it("should use default deployment when no options", () => {
63
+ const resolved = resolveConfig(mockConfig, {});
64
+ expect(resolved.url).toBe("http://127.0.0.1:3210");
65
+ expect(resolved.deployment).toBe("anonymous:local");
66
+ });
67
+ it("should throw for non-existent deployment", () => {
68
+ expect(() => resolveConfig(mockConfig, { deployment: "nonexistent" })).toThrow('Deployment "nonexistent" not found');
69
+ });
70
+ it("should use format from options", () => {
71
+ const resolved = resolveConfig(mockConfig, { format: "json" });
72
+ expect(resolved.format).toBe("json");
73
+ });
74
+ it("should use format from config when not in options", () => {
75
+ const resolved = resolveConfig(mockConfig, {});
76
+ expect(resolved.format).toBe("table");
77
+ });
78
+ it("should handle quiet option", () => {
79
+ const resolved = resolveConfig(mockConfig, { quiet: true });
80
+ expect(resolved.quiet).toBe(true);
81
+ });
82
+ it("should handle debug option", () => {
83
+ const resolved = resolveConfig(mockConfig, { debug: true });
84
+ expect(resolved.debug).toBe(true);
85
+ });
86
+ });
87
+ describe("listDeployments", () => {
88
+ it("should list all deployments", () => {
89
+ const deployments = listDeployments(mockConfig);
90
+ expect(deployments).toHaveLength(3);
91
+ });
92
+ it("should include deployment names", () => {
93
+ const deployments = listDeployments(mockConfig);
94
+ const names = deployments.map((d) => d.name);
95
+ expect(names).toContain("local");
96
+ expect(names).toContain("staging");
97
+ expect(names).toContain("production");
98
+ });
99
+ it("should mark default deployment", () => {
100
+ const deployments = listDeployments(mockConfig);
101
+ const defaultDeployment = deployments.find((d) => d.isDefault);
102
+ expect(defaultDeployment?.name).toBe("local");
103
+ });
104
+ it("should indicate which deployments have keys", () => {
105
+ const deployments = listDeployments(mockConfig);
106
+ const local = deployments.find((d) => d.name === "local");
107
+ const staging = deployments.find((d) => d.name === "staging");
108
+ expect(local?.hasKey).toBe(false);
109
+ expect(staging?.hasKey).toBe(true);
110
+ });
111
+ });
112
+ });
113
+ describe("environment variable overrides", () => {
114
+ const originalEnv = process.env;
115
+ beforeEach(() => {
116
+ process.env = { ...originalEnv };
117
+ });
118
+ afterEach(() => {
119
+ process.env = originalEnv;
120
+ });
121
+ it("should be tested in integration tests with actual config loading", () => {
122
+ // Environment overrides are applied during loadConfig()
123
+ // These should be tested in integration tests
124
+ expect(true).toBe(true);
125
+ });
126
+ });
127
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Formatting Utilities Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=formatting.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/formatting.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Formatting Utilities Tests
3
+ */
4
+ import { describe, it, expect } from "@jest/globals";
5
+ import { formatJSON, formatCSV, formatTimestamp, formatRelativeTime, formatBytes, formatCount, } from "../formatting.js";
6
+ describe("formatting utilities", () => {
7
+ describe("formatJSON", () => {
8
+ it("should format objects as pretty JSON", () => {
9
+ const data = { key: "value", num: 42 };
10
+ const result = formatJSON(data);
11
+ expect(result).toBe(JSON.stringify(data, null, 2));
12
+ });
13
+ it("should format arrays", () => {
14
+ const data = [1, 2, 3];
15
+ const result = formatJSON(data);
16
+ expect(result).toBe(JSON.stringify(data, null, 2));
17
+ });
18
+ it("should handle null", () => {
19
+ expect(formatJSON(null)).toBe("null");
20
+ });
21
+ it("should handle strings", () => {
22
+ expect(formatJSON("test")).toBe('"test"');
23
+ });
24
+ });
25
+ describe("formatCSV", () => {
26
+ it("should format array of objects as CSV", () => {
27
+ const data = [
28
+ { name: "Alice", age: 30 },
29
+ { name: "Bob", age: 25 },
30
+ ];
31
+ const result = formatCSV(data);
32
+ expect(result).toContain("name,age");
33
+ expect(result).toContain("Alice,30");
34
+ expect(result).toContain("Bob,25");
35
+ });
36
+ it("should handle custom headers", () => {
37
+ const data = [{ name: "Test", extra: "ignored" }];
38
+ const result = formatCSV(data, ["name"]);
39
+ expect(result).toContain("name");
40
+ expect(result).not.toContain("extra");
41
+ });
42
+ it("should escape values with commas", () => {
43
+ const data = [{ text: "hello, world" }];
44
+ const result = formatCSV(data);
45
+ expect(result).toContain('"hello, world"');
46
+ });
47
+ it("should escape values with quotes", () => {
48
+ const data = [{ text: 'say "hello"' }];
49
+ const result = formatCSV(data);
50
+ expect(result).toContain('"say ""hello"""');
51
+ });
52
+ it("should handle empty array", () => {
53
+ expect(formatCSV([])).toBe("");
54
+ });
55
+ it("should wrap single object in array", () => {
56
+ const data = { name: "Test" };
57
+ const result = formatCSV(data);
58
+ expect(result).toContain("name");
59
+ expect(result).toContain("Test");
60
+ });
61
+ });
62
+ describe("formatTimestamp", () => {
63
+ it("should format timestamp as locale string", () => {
64
+ const timestamp = new Date("2025-01-15T10:30:00Z").getTime();
65
+ const result = formatTimestamp(timestamp);
66
+ expect(result).toBeTruthy();
67
+ expect(typeof result).toBe("string");
68
+ });
69
+ it("should handle current timestamp", () => {
70
+ const result = formatTimestamp(Date.now());
71
+ expect(result).toBeTruthy();
72
+ });
73
+ });
74
+ describe("formatRelativeTime", () => {
75
+ it('should format recent time as "just now"', () => {
76
+ const timestamp = Date.now() - 30000; // 30 seconds ago
77
+ const result = formatRelativeTime(timestamp);
78
+ expect(result).toBe("just now");
79
+ });
80
+ it("should format minutes ago", () => {
81
+ const timestamp = Date.now() - 5 * 60 * 1000; // 5 minutes ago
82
+ const result = formatRelativeTime(timestamp);
83
+ expect(result).toBe("5m ago");
84
+ });
85
+ it("should format hours ago", () => {
86
+ const timestamp = Date.now() - 3 * 60 * 60 * 1000; // 3 hours ago
87
+ const result = formatRelativeTime(timestamp);
88
+ expect(result).toBe("3h ago");
89
+ });
90
+ it("should format days ago", () => {
91
+ const timestamp = Date.now() - 2 * 24 * 60 * 60 * 1000; // 2 days ago
92
+ const result = formatRelativeTime(timestamp);
93
+ expect(result).toBe("2d ago");
94
+ });
95
+ });
96
+ describe("formatBytes", () => {
97
+ it("should format bytes", () => {
98
+ expect(formatBytes(500)).toBe("500.0 B");
99
+ });
100
+ it("should format kilobytes", () => {
101
+ expect(formatBytes(1024)).toBe("1.0 KB");
102
+ expect(formatBytes(2048)).toBe("2.0 KB");
103
+ });
104
+ it("should format megabytes", () => {
105
+ expect(formatBytes(1024 * 1024)).toBe("1.0 MB");
106
+ });
107
+ it("should format gigabytes", () => {
108
+ expect(formatBytes(1024 * 1024 * 1024)).toBe("1.0 GB");
109
+ });
110
+ it("should handle zero", () => {
111
+ expect(formatBytes(0)).toBe("0.0 B");
112
+ });
113
+ });
114
+ describe("formatCount", () => {
115
+ it("should format singular", () => {
116
+ expect(formatCount(1, "memory", "memories")).toBe("1 memory");
117
+ expect(formatCount(1, "user")).toBe("1 user");
118
+ });
119
+ it("should format plural", () => {
120
+ expect(formatCount(5, "memory", "memories")).toBe("5 memories");
121
+ expect(formatCount(0, "memory", "memories")).toBe("0 memories");
122
+ });
123
+ it("should auto-pluralize without explicit plural", () => {
124
+ expect(formatCount(2, "user")).toBe("2 users");
125
+ });
126
+ it("should format large numbers with commas", () => {
127
+ expect(formatCount(1000, "item")).toBe("1,000 items");
128
+ expect(formatCount(1000000, "record")).toBe("1,000,000 records");
129
+ });
130
+ });
131
+ });
132
+ //# sourceMappingURL=formatting.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/formatting.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Validation Utilities Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=validation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/validation.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}