@rubytech/create-maxy-code 0.1.144 → 0.1.147
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/neo4j/schema.cypher +154 -4
- package/payload/platform/plugins/admin/PLUGIN.md +1 -1
- package/payload/platform/plugins/admin/hooks/post-turn-graph-pass.sh +251 -0
- package/payload/platform/plugins/admin/skills/datetime/SKILL.md +63 -5
- package/payload/platform/plugins/docs/references/internals.md +16 -0
- package/payload/platform/plugins/docs/references/memory-guide.md +10 -0
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +25 -3
- package/payload/platform/plugins/memory/mcp/dist/index.js +309 -11
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +33 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js +30 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js +51 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js +68 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js +41 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +43 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js +33 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +18 -5
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +64 -17
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +44 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js +14 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +26 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +219 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts +19 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js +39 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts +19 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js +42 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts +21 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js +27 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts +18 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js +60 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +20 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +47 -12
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts +13 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js +191 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts +7 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js +37 -9
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js +81 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +115 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts +19 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js +50 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +45 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +170 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts +28 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js +64 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts +24 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js +49 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +34 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +99 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts +29 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js +66 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +122 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +49 -13
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +184 -16
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +53 -10
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +6 -0
- package/payload/platform/plugins/memory/references/schema-base.md +4 -0
- package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +3 -4
- package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +13 -2
- package/payload/platform/scripts/seed-neo4j.sh +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +9 -1
- package/payload/platform/templates/specialists/agents/database-operator.md +30 -2
- package/payload/server/server.js +195 -91
- package/payload/platform/plugins/admin/hooks/signal-detector-stop.sh +0 -309
- package/payload/platform/templates/specialists/agents/signal-detector.md +0 -129
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
const TOOLS_ROOT = resolve(__dirname, "..");
|
|
8
|
+
function readTool(name) {
|
|
9
|
+
return readFileSync(resolve(TOOLS_ROOT, name), "utf-8");
|
|
10
|
+
}
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Task 332. Three new MCP tools on the memory plugin:
|
|
13
|
+
// - memory-report-write (append-only writer; idempotent on
|
|
14
|
+
// (accountId, title, occurredAt-within-1-min))
|
|
15
|
+
// - memory-report-read-latest (keyword-routed newest match, default limit=1)
|
|
16
|
+
// - memory-report-list (paginated catalogue, metadata only)
|
|
17
|
+
//
|
|
18
|
+
// These tests assert source-level contracts the same way the surrounding
|
|
19
|
+
// memory-ingest tests do — live Cypher is exercised by the operator-run
|
|
20
|
+
// integration test on the laptop.
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
describe("memory-report-write contract", () => {
|
|
23
|
+
const src = readTool("memory-report-write.ts");
|
|
24
|
+
it("caps body at 10,000 characters", () => {
|
|
25
|
+
expect(src).toMatch(/MAX_BODY_CHARS\s*=\s*10_?000/);
|
|
26
|
+
expect(src).toMatch(/body exceeds \$\{MAX_BODY_CHARS\} chars/);
|
|
27
|
+
});
|
|
28
|
+
it("idempotency pre-check matches on (accountId, title, occurredAt-within-1-min)", () => {
|
|
29
|
+
expect(src).toMatch(/MATCH\s*\(r:Report\s*\{accountId:\s*\$accountId,\s*title:\s*\$title\}/);
|
|
30
|
+
expect(src).toMatch(/r\.occurredAt\s*>=\s*datetime\(\$occurredAt\)\s*-\s*duration\('PT1M'\)/);
|
|
31
|
+
expect(src).toMatch(/r\.occurredAt\s*<=\s*datetime\(\$occurredAt\)\s*\+\s*duration\('PT1M'\)/);
|
|
32
|
+
});
|
|
33
|
+
it("returns existing nodeId without re-writing when idempotency matches", () => {
|
|
34
|
+
expect(src).toMatch(/created:\s*false/);
|
|
35
|
+
expect(src).toMatch(/idempotencyReason:\s*"same-title-within-minute"/);
|
|
36
|
+
});
|
|
37
|
+
it("falls back to :AdminUser parent when no conversation context is present", () => {
|
|
38
|
+
expect(src).toMatch(/OPTIONAL MATCH \(c:Conversation\)/);
|
|
39
|
+
expect(src).toMatch(/OPTIONAL MATCH \(au:AdminUser \{accountId:\s*\$accountId\}\)/);
|
|
40
|
+
expect(src).toMatch(/coalesce\(c,\s*au\)\s*AS parent/);
|
|
41
|
+
});
|
|
42
|
+
it("refuses the write when no parent resolves (graph-hierarchy doctrine)", () => {
|
|
43
|
+
expect(src).toMatch(/no parent resolved/);
|
|
44
|
+
});
|
|
45
|
+
it("stamps embedding from title + body for later hybrid search", () => {
|
|
46
|
+
expect(src).toMatch(/await embed\(`\$\{title\}\\n\\n\$\{body\}`\)/);
|
|
47
|
+
});
|
|
48
|
+
it("emits the canonical [reports] op=write log line with reportId, keywords, ms", () => {
|
|
49
|
+
expect(src).toMatch(/\[reports\] op=write reportId=\$\{[^}]+\} keywords=\$\{kwCsv\} ms=\$\{ms\}/);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("memory-report-read-latest contract", () => {
|
|
53
|
+
const src = readTool("memory-report-read-latest.ts");
|
|
54
|
+
it("matches reports whose keywords array contains the requested keyword", () => {
|
|
55
|
+
expect(src).toMatch(/WHERE \$keyword IN r\.keywords/);
|
|
56
|
+
});
|
|
57
|
+
it("orders by occurredAt descending and caps at the requested limit", () => {
|
|
58
|
+
expect(src).toMatch(/ORDER BY r\.occurredAt DESC/);
|
|
59
|
+
expect(src).toMatch(/LIMIT toInteger\(\$limit\)/);
|
|
60
|
+
});
|
|
61
|
+
it("defaults limit to 1 (the spec's primary access pattern)", () => {
|
|
62
|
+
expect(src).toMatch(/DEFAULT_LIMIT\s*=\s*1\b/);
|
|
63
|
+
});
|
|
64
|
+
it("emits the canonical [reports] op=read-latest log line", () => {
|
|
65
|
+
expect(src).toMatch(/\[reports\] op=read-latest reportId=\$\{firstId\} keywords=\$\{keyword\} ms=\$\{ms\} hits=\$\{results\.length\}/);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe("memory-report-list contract", () => {
|
|
69
|
+
const src = readTool("memory-report-list.ts");
|
|
70
|
+
it("returns metadata only — no body — but reports bodyChars per row", () => {
|
|
71
|
+
expect(src).toMatch(/size\(r\.body\) AS bodyChars/);
|
|
72
|
+
expect(src).not.toMatch(/r\.body AS body/);
|
|
73
|
+
});
|
|
74
|
+
it("applies optional keyword filter via $keyword IN r.keywords", () => {
|
|
75
|
+
expect(src).toMatch(/\$keyword IN r\.keywords/);
|
|
76
|
+
});
|
|
77
|
+
it("applies optional exact-match sourceWorkflow filter", () => {
|
|
78
|
+
expect(src).toMatch(/r\.sourceWorkflow = \$sourceWorkflow/);
|
|
79
|
+
});
|
|
80
|
+
it("paginates via offset+limit and surfaces total before paging", () => {
|
|
81
|
+
expect(src).toMatch(/collect\(r\) AS rows,\s*count\(r\) AS total/);
|
|
82
|
+
expect(src).toMatch(/rows\[toInteger\(\$offset\)\.\.toInteger\(\$offset\)\s*\+\s*toInteger\(\$limit\)\]/);
|
|
83
|
+
});
|
|
84
|
+
it("orders newest first", () => {
|
|
85
|
+
expect(src).toMatch(/ORDER BY r\.occurredAt DESC/);
|
|
86
|
+
});
|
|
87
|
+
it("emits the canonical [reports] op=list log line", () => {
|
|
88
|
+
expect(src).toMatch(/\[reports\] op=list reportId=\$\{firstId\} keywords=\$\{kwLog\} ms=\$\{ms\} hits=\$\{results\.length\} total=\$\{total\}/);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("server registration", () => {
|
|
92
|
+
const indexSrc = readFileSync(resolve(TOOLS_ROOT, "..", "index.ts"), "utf-8");
|
|
93
|
+
it("registers all three tools by name in index.ts", () => {
|
|
94
|
+
expect(indexSrc).toMatch(/"memory-report-write"/);
|
|
95
|
+
expect(indexSrc).toMatch(/"memory-report-read-latest"/);
|
|
96
|
+
expect(indexSrc).toMatch(/"memory-report-list"/);
|
|
97
|
+
});
|
|
98
|
+
it("threads CONVERSATION_NODE_ID into the write tool from the spawn env", () => {
|
|
99
|
+
expect(indexSrc).toMatch(/conversationNodeId:\s*process\.env\.CONVERSATION_NODE_ID/);
|
|
100
|
+
});
|
|
101
|
+
it("gates memory-report-write behind !readOnly but leaves the read tools always-on", () => {
|
|
102
|
+
const writeIdx = indexSrc.indexOf('"memory-report-write"');
|
|
103
|
+
const readLatestIdx = indexSrc.indexOf('"memory-report-read-latest"');
|
|
104
|
+
const listIdx = indexSrc.indexOf('"memory-report-list"');
|
|
105
|
+
const readOnlyBlockStart = indexSrc.indexOf("if (!readOnly) {");
|
|
106
|
+
expect(readOnlyBlockStart).toBeGreaterThan(0);
|
|
107
|
+
expect(readLatestIdx).toBeGreaterThan(0);
|
|
108
|
+
expect(listIdx).toBeGreaterThan(0);
|
|
109
|
+
expect(writeIdx).toBeGreaterThan(0);
|
|
110
|
+
expect(readLatestIdx).toBeLessThan(readOnlyBlockStart);
|
|
111
|
+
expect(listIdx).toBeLessThan(readOnlyBlockStart);
|
|
112
|
+
expect(writeIdx).toBeGreaterThan(readOnlyBlockStart);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=memory-report-tools.test.js.map
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-report-tools.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-report-tools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ vi.mock("../../lib/embeddings.js", () => ({
|
|
|
11
11
|
vi.mock("../../lib/graph-write-gate.js", () => ({
|
|
12
12
|
checkGraphWriteGate: vi.fn().mockResolvedValue({ ok: true }),
|
|
13
13
|
checkPropertyWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
14
|
+
checkLabelWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
14
15
|
COMPILED_TRUTH_MAX_CHARS: 2000,
|
|
15
16
|
}));
|
|
16
17
|
vi.mock("../../lib/compiled-truth-rewriter.js", () => ({
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-update-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-update-emit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-update-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-update-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ vi.mock("../../lib/schema-validator.js", () => ({
|
|
|
14
14
|
vi.mock("../../lib/graph-write-gate.js", () => ({
|
|
15
15
|
checkGraphWriteGate: vi.fn().mockResolvedValue({ ok: true }),
|
|
16
16
|
checkPropertyWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
17
|
+
checkLabelWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
17
18
|
COMPILED_TRUTH_MAX_CHARS: 2000,
|
|
18
19
|
}));
|
|
19
20
|
vi.mock("../../../../../../lib/graph-write/dist/index.js", () => ({
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-write-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-write-emit.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;AAEtC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW;CAC9B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC5D,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7D,wBAAwB,EAAE,IAAI;CAC/B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE,CAAC,CAAC;IAChE,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,4BAA4B,EAAE,EAAE;SAC7B,EAAE,EAAE;SACJ,kBAAkB,CAAC,KAAK,EAAE,EAAE,aAAa,EAAgC,EAAE,EAAE,CAAC,aAAa,CAAC;CAChG,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,IAAI,IAAyC,CAAC;IAC9C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAC1B,wDAAwD;QACxD,sEAAsE;QACtE,qEAAqE;QACrE,qEAAqE;QACrE,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC5B,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;YAC9C,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,OAAO,EAAE,IAAI;SACL,CAAC,CAAC;QACZ,MAAM,WAAW,CAAC;YAChB,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAChC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,QAAQ;YACf,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAU;YAClG,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAW;YACtD,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAW;SACxD,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,cAAc,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,MAAM,CACV,WAAW,CAAC;YACV,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAChC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,EAAW;YAC1B,SAAS,EAAE,EAAW;YACtB,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAW;SACxD,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvC,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,cAAc,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"memory-write-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-write-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface CompiledTruthHistoryParams {
|
|
2
|
+
accountId: string;
|
|
3
|
+
/** elementId of the :Person | :Organization | :Concept entity. */
|
|
4
|
+
nodeId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CompiledTruthRevisionRow {
|
|
7
|
+
revisionId: string;
|
|
8
|
+
truth: string;
|
|
9
|
+
writtenAt: string;
|
|
10
|
+
source: "rewriter" | "operator";
|
|
11
|
+
}
|
|
12
|
+
export interface CompiledTruthHistoryResult {
|
|
13
|
+
entityNodeId: string;
|
|
14
|
+
revisions: CompiledTruthRevisionRow[];
|
|
15
|
+
}
|
|
16
|
+
declare const MAX_REVISIONS_RETURNED = 20;
|
|
17
|
+
export declare function memoryCompiledTruthHistory(params: CompiledTruthHistoryParams): Promise<CompiledTruthHistoryResult>;
|
|
18
|
+
export { MAX_REVISIONS_RETURNED };
|
|
19
|
+
//# sourceMappingURL=memory-compiled-truth-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-compiled-truth-history.d.ts","sourceRoot":"","sources":["../../src/tools/memory-compiled-truth-history.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,wBAAwB,EAAE,CAAC;CACvC;AAED,QAAA,MAAM,sBAAsB,KAAK,CAAC;AAElC,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAyCrC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-compiled-truth-history — Task 391.
|
|
3
|
+
*
|
|
4
|
+
* Returns the `:CompiledTruthRevision` chain for one entity, newest
|
|
5
|
+
* first, capped at `MAX_REVISIONS_RETURNED`. Account-scoped at both
|
|
6
|
+
* the entity and the revision (defence in depth — accountId mismatch
|
|
7
|
+
* on either side returns an empty list).
|
|
8
|
+
*
|
|
9
|
+
* Read-only. The agent renders revision diffs in chat from the
|
|
10
|
+
* returned rows — there is no server-side diff helper because the
|
|
11
|
+
* surface is PTY stdout and the LLM composes the comparison.
|
|
12
|
+
*/
|
|
13
|
+
import { getSession } from "../lib/neo4j.js";
|
|
14
|
+
const MAX_REVISIONS_RETURNED = 20;
|
|
15
|
+
export async function memoryCompiledTruthHistory(params) {
|
|
16
|
+
const { accountId, nodeId } = params;
|
|
17
|
+
if (!accountId) {
|
|
18
|
+
throw new Error("memory-compiled-truth-history: accountId is required");
|
|
19
|
+
}
|
|
20
|
+
if (!nodeId) {
|
|
21
|
+
throw new Error("memory-compiled-truth-history: nodeId is required");
|
|
22
|
+
}
|
|
23
|
+
const session = getSession();
|
|
24
|
+
const t0 = Date.now();
|
|
25
|
+
try {
|
|
26
|
+
const res = await session.run(`MATCH (e) WHERE elementId(e) = $nodeId AND e.accountId = $accountId
|
|
27
|
+
MATCH (e)-[:HAS_REVISION]->(r:CompiledTruthRevision)
|
|
28
|
+
WHERE r.accountId = $accountId
|
|
29
|
+
RETURN r.revisionId AS revisionId,
|
|
30
|
+
r.truth AS truth,
|
|
31
|
+
toString(r.writtenAt) AS writtenAt,
|
|
32
|
+
r.source AS source
|
|
33
|
+
ORDER BY r.writtenAt DESC
|
|
34
|
+
LIMIT $limit`, { nodeId, accountId, limit: MAX_REVISIONS_RETURNED });
|
|
35
|
+
const revisions = res.records.map((rec) => ({
|
|
36
|
+
revisionId: String(rec.get("revisionId")),
|
|
37
|
+
truth: String(rec.get("truth") ?? ""),
|
|
38
|
+
writtenAt: String(rec.get("writtenAt")),
|
|
39
|
+
source: rec.get("source"),
|
|
40
|
+
}));
|
|
41
|
+
const ms = Date.now() - t0;
|
|
42
|
+
process.stderr.write(`[compiled-truth-history] nodeId=${nodeId.slice(0, 12)} ms=${ms} revisions=${revisions.length}\n`);
|
|
43
|
+
return { entityNodeId: nodeId, revisions };
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
await session.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export { MAX_REVISIONS_RETURNED };
|
|
50
|
+
//# sourceMappingURL=memory-compiled-truth-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-compiled-truth-history.js","sourceRoot":"","sources":["../../src/tools/memory-compiled-truth-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoB7C,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAkC;IAElC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B;;;;;;;;oBAQc,EACd,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,CACrD,CAAC;QAEF,MAAM,SAAS,GAA+B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAA4B;SACrD,CAAC,CAAC,CAAC;QAEJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,SAAS,CAAC,MAAM,IAAI,CAClG,CAAC;QAEF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-dream-run — Task 327 (+ Task 391 prune-revisions phase).
|
|
3
|
+
*
|
|
4
|
+
* Operator-initiated dream-cycle orchestrator. Runs the configured phases
|
|
5
|
+
* in fixed order with failure isolation: any phase that throws is logged
|
|
6
|
+
* `[dream-cycle:phase-<n>:error]` and added to the run report, but
|
|
7
|
+
* subsequent phases still execute.
|
|
8
|
+
*
|
|
9
|
+
* The `phases` parameter selects a subset (e.g. `[4]` for a citation-only
|
|
10
|
+
* sweep after a bulk ingest). It does NOT reorder — the order is fixed.
|
|
11
|
+
*
|
|
12
|
+
* Phase 4 reads the resume cursor from the most-recent `:Report` (keyword
|
|
13
|
+
* "dream-cycle") via a direct property read (`lastEventCursor`), and writes
|
|
14
|
+
* its own next-cursor onto this run's :Report via a post-write Cypher SET.
|
|
15
|
+
* The cursor lives as a direct property on :Report rather than via a
|
|
16
|
+
* writer-side `extra` field because the canonical `memory-report-write`
|
|
17
|
+
* (Task 332) does not accept arbitrary payload. Subsequent invocations
|
|
18
|
+
* resume after the stored id so a populated graph drains gradually rather
|
|
19
|
+
* than running unbounded LLM calls on every invocation.
|
|
20
|
+
*
|
|
21
|
+
* Phase 5 (Task 391) prunes `:CompiledTruthRevision` rows down to the
|
|
22
|
+
* newest 20 per entity. Phase 6 (backlinks) and phase 7 (tag consistency)
|
|
23
|
+
* remain deferred. The `phases` schema accepts 1..5 only; values outside
|
|
24
|
+
* that range are rejected by zod at the MCP boundary.
|
|
25
|
+
*/
|
|
26
|
+
import type { PhaseResult, PhaseError } from "../lib/dream-cycle/index.js";
|
|
27
|
+
export interface MemoryDreamRunParams {
|
|
28
|
+
accountId: string;
|
|
29
|
+
/** Operator identifier — appears in the `[dream-cycle] started` log line. */
|
|
30
|
+
operatorId?: string;
|
|
31
|
+
/** Which phases to run. Defaults to [1, 2, 3, 4]. */
|
|
32
|
+
phases?: number[];
|
|
33
|
+
/** Phase 4 cap. Defaults to 200. */
|
|
34
|
+
maxEventsPerRun?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface MemoryDreamRunResult {
|
|
37
|
+
reportId: string;
|
|
38
|
+
phasesRun: number[];
|
|
39
|
+
phaseResults: PhaseResult[];
|
|
40
|
+
phaseErrors: PhaseError[];
|
|
41
|
+
durationSec: number;
|
|
42
|
+
partial: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function memoryDreamRun(params: MemoryDreamRunParams): Promise<MemoryDreamRunResult>;
|
|
45
|
+
//# sourceMappingURL=memory-dream-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-dream-run.d.ts","sourceRoot":"","sources":["../../src/tools/memory-dream-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,OAAO,KAAK,EAAgB,WAAW,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAgBD,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAgH/B"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-dream-run — Task 327 (+ Task 391 prune-revisions phase).
|
|
3
|
+
*
|
|
4
|
+
* Operator-initiated dream-cycle orchestrator. Runs the configured phases
|
|
5
|
+
* in fixed order with failure isolation: any phase that throws is logged
|
|
6
|
+
* `[dream-cycle:phase-<n>:error]` and added to the run report, but
|
|
7
|
+
* subsequent phases still execute.
|
|
8
|
+
*
|
|
9
|
+
* The `phases` parameter selects a subset (e.g. `[4]` for a citation-only
|
|
10
|
+
* sweep after a bulk ingest). It does NOT reorder — the order is fixed.
|
|
11
|
+
*
|
|
12
|
+
* Phase 4 reads the resume cursor from the most-recent `:Report` (keyword
|
|
13
|
+
* "dream-cycle") via a direct property read (`lastEventCursor`), and writes
|
|
14
|
+
* its own next-cursor onto this run's :Report via a post-write Cypher SET.
|
|
15
|
+
* The cursor lives as a direct property on :Report rather than via a
|
|
16
|
+
* writer-side `extra` field because the canonical `memory-report-write`
|
|
17
|
+
* (Task 332) does not accept arbitrary payload. Subsequent invocations
|
|
18
|
+
* resume after the stored id so a populated graph drains gradually rather
|
|
19
|
+
* than running unbounded LLM calls on every invocation.
|
|
20
|
+
*
|
|
21
|
+
* Phase 5 (Task 391) prunes `:CompiledTruthRevision` rows down to the
|
|
22
|
+
* newest 20 per entity. Phase 6 (backlinks) and phase 7 (tag consistency)
|
|
23
|
+
* remain deferred. The `phases` schema accepts 1..5 only; values outside
|
|
24
|
+
* that range are rejected by zod at the MCP boundary.
|
|
25
|
+
*/
|
|
26
|
+
import { getSession } from "../lib/neo4j.js";
|
|
27
|
+
import { phaseOrphans } from "../lib/dream-cycle/phase-orphans.js";
|
|
28
|
+
import { phaseStaleTruth } from "../lib/dream-cycle/phase-stale-truth.js";
|
|
29
|
+
import { phaseDeadEdges } from "../lib/dream-cycle/phase-dead-edges.js";
|
|
30
|
+
import { phaseCitationAudit } from "../lib/dream-cycle/phase-citation-audit.js";
|
|
31
|
+
import { phasePruneRevisions } from "../lib/dream-cycle/phase-prune-revisions.js";
|
|
32
|
+
import { memoryReportWrite } from "./memory-report-write.js";
|
|
33
|
+
const ALL_PHASES = [1, 2, 3, 4, 5];
|
|
34
|
+
const PHASE_DISPATCH = {
|
|
35
|
+
1: { name: "orphans", run: phaseOrphans },
|
|
36
|
+
2: { name: "stale-truth", run: phaseStaleTruth },
|
|
37
|
+
3: { name: "dead-edges", run: phaseDeadEdges },
|
|
38
|
+
4: { name: "citation-audit", run: phaseCitationAudit },
|
|
39
|
+
5: { name: "prune-revisions", run: phasePruneRevisions },
|
|
40
|
+
};
|
|
41
|
+
export async function memoryDreamRun(params) {
|
|
42
|
+
const start = Date.now();
|
|
43
|
+
const { accountId, operatorId } = params;
|
|
44
|
+
const phasesRun = (params.phases ?? [...ALL_PHASES]).filter((p) => ALL_PHASES.includes(p));
|
|
45
|
+
process.stderr.write(`[dream-cycle] started operatorId=${operatorId ?? "<unknown>"} phases=[${phasesRun.join(",")}]\n`);
|
|
46
|
+
// Resume-cursor pickup: the most-recent prior `:Report` for this
|
|
47
|
+
// account with keyword "dream-cycle" carries `lastEventCursor` if its
|
|
48
|
+
// phase 4 was partial. Read it directly from the node — `memory-report-*`
|
|
49
|
+
// tools don't surface arbitrary properties.
|
|
50
|
+
let resumeCursor = null;
|
|
51
|
+
const session = getSession();
|
|
52
|
+
if (phasesRun.includes(4)) {
|
|
53
|
+
const prior = await session.run(`MATCH (r:Report)
|
|
54
|
+
WHERE r.accountId = $accountId AND 'dream-cycle' IN r.keywords
|
|
55
|
+
AND r.lastEventCursor IS NOT NULL
|
|
56
|
+
RETURN r.lastEventCursor AS cursor
|
|
57
|
+
ORDER BY r.occurredAt DESC LIMIT 1`, { accountId });
|
|
58
|
+
const cursorVal = prior.records[0]?.get("cursor");
|
|
59
|
+
if (typeof cursorVal === "string" && cursorVal.length > 0) {
|
|
60
|
+
resumeCursor = cursorVal;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const phaseResults = [];
|
|
64
|
+
const phaseErrors = [];
|
|
65
|
+
try {
|
|
66
|
+
for (const phase of phasesRun) {
|
|
67
|
+
const dispatch = PHASE_DISPATCH[phase];
|
|
68
|
+
try {
|
|
69
|
+
const result = await dispatch.run({
|
|
70
|
+
accountId,
|
|
71
|
+
session,
|
|
72
|
+
config: {
|
|
73
|
+
maxEventsPerRun: params.maxEventsPerRun,
|
|
74
|
+
resumeCursor: phase === 4 ? resumeCursor : null,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
phaseResults.push(result);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
81
|
+
phaseErrors.push({ phase, name: dispatch.name, reason });
|
|
82
|
+
process.stderr.write(`[dream-cycle:phase-${phase}:error] reason=${reason}\n`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
await session.close();
|
|
88
|
+
}
|
|
89
|
+
const durationSec = Math.round((Date.now() - start) / 1000);
|
|
90
|
+
process.stderr.write(`[dream-cycle] completed phases=${phaseResults.length} durationSec=${durationSec}\n`);
|
|
91
|
+
// Carry forward phase 4's resume cursor onto the new report so the
|
|
92
|
+
// next invocation can pick up where this one left off.
|
|
93
|
+
const phase4 = phaseResults.find((r) => r.phase === 4);
|
|
94
|
+
const partial = Boolean(phase4?.extra?.partial);
|
|
95
|
+
const newCursor = phase4?.extra?.lastEventCursor ?? null;
|
|
96
|
+
const reportTitle = `Dream cycle ${new Date().toISOString().slice(0, 16).replace("T", " ")}`;
|
|
97
|
+
const reportBody = buildReportBody({
|
|
98
|
+
operatorId,
|
|
99
|
+
phasesRun,
|
|
100
|
+
phaseResults,
|
|
101
|
+
phaseErrors,
|
|
102
|
+
durationSec,
|
|
103
|
+
});
|
|
104
|
+
const { reportId } = await memoryReportWrite({
|
|
105
|
+
accountId,
|
|
106
|
+
title: reportTitle,
|
|
107
|
+
body: reportBody,
|
|
108
|
+
keywords: ["dream-cycle"],
|
|
109
|
+
sourceWorkflow: "dream-cycle",
|
|
110
|
+
});
|
|
111
|
+
// Post-write: attach cursor + run metadata to the :Report. Done as a
|
|
112
|
+
// separate SET because memory-report-write does not accept arbitrary
|
|
113
|
+
// payload; storing the cursor here keeps the resume contract in one
|
|
114
|
+
// place (read above, write here).
|
|
115
|
+
const cursorSession = getSession();
|
|
116
|
+
try {
|
|
117
|
+
await cursorSession.run(`MATCH (r:Report {reportId: $reportId, accountId: $accountId})
|
|
118
|
+
SET r.lastEventCursor = $cursor,
|
|
119
|
+
r.partial = $partial,
|
|
120
|
+
r.operatorId = $operatorId,
|
|
121
|
+
r.phasesRun = $phasesRun`, {
|
|
122
|
+
reportId,
|
|
123
|
+
accountId,
|
|
124
|
+
cursor: newCursor,
|
|
125
|
+
partial,
|
|
126
|
+
operatorId: operatorId ?? null,
|
|
127
|
+
phasesRun,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
await cursorSession.close();
|
|
132
|
+
}
|
|
133
|
+
return { reportId, phasesRun, phaseResults, phaseErrors, durationSec, partial };
|
|
134
|
+
}
|
|
135
|
+
function buildReportBody(input) {
|
|
136
|
+
const lines = [];
|
|
137
|
+
lines.push(`# Dream cycle run`);
|
|
138
|
+
lines.push(``);
|
|
139
|
+
lines.push(`- Operator: ${input.operatorId ?? "<unknown>"}`);
|
|
140
|
+
lines.push(`- Phases requested: ${input.phasesRun.join(", ")}`);
|
|
141
|
+
lines.push(`- Duration: ${input.durationSec}s`);
|
|
142
|
+
lines.push(``);
|
|
143
|
+
lines.push(`## Phase results`);
|
|
144
|
+
for (const r of input.phaseResults) {
|
|
145
|
+
lines.push(`- **phase ${r.phase} ${r.name}** — duration ${r.durationSec}s, ` +
|
|
146
|
+
`proposed ${r.proposed}, applied ${r.applied}, deferred ${r.deferred}`);
|
|
147
|
+
}
|
|
148
|
+
if (input.phaseErrors.length > 0) {
|
|
149
|
+
lines.push(``);
|
|
150
|
+
lines.push(`## Phase errors`);
|
|
151
|
+
for (const e of input.phaseErrors) {
|
|
152
|
+
lines.push(`- **phase ${e.phase} ${e.name}** — ${e.reason}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Phase 4 detail block when present.
|
|
156
|
+
const phase4 = input.phaseResults.find((r) => r.phase === 4);
|
|
157
|
+
if (phase4?.extra) {
|
|
158
|
+
const x = phase4.extra;
|
|
159
|
+
lines.push(``);
|
|
160
|
+
lines.push(`## Citation audit (phase 4)`);
|
|
161
|
+
lines.push(`- scanned=${x.scanned} highConfApplied=${x.highConfApplied} ` +
|
|
162
|
+
`lowConfDeferred=${x.lowConfDeferred} malformedFixed=${x.malformedFixed} ` +
|
|
163
|
+
`partial=${x.partial}`);
|
|
164
|
+
if (x.partial) {
|
|
165
|
+
lines.push(`- Resume cursor stored on this report; next run continues after this point.`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return lines.join("\n");
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=memory-dream-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-dream-run.js","sourceRoot":"","sources":["../../src/tools/memory-dream-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-report-list — paginated listing of :Report nodes (Task 332).
|
|
3
|
+
* Optional filters: keyword (any-match against r.keywords array),
|
|
4
|
+
* sourceWorkflow (exact match). Returns metadata only — no body — so the
|
|
5
|
+
* agent can scan the catalogue without paying for full bodies.
|
|
6
|
+
*/
|
|
7
|
+
export interface ReportListParams {
|
|
8
|
+
accountId: string;
|
|
9
|
+
keyword?: string;
|
|
10
|
+
sourceWorkflow?: string;
|
|
11
|
+
limit?: number;
|
|
12
|
+
offset?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ReportListRow {
|
|
15
|
+
nodeId: string;
|
|
16
|
+
reportId: string;
|
|
17
|
+
title: string;
|
|
18
|
+
keywords: string[];
|
|
19
|
+
sourceWorkflow: string | null;
|
|
20
|
+
occurredAt: string;
|
|
21
|
+
bodyChars: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ReportListResult {
|
|
24
|
+
results: ReportListRow[];
|
|
25
|
+
total: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function memoryReportList(params: ReportListParams): Promise<ReportListResult>;
|
|
28
|
+
//# sourceMappingURL=memory-report-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-report-list.d.ts","sourceRoot":"","sources":["../../src/tools/memory-report-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA8D3B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-report-list — paginated listing of :Report nodes (Task 332).
|
|
3
|
+
* Optional filters: keyword (any-match against r.keywords array),
|
|
4
|
+
* sourceWorkflow (exact match). Returns metadata only — no body — so the
|
|
5
|
+
* agent can scan the catalogue without paying for full bodies.
|
|
6
|
+
*/
|
|
7
|
+
import { getSession } from "../lib/neo4j.js";
|
|
8
|
+
const DEFAULT_LIMIT = 20;
|
|
9
|
+
const MAX_LIMIT = 100;
|
|
10
|
+
export async function memoryReportList(params) {
|
|
11
|
+
const { accountId, keyword, sourceWorkflow } = params;
|
|
12
|
+
const limit = Math.max(1, Math.min(params.limit ?? DEFAULT_LIMIT, MAX_LIMIT));
|
|
13
|
+
const offset = Math.max(0, params.offset ?? 0);
|
|
14
|
+
if (!accountId)
|
|
15
|
+
throw new Error("memory-report-list: accountId is required");
|
|
16
|
+
const session = getSession();
|
|
17
|
+
const t0 = Date.now();
|
|
18
|
+
try {
|
|
19
|
+
const filterClauses = [];
|
|
20
|
+
if (keyword)
|
|
21
|
+
filterClauses.push("$keyword IN r.keywords");
|
|
22
|
+
if (sourceWorkflow)
|
|
23
|
+
filterClauses.push("r.sourceWorkflow = $sourceWorkflow");
|
|
24
|
+
const whereExtra = filterClauses.length > 0 ? `AND ${filterClauses.join(" AND ")}` : "";
|
|
25
|
+
const res = await session.run(`MATCH (r:Report {accountId: $accountId})
|
|
26
|
+
WHERE 1=1 ${whereExtra}
|
|
27
|
+
WITH r ORDER BY r.occurredAt DESC
|
|
28
|
+
WITH collect(r) AS rows, count(r) AS total
|
|
29
|
+
UNWIND rows[toInteger($offset)..toInteger($offset) + toInteger($limit)] AS r
|
|
30
|
+
RETURN elementId(r) AS nodeId,
|
|
31
|
+
r.reportId AS reportId,
|
|
32
|
+
r.title AS title,
|
|
33
|
+
r.keywords AS keywords,
|
|
34
|
+
r.sourceWorkflow AS sourceWorkflow,
|
|
35
|
+
toString(r.occurredAt) AS occurredAt,
|
|
36
|
+
size(r.body) AS bodyChars,
|
|
37
|
+
total`, {
|
|
38
|
+
accountId,
|
|
39
|
+
keyword: keyword ?? null,
|
|
40
|
+
sourceWorkflow: sourceWorkflow ?? null,
|
|
41
|
+
limit,
|
|
42
|
+
offset,
|
|
43
|
+
});
|
|
44
|
+
const results = res.records.map((rec) => ({
|
|
45
|
+
nodeId: rec.get("nodeId"),
|
|
46
|
+
reportId: rec.get("reportId"),
|
|
47
|
+
title: rec.get("title"),
|
|
48
|
+
keywords: rec.get("keywords"),
|
|
49
|
+
sourceWorkflow: rec.get("sourceWorkflow"),
|
|
50
|
+
occurredAt: rec.get("occurredAt"),
|
|
51
|
+
bodyChars: Number(rec.get("bodyChars")),
|
|
52
|
+
}));
|
|
53
|
+
const total = res.records.length > 0 ? Number(res.records[0].get("total")) : 0;
|
|
54
|
+
const ms = Date.now() - t0;
|
|
55
|
+
const firstId = results[0]?.reportId.slice(0, 8) ?? "none";
|
|
56
|
+
const kwLog = keyword ?? "*";
|
|
57
|
+
process.stderr.write(`[reports] op=list reportId=${firstId} keywords=${kwLog} ms=${ms} hits=${results.length} total=${total}\n`);
|
|
58
|
+
return { results, total };
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await session.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=memory-report-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-report-list.js","sourceRoot":"","sources":["../../src/tools/memory-report-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-report-read-latest — fetch the most recent :Report(s) matching a
|
|
3
|
+
* keyword (Task 332). Resolves "what was last night's dream cycle" /
|
|
4
|
+
* "show me the latest briefing" routes by name; default `limit=1`.
|
|
5
|
+
*/
|
|
6
|
+
export interface ReportReadLatestParams {
|
|
7
|
+
accountId: string;
|
|
8
|
+
keyword: string;
|
|
9
|
+
limit?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ReportRow {
|
|
12
|
+
nodeId: string;
|
|
13
|
+
reportId: string;
|
|
14
|
+
title: string;
|
|
15
|
+
body: string;
|
|
16
|
+
keywords: string[];
|
|
17
|
+
sourceWorkflow: string | null;
|
|
18
|
+
occurredAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ReportReadLatestResult {
|
|
21
|
+
results: ReportRow[];
|
|
22
|
+
}
|
|
23
|
+
export declare function memoryReportReadLatest(params: ReportReadLatestParams): Promise<ReportReadLatestResult>;
|
|
24
|
+
//# sourceMappingURL=memory-report-read-latest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-report-read-latest.d.ts","sourceRoot":"","sources":["../../src/tools/memory-report-read-latest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAKD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
|