memax-cli 0.1.2 → 0.1.3-alpha.15

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 (56) hide show
  1. package/LICENSE +201 -21
  2. package/NOTICE +5 -0
  3. package/README.md +4 -3
  4. package/dist/commands/agent-sessions.js +3 -3
  5. package/dist/commands/agent-sessions.js.map +1 -1
  6. package/dist/commands/dreams.d.ts +22 -1
  7. package/dist/commands/dreams.d.ts.map +1 -1
  8. package/dist/commands/dreams.js +98 -0
  9. package/dist/commands/dreams.js.map +1 -1
  10. package/dist/lib/project-context.d.ts +5 -5
  11. package/dist/lib/project-context.js +5 -5
  12. package/package.json +5 -4
  13. package/dist/commands/agent-configs.test.d.ts +0 -2
  14. package/dist/commands/agent-configs.test.d.ts.map +0 -1
  15. package/dist/commands/agent-configs.test.js +0 -122
  16. package/dist/commands/agent-configs.test.js.map +0 -1
  17. package/dist/commands/agent-sessions.test.d.ts +0 -2
  18. package/dist/commands/agent-sessions.test.d.ts.map +0 -1
  19. package/dist/commands/agent-sessions.test.js +0 -255
  20. package/dist/commands/agent-sessions.test.js.map +0 -1
  21. package/dist/commands/dreams.test.d.ts +0 -2
  22. package/dist/commands/dreams.test.d.ts.map +0 -1
  23. package/dist/commands/dreams.test.js +0 -39
  24. package/dist/commands/dreams.test.js.map +0 -1
  25. package/dist/commands/hub.test.d.ts +0 -2
  26. package/dist/commands/hub.test.d.ts.map +0 -1
  27. package/dist/commands/hub.test.js +0 -62
  28. package/dist/commands/hub.test.js.map +0 -1
  29. package/dist/commands/import.test.d.ts +0 -2
  30. package/dist/commands/import.test.d.ts.map +0 -1
  31. package/dist/commands/import.test.js +0 -11
  32. package/dist/commands/import.test.js.map +0 -1
  33. package/dist/commands/list.test.d.ts +0 -2
  34. package/dist/commands/list.test.d.ts.map +0 -1
  35. package/dist/commands/list.test.js +0 -20
  36. package/dist/commands/list.test.js.map +0 -1
  37. package/dist/commands/recall.test.d.ts +0 -2
  38. package/dist/commands/recall.test.d.ts.map +0 -1
  39. package/dist/commands/recall.test.js +0 -31
  40. package/dist/commands/recall.test.js.map +0 -1
  41. package/dist/commands/topic.test.d.ts +0 -2
  42. package/dist/commands/topic.test.d.ts.map +0 -1
  43. package/dist/commands/topic.test.js +0 -114
  44. package/dist/commands/topic.test.js.map +0 -1
  45. package/dist/lib/client.test.d.ts +0 -2
  46. package/dist/lib/client.test.d.ts.map +0 -1
  47. package/dist/lib/client.test.js +0 -44
  48. package/dist/lib/client.test.js.map +0 -1
  49. package/dist/lib/hubs.test.d.ts +0 -2
  50. package/dist/lib/hubs.test.d.ts.map +0 -1
  51. package/dist/lib/hubs.test.js +0 -58
  52. package/dist/lib/hubs.test.js.map +0 -1
  53. package/dist/lib/project-context.test.d.ts +0 -2
  54. package/dist/lib/project-context.test.d.ts.map +0 -1
  55. package/dist/lib/project-context.test.js +0 -75
  56. package/dist/lib/project-context.test.js.map +0 -1
@@ -194,6 +194,98 @@ export async function dreamsReportCommand(options) {
194
194
  process.exit(1);
195
195
  }
196
196
  }
