@rubytech/create-maxy-code 0.1.140 → 0.1.143
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/config/brand.json +1 -1
- package/payload/platform/lib/graph-style/dist/index.d.ts +6 -4
- package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-style/dist/index.js +10 -23
- package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-style/src/index.ts +10 -20
- package/payload/platform/lib/graph-trash/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-trash/dist/index.js +6 -1
- package/payload/platform/lib/graph-trash/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-trash/src/index.ts +6 -1
- package/payload/platform/neo4j/edge-annotations.json +3 -3
- package/payload/platform/neo4j/schema.cypher +81 -119
- package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
- package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +2 -2
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +14 -8
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +10 -7
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js.map +1 -1
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/plugins/docs/references/linkedin-extension.md +1 -1
- package/payload/platform/plugins/docs/references/neo4j.md +3 -3
- package/payload/platform/plugins/docs/references/plugins-guide.md +3 -2
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/email/PLUGIN.md +3 -7
- package/payload/platform/plugins/email/mcp/dist/index.js +7 -46
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -15
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +51 -43
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js +223 -229
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +7 -4
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +14 -4
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +69 -84
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +49 -64
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +1 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
- package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +1 -1
- package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +12 -13
- package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +1 -1
- package/payload/platform/plugins/memory/mcp/dist/index.js +17 -15
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +3 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +13 -7
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts +3 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +101 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +2 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +5 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +12 -10
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +7 -4
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +47 -39
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +7 -6
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +12 -11
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +59 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +326 -4
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +31 -27
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +72 -49
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/references/schema-base.md +5 -6
- package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +1 -1
- package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +16 -15
- package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +8 -8
- package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +14 -13
- package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +13 -9
- package/payload/platform/plugins/notion-import/skills/notion-import/references/databases.md +11 -9
- package/payload/platform/plugins/notion-import/skills/notion-import/references/page-tree.md +12 -12
- package/payload/platform/plugins/scheduling/PLUGIN.md +18 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +93 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts +80 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js +395 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts +16 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js +111 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts +20 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js +63 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js.map +1 -0
- package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +2 -2
- package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
- package/payload/platform/plugins/x-import/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/x-import/PLUGIN.md +33 -0
- package/payload/platform/plugins/x-import/references/archive-shape.md +124 -0
- package/payload/platform/plugins/x-import/references/transcript-shape.md +121 -0
- package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +123 -0
- package/payload/platform/scripts/check-no-conversation-id-leaks.mjs +1 -1
- package/payload/platform/templates/specialists/agents/database-operator.md +6 -2
- package/payload/platform/templates/specialists/agents/librarian.md +4 -4
- package/payload/server/public/assets/{admin-BM9aXUUh.js → admin-_pm0RRTE.js} +1 -1
- package/payload/server/public/assets/{data-Ds2ECtfP.js → data-b6q64Ot4.js} +1 -1
- package/payload/server/public/assets/{graph-BzxObKMM.js → graph-D1SVlBLb.js} +1 -1
- package/payload/server/public/assets/graph-labels-BiDGzVs2.js +1 -0
- package/payload/server/public/assets/{page-BlkBsjP2.js → page-BV6E4J2q.js} +1 -1
- package/payload/server/public/assets/{page-h_SA5SVQ.js → page-DwFigpyR.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +3 -3
- package/payload/server/public/index.html +4 -4
- package/payload/server/server.js +18 -21
- package/payload/server/public/assets/graph-labels-Dwgep_nr.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-fetch.js","sourceRoot":"","sources":["../../src/scripts/email-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"email-fetch.js","sourceRoot":"","sources":["../../src/scripts/email-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,18 +4,28 @@ interface GraphQueryParams {
|
|
|
4
4
|
sender?: string;
|
|
5
5
|
dateFrom?: string;
|
|
6
6
|
dateTo?: string;
|
|
7
|
+
/**
|
|
8
|
+
* direction filter:
|
|
9
|
+
* - "inbound" → threads whose first message was received
|
|
10
|
+
* - "outbound" → KDs created by send/reply (sender was the operator)
|
|
11
|
+
* Implementation note: outbound vs inbound is decided by whether the KD
|
|
12
|
+
* has a `direction:'outbound'` property. Mixed threads (operator both
|
|
13
|
+
* sent and received messages) appear under whichever direction matches
|
|
14
|
+
* their first message.
|
|
15
|
+
*/
|
|
7
16
|
direction?: "inbound" | "outbound";
|
|
8
17
|
offset?: number;
|
|
9
18
|
limit?: number;
|
|
10
19
|
}
|
|
11
20
|
/**
|
|
12
|
-
* Query
|
|
21
|
+
* Query email-source :KnowledgeDocument threads stored in the graph.
|
|
13
22
|
*
|
|
14
23
|
* Two modes:
|
|
15
|
-
* - List (no query): Cypher MATCH with optional filters, sorted by
|
|
16
|
-
* - Search (query provided): embed via Ollama, vector similarity on
|
|
24
|
+
* - List (no query): Cypher MATCH with optional filters, sorted by lastReceivedAt DESC
|
|
25
|
+
* - Search (query provided): embed via Ollama, vector similarity on KD embedding index
|
|
17
26
|
*
|
|
18
|
-
* Always scoped to accountId.
|
|
27
|
+
* Always scoped to accountId. The display surface is per-thread, not
|
|
28
|
+
* per-message — the KD body holds the verbatim chronological transcript.
|
|
19
29
|
*/
|
|
20
30
|
export declare function emailGraphQuery(params: GraphQueryParams): Promise<string>;
|
|
21
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-graph-query.d.ts","sourceRoot":"","sources":["../../src/tools/email-graph-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-graph-query.d.ts","sourceRoot":"","sources":["../../src/tools/email-graph-query.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC/E"}
|
|
@@ -1,141 +1,126 @@
|
|
|
1
1
|
import neo4j from "neo4j-driver";
|
|
2
2
|
import { getSession } from "../lib/neo4j.js";
|
|
3
3
|
import { computeEmbedding } from "../lib/embedding.js";
|
|
4
|
-
import { getThreadInfo, stripAngleBrackets } from "../lib/graph.js";
|
|
5
4
|
/**
|
|
6
|
-
* Query
|
|
5
|
+
* Query email-source :KnowledgeDocument threads stored in the graph.
|
|
7
6
|
*
|
|
8
7
|
* Two modes:
|
|
9
|
-
* - List (no query): Cypher MATCH with optional filters, sorted by
|
|
10
|
-
* - Search (query provided): embed via Ollama, vector similarity on
|
|
8
|
+
* - List (no query): Cypher MATCH with optional filters, sorted by lastReceivedAt DESC
|
|
9
|
+
* - Search (query provided): embed via Ollama, vector similarity on KD embedding index
|
|
11
10
|
*
|
|
12
|
-
* Always scoped to accountId.
|
|
11
|
+
* Always scoped to accountId. The display surface is per-thread, not
|
|
12
|
+
* per-message — the KD body holds the verbatim chronological transcript.
|
|
13
13
|
*/
|
|
14
14
|
export async function emailGraphQuery(params) {
|
|
15
15
|
const limit = Math.min(Math.max(1, params.limit ?? 20), 50);
|
|
16
16
|
const offset = Math.max(0, params.offset ?? 0);
|
|
17
17
|
const query = params.query?.trim();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
else {
|
|
23
|
-
emails = await listMode(params, limit, offset);
|
|
24
|
-
}
|
|
25
|
-
if (emails.length === 0) {
|
|
18
|
+
const threads = query && query.length > 0
|
|
19
|
+
? await searchMode(query, params, limit)
|
|
20
|
+
: await listMode(params, limit, offset);
|
|
21
|
+
if (threads.length === 0) {
|
|
26
22
|
return formatEmptyResult(params, query);
|
|
27
23
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.map((e) => {
|
|
41
|
-
let entry = `From: ${e.fromName ? `${e.fromName} <${e.fromAddress}>` : e.fromAddress}`;
|
|
42
|
-
entry += `\nSubject: ${e.subject}`;
|
|
43
|
-
entry += `\nDate: ${e.receivedAt}`;
|
|
44
|
-
if (e.direction === "outbound")
|
|
24
|
+
const lines = threads
|
|
25
|
+
.map((t) => {
|
|
26
|
+
const sender = t.rootFromName
|
|
27
|
+
? `${t.rootFromName} <${t.rootFromAddress ?? ""}>`
|
|
28
|
+
: (t.rootFromAddress ?? "(unknown)");
|
|
29
|
+
let entry = `Thread: ${t.attachmentId.slice(0, 16)}…`;
|
|
30
|
+
entry += `\nSubject: ${t.subject}`;
|
|
31
|
+
entry += `\nFirst sender: ${sender}`;
|
|
32
|
+
entry += `\nMessages: ${t.messageIds.length}`;
|
|
33
|
+
entry += `\nFirst: ${t.firstReceivedAt}`;
|
|
34
|
+
entry += `\nLast: ${t.lastReceivedAt}`;
|
|
35
|
+
if (t.direction === "outbound")
|
|
45
36
|
entry += `\nDirection: outbound`;
|
|
46
|
-
if (
|
|
47
|
-
entry += `\
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
entry += `\nScore: ${e.score.toFixed(3)}`;
|
|
52
|
-
const normalisedMid = stripAngleBrackets(e.messageId);
|
|
53
|
-
if (normalisedMid) {
|
|
54
|
-
const thread = threadMap.get(normalisedMid);
|
|
55
|
-
if (thread) {
|
|
56
|
-
entry += `\nThread-Depth: ${thread.threadDepth}`;
|
|
57
|
-
entry += `\nThread-ID: ${thread.threadId}`;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (e.bodyPreview)
|
|
61
|
-
entry += `\n\n${e.bodyPreview}`;
|
|
37
|
+
if (t.score !== undefined)
|
|
38
|
+
entry += `\nScore: ${t.score.toFixed(3)}`;
|
|
39
|
+
// Truncate body to a preview so list responses stay readable.
|
|
40
|
+
const preview = t.body.length > 800 ? `${t.body.slice(0, 800)}\n…(truncated)` : t.body;
|
|
41
|
+
entry += `\n\n${preview}`;
|
|
62
42
|
return entry + "\n---";
|
|
63
43
|
})
|
|
64
44
|
.join("\n\n");
|
|
65
|
-
|
|
66
|
-
if (!query && emails.length === limit) {
|
|
45
|
+
if (!query && threads.length === limit) {
|
|
67
46
|
return `${lines}\n\nPagination: next offset=${offset + limit} (pass as offset to get more results)`;
|
|
68
47
|
}
|
|
69
48
|
return lines;
|
|
70
49
|
}
|
|
71
50
|
// ---------------------------------------------------------------------------
|
|
72
|
-
// List mode — Cypher
|
|
51
|
+
// List mode — Cypher MATCH with optional filters
|
|
73
52
|
// ---------------------------------------------------------------------------
|
|
74
53
|
async function listMode(params, limit, offset) {
|
|
75
|
-
// Exclude discarded
|
|
76
|
-
//
|
|
77
|
-
// emails are hidden. Admin can still find them via direct Cypher.
|
|
54
|
+
// Exclude discarded threads (spam) from list results. Threads without a
|
|
55
|
+
// screening property are included.
|
|
78
56
|
const conditions = [
|
|
79
|
-
"
|
|
80
|
-
"
|
|
57
|
+
"kd.source = 'email'",
|
|
58
|
+
"kd.accountId = $accountId",
|
|
59
|
+
"(kd.screening <> 'discarded' OR kd.screening IS NULL)",
|
|
81
60
|
];
|
|
82
61
|
const cyParams = {
|
|
83
62
|
accountId: params.accountId,
|
|
84
63
|
limit: neo4j.int(limit),
|
|
85
64
|
offset: neo4j.int(offset),
|
|
86
65
|
};
|
|
87
|
-
if (params.sender) {
|
|
88
|
-
conditions.push("toLower(e.fromAddress) CONTAINS toLower($sender)");
|
|
89
|
-
cyParams.sender = params.sender;
|
|
90
|
-
}
|
|
91
66
|
if (params.dateFrom) {
|
|
92
|
-
conditions.push("
|
|
67
|
+
conditions.push("kd.lastReceivedAt >= $dateFrom");
|
|
93
68
|
cyParams.dateFrom = params.dateFrom;
|
|
94
69
|
}
|
|
95
70
|
if (params.dateTo) {
|
|
96
|
-
conditions.push("
|
|
71
|
+
conditions.push("kd.firstReceivedAt <= $dateTo");
|
|
97
72
|
cyParams.dateTo = params.dateTo;
|
|
98
73
|
}
|
|
99
74
|
if (params.direction === "outbound") {
|
|
100
|
-
conditions.push("
|
|
75
|
+
conditions.push("kd.direction = 'outbound'");
|
|
101
76
|
}
|
|
102
77
|
else if (params.direction === "inbound") {
|
|
103
|
-
conditions.push("
|
|
78
|
+
conditions.push("kd.direction IS NULL");
|
|
79
|
+
}
|
|
80
|
+
const senderClause = params.sender
|
|
81
|
+
? `, (kd)-[:FROM]->(sender:Person)
|
|
82
|
+
WHERE toLower(sender.email) CONTAINS toLower($sender)`
|
|
83
|
+
: `OPTIONAL MATCH (kd)-[:FROM]->(sender:Person)`;
|
|
84
|
+
if (params.sender) {
|
|
85
|
+
cyParams.sender = params.sender;
|
|
104
86
|
}
|
|
105
87
|
const cypher = `
|
|
106
|
-
MATCH (
|
|
88
|
+
MATCH (kd:KnowledgeDocument)
|
|
89
|
+
${senderClause}
|
|
107
90
|
WHERE ${conditions.join(" AND ")}
|
|
108
|
-
|
|
109
|
-
|
|
91
|
+
WITH kd, head(collect(sender)) AS rootSender
|
|
92
|
+
RETURN kd, rootSender
|
|
93
|
+
ORDER BY kd.lastReceivedAt DESC
|
|
110
94
|
SKIP $offset
|
|
111
95
|
LIMIT $limit
|
|
112
96
|
`;
|
|
113
97
|
const session = getSession();
|
|
114
98
|
try {
|
|
115
99
|
const result = await session.run(cypher, cyParams);
|
|
116
|
-
return result.records.map((r) => nodeToRecord(r.get("
|
|
100
|
+
return result.records.map((r) => nodeToRecord(r.get("kd"), r.get("rootSender")));
|
|
117
101
|
}
|
|
118
102
|
finally {
|
|
119
103
|
await session.close();
|
|
120
104
|
}
|
|
121
105
|
}
|
|
122
106
|
// ---------------------------------------------------------------------------
|
|
123
|
-
// Search mode — vector similarity on
|
|
107
|
+
// Search mode — vector similarity on KD embedding index
|
|
124
108
|
// ---------------------------------------------------------------------------
|
|
125
109
|
async function searchMode(query, params, limit) {
|
|
126
110
|
const embedding = await computeEmbedding(query);
|
|
127
111
|
if (embedding.length === 0) {
|
|
128
112
|
throw new Error("Semantic search unavailable — the embedding service is not responding. " +
|
|
129
|
-
"Try again without a query to list
|
|
113
|
+
"Try again without a query to list email threads instead.");
|
|
130
114
|
}
|
|
131
|
-
// Over-fetch to account for accountId filtering, then trim
|
|
132
115
|
const topK = Math.min(limit * 3, 150);
|
|
133
116
|
const session = getSession();
|
|
134
117
|
try {
|
|
135
|
-
const result = await session.run(`CALL db.index.vector.queryNodes('
|
|
118
|
+
const result = await session.run(`CALL db.index.vector.queryNodes('knowledge_document_embedding', $topK, $embedding)
|
|
136
119
|
YIELD node, score
|
|
137
|
-
WHERE node.accountId = $accountId
|
|
138
|
-
|
|
120
|
+
WHERE node.source = 'email' AND node.accountId = $accountId
|
|
121
|
+
OPTIONAL MATCH (node)-[:FROM]->(sender:Person)
|
|
122
|
+
WITH node, score, head(collect(sender)) AS rootSender
|
|
123
|
+
RETURN node, score, rootSender
|
|
139
124
|
ORDER BY score DESC
|
|
140
125
|
LIMIT $limit`, {
|
|
141
126
|
topK: neo4j.int(topK),
|
|
@@ -144,7 +129,7 @@ async function searchMode(query, params, limit) {
|
|
|
144
129
|
limit: neo4j.int(limit),
|
|
145
130
|
});
|
|
146
131
|
return result.records.map((r) => {
|
|
147
|
-
const record = nodeToRecord(r.get("node"));
|
|
132
|
+
const record = nodeToRecord(r.get("node"), r.get("rootSender"));
|
|
148
133
|
record.score = r.get("score");
|
|
149
134
|
return record;
|
|
150
135
|
});
|
|
@@ -156,19 +141,19 @@ async function searchMode(query, params, limit) {
|
|
|
156
141
|
// ---------------------------------------------------------------------------
|
|
157
142
|
// Helpers
|
|
158
143
|
// ---------------------------------------------------------------------------
|
|
159
|
-
function nodeToRecord(node) {
|
|
144
|
+
function nodeToRecord(node, rootSender) {
|
|
160
145
|
const p = node.properties;
|
|
146
|
+
const sp = rootSender?.properties ?? null;
|
|
161
147
|
return {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
subject: p.subject,
|
|
169
|
-
bodyPreview: p.bodyPreview ?? "",
|
|
170
|
-
receivedAt: p.receivedAt,
|
|
148
|
+
attachmentId: p.attachmentId,
|
|
149
|
+
subject: p.subject ?? "(no subject)",
|
|
150
|
+
body: p.body ?? "",
|
|
151
|
+
messageIds: p.messageIds ?? [],
|
|
152
|
+
firstReceivedAt: p.firstReceivedAt ?? "",
|
|
153
|
+
lastReceivedAt: p.lastReceivedAt ?? "",
|
|
171
154
|
direction: p.direction ?? null,
|
|
155
|
+
rootFromAddress: sp ? (sp.email ?? null) : null,
|
|
156
|
+
rootFromName: sp ? (sp.displayName ?? null) : null,
|
|
172
157
|
};
|
|
173
158
|
}
|
|
174
159
|
function formatEmptyResult(params, query) {
|
|
@@ -183,6 +168,6 @@ function formatEmptyResult(params, query) {
|
|
|
183
168
|
filters.push(`to: ${params.dateTo}`);
|
|
184
169
|
if (params.direction)
|
|
185
170
|
filters.push(`direction: ${params.direction}`);
|
|
186
|
-
return `No
|
|
171
|
+
return `No email threads found in the graph${filters.length > 0 ? ` matching ${filters.join(", ")}` : ""}.`;
|
|
187
172
|
}
|
|
188
173
|
//# sourceMappingURL=email-graph-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-graph-query.js","sourceRoot":"","sources":["../../src/tools/email-graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-graph-query.js","sourceRoot":"","sources":["../../src/tools/email-graph-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-reply.d.ts","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAUD,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"email-reply.d.ts","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAUD,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiErE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadCredentials } from "../lib/credentials.js";
|
|
2
2
|
import { sendEmail } from "../lib/smtp.js";
|
|
3
|
-
import {
|
|
3
|
+
import { getMessageEnvelope } from "../lib/graph.js";
|
|
4
4
|
/**
|
|
5
5
|
* Strip duplicate Re:/RE:/re: prefixes and prepend a single Re:.
|
|
6
6
|
*/
|
|
@@ -13,71 +13,56 @@ export async function emailReply(params) {
|
|
|
13
13
|
if ("error" in result)
|
|
14
14
|
throw new Error(result.error);
|
|
15
15
|
const { config, password } = result.credentials;
|
|
16
|
-
// Look up the original
|
|
17
|
-
const
|
|
16
|
+
// Look up the original message inside its thread KD by messageId.
|
|
17
|
+
const envelope = await getMessageEnvelope(params.messageId, params.accountId);
|
|
18
|
+
if (!envelope) {
|
|
19
|
+
throw new Error(`No email found with Message-ID ${params.messageId}. The thread may not have been fetched yet — emails are ingested by the background polling job.`);
|
|
20
|
+
}
|
|
21
|
+
const originalMessageId = envelope.messageId;
|
|
22
|
+
const originalFrom = envelope.fromAddress;
|
|
23
|
+
const originalTo = envelope.toAddresses;
|
|
24
|
+
const originalCc = envelope.ccAddresses;
|
|
25
|
+
const originalSubject = envelope.subject || "(no subject)";
|
|
26
|
+
// Guard: don't reply to own messages
|
|
27
|
+
const agentAddr = config.agentAddress.toLowerCase();
|
|
28
|
+
if (originalFrom.toLowerCase() === agentAddr) {
|
|
29
|
+
throw new Error("Cannot reply to a message sent from the agent's own address.");
|
|
30
|
+
}
|
|
31
|
+
// Build recipient list
|
|
32
|
+
let to;
|
|
33
|
+
if (params.replyAll) {
|
|
34
|
+
// Union of original sender + TO + CC, minus the agent's own address (case-insensitive)
|
|
35
|
+
const all = [originalFrom, ...originalTo, ...originalCc];
|
|
36
|
+
const filtered = [...new Set(all)].filter((a) => a.toLowerCase() !== agentAddr);
|
|
37
|
+
to = filtered.join(", ");
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
to = originalFrom;
|
|
41
|
+
}
|
|
42
|
+
if (!to) {
|
|
43
|
+
throw new Error("Cannot reply — no valid recipients after filtering the agent's own address.");
|
|
44
|
+
}
|
|
45
|
+
// Send the reply with threading headers
|
|
46
|
+
let sentMessageId;
|
|
18
47
|
try {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
const record = queryResult.records[0];
|
|
29
|
-
const originalMessageId = record.get("messageId");
|
|
30
|
-
const originalFrom = record.get("fromAddress");
|
|
31
|
-
const originalTo = record.get("toAddresses") ?? [];
|
|
32
|
-
const originalCc = record.get("ccAddresses") ?? [];
|
|
33
|
-
const originalSubject = record.get("subject") ?? "(no subject)";
|
|
34
|
-
if (!originalMessageId) {
|
|
35
|
-
throw new Error("Cannot reply — the original email has no Message-ID header. This can happen with malformed messages from some servers.");
|
|
36
|
-
}
|
|
37
|
-
// Guard: don't reply to own messages
|
|
38
|
-
const agentAddr = config.agentAddress.toLowerCase();
|
|
39
|
-
if (originalFrom.toLowerCase() === agentAddr) {
|
|
40
|
-
throw new Error("Cannot reply to a message sent from the agent's own address.");
|
|
41
|
-
}
|
|
42
|
-
// Build recipient list
|
|
43
|
-
let to;
|
|
44
|
-
if (params.replyAll) {
|
|
45
|
-
// Union of original sender + TO + CC, minus the agent's own address (case-insensitive)
|
|
46
|
-
const all = [originalFrom, ...originalTo, ...originalCc];
|
|
47
|
-
const filtered = [...new Set(all)].filter((a) => a.toLowerCase() !== agentAddr);
|
|
48
|
-
to = filtered.join(", ");
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
to = originalFrom;
|
|
52
|
-
}
|
|
53
|
-
if (!to) {
|
|
54
|
-
throw new Error("Cannot reply — no valid recipients after filtering the agent's own address.");
|
|
55
|
-
}
|
|
56
|
-
// Send the reply with threading headers
|
|
57
|
-
let sentMessageId;
|
|
58
|
-
try {
|
|
59
|
-
({ messageId: sentMessageId } = await sendEmail(config, password, {
|
|
60
|
-
to,
|
|
61
|
-
subject: replySubject(originalSubject),
|
|
62
|
-
body: params.body,
|
|
63
|
-
html: params.html,
|
|
64
|
-
inReplyTo: originalMessageId,
|
|
65
|
-
references: originalMessageId,
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
catch (smtpErr) {
|
|
69
|
-
const smtpMsg = smtpErr instanceof Error ? smtpErr.message : String(smtpErr);
|
|
70
|
-
// Add alias diagnostic only for SMTP failures
|
|
71
|
-
if (config.agentAddress !== config.email) {
|
|
72
|
-
throw new Error(`${smtpMsg} — Note: sending as ${config.agentAddress} (authenticated as ${config.email}). If your provider doesn't allow sending as this alias, check your catchall or alias settings.`);
|
|
73
|
-
}
|
|
74
|
-
throw smtpErr;
|
|
75
|
-
}
|
|
76
|
-
const replyType = params.replyAll ? "Reply-all" : "Reply";
|
|
77
|
-
return `${replyType} sent to ${to} (Message-ID: ${sentMessageId})`;
|
|
48
|
+
({ messageId: sentMessageId } = await sendEmail(config, password, {
|
|
49
|
+
to,
|
|
50
|
+
subject: replySubject(originalSubject),
|
|
51
|
+
body: params.body,
|
|
52
|
+
html: params.html,
|
|
53
|
+
inReplyTo: originalMessageId,
|
|
54
|
+
references: originalMessageId,
|
|
55
|
+
}));
|
|
78
56
|
}
|
|
79
|
-
|
|
80
|
-
|
|
57
|
+
catch (smtpErr) {
|
|
58
|
+
const smtpMsg = smtpErr instanceof Error ? smtpErr.message : String(smtpErr);
|
|
59
|
+
// Add alias diagnostic only for SMTP failures
|
|
60
|
+
if (config.agentAddress !== config.email) {
|
|
61
|
+
throw new Error(`${smtpMsg} — Note: sending as ${config.agentAddress} (authenticated as ${config.email}). If your provider doesn't allow sending as this alias, check your catchall or alias settings.`);
|
|
62
|
+
}
|
|
63
|
+
throw smtpErr;
|
|
81
64
|
}
|
|
65
|
+
const replyType = params.replyAll ? "Reply-all" : "Reply";
|
|
66
|
+
return `${replyType} sent to ${to} (Message-ID: ${sentMessageId})`;
|
|
82
67
|
}
|
|
83
68
|
//# sourceMappingURL=email-reply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-reply.js","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"email-reply.js","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-setup.d.ts","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-setup.d.ts","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"AAqEA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CA8HD"}
|
|
@@ -6,7 +6,7 @@ import { inferProvider, getProviderNotes } from "../lib/providers.js";
|
|
|
6
6
|
import * as imap from "../lib/imap.js";
|
|
7
7
|
import * as smtp from "../lib/smtp.js";
|
|
8
8
|
/**
|
|
9
|
-
* Ensures email cron
|
|
9
|
+
* Ensures the email-fetch cron job is registered (auto-respond is retired).
|
|
10
10
|
* Called after successful email setup so polling starts immediately —
|
|
11
11
|
* no reinstall or service restart required.
|
|
12
12
|
*
|
|
@@ -38,7 +38,6 @@ function ensureEmailCrons(accountId) {
|
|
|
38
38
|
const logDir = resolve(homedir(), ".maxy/logs");
|
|
39
39
|
const cronEntries = [
|
|
40
40
|
`* * * * * mkdir -p ${logDir} && PLATFORM_ROOT=${platformRoot} ACCOUNT_ID=${accountId} ${nodeBin} ${platformRoot}/plugins/email/mcp/dist/scripts/email-fetch.js >> ${logDir}/email-fetch.log 2>&1`,
|
|
41
|
-
`* * * * * mkdir -p ${logDir} && PLATFORM_ROOT=${platformRoot} ${nodeBin} ${platformRoot}/plugins/email/mcp/dist/scripts/email-auto-respond.js >> ${logDir}/email-auto-respond.log 2>&1`,
|
|
42
41
|
];
|
|
43
42
|
const newCrontab = existing.trimEnd()
|
|
44
43
|
? `${existing.trimEnd()}\n${cronEntries.join("\n")}\n`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-setup.js","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,WAAW,EAAE,aAAa,EAAE,YAAY,EACxC,mBAAmB,EAAE,kBAAkB,GACxC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;YAC9C,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,0DAA0D;QAC1D,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,iDAAiD;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9F,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC;gBAAC,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAC7E,MAAM,CAAC;gBAAC,OAAO,eAAe,CAAC;YAAC,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG;YAClB,sBAAsB,MAAM,qBAAqB,YAAY,eAAe,SAAS,IAAI,OAAO,IAAI,YAAY,qDAAqD,MAAM,uBAAuB;
|
|
1
|
+
{"version":3,"file":"email-setup.js","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory",
|
|
3
|
-
"description": "Graph memory plugin. Provides memory-search (with optional `fields` projection for known-shape lookups), memory-rank, memory-write, and memory-update tools for reading from, writing to, and updating the Neo4j knowledge graph. Includes conversational memory — organic preference learning, evidence-backed recall, and transparent 'what do you know about me?' responses. Document ingestion (memory-classify + memory-ingest) supports two modes: `document` (default) for unstructured PDF/web content → KnowledgeDocument + Section, and `chat` for conversation transcripts →
|
|
3
|
+
"description": "Graph memory plugin. Provides memory-search (with optional `fields` projection for known-shape lookups), memory-rank, memory-write, and memory-update tools for reading from, writing to, and updating the Neo4j knowledge graph. Includes conversational memory — organic preference learning, evidence-backed recall, and transparent 'what do you know about me?' responses. Document ingestion (memory-classify + memory-ingest) supports two modes: `document` (default) for unstructured PDF/web content → :KnowledgeDocument (keyed on `attachmentId`) + :Section, and `chat` for conversation transcripts → :KnowledgeDocument (keyed on `conversationIdentity`) + :Section chunks; one parent label, two writer paths chosen by which identity property is set. Conversation-archive Phase 2 (`conversation-archive-derive-insights`) walks chunks of one named archive and emits per-row claim proposals for operator-gated wiring; `conversation-archive-enrich-rejection` records (or undoes) durable per-row rejections so already-triaged claims do not re-surface on re-runs. Ships four skills: `conversational-memory`, `document-ingest`, `conversation-archive` (source-agnostic transcript ingest for WhatsApp, Telegram, Signal, LinkedIn DMs, Zoom, meeting minutes, iMessage, Slack), and `conversation-archive-enrich` (per-row operator-gated insight derivation over a named archive's chunks).",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memory
|
|
3
|
-
description: "Graph memory plugin. Provides memory-search (with optional `fields` projection for known-shape lookups), memory-rank, memory-write, and memory-update tools for reading from, writing to, and updating the Neo4j knowledge graph. Includes conversational memory — organic preference learning, evidence-backed recall, and transparent 'what do you know about me?' responses. Document ingestion (memory-classify + memory-ingest) supports two modes: `document` (default) for unstructured PDF/web content → KnowledgeDocument + Section, and `chat` for conversation transcripts →
|
|
3
|
+
description: "Graph memory plugin. Provides memory-search (with optional `fields` projection for known-shape lookups), memory-rank, memory-write, and memory-update tools for reading from, writing to, and updating the Neo4j knowledge graph. Includes conversational memory — organic preference learning, evidence-backed recall, and transparent 'what do you know about me?' responses. Document ingestion (memory-classify + memory-ingest) supports two modes: `document` (default) for unstructured PDF/web content → :KnowledgeDocument (keyed on `attachmentId`) + :Section, and `chat` for conversation transcripts → :KnowledgeDocument (keyed on `conversationIdentity`) + :Section chunks; one parent label, two writer paths chosen by which identity property is set. Conversation-archive Phase 2 (`conversation-archive-derive-insights`) walks chunks of one named archive and emits per-row claim proposals for operator-gated wiring; `conversation-archive-enrich-rejection` records (or undoes) durable per-row rejections so already-triaged claims do not re-surface on re-runs. Ships four skills: `conversational-memory`, `document-ingest`, `conversation-archive` (source-agnostic transcript ingest for WhatsApp, Telegram, Signal, LinkedIn DMs, Zoom, meeting minutes, iMessage, Slack), and `conversation-archive-enrich` (per-row operator-gated insight derivation over a named archive's chunks)."
|
|
4
4
|
tools:
|
|
5
5
|
- name: memory-search
|
|
6
6
|
publicAllowlist: true
|