@rubytech/create-maxy-code 0.1.64 → 0.1.66
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/package.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +1 -1
- package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +140 -61
- package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +135 -49
- package/payload/platform/plugins/docs/references/admin-session.md +19 -4
- package/payload/platform/plugins/docs/references/internals.md +7 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts +22 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js +44 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +68 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js +48 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +53 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js +40 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js +39 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +88 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +58 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +58 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +70 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +48 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +47 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +65 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +43 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +65 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +49 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js +62 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js +76 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/index.js +75 -2
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +8 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +14 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +24 -4
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +39 -9
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -1
- package/payload/server/server-init.cjs +40 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-delete.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
4
|
+
const mockSession = makeMockSession();
|
|
5
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
6
|
+
getSession: () => mockSession,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("../../../../../../lib/graph-trash/dist/index.js", () => ({
|
|
9
|
+
trashNode: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
vi.mock("../../lib/filter-token.js", () => ({
|
|
12
|
+
verifyFilterToken: vi.fn(),
|
|
13
|
+
filterTokenFingerprint: () => "fp",
|
|
14
|
+
}));
|
|
15
|
+
vi.mock("../memory-find-candidates.js", () => ({
|
|
16
|
+
reverifyCandidate: vi.fn(),
|
|
17
|
+
}));
|
|
18
|
+
import { memoryDelete } from "../memory-delete.js";
|
|
19
|
+
import { trashNode } from "../../../../../../lib/graph-trash/dist/index.js";
|
|
20
|
+
import { verifyFilterToken } from "../../lib/filter-token.js";
|
|
21
|
+
describe("memory-delete — emit wrapper wired", () => {
|
|
22
|
+
let emit;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
emit = setupEmitCapture();
|
|
25
|
+
vi.mocked(trashNode).mockReset();
|
|
26
|
+
vi.mocked(verifyFilterToken).mockReset();
|
|
27
|
+
mockSession.run.mockReset();
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => emit.restore());
|
|
30
|
+
it("emits result=ok line on happy path (no filter token)", async () => {
|
|
31
|
+
vi.mocked(trashNode).mockResolvedValue({
|
|
32
|
+
trashed: true,
|
|
33
|
+
alreadyTrashed: false,
|
|
34
|
+
nodeId: "4:eid:1",
|
|
35
|
+
labels: ["Person"],
|
|
36
|
+
trashedAt: "2026-05-19T00:00:00Z",
|
|
37
|
+
originalKeys: {},
|
|
38
|
+
});
|
|
39
|
+
await memoryDelete({ accountId: "acct-1", elementId: "4:eid:1" });
|
|
40
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
41
|
+
const body = emit.captures()[0];
|
|
42
|
+
expect(body.tag).toBe("mcp:memory");
|
|
43
|
+
expect(body.level).toBe("info");
|
|
44
|
+
expect(body.line).toContain("memory-delete");
|
|
45
|
+
expect(body.line).toContain("result=ok");
|
|
46
|
+
});
|
|
47
|
+
it("emits result=error line when trashNode throws", async () => {
|
|
48
|
+
vi.mocked(trashNode).mockRejectedValue(new Error("Node not found or not owned by this account (ID: 4:eid:1)."));
|
|
49
|
+
await expect(memoryDelete({ accountId: "acct-1", elementId: "4:eid:1" })).rejects.toThrow(/not found/);
|
|
50
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
51
|
+
const body = emit.captures()[0];
|
|
52
|
+
expect(body.level).toBe("error");
|
|
53
|
+
expect(body.line).toContain("memory-delete");
|
|
54
|
+
expect(body.line).toContain("result=error");
|
|
55
|
+
expect(body.line).toContain("reason=invalid-input");
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=memory-delete-emit.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-delete-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-delete-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-edit-attachment-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-edit-attachment-emit.test.ts"],"names":[],"mappings":""}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-edit-attachment.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture } from "./_helpers/emit-capture.js";
|
|
4
|
+
vi.mock("../../lib/attachments.js", () => ({
|
|
5
|
+
assertUUID: vi.fn(),
|
|
6
|
+
readMeta: vi.fn(),
|
|
7
|
+
findDataFile: vi.fn(),
|
|
8
|
+
attachmentDir: () => "/tmp/task-168-stub",
|
|
9
|
+
}));
|
|
10
|
+
vi.mock("../memory-ingest-extract.js", () => ({
|
|
11
|
+
memoryIngestExtract: vi.fn().mockResolvedValue({
|
|
12
|
+
text: "stub",
|
|
13
|
+
filename: "stub.md",
|
|
14
|
+
cached: true,
|
|
15
|
+
}),
|
|
16
|
+
}));
|
|
17
|
+
vi.mock("node:fs/promises", async () => {
|
|
18
|
+
const actual = await vi.importActual("node:fs/promises");
|
|
19
|
+
return {
|
|
20
|
+
...actual,
|
|
21
|
+
writeFile: vi.fn().mockResolvedValue(undefined),
|
|
22
|
+
stat: vi.fn().mockResolvedValue({ size: 10 }),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
import { memoryEditAttachment } from "../memory-edit-attachment.js";
|
|
26
|
+
import { readMeta, findDataFile } from "../../lib/attachments.js";
|
|
27
|
+
describe("memory-edit-attachment — emit wrapper wired", () => {
|
|
28
|
+
let emit;
|
|
29
|
+
beforeEach(() => {
|
|
30
|
+
emit = setupEmitCapture();
|
|
31
|
+
vi.mocked(readMeta).mockReset();
|
|
32
|
+
vi.mocked(findDataFile).mockReset();
|
|
33
|
+
});
|
|
34
|
+
afterEach(() => emit.restore());
|
|
35
|
+
it("emits result=ok line on happy path", async () => {
|
|
36
|
+
vi.mocked(readMeta).mockResolvedValue({
|
|
37
|
+
filename: "doc.md",
|
|
38
|
+
mimeType: "text/markdown",
|
|
39
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
40
|
+
sizeBytes: 0,
|
|
41
|
+
uploadedAt: "2026-01-01T00:00:00Z",
|
|
42
|
+
});
|
|
43
|
+
vi.mocked(findDataFile).mockResolvedValue("/tmp/task-168-stub/data.md");
|
|
44
|
+
await memoryEditAttachment({
|
|
45
|
+
accountId: "acct-1",
|
|
46
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
47
|
+
content: "new content",
|
|
48
|
+
});
|
|
49
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
50
|
+
const body = emit.captures()[0];
|
|
51
|
+
expect(body.tag).toBe("mcp:memory");
|
|
52
|
+
expect(body.level).toBe("info");
|
|
53
|
+
expect(body.line).toContain("memory-edit-attachment");
|
|
54
|
+
expect(body.line).toContain("result=ok");
|
|
55
|
+
});
|
|
56
|
+
it("emits result=error line when readMeta returns null (attachment not found)", async () => {
|
|
57
|
+
vi.mocked(readMeta).mockResolvedValue(null);
|
|
58
|
+
await expect(memoryEditAttachment({
|
|
59
|
+
accountId: "acct-1",
|
|
60
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
61
|
+
content: "new",
|
|
62
|
+
})).rejects.toThrow(/not found/);
|
|
63
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
64
|
+
const body = emit.captures()[0];
|
|
65
|
+
expect(body.level).toBe("error");
|
|
66
|
+
expect(body.line).toContain("memory-edit-attachment");
|
|
67
|
+
expect(body.line).toContain("result=error");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=memory-edit-attachment-emit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-edit-attachment-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-edit-attachment-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-empty-trash-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-empty-trash-emit.test.ts"],"names":[],"mappings":""}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-empty-trash.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
4
|
+
const mockSession = makeMockSession();
|
|
5
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
6
|
+
getSession: () => mockSession,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("../../../../../../lib/graph-trash/dist/index.js", () => ({
|
|
9
|
+
emptyTrash: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
vi.mock("../../lib/attachments.js", () => ({
|
|
12
|
+
removeAttachmentDir: vi.fn().mockResolvedValue(undefined),
|
|
13
|
+
}));
|
|
14
|
+
import { memoryEmptyTrash } from "../memory-empty-trash.js";
|
|
15
|
+
import { emptyTrash } from "../../../../../../lib/graph-trash/dist/index.js";
|
|
16
|
+
describe("memory-empty-trash — emit wrapper wired", () => {
|
|
17
|
+
let emit;
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
emit = setupEmitCapture();
|
|
20
|
+
vi.mocked(emptyTrash).mockReset();
|
|
21
|
+
});
|
|
22
|
+
afterEach(() => emit.restore());
|
|
23
|
+
it("emits result=ok line on happy path", async () => {
|
|
24
|
+
vi.mocked(emptyTrash).mockResolvedValue({
|
|
25
|
+
graceDays: 30,
|
|
26
|
+
dryRun: false,
|
|
27
|
+
candidates: [],
|
|
28
|
+
emptied: 0,
|
|
29
|
+
});
|
|
30
|
+
await memoryEmptyTrash({ accountId: "acct-1" });
|
|
31
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
32
|
+
const body = emit.captures()[0];
|
|
33
|
+
expect(body.tag).toBe("mcp:memory");
|
|
34
|
+
expect(body.level).toBe("info");
|
|
35
|
+
expect(body.line).toContain("memory-empty-trash");
|
|
36
|
+
expect(body.line).toContain("result=ok");
|
|
37
|
+
});
|
|
38
|
+
it("emits result=error line when emptyTrash throws", async () => {
|
|
39
|
+
vi.mocked(emptyTrash).mockRejectedValue(new Error("session expired"));
|
|
40
|
+
await expect(memoryEmptyTrash({ accountId: "acct-1" })).rejects.toThrow(/session expired/);
|
|
41
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
42
|
+
const body = emit.captures()[0];
|
|
43
|
+
expect(body.level).toBe("error");
|
|
44
|
+
expect(body.line).toContain("memory-empty-trash");
|
|
45
|
+
expect(body.line).toContain("result=error");
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=memory-empty-trash-emit.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-empty-trash-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-empty-trash-emit.test.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-emit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-ingest.
|
|
2
|
+
//
|
|
3
|
+
// Happy-path stub would require unraveling document-hierarchy, embeddings,
|
|
4
|
+
// llm-classifier, graph-trash, and the entire section-write cypher batch —
|
|
5
|
+
// out of proportion with the brief's "minimal new test file" guidance. The
|
|
6
|
+
// error path is sufficient to verify the wrapper-is-wired contract per the
|
|
7
|
+
// brief's drop-wrapper experiment, plus a no-deep-deps happy path via the
|
|
8
|
+
// ConversationArchive branch is verified by the existing memory-ingest
|
|
9
|
+
// behaviour tests (content gates in memory-ingest.test.ts).
|
|
10
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
11
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
12
|
+
const mockSession = makeMockSession();
|
|
13
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
14
|
+
getSession: () => mockSession,
|
|
15
|
+
}));
|
|
16
|
+
vi.mock("../../lib/embeddings.js", () => ({
|
|
17
|
+
embed: vi.fn(),
|
|
18
|
+
embedBatch: vi.fn(),
|
|
19
|
+
}));
|
|
20
|
+
vi.mock("../memory-ingest-extract.js", () => ({
|
|
21
|
+
extractCache: new Map(),
|
|
22
|
+
memoryIngestExtract: vi.fn(),
|
|
23
|
+
}));
|
|
24
|
+
vi.mock("../../lib/document-hierarchy.js", () => ({
|
|
25
|
+
deleteDocumentChildren: vi.fn(),
|
|
26
|
+
}));
|
|
27
|
+
vi.mock("../../../../../../lib/graph-trash/dist/index.js", () => ({
|
|
28
|
+
restoreNode: vi.fn(),
|
|
29
|
+
}));
|
|
30
|
+
import { memoryIngest } from "../memory-ingest.js";
|
|
31
|
+
describe("memory-ingest — emit wrapper wired", () => {
|
|
32
|
+
let emit;
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
emit = setupEmitCapture();
|
|
35
|
+
mockSession.run.mockReset();
|
|
36
|
+
});
|
|
37
|
+
afterEach(() => emit.restore());
|
|
38
|
+
it("emits result=error reason=invalid-input on missing scope", async () => {
|
|
39
|
+
await expect(memoryIngest({
|
|
40
|
+
accountId: "acct-1",
|
|
41
|
+
attachmentId: "att-1",
|
|
42
|
+
documentSummary: "doc",
|
|
43
|
+
anchorNodeId: "4:anchor:1",
|
|
44
|
+
anchorLabel: "UserProfile",
|
|
45
|
+
sections: [],
|
|
46
|
+
scope: "",
|
|
47
|
+
})).rejects.toThrow(/scope is required/);
|
|
48
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
49
|
+
const body = emit.captures()[0];
|
|
50
|
+
expect(body.tag).toBe("mcp:memory");
|
|
51
|
+
expect(body.level).toBe("error");
|
|
52
|
+
expect(body.line).toContain("memory-ingest");
|
|
53
|
+
expect(body.line).toContain("result=error");
|
|
54
|
+
expect(body.line).toContain("reason=invalid-input");
|
|
55
|
+
});
|
|
56
|
+
it("emits result=error on missing anchorNodeId (invalid-input via 'is required')", async () => {
|
|
57
|
+
await expect(memoryIngest({
|
|
58
|
+
accountId: "acct-1",
|
|
59
|
+
attachmentId: "att-1",
|
|
60
|
+
documentSummary: "doc",
|
|
61
|
+
anchorNodeId: "",
|
|
62
|
+
anchorLabel: "UserProfile",
|
|
63
|
+
sections: [],
|
|
64
|
+
scope: "shared",
|
|
65
|
+
})).rejects.toThrow(/anchorNodeId is required/);
|
|
66
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
67
|
+
const body = emit.captures()[0];
|
|
68
|
+
expect(body.level).toBe("error");
|
|
69
|
+
expect(body.line).toContain("memory-ingest");
|
|
70
|
+
expect(body.line).toContain("result=error");
|
|
71
|
+
expect(body.line).toContain("reason=invalid-input");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=memory-ingest-emit.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-extract-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-extract-emit.test.ts"],"names":[],"mappings":""}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-ingest-extract.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture } from "./_helpers/emit-capture.js";
|
|
4
|
+
vi.mock("node:fs/promises", async () => {
|
|
5
|
+
const actual = await vi.importActual("node:fs/promises");
|
|
6
|
+
return {
|
|
7
|
+
...actual,
|
|
8
|
+
readFile: vi.fn().mockResolvedValue("hello world\n"),
|
|
9
|
+
stat: vi.fn().mockResolvedValue({ size: 12 }),
|
|
10
|
+
};
|
|
11
|
+
});
|
|
12
|
+
import { memoryIngestExtract } from "../memory-ingest-extract.js";
|
|
13
|
+
describe("memory-ingest-extract — emit wrapper wired", () => {
|
|
14
|
+
let emit;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
emit = setupEmitCapture();
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => emit.restore());
|
|
19
|
+
it("emits result=ok line on happy path (text/plain)", async () => {
|
|
20
|
+
await memoryIngestExtract({
|
|
21
|
+
storagePath: "/tmp/task-168/stub.txt",
|
|
22
|
+
filename: "stub.txt",
|
|
23
|
+
mimeType: "text/plain",
|
|
24
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
25
|
+
});
|
|
26
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
27
|
+
const body = emit.captures()[0];
|
|
28
|
+
expect(body.tag).toBe("mcp:memory");
|
|
29
|
+
expect(body.level).toBe("info");
|
|
30
|
+
expect(body.line).toContain("memory-ingest-extract");
|
|
31
|
+
expect(body.line).toContain("result=ok");
|
|
32
|
+
});
|
|
33
|
+
it("emits result=error line when attachmentId is missing (invalid-input)", async () => {
|
|
34
|
+
await expect(memoryIngestExtract({
|
|
35
|
+
storagePath: "/tmp/task-168/stub.txt",
|
|
36
|
+
filename: "stub.txt",
|
|
37
|
+
mimeType: "text/plain",
|
|
38
|
+
attachmentId: "",
|
|
39
|
+
})).rejects.toThrow(/requires attachmentId/);
|
|
40
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
41
|
+
const body = emit.captures()[0];
|
|
42
|
+
expect(body.level).toBe("error");
|
|
43
|
+
expect(body.line).toContain("memory-ingest-extract");
|
|
44
|
+
expect(body.line).toContain("result=error");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=memory-ingest-extract-emit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-extract-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-extract-emit.test.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAoC,kBAAkB,CAAC,CAAC;IAC5F,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACpD,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,IAAI,IAAyC,CAAC;IAC9C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,mBAAmB,CAAC;YACxB,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,YAAY;YACtB,YAAY,EAAE,sCAAsC;SACrD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,MAAM,CACV,mBAAmB,CAAC;YAClB,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,YAAY;YACtB,YAAY,EAAE,EAAE;SACjB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-web-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-web-emit.test.ts"],"names":[],"mappings":""}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-ingest-web.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
4
|
+
const mockSession = makeMockSession();
|
|
5
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
6
|
+
getSession: () => mockSession,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("../memory-ingest-extract.js", () => ({
|
|
9
|
+
memoryIngestExtract: vi.fn(),
|
|
10
|
+
extractCache: new Map(),
|
|
11
|
+
}));
|
|
12
|
+
vi.mock("node:fs/promises", async () => {
|
|
13
|
+
const actual = await vi.importActual("node:fs/promises");
|
|
14
|
+
return {
|
|
15
|
+
...actual,
|
|
16
|
+
writeFile: vi.fn().mockResolvedValue(undefined),
|
|
17
|
+
unlink: vi.fn().mockResolvedValue(undefined),
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
import { memoryIngestWeb } from "../memory-ingest-web.js";
|
|
21
|
+
import { memoryIngestExtract } from "../memory-ingest-extract.js";
|
|
22
|
+
describe("memory-ingest-web — emit wrapper wired", () => {
|
|
23
|
+
let emit;
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
emit = setupEmitCapture();
|
|
26
|
+
mockSession.run.mockReset();
|
|
27
|
+
vi.mocked(memoryIngestExtract).mockReset();
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => emit.restore());
|
|
30
|
+
it("emits result=ok line on happy path", async () => {
|
|
31
|
+
// checkExistingDocument: no record.
|
|
32
|
+
mockSession.run.mockResolvedValue({ records: [] });
|
|
33
|
+
vi.mocked(memoryIngestExtract).mockResolvedValue({
|
|
34
|
+
filename: "Page Title",
|
|
35
|
+
mimeType: "text/markdown",
|
|
36
|
+
sizeBytes: 10,
|
|
37
|
+
textLength: 10,
|
|
38
|
+
preview: "hello",
|
|
39
|
+
});
|
|
40
|
+
await memoryIngestWeb({
|
|
41
|
+
accountId: "acct-1",
|
|
42
|
+
url: "https://example.com/page",
|
|
43
|
+
content: "# Page Title\n\nbody",
|
|
44
|
+
});
|
|
45
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
46
|
+
const body = emit.captures()[0];
|
|
47
|
+
expect(body.tag).toBe("mcp:memory");
|
|
48
|
+
expect(body.level).toBe("info");
|
|
49
|
+
expect(body.line).toContain("memory-ingest-web");
|
|
50
|
+
expect(body.line).toContain("result=ok");
|
|
51
|
+
});
|
|
52
|
+
it("emits result=error line on empty content (invalid-input via guidance message)", async () => {
|
|
53
|
+
await expect(memoryIngestWeb({
|
|
54
|
+
accountId: "acct-1",
|
|
55
|
+
url: "https://example.com/page",
|
|
56
|
+
content: " ",
|
|
57
|
+
})).rejects.toThrow(/empty/);
|
|
58
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
59
|
+
const body = emit.captures()[0];
|
|
60
|
+
expect(body.level).toBe("error");
|
|
61
|
+
expect(body.line).toContain("memory-ingest-web");
|
|
62
|
+
expect(body.line).toContain("result=error");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=memory-ingest-web-emit.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-ingest-web-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-web-emit.test.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-reindex-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-reindex-emit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-reindex.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
4
|
+
const mockSession = makeMockSession();
|
|
5
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
6
|
+
getSession: () => mockSession,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("../../lib/embeddings.js", () => ({
|
|
9
|
+
embedBatch: vi.fn().mockResolvedValue([]),
|
|
10
|
+
}));
|
|
11
|
+
import { memoryReindex } from "../memory-reindex.js";
|
|
12
|
+
describe("memory-reindex — emit wrapper wired", () => {
|
|
13
|
+
let emit;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
emit = setupEmitCapture();
|
|
16
|
+
mockSession.run.mockReset();
|
|
17
|
+
mockSession.close.mockReset();
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => emit.restore());
|
|
20
|
+
it("emits result=ok line on happy path (all nodes have embeddings)", async () => {
|
|
21
|
+
// First call: count returns total=0, tool returns early.
|
|
22
|
+
mockSession.run.mockResolvedValueOnce({
|
|
23
|
+
records: [{ get: () => ({ toNumber: () => 0 }) }],
|
|
24
|
+
});
|
|
25
|
+
await memoryReindex("acct-1");
|
|
26
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
27
|
+
const body = emit.captures()[0];
|
|
28
|
+
expect(body.tag).toBe("mcp:memory");
|
|
29
|
+
expect(body.level).toBe("info");
|
|
30
|
+
expect(body.line).toContain("memory-reindex");
|
|
31
|
+
expect(body.line).toContain("result=ok");
|
|
32
|
+
});
|
|
33
|
+
it("emits result=error line when session.run throws", async () => {
|
|
34
|
+
mockSession.run.mockRejectedValue(new Error("driver disconnected"));
|
|
35
|
+
await expect(memoryReindex("acct-1")).rejects.toThrow(/driver disconnected/);
|
|
36
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
37
|
+
const body = emit.captures()[0];
|
|
38
|
+
expect(body.level).toBe("error");
|
|
39
|
+
expect(body.line).toContain("memory-reindex");
|
|
40
|
+
expect(body.line).toContain("result=error");
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=memory-reindex-emit.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-reindex-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-reindex-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-rename-attachment-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-rename-attachment-emit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Task 168 — per-tool emit assertion for memory-rename-attachment.
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
3
|
+
import { setupEmitCapture, makeMockSession } from "./_helpers/emit-capture.js";
|
|
4
|
+
const mockSession = makeMockSession();
|
|
5
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
6
|
+
getSession: () => mockSession,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("../../lib/attachments.js", () => ({
|
|
9
|
+
assertUUID: vi.fn(),
|
|
10
|
+
readMeta: vi.fn(),
|
|
11
|
+
attachmentDir: () => "/tmp/task-168-stub",
|
|
12
|
+
}));
|
|
13
|
+
vi.mock("node:fs/promises", async () => {
|
|
14
|
+
const actual = await vi.importActual("node:fs/promises");
|
|
15
|
+
return { ...actual, writeFile: vi.fn().mockResolvedValue(undefined) };
|
|
16
|
+
});
|
|
17
|
+
import { memoryRenameAttachment } from "../memory-rename-attachment.js";
|
|
18
|
+
import { readMeta } from "../../lib/attachments.js";
|
|
19
|
+
describe("memory-rename-attachment — emit wrapper wired", () => {
|
|
20
|
+
let emit;
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
emit = setupEmitCapture();
|
|
23
|
+
vi.mocked(readMeta).mockReset();
|
|
24
|
+
mockSession.run.mockReset();
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => emit.restore());
|
|
27
|
+
it("emits result=ok line on happy path (filename unchanged → no-op)", async () => {
|
|
28
|
+
vi.mocked(readMeta).mockResolvedValue({
|
|
29
|
+
filename: "same.md",
|
|
30
|
+
mimeType: "text/markdown",
|
|
31
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
32
|
+
sizeBytes: 0,
|
|
33
|
+
uploadedAt: "2026-01-01T00:00:00Z",
|
|
34
|
+
});
|
|
35
|
+
await memoryRenameAttachment({
|
|
36
|
+
accountId: "acct-1",
|
|
37
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
38
|
+
newFilename: "same.md",
|
|
39
|
+
});
|
|
40
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
41
|
+
const body = emit.captures()[0];
|
|
42
|
+
expect(body.tag).toBe("mcp:memory");
|
|
43
|
+
expect(body.level).toBe("info");
|
|
44
|
+
expect(body.line).toContain("memory-rename-attachment");
|
|
45
|
+
expect(body.line).toContain("result=ok");
|
|
46
|
+
});
|
|
47
|
+
it("emits result=error line on empty newFilename (invalid-input)", async () => {
|
|
48
|
+
await expect(memoryRenameAttachment({
|
|
49
|
+
accountId: "acct-1",
|
|
50
|
+
attachmentId: "00000000-0000-0000-0000-000000000001",
|
|
51
|
+
newFilename: "",
|
|
52
|
+
})).rejects.toThrow(/must not be empty/);
|
|
53
|
+
expect(emit.fetchSpy).toHaveBeenCalledTimes(1);
|
|
54
|
+
const body = emit.captures()[0];
|
|
55
|
+
expect(body.level).toBe("error");
|
|
56
|
+
expect(body.line).toContain("memory-rename-attachment");
|
|
57
|
+
expect(body.line).toContain("result=error");
|
|
58
|
+
// "must not be empty" does not match classifyReason's `must be ` pattern,
|
|
59
|
+
// so it falls through to neo4j-driver-error (the closed-enum catch-all).
|
|
60
|
+
// The contract being verified is wrapper wiring per tool, not the slug
|
|
61
|
+
// mapping — that's covered exhaustively in log-ingest.test.ts.
|
|
62
|
+
expect(body.line).toContain("reason=neo4j-driver-error");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=memory-rename-attachment-emit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-rename-attachment-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-rename-attachment-emit.test.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-restore-emit.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-restore-emit.test.ts"],"names":[],"mappings":""}
|