197
+ /**
198
+ * formatQuota turns a DreamUsage snapshot into a list of lines for
199
+ * terminal output. Pure for testing — printQuota wraps it with
200
+ * chalk + console.
201
+ *
202
+ * Branching matches the web indicator's renderDreamQuotaHint:
203
+ *
204
+ * - limit === 0 → tier disabled; show upgrade hint
205
+ * - limit === -1 → unlimited; show used count, no cap line
206
+ * - !allowed at finite cap → exhausted; show used/limit + reset
207
+ * - finite under cap → standard "X of Y" with remaining + reset
208
+ *
209
+ * Reset date is formatted in UTC (matches API contract; avoids
210
+ * the off-by-one bug that bites browser clients in non-UTC zones).
211
+ */
212
+ export function formatQuota(usage) {
213
+ const lines = [];
214
+ const scopeLabel = usage.scope === "hub" ? "this hub" : "your personal quota";
215
+ lines.push(`Dream quota — ${scopeLabel}`);
216
+ if (usage.limit === 0) {
217
+ lines.push(` This ${usage.scope === "hub" ? "hub" : "account"} doesn't have dreams included in its plan.`);
218
+ lines.push(" Upgrade: https://memax.app/settings/billing");
219
+ return lines;
220
+ }
221
+ const tierLabel = usage.tier === "lucid" ? "Lucid" : "Basic";
222
+ lines.push(` tier: ${tierLabel}`);
223
+ if (usage.limit === -1) {
224
+ lines.push(` used: ${usage.used} (unlimited)`);
225
+ return lines;
226
+ }
227
+ const remaining = usage.remaining ?? Math.max(usage.limit - usage.used, 0);
228
+ const exhausted = !usage.allowed && usage.used >= usage.limit;
229
+ const usedSuffix = exhausted ? " (exhausted)" : "";
230
+ lines.push(` used: ${usage.used} of ${usage.limit}${usedSuffix}`);
231
+ if (!exhausted) {
232
+ lines.push(` remains: ${remaining}`);
233
+ }
234
+ // Reset = period_end + 1 day, formatted UTC. Same contract as
235
+ // server-side: period_end is the LAST day of the period at UTC
236
+ // midnight, so reset = next-day midnight = first day of next
237
+ // period.
238
+ const reset = new Date(usage.period_end);
239
+ reset.setUTCDate(reset.getUTCDate() + 1);
240
+ const resetLabel = reset.toLocaleDateString("en-US", {
241
+ month: "short",
242
+ day: "numeric",
243
+ timeZone: "UTC",
244
+ });
245
+ lines.push(` resets: ${resetLabel}`);
246
+ return lines;
247
+ }
248
+ function printQuota(usage) {
249
+ const lines = formatQuota(usage);
250
+ // Headline gets the signature ✦. Disabled tier (line[1] starts
251
+ // with " This") gets a yellow caution color; exhausted state
252
+ // (line ends with "(exhausted)") gets the same warn color the
253
+ // web indicator uses. Everything else is plain so the column
254
+ // alignment reads as a tidy block.
255
+ const exhausted = lines.some((l) => l.endsWith("(exhausted)"));
256
+ const disabled = usage.limit === 0;
257
+ const headline = disabled || exhausted
258
+ ? chalk.yellow(`✦ ${lines[0]}`)
259
+ : chalk.cyan(`✦ ${lines[0]}`);
260
+ console.log(headline);
261
+ for (const line of lines.slice(1)) {
262
+ console.log(line);
263
+ }
264
+ }
265
+ export async function dreamsQuotaCommand(options) {
266
+ try {
267
+ const format = options.format ?? "text";
268
+ if (format !== "text" && format !== "json") {
269
+ throw new Error(`Unsupported --format value: ${format}`);
270
+ }
271
+ const hubId = options.hub
272
+ ? await resolveHubID(options.hub)
273
+ : getActiveHubID() || undefined;
274
+ if (options.hub && !hubId) {
275
+ throw new Error("Hub not found or not accessible. Run `memax hub list` to see available hubs.");
276
+ }
277
+ const usage = await getClient().dreams.usage(hubId ? { hubId } : undefined);
278
+ if (format === "json") {
279
+ process.stdout.write(`${JSON.stringify(usage, null, 2)}\n`);
280
+ return;
281
+ }
282
+ printQuota(usage);
283
+ }
284
+ catch (err) {
285
+ console.error(chalk.red(`Dream quota failed: ${err.message}`));
286
+ process.exit(1);
287
+ }
288
+ }
197
289
  export async function dreamsTriggerCommand(options) {
198
290
  try {
199
291
  const format = options.format ?? "text";
@@ -247,5 +339,11 @@ export function registerDreamsCommands(program) {
247
339
  .option("--hub <slug>", "Scope to a hub")
248
340
  .option("--format <format>", "Output format: text, json", "text")
249
341
  .action(dreamsTriggerCommand);
342
+ dreamsCmd
343
+ .command("quota")
344
+ .description("Show your dream quota for the current period")
345
+ .option("--hub <slug>", "Scope to a hub (defaults to active hub; personal if none)")
346
+ .option("--format <format>", "Output format: text, json", "text")
347
+ .action(dreamsQuotaCommand);
250
348
  }
251
349
  //# sourceMappingURL=dreams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dreams.js","sourceRoot":"","sources":["../../src/commands/dreams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dreams.js","sourceRoot":"","sources":["../../src/commands/dreams.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import type { Scope } from "memax-sdk";
2
2
  /**
3
3
  * Normalize a git remote URL to a canonical form for use as a project identifier.
4
4
  *
5
- * All of these produce the same result: `github.com/memaxlabs/memax`
6
- * - https://github.com/MemaxLabs/memax.git
7
- * - git@github.com:MemaxLabs/memax.git
8
- * - ssh://git@github.com/MemaxLabs/memax
5
+ * All of these produce the same result: `github.com/acme/project`
6
+ * - https://github.com/acme/project.git
7
+ * - git@github.com:acme/project.git
8
+ * - ssh://git@github.com/acme/project
9
9
  */
10
10
  export declare function normalizeRepoUrl(url: string): string;
11
11
  export interface MemaxYmlConfig {
@@ -35,7 +35,7 @@ export declare function resolveProjectRootPath(dir?: string): string | null;
35
35
  * Resolve a Claude Code mangled project folder name to a normalized repo URL.
36
36
  *
37
37
  * Claude Code names project folders by replacing "/" with "-" in the absolute path:
38
- * "-workspaces-memax" → /workspaces/memax
38
+ * "-workspaces-project" → /workspaces/project
39
39
  * "-Users-ziyang-code-memax" → /Users/ziyang/code/memax
40
40
  *
41
41
  * Returns the normalized repo URL if the path exists and is a git repo, null otherwise.
@@ -7,10 +7,10 @@ import { dirname, join } from "node:path";
7
7
  /**
8
8
  * Normalize a git remote URL to a canonical form for use as a project identifier.
9
9
  *
10
- * All of these produce the same result: `github.com/memaxlabs/memax`
11
- * - https://github.com/MemaxLabs/memax.git
12
- * - git@github.com:MemaxLabs/memax.git
13
- * - ssh://git@github.com/MemaxLabs/memax
10
+ * All of these produce the same result: `github.com/acme/project`
11
+ * - https://github.com/acme/project.git
12
+ * - git@github.com:acme/project.git
13
+ * - ssh://git@github.com/acme/project
14
14
  */
15
15
  export function normalizeRepoUrl(url) {
16
16
  let s = url.trim();
@@ -157,7 +157,7 @@ export function resolveProjectRootPath(dir) {
157
157
  * Resolve a Claude Code mangled project folder name to a normalized repo URL.
158
158
  *
159
159
  * Claude Code names project folders by replacing "/" with "-" in the absolute path:
160
- * "-workspaces-memax" → /workspaces/memax
160
+ * "-workspaces-project" → /workspaces/project
161
161
  * "-Users-ziyang-code-memax" → /Users/ziyang/code/memax
162
162
  *
163
163
  * Returns the normalized repo URL if the path exists and is a git repo, null otherwise.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.1.2",
6
+ "version": "0.1.3-alpha.15",
7
7
  "description": "CLI for Memax — universal context & memory hub for AI agents",
8
8
  "homepage": "https://memax.app",
9
9
  "repository": {
@@ -28,7 +28,7 @@
28
28
  "@modelcontextprotocol/sdk": "^1.12.1",
29
29
  "chalk": "^5.4.0",
30
30
  "commander": "^13.0.0",
31
- "memax-sdk": "^0.4.1"
31
+ "memax-sdk": "^0.4.2-alpha.15"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^25.5.0",
@@ -46,9 +46,10 @@
46
46
  ],
47
47
  "files": [
48
48
  "dist",
49
- "assets"
49
+ "assets",
50
+ "NOTICE"
50
51
  ],
51
- "license": "MIT",
52
+ "license": "Apache-2.0",
52
53
  "scripts": {
53
54
  "build": "tsc",
54
55
  "dev": "tsc --watch",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=agent-configs.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-configs.test.d.ts","sourceRoot":"","sources":["../../src/commands/agent-configs.test.ts"],"names":[],"mappings":""}
@@ -1,122 +0,0 @@
1
- import { join } from "node:path";
2
- import { describe, expect, it } from "vitest";
3
- import { classifyAgentConfigPlacement, resolveAgentConfigWritePath, } from "./agent-configs.js";
4
- describe("resolveAgentConfigWritePath", () => {
5
- const cwd = "/workspaces/memax";
6
- const home = "/home/tester";
7
- const scope = "project:github.com/memaxlabs/memax";
8
- it("resolves Claude project config into .claude", () => {
9
- expect(resolveAgentConfigWritePath("claude-code", "CLAUDE.md", scope, {
10
- cwd,
11
- home,
12
- currentProjectScope: scope,
13
- })).toBe(join(cwd, ".claude", "CLAUDE.md"));
14
- });
15
- it("resolves Codex project config into .codex", () => {
16
- expect(resolveAgentConfigWritePath("codex", "instructions.md", scope, {
17
- cwd,
18
- home,
19
- currentProjectScope: scope,
20
- })).toBe(join(cwd, ".codex", "instructions.md"));
21
- });
22
- it("resolves Copilot project config into .github", () => {
23
- expect(resolveAgentConfigWritePath("copilot", "copilot-instructions.md", scope, {
24
- cwd,
25
- home,
26
- currentProjectScope: scope,
27
- })).toBe(join(cwd, ".github", "copilot-instructions.md"));
28
- });
29
- it("resolves OpenCode project files into .opencode", () => {
30
- expect(resolveAgentConfigWritePath("opencode", "identity.md", scope, {
31
- cwd,
32
- home,
33
- currentProjectScope: scope,
34
- })).toBe(join(cwd, ".opencode", "identity.md"));
35
- });
36
- it("resolves Claude per-project memory files via project dir locator", () => {
37
- expect(resolveAgentConfigWritePath("claude-code", "memory/feedback.md", scope, {
38
- cwd,
39
- home,
40
- currentProjectScope: scope,
41
- findClaudeProjectDir: () => "/home/tester/.claude/projects/-workspaces-memax",
42
- })).toBe("/home/tester/.claude/projects/-workspaces-memax/memory/feedback.md");
43
- });
44
- it("refuses to resolve project-scoped files for a different project", () => {
45
- expect(resolveAgentConfigWritePath("codex", "instructions.md", scope, {
46
- cwd,
47
- home,
48
- currentProjectScope: "project:github.com/other/repo",
49
- })).toBeNull();
50
- });
51
- it("resolves global Claude config under ~/.claude", () => {
52
- expect(resolveAgentConfigWritePath("claude-code", "CLAUDE.md", "global", {
53
- cwd,
54
- home,
55
- currentProjectScope: scope,
56
- })).toBe(join(home, ".claude", "CLAUDE.md"));
57
- });
58
- });
59
- describe("classifyAgentConfigPlacement", () => {
60
- const cwd = "/workspaces/memax";
61
- const home = "/home/tester";
62
- const scope = "project:github.com/memaxlabs/memax";
63
- it("reports present when a local config already exists", () => {
64
- const result = classifyAgentConfigPlacement("codex", "instructions.md", scope, {
65
- cwd,
66
- home,
67
- currentProjectScope: scope,
68
- localByKey: new Map([
69
- [
70
- `codex|instructions.md|${scope}`,
71
- {
72
- agent: "codex",
73
- label: "./.codex/instructions.md",
74
- path: join(cwd, ".codex", "instructions.md"),
75
- filePath: "instructions.md",
76
- scope,
77
- },
78
- ],
79
- ]),
80
- });
81
- expect(result).toEqual({
82
- kind: "present",
83
- path: join(cwd, ".codex", "instructions.md"),
84
- reason: "present locally",
85
- });
86
- });
87
- it("reports restorable when there is a safe write path on this machine", () => {
88
- const result = classifyAgentConfigPlacement("codex", "instructions.md", scope, {
89
- cwd,
90
- home,
91
- currentProjectScope: scope,
92
- });
93
- expect(result).toEqual({
94
- kind: "restorable",
95
- path: join(cwd, ".codex", "instructions.md"),
96
- reason: "safe restore path available",
97
- });
98
- });
99
- it("reports different project for mismatched project scopes", () => {
100
- const result = classifyAgentConfigPlacement("codex", "instructions.md", scope, {
101
- cwd,
102
- home,
103
- currentProjectScope: "project:github.com/other/repo",
104
- });
105
- expect(result).toEqual({
106
- kind: "different_project",
107
- reason: "belongs to github.com/memaxlabs/memax",
108
- });
109
- });
110
- it("reports unresolved when no safe path can be derived", () => {
111
- const result = classifyAgentConfigPlacement("unknown-agent", "instructions.md", "global", {
112
- cwd,
113
- home,
114
- currentProjectScope: scope,
115
- });
116
- expect(result).toEqual({
117
- kind: "unresolved",
118
- reason: "no safe restore path on this machine",
119
- });
120
- });
121
- });
122
- //# sourceMappingURL=agent-configs.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-configs.test.js","sourceRoot":"","sources":["../../src/commands/agent-configs.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=agent-sessions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-sessions.test.d.ts","sourceRoot":"","sources":["../../src/commands/agent-sessions.test.ts"],"names":[],"mappings":""}
@@ -1,255 +0,0 @@
1
- import { existsSync, readFileSync, rmSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { describe, expect, it } from "vitest";
4
- import { classifyAgentSessionPlacement, computeSessionSyncHash, findShadowedGlobalSessions, hashPortableSessionContent, isLegacyGlobalSessionShadowed, materializeAgentSessionContent, resolveAgentSessionWritePath, } from "./agent-sessions.js";
5
- describe("resolveAgentSessionWritePath", () => {
6
- const cwd = "/workspaces/memax";
7
- const home = "/home/tester";
8
- const scope = "project:github.com/memaxlabs/memax";
9
- it("resolves global Codex history", () => {
10
- expect(resolveAgentSessionWritePath("codex", "history.jsonl", "global", {
11
- cwd,
12
- home,
13
- currentProjectScope: scope,
14
- })).toBe(join(home, ".codex", "history.jsonl"));
15
- });
16
- it("resolves global Codex sessions", () => {
17
- expect(resolveAgentSessionWritePath("codex", "sessions/2026/04/07/example.jsonl", "global", {
18
- cwd,
19
- home,
20
- currentProjectScope: scope,
21
- })).toBe(join(home, ".codex", "sessions", "2026/04/07/example.jsonl"));
22
- });
23
- it("refuses project-scoped writes for a different project", () => {
24
- expect(resolveAgentSessionWritePath("gemini", "chats/session.json", scope, {
25
- cwd,
26
- home,
27
- currentProjectScope: "project:github.com/other/repo",
28
- })).toBeNull();
29
- });
30
- it("resolves project-scoped Codex sessions into ~/.codex", () => {
31
- expect(resolveAgentSessionWritePath("codex", "sessions/2026/04/07/example.jsonl", scope, {
32
- cwd,
33
- home,
34
- currentProjectScope: scope,
35
- })).toBe(join(home, ".codex", "sessions", "2026/04/07/example.jsonl"));
36
- });
37
- });
38
- describe("classifyAgentSessionPlacement", () => {
39
- const cwd = "/workspaces/memax";
40
- const home = "/home/tester";
41
- const scope = "project:github.com/memaxlabs/memax";
42
- it("reports present when a local session already exists", () => {
43
- const result = classifyAgentSessionPlacement("codex", "history.jsonl", "global", {
44
- cwd,
45
- home,
46
- currentProjectScope: scope,
47
- localByKey: new Map([
48
- [
49
- "codex|history.jsonl|global",
50
- {
51
- agent: "codex",
52
- path: join(home, ".codex", "history.jsonl"),
53
- filePath: "history.jsonl",
54
- scope: "global",
55
- sessionType: "history",
56
- },
57
- ],
58
- ]),
59
- });
60
- expect(result).toEqual({
61
- kind: "present",
62
- path: join(home, ".codex", "history.jsonl"),
63
- reason: "present locally",
64
- });
65
- });
66
- it("reports restorable for a known safe path", () => {
67
- const result = classifyAgentSessionPlacement("codex", "history.jsonl", "global", {
68
- cwd,
69
- home,
70
- currentProjectScope: scope,
71
- });
72
- expect(result).toEqual({
73
- kind: "restorable",
74
- path: join(home, ".codex", "history.jsonl"),
75
- reason: "safe restore path available",
76
- });
77
- });
78
- it("reports different project for mismatched project scopes", () => {
79
- const result = classifyAgentSessionPlacement("gemini", "chats/session.json", scope, {
80
- cwd,
81
- home,
82
- currentProjectScope: "project:github.com/other/repo",
83
- });
84
- expect(result).toEqual({
85
- kind: "different_project",
86
- reason: "belongs to github.com/memaxlabs/memax",
87
- });
88
- });
89
- });
90
- describe("portable session hashing", () => {
91
- it("treats Codex cwd rewrites as the same logical session", () => {
92
- const first = Buffer.from(`${JSON.stringify({
93
- type: "session_meta",
94
- payload: { cwd: "/workspaces/memax" },
95
- })}\n`, "utf-8");
96
- const second = Buffer.from(`${JSON.stringify({
97
- type: "session_meta",
98
- payload: { cwd: "/Users/alice/src/memax" },
99
- })}\n`, "utf-8");
100
- expect(hashPortableSessionContent("codex", first, "/workspaces/memax")).toBe(hashPortableSessionContent("codex", second, "/Users/alice/src/memax"));
101
- });
102
- });
103
- describe("materializeAgentSessionContent", () => {
104
- it("rewrites structured cwd fields for Codex restores", () => {
105
- const content = Buffer.from(`${JSON.stringify({
106
- type: "session_meta",
107
- payload: { cwd: "/workspaces/memax" },
108
- })}\n`, "utf-8");
109
- const restored = materializeAgentSessionContent("codex", content, {
110
- scope: "project:github.com/memaxlabs/memax",
111
- currentProjectRootPath: "/Users/alice/src/memax",
112
- writePath: "/Users/alice/.codex/sessions/example.jsonl",
113
- }).toString("utf-8");
114
- expect(restored).toContain("/Users/alice/src/memax");
115
- expect(restored).not.toContain("/workspaces/memax");
116
- });
117
- it("writes Gemini project_root markers on restore", () => {
118
- const content = Buffer.from('{"sessionId":"1"}\n', "utf-8");
119
- const root = join("/tmp", "memax-agent-session-test");
120
- const writePath = join(root, "chats", "session.json");
121
- rmSync(root, { recursive: true, force: true });
122
- materializeAgentSessionContent("gemini", content, {
123
- scope: "project:github.com/memaxlabs/memax",
124
- currentProjectRootPath: "/workspaces/memax",
125
- writePath,
126
- });
127
- const markerPath = join(root, ".project_root");
128
- expect(existsSync(markerPath)).toBe(true);
129
- expect(readFileSync(markerPath, "utf-8")).toBe("/workspaces/memax\n");
130
- rmSync(root, { recursive: true, force: true });
131
- });
132
- });
133
- describe("session sync convergence", () => {
134
- it("acks pulled project sessions using the materialized portable hash", () => {
135
- const downloaded = Buffer.from(`${JSON.stringify({
136
- type: "session_meta",
137
- payload: { cwd: "/workspaces/memax" },
138
- })}\n`, "utf-8");
139
- const materialized = materializeAgentSessionContent("codex", downloaded, {
140
- scope: "project:github.com/memaxlabs/memax",
141
- currentProjectRootPath: "/Users/alice/src/memax",
142
- writePath: "/Users/alice/.codex/sessions/example.jsonl",
143
- });
144
- expect(computeSessionSyncHash("codex", "project:github.com/memaxlabs/memax", materialized, "/Users/alice/src/memax")).toBe(hashPortableSessionContent("codex", materialized, "/Users/alice/src/memax"));
145
- });
146
- it("marks legacy global codex session duplicates as shadowed", () => {
147
- expect(isLegacyGlobalSessionShadowed({
148
- action: "pull",
149
- agent: "codex",
150
- file_path: "sessions/2026/04/07/rollout-2026-04-07T05-39-15-019d6673-c077-7371-a3b8-3d98c1c8e7a7.jsonl",
151
- scope: "global",
152
- reason: "cloud_only",
153
- }, new Set([
154
- "codex|sessions/2026/04/07/rollout-2026-04-07T05-39-15-019d6673-c077-7371-a3b8-3d98c1c8e7a7.jsonl",
155
- ]))).toBe(true);
156
- expect(isLegacyGlobalSessionShadowed({
157
- action: "delete_local",
158
- agent: "codex",
159
- file_path: "sessions/2026/04/07/rollout-2026-04-07T05-39-15-019d6673-c077-7371-a3b8-3d98c1c8e7a7.jsonl",
160
- scope: "global",
161
- reason: "deleted_everywhere",
162
- }, new Set([
163
- "codex|sessions/2026/04/07/rollout-2026-04-07T05-39-15-019d6673-c077-7371-a3b8-3d98c1c8e7a7.jsonl",
164
- ]))).toBe(true);
165
- });
166
- it("does not shadow codex history or non-duplicate sessions", () => {
167
- expect(isLegacyGlobalSessionShadowed({
168
- action: "pull",
169
- agent: "codex",
170
- file_path: "history.jsonl",
171
- scope: "global",
172
- reason: "cloud_only",
173
- }, new Set(["codex|history.jsonl"]))).toBe(false);
174
- expect(isLegacyGlobalSessionShadowed({
175
- action: "pull",
176
- agent: "codex",
177
- file_path: "sessions/2026/04/07/example.jsonl",
178
- scope: "global",
179
- reason: "cloud_only",
180
- }, new Set())).toBe(false);
181
- });
182
- it("finds safe legacy global duplicates by agent and file path", () => {
183
- const pairs = findShadowedGlobalSessions([
184
- {
185
- id: "g1",
186
- owner_id: "o1",
187
- agent: "codex",
188
- file_path: "sessions/2026/04/07/example.jsonl",
189
- scope: "global",
190
- session_type: "transcript",
191
- filename: "example.jsonl",
192
- content_type: "application/jsonl",
193
- size_bytes: 10,
194
- content_hash: "abc",
195
- version: 1,
196
- created_at: "2026-04-08T00:00:00Z",
197
- updated_at: "2026-04-08T00:00:00Z",
198
- },
199
- {
200
- id: "p1",
201
- owner_id: "o1",
202
- agent: "codex",
203
- file_path: "sessions/2026/04/07/example.jsonl",
204
- scope: "project:github.com/memaxlabs/memax",
205
- session_type: "transcript",
206
- filename: "example.jsonl",
207
- content_type: "application/jsonl",
208
- size_bytes: 10,
209
- content_hash: "abc",
210
- version: 2,
211
- created_at: "2026-04-08T00:00:00Z",
212
- updated_at: "2026-04-08T00:00:00Z",
213
- },
214
- ]);
215
- expect(pairs).toHaveLength(1);
216
- expect(pairs[0]?.global.id).toBe("g1");
217
- expect(pairs[0]?.project.id).toBe("p1");
218
- });
219
- it("ignores codex history and unrelated scopes when finding duplicates", () => {
220
- const pairs = findShadowedGlobalSessions([
221
- {
222
- id: "g1",
223
- owner_id: "o1",
224
- agent: "codex",
225
- file_path: "history.jsonl",
226
- scope: "global",
227
- session_type: "history",
228
- filename: "history.jsonl",
229
- content_type: "application/jsonl",
230
- size_bytes: 10,
231
- content_hash: "abc",
232
- version: 1,
233
- created_at: "2026-04-08T00:00:00Z",
234
- updated_at: "2026-04-08T00:00:00Z",
235
- },
236
- {
237
- id: "p1",
238
- owner_id: "o1",
239
- agent: "codex",
240
- file_path: "history.jsonl",
241
- scope: "project:github.com/memaxlabs/memax",
242
- session_type: "history",
243
- filename: "history.jsonl",
244
- content_type: "application/jsonl",
245
- size_bytes: 10,
246
- content_hash: "abc",
247
- version: 2,
248
- created_at: "2026-04-08T00:00:00Z",
249
- updated_at: "2026-04-08T00:00:00Z",
250
- },
251
- ]);
252
- expect(pairs).toHaveLength(0);
253
- });
254
- });
255
- //# sourceMappingURL=agent-sessions.test.js.map