@rubytech/create-maxy-code 0.1.159 → 0.1.161

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +48 -17
  3. package/payload/platform/neo4j/schema.cypher +59 -36
  4. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  5. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +2 -2
  6. package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +1 -1
  7. package/payload/platform/plugins/docs/references/plugins-guide.md +3 -2
  8. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  9. package/payload/platform/plugins/email/PLUGIN.md +5 -1
  10. package/payload/platform/plugins/email/mcp/dist/index.js +25 -0
  11. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  12. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts +8 -0
  13. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts.map +1 -0
  14. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js +177 -0
  15. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js.map +1 -0
  16. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +6 -54
  17. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -1
  18. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +12 -300
  19. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -1
  20. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +6 -0
  21. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +1 -0
  22. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +89 -0
  23. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +1 -0
  24. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -1
  25. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +11 -6
  26. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -1
  27. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +10 -37
  28. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/connections.md +1 -0
  29. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  30. package/payload/platform/plugins/memory/PLUGIN.md +10 -1
  31. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +139 -439
  32. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +15 -47
  33. package/payload/platform/plugins/memory/mcp/dist/index.js +168 -29
  34. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +43 -27
  36. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts +2 -0
  38. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts.map +1 -0
  39. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js +62 -0
  40. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js.map +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +5 -0
  42. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +42 -25
  46. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js +23 -17
  48. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts +3 -0
  50. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts.map +1 -0
  51. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js +61 -0
  52. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js.map +1 -0
  53. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +1 -0
  54. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +3 -0
  56. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -1
  57. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +1 -1
  58. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -1
  59. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +1 -0
  60. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -1
  61. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts +2 -0
  62. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -1
  63. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +9 -3
  64. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts +41 -0
  66. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts.map +1 -0
  67. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js +71 -0
  68. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js.map +1 -0
  69. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts +18 -0
  70. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts.map +1 -0
  71. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js +31 -0
  72. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js.map +1 -0
  73. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts +5 -0
  74. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts.map +1 -1
  75. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +162 -78
  76. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
  77. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +1 -1
  78. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +2 -0
  80. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -1
  81. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js +2 -0
  82. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js.map +1 -1
  83. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +6 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -1
  85. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts +2 -0
  86. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts.map +1 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js +141 -0
  88. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js.map +1 -0
  89. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts +2 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts.map +1 -0
  91. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js +86 -0
  92. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js.map +1 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +33 -34
  94. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  95. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +94 -273
  96. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  97. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts +43 -0
  98. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts.map +1 -0
  99. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js +96 -0
  100. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js.map +1 -0
  101. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts +6 -0
  102. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts.map +1 -0
  103. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js +73 -0
  104. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js.map +1 -0
  105. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  106. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +0 -1
  107. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  108. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts +6 -0
  109. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts.map +1 -1
  110. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js +2 -0
  111. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js.map +1 -1
  112. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +8 -0
  113. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -1
  114. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +40 -5
  115. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
  116. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +7 -0
  117. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -1
  118. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +17 -1
  119. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
  120. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +11 -0
  121. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  122. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts +28 -0
  123. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts.map +1 -0
  124. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js +46 -0
  125. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js.map +1 -0
  126. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  127. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +26 -0
  128. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  129. package/payload/platform/plugins/memory/mcp/vitest.config.ts +5 -4
  130. package/payload/platform/plugins/memory/references/schema-base.md +4 -6
  131. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +100 -116
  132. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +74 -24
  133. package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +1 -1
  134. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +1 -1
  135. package/payload/platform/plugins/substack-import/.claude-plugin/plugin.json +8 -0
  136. package/payload/platform/plugins/substack-import/PLUGIN.md +34 -0
  137. package/payload/platform/plugins/substack-import/skills/substack-import/SKILL.md +182 -0
  138. package/payload/platform/plugins/substack-import/skills/substack-import/references/archive-shape.md +68 -0
  139. package/payload/platform/plugins/substack-import/skills/substack-import/references/attachments.md +72 -0
  140. package/payload/platform/plugins/substack-import/skills/substack-import/references/engagement.md +61 -0
  141. package/payload/platform/plugins/substack-import/skills/substack-import/references/posts.md +80 -0
  142. package/payload/platform/plugins/substack-import/skills/substack-import/references/subscribers.md +74 -0
  143. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +1 -1
  144. package/payload/platform/templates/specialists/agents/archive-ingest-operator.md +45 -0
  145. package/payload/platform/templates/specialists/agents/database-operator.md +5 -17
  146. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.159",
3
+ "version": "0.1.161",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -46,14 +46,45 @@ const LABELS_PATH = resolve(__dirname, "../../../graph-style/src/index.ts");
46
46
  * carry no searchable textual content. The doctrine test allows these to be
47
47
  * absent from the fulltext index union without failing.
48
48
  *
49
- * - `Trashed` — soft-delete flag label; nodes carrying it are
50
- * already excluded from every search via `notTrashed()`
51
- * in the lib.
52
- * - `GraphPreference`— per-(accountId, userId) UI metadata for /graph;
53
- * carries no textual content, never operator-visible
54
- * as a search hit.
49
+ * - `Trashed` — soft-delete flag label; nodes carrying it are
50
+ * already excluded from every search via
51
+ * `notTrashed()` in the lib.
52
+ * - `GraphPreference` — per-(accountId, userId) UI metadata for /graph;
53
+ * carries no textual content, never operator-visible
54
+ * as a search hit.
55
+ * - `Email` — legacy label retired by Task 321; email threads
56
+ * now land on `:KnowledgeDocument {source:'email'}`.
57
+ * The colour entry survives for legacy nodes; no
58
+ * new :Email writes occur.
59
+ * - `Session`, `AnonVisitor`, `PageView`, `Click`, `ScrollMilestone`
60
+ * — visitor analytics nodes (Task 357). Identity
61
+ * or event roll-ups; no operator-meaningful free
62
+ * text. The writer (`visitor-event.ts`) sets
63
+ * only ids, timestamps, and url fields.
64
+ * - `Recommendation` — visitor-graph label declared in schema but no
65
+ * writer in the platform; no documented text.
66
+ * - `Component` — admin-resume rehydration only (legacy pre-066
67
+ * admin surface); body is a JSON-encoded
68
+ * component payload, not free-text.
69
+ * - `CloudflareTunnel`, `CloudflareHostname`
70
+ * — legacy graph projections of cloudflared state.
71
+ * Task 288 retired the writer; nodes carry
72
+ * connector/hostname identifiers only.
55
73
  */
56
- const EXCLUDED_FROM_INDEX = new Set(["Trashed", "GraphPreference"]);
74
+ const EXCLUDED_FROM_INDEX = new Set([
75
+ "Trashed",
76
+ "GraphPreference",
77
+ "Email",
78
+ "Session",
79
+ "AnonVisitor",
80
+ "PageView",
81
+ "Click",
82
+ "ScrollMilestone",
83
+ "Recommendation",
84
+ "Component",
85
+ "CloudflareTunnel",
86
+ "CloudflareHostname",
87
+ ]);
57
88
 
58
89
  /**
59
90
  * Canonical text-property list — every property the platform's writers
@@ -238,7 +269,9 @@ describe("entity_search fulltext indexes — universal-coverage + Task 416 field
238
269
  // otherwise it keeps populating from writes and consumes disk for no
239
270
  // reader.
240
271
  it("schema drops the single `entity_search` index that the split replaces", () => {
241
- expect(schemaCypher).toMatch(/DROP\s+FULLTEXT\s+INDEX\s+entity_search\s+IF\s+EXISTS\b/);
272
+ // Neo4j's `DROP INDEX <name> IF EXISTS` is universal across index types
273
+ // (fulltext, vector, btree); there is no `DROP FULLTEXT INDEX` variant.
274
+ expect(schemaCypher).toMatch(/DROP\s+INDEX\s+entity_search\s+IF\s+EXISTS\b/);
242
275
  });
243
276
 
244
277
  for (const [label, decl, expectedField, forbiddenField] of [
@@ -250,21 +283,19 @@ describe("entity_search fulltext indexes — universal-coverage + Task 416 field
250
283
  expect(decl.name).toBe(label === "admin" ? FULLTEXT_INDEX_ADMIN : FULLTEXT_INDEX_PUBLIC);
251
284
  });
252
285
 
253
- // Pre-Task-416 these assertions were never reached the parser
254
- // crashed earlier on a stale LABELS_PATH (see Task 421). Now that
255
- // the path is correct, both fail against pre-existing schema drift
256
- // (Listing/Property/Viewing/Concept/etc. registered in colours +
257
- // declared in schema but absent from the fulltext index union).
258
- // Scope of fix tracked in Task 421; the assertions live as `.skip`
259
- // here so they re-activate the moment 421 closes the drift.
260
- it.skip("labels ⊇ Object.keys(GRAPH_LABEL_COLOURS) − {excluded} (Task 421)", () => {
286
+ // Task 421 closed the pre-existing schema drift: the index union now
287
+ // covers every operator-meaningful label registered in
288
+ // GRAPH_LABEL_COLOURS and every schema-declared label, with the
289
+ // exclusion list above enumerating the labels that legitimately
290
+ // carry no searchable text.
291
+ it("labels Object.keys(GRAPH_LABEL_COLOURS) {excluded} (Task 421)", () => {
261
292
  const missing = [...colourLabels]
262
293
  .filter((l) => !EXCLUDED_FROM_INDEX.has(l))
263
294
  .filter((l) => !decl.labels.has(l));
264
295
  expect(missing).toEqual([]);
265
296
  });
266
297
 
267
- it.skip("labels ⊇ every schema-declared label − {excluded} (Task 421)", () => {
298
+ it("labels ⊇ every schema-declared label − {excluded} (Task 421)", () => {
268
299
  const missing = [...schemaDeclaredLabels]
269
300
  .filter((l) => !EXCLUDED_FROM_INDEX.has(l))
270
301
  .filter((l) => !decl.labels.has(l));
@@ -219,9 +219,9 @@ OPTIONS {
219
219
  // shared label — a WhatsApp export is a transcript, not a knowledge
220
220
  // document. Task 397 split the conversation path off into its own
221
221
  // `:ConversationArchive` parent; `:KnowledgeDocument` continues to mean
222
- // narrative documents only (PDF/web/Obsidian/Notion/contract attachment +
223
- // Gmail thread under the legacy `source:'email'` shape until Task 397's
224
- // email follow-up retargets it).
222
+ // narrative documents only (PDF/web/Obsidian/Notion/contract attachment).
223
+ // Email threads moved onto `:ConversationArchive {source:'email'}` in
224
+ // Task 426.
225
225
  //
226
226
  // KnowledgeDocument -[HAS_SECTION]-> Section
227
227
  // KnowledgeDocument -[PARTY]-> (Person|Organization) (contracts only)
@@ -233,9 +233,9 @@ OPTIONS {
233
233
  //
234
234
  // Two writer paths (see platform/plugins/memory/mcp/src/tools/memory-ingest.ts):
235
235
  // - Document path — MERGE :KnowledgeDocument keyed on `attachmentId`
236
- // (URL, file path, obsidian page, contract attachment, Gmail thread,
237
- // etc.). First-ingest re-writes sections per run; anchor edges to
238
- // subject nodes; orphan-candidate related entities.
236
+ // (URL, file path, obsidian page, contract attachment, etc.).
237
+ // First-ingest re-writes sections per run; anchor edges to subject
238
+ // nodes; orphan-candidate related entities.
239
239
  // - Conversation path — MERGE :ConversationArchive keyed on
240
240
  // `conversationIdentity` (= sha256(accountId + ":" +
241
241
  // sortedParticipantElementIds)). Source-agnostic across WhatsApp,
@@ -365,17 +365,32 @@ OPTIONS {
365
365
  //
366
366
  // Label union — every operator-meaningful label:
367
367
  // - Business identity: LocalBusiness, Service, PriceSpecification, OpeningHoursSpecification, Organization
368
+ // - Estate-agent ontology (Task 358): Listing, Property, Viewing, Offer, PostalAddress
368
369
  // - People: Person, UserProfile, Preference, AdminUser, AccessGrant
369
370
  // - Knowledge: KnowledgeDocument, ConversationArchive (Task 397), Section, Chunk (legacy),
370
371
  // DigitalDocument, CreativeWork, Question, FAQPage, DefinedTerm, Review, ImageObject
371
372
  // - Conversational: Conversation, AdminConversation, PublicConversation, Message,
372
373
  // UserMessage, AssistantMessage, ToolCall
373
- // - Tasks/projects/events: Task, Project, Event
374
+ // - Tasks/projects/events: Task, Project, Event, Meeting, Attachment
374
375
  // - Workflows: Workflow, WorkflowStep, WorkflowRun, StepResult
375
376
  // - Email: EmailAccount (config node only — email threads land on
376
- // :KnowledgeDocument {source:'email'} since Task 321)
377
+ // :ConversationArchive {source:'email'} since Task 426)
377
378
  // - CV/career sublabels: Position, Credential
378
379
  // - Public agents: Agent (projection of file-based public agents)
380
+ // - Ideas + concepts: Idea, Concept (admin-twin compiledTruth subjects)
381
+ // - Voice mirror (Task 356): VoiceProfile, VoiceEdit
382
+ // - Authored content / audit: SocialPost, AEOAudit, Page
383
+ // - Compiled truth (Task 306/391/392): TimelineEvent, CompiledTruthRevision,
384
+ // Report, OrphanCandidate, CitationProposal
385
+ //
386
+ // Excluded by design (carry no operator-meaningful free text, asserted by
387
+ // the doctrine test's EXCLUDED_FROM_INDEX set):
388
+ // - Trashed, GraphPreference — system flags / UI metadata
389
+ // - Email (legacy, retired Task 321; further retired Task 426) — replaced by :ConversationArchive {source:'email'}
390
+ // - Session, AnonVisitor, PageView, Click,
391
+ // ScrollMilestone, Recommendation — visitor analytics (Task 357)
392
+ // - Component — admin-resume rehydration JSON
393
+ // - CloudflareTunnel, CloudflareHostname — legacy projection (Task 288)
379
394
  //
380
395
  // Property union — every textual property the schema's writers assign:
381
396
  // - Generic: name, title, summary, body, content, text, description, headline, abstract,
@@ -417,13 +432,16 @@ DROP INDEX entity_search_public IF EXISTS;
417
432
 
418
433
  CREATE FULLTEXT INDEX entity_search_admin IF NOT EXISTS
419
434
  FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
435
+ |Listing|Property|Viewing|Offer|PostalAddress
420
436
  |Person|UserProfile|Preference|AdminUser|AccessGrant
421
437
  |KnowledgeDocument|ConversationArchive|Section|Chunk|DigitalDocument|CreativeWork|Question|FAQPage|DefinedTerm|Review|ImageObject
422
438
  |Conversation|AdminConversation|PublicConversation|Message|UserMessage|AssistantMessage|ToolCall
423
- |Task|Project|Event
439
+ |Task|Project|Event|Meeting|Attachment
424
440
  |Workflow|WorkflowStep|WorkflowRun|StepResult
425
441
  |EmailAccount
426
- |Position|Credential|Agent|Idea)
442
+ |Position|Credential|Agent|Idea|Concept
443
+ |VoiceProfile|VoiceEdit|SocialPost|AEOAudit|Page
444
+ |TimelineEvent|CompiledTruthRevision|Report|OrphanCandidate|CitationProposal)
427
445
  ON EACH [n.name, n.firstName, n.lastName, n.givenName, n.familyName,
428
446
  n.title, n.currentTitle, n.summary, n.body, n.content, n.text, n.description, n.headline, n.abstract,
429
447
  n.email, n.note, n.label, n.value, n.message, n.preview, n.tagline,
@@ -434,13 +452,16 @@ ON EACH [n.name, n.firstName, n.lastName, n.givenName, n.familyName,
434
452
 
435
453
  CREATE FULLTEXT INDEX entity_search_public IF NOT EXISTS
436
454
  FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
455
+ |Listing|Property|Viewing|Offer|PostalAddress
437
456
  |Person|UserProfile|Preference|AdminUser|AccessGrant
438
457
  |KnowledgeDocument|ConversationArchive|Section|Chunk|DigitalDocument|CreativeWork|Question|FAQPage|DefinedTerm|Review|ImageObject
439
458
  |Conversation|AdminConversation|PublicConversation|Message|UserMessage|AssistantMessage|ToolCall
440
- |Task|Project|Event
459
+ |Task|Project|Event|Meeting|Attachment
441
460
  |Workflow|WorkflowStep|WorkflowRun|StepResult
442
461
  |EmailAccount
443
- |Position|Credential|Agent|Idea)
462
+ |Position|Credential|Agent|Idea|Concept
463
+ |VoiceProfile|VoiceEdit|SocialPost|AEOAudit|Page
464
+ |TimelineEvent|CompiledTruthRevision|Report|OrphanCandidate|CitationProposal)
444
465
  ON EACH [n.name, n.firstName, n.lastName, n.givenName, n.familyName,
445
466
  n.title, n.currentTitle, n.summary, n.body, n.content, n.text, n.description, n.headline, n.abstract,
446
467
  n.email, n.note, n.label, n.value, n.message, n.preview, n.tagline,
@@ -814,25 +835,19 @@ OPTIONS {
814
835
  // ----------------------------------------------------------
815
836
 
816
837
  // ----------------------------------------------------------
817
- // Email threads — :KnowledgeDocument {source:'email'}
838
+ // Email threads — :ConversationArchive {source:'email'}
818
839
  //
819
- // Task 321 retired the legacy :Email label. Every inbound (and outbound)
820
- // email lands as one :KnowledgeDocument per thread, keyed on
821
- // attachmentId = sha256("email:<accountId>:<rootMessageId>"). The body
822
- // is the verbatim chronological transcript; per-message envelopes live
823
- // in a JSON-serialised `messages` property; address parties hang off
824
- // the document as :Person edges (FROM/TO/CC). The operator-initiated
825
- // email-ingest tool writes them via storeEmailMessage in
826
- // plugins/email/mcp/src/lib/graph.ts.
840
+ // Task 426 retargeted email threads off :KnowledgeDocument onto the
841
+ // conversation-archive pipeline. The email plugin's email-ingest tool
842
+ // dispatches `conversation-archive-ingest.sh --source email` once per
843
+ // thread; each invocation MERGEs one :ConversationArchive
844
+ // (conversationIdentity-keyed, source-scoped) and writes :Section
845
+ // chunks via :HAS_SECTION + :NEXT.
827
846
  //
828
- // No :Email constraints or indexes are declared. The general
829
- // KnowledgeDocument constraints + indexes (above) already cover
830
- // uniqueness, accountId lookup, and embedding search. Email-specific
847
+ // No email-specific constraints or indexes are declared. The general
848
+ // ConversationArchive constraints + indexes (above) cover uniqueness,
849
+ // accountId lookup, and Section embedding search. Email-specific
831
850
  // filtering (source='email') uses the generic accountId + source path.
832
- //
833
- // Relationships:
834
- // (KnowledgeDocument {source:'email'})-[:RECEIVED_BY]->(EmailAccount)
835
- // (KnowledgeDocument {source:'email'})-[:FROM|:TO|:CC]->(Person)
836
851
  // ----------------------------------------------------------
837
852
 
838
853
  // ----------------------------------------------------------
@@ -1275,9 +1290,9 @@ FOR (a:PostalAddress) ON (a.postalCode);
1275
1290
  // the next distillation.
1276
1291
  //
1277
1292
  // `authorshipMode` is an enum property on content-bearing labels
1278
- // (`:KnowledgeDocument` (includes email threads under the legacy
1279
- // `source:'email'` shape), `:ConversationArchive` (Task 397 — every chat
1280
- // transcript), `:Message`, `:SocialPost`) with
1293
+ // (`:KnowledgeDocument`, `:ConversationArchive` (Task 397 every chat
1294
+ // transcript, including email threads under `source:'email'` post-Task-426),
1295
+ // `:Message`, `:SocialPost`) with
1281
1296
  // values `human-only | human-led-agent-assisted | agent-led-human-reviewed
1282
1297
  // | agent-only | unknown`. Legacy nodes default to `unknown` until
1283
1298
  // reviewed via the voice-mirror backfill flow. The index lets the
@@ -1551,9 +1566,10 @@ CREATE INDEX local_business_compiled_truth_public_updated_at IF NOT EXISTS
1551
1566
  FOR (b:LocalBusiness) ON (b.compiledTruthPublicUpdatedAt);
1552
1567
 
1553
1568
  // ----------------------------------------------------------
1554
- // :CompiledTruthRevision (Task 391) audit history of every
1555
- // `compiledTruth` value an entity has ever held. Captured in the
1556
- // same transaction as the rewriter SET so revision history can
1569
+ // :CompiledTruthRevision (Task 391, twin discriminator added in
1570
+ // Task 436) audit history of every `compiledTruth` /
1571
+ // `compiledTruthPublic` value an entity has ever held. Captured in
1572
+ // the same transaction as the writer's SET so revision history can
1557
1573
  // never desync from the live property. Pruned by dream-cycle
1558
1574
  // phase 5 (keep newest 20 per entity) — never written-and-pruned
1559
1575
  // in the same TX as the main rewrite.
@@ -1568,9 +1584,13 @@ FOR (b:LocalBusiness) ON (b.compiledTruthPublicUpdatedAt);
1568
1584
  // MERGE (e)-[:HAS_REVISION]->(r:CompiledTruthRevision {revisionId: $id})
1569
1585
  // Never label-only MERGE on :CompiledTruthRevision.
1570
1586
  //
1587
+ // `twin` enum: 'compiledTruth' (private/admin twin) or
1588
+ // 'compiledTruthPublic' (public twin). One revision row per twin
1589
+ // per write; the specialist calls `memory-update` once per twin.
1590
+ //
1571
1591
  // `source` enum (exact, no catch-all):
1572
- // 'rewriter' — compiled-truth-rewriter library wrote the truth.
1573
- // 'operator' — operator overrode via a sanctioned write route.
1592
+ // 'rewriter' — compiled-truth-rewriter specialist wrote the truth.
1593
+ // 'operator' — operator hint overrode the rewriter for this twin.
1574
1594
  // ----------------------------------------------------------
1575
1595
 
1576
1596
  CREATE CONSTRAINT compiled_truth_revision_id_unique IF NOT EXISTS
@@ -1582,6 +1602,9 @@ FOR (r:CompiledTruthRevision) ON (r.accountId);
1582
1602
  CREATE INDEX compiled_truth_revision_written_at IF NOT EXISTS
1583
1603
  FOR (r:CompiledTruthRevision) ON (r.writtenAt);
1584
1604
 
1605
+ CREATE INDEX compiled_truth_revision_twin IF NOT EXISTS
1606
+ FOR (r:CompiledTruthRevision) ON (r.twin);
1607
+
1585
1608
  // ----------------------------------------------------------
1586
1609
  // :Report node — durable, keyword-routed output of admin
1587
1610
  // workflows (daily briefing, dream cycle, ad-hoc analyses).
@@ -99,6 +99,11 @@
99
99
  "source": "./scheduling",
100
100
  "version": "0.1.0"
101
101
  },
102
+ {
103
+ "name": "substack-import",
104
+ "source": "./substack-import",
105
+ "version": "0.1.0"
106
+ },
102
107
  {
103
108
  "name": "telegram",
104
109
  "source": "./telegram",
@@ -154,7 +154,7 @@ fi
154
154
  case "$TOOL_NAME" in
155
155
  mcp__memory__whatsapp-export-parse|mcp__memory__whatsapp-export-insight-write|mcp__memory__whatsapp-export-insight-pass|mcp__memory__whatsapp-export-preview)
156
156
  emit_decision "block" "denied-mcp-legacy" \
157
- "Blocked: ${TOOL_NAME} is a retired path. generalised conversation-archive ingestinvoke 'bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source whatsapp --owner-element-id <id> --participant-person-ids <csv> --scope <admin|public>' once. Normalise, sessionize, classify (mode=chat), and memory-ingest (writes :ConversationArchive keyed on conversationIdentity, source=<enum>) all run in-process."
157
+ "Blocked: ${TOOL_NAME} is a retired path. Invoke the generalised conversation-archive skill — 'bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source whatsapp --participant-person-ids <csv> --scope <admin|public>' (owner derived from ACCOUNT_ID + USER_ID env). The script normalises, sessionizes, and emits prepared sessions; the dispatched specialist classifies each session in-turn and calls memory-ingest with conversationIdentity set (writes :ConversationArchive)."
158
158
  ;;
159
159
  esac
160
160
 
@@ -186,7 +186,7 @@ if [ "$TOOL_NAME" = "mcp__memory__memory-archive-write" ]; then
186
186
  ARCHIVE_TYPE=$(extract_tool_input_field archiveType)
187
187
  if [ "$ARCHIVE_TYPE" = "whatsapp-export" ]; then
188
188
  emit_decision "block" "denied-mcp-legacy archiveType=whatsapp-export" \
189
- "Blocked: memory-archive-write with archiveType='whatsapp-export' is a retired path. routes conversation transcripts through 'bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source whatsapp --owner-element-id <id> --participant-person-ids <csv> --scope <admin|public>'. Flat-dataset archiveTypes (linkedin-connections, …) flow through memory-archive-write unchanged."
189
+ "Blocked: memory-archive-write with archiveType='whatsapp-export' is a retired path. Routes conversation transcripts through 'bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source whatsapp --participant-person-ids <csv> --scope <admin|public>' (owner derived from ACCOUNT_ID + USER_ID env). Flat-dataset archiveTypes (linkedin-connections, …) flow through memory-archive-write unchanged."
190
190
  fi
191
191
  fi
192
192
 
@@ -27,7 +27,7 @@ Adapt the order if the operator provides data in a different sequence — the in
27
27
  ## Constraints
28
28
 
29
29
  - **Schema-first.** Before discussing a batch, load `memory/references/schema-base.md` via `plugin-read`. If `businessType` is known on the `LocalBusiness` node, also load the matching vertical schema. Confirm which schemas were loaded so the recorder uses the right property names.
30
- - **Read-first.** Search for the existing `LocalBusiness` node and its related entities before asking the operator anything. Do not re-ask for data that is already in the graph — reference it and confirm it is still correct. On first run (no `LocalBusiness` yet), skip the search and proceed with the first-run path above.
30
+ - **Existence-first, then read.** Before any claim about whether a `LocalBusiness` exists, call `memory-node-exists { label: "LocalBusiness" }`. Only `exists === false` is the first-run signal — an empty `memory-search` result is not, because a freshly seeded `LocalBusiness` with no name/description yet has nothing to score against either ranker. When `exists === true`, then use `memory-search` to read the existing `LocalBusiness` node and its related entities before asking the operator anything. Do not re-ask for data that is already in the graph — reference it and confirm it is still correct. Only on `exists === false` skip the search and proceed with the first-run path above.
31
31
  - **Confirm before recording.** Present each batch of data back to the operator and get explicit confirmation. The recorder writes off the confirmed transcript; unconfirmed prose is not a record.
32
32
  - **Exact property names.** Use Schema.org camelCase property names exactly as defined in the loaded schema reference. No synonyms, no abbreviations.
33
33
  - **No placeholders.** Never propose empty strings, "TBD", or "unknown" as property values — they degrade search quality via poor embeddings. If a value is unknown, skip it.
@@ -41,8 +41,9 @@ These are enabled during onboarding and can be added or removed at any time. Som
41
41
  | `notion-import` | Import a Notion workspace export (markdown + CSV) — pages, databases, hierarchy, attachments, schema-bounded relations, `@person` mentions account-filtered | Database operator |
42
42
  | `obsidian-import` | Import an extracted Obsidian vault — pages map to `:KnowledgeDocument`, wikilinks resolve to intra-vault pages or existing entities, tags become `:DefinedTerm`, embedded images become `:DigitalDocument`. Two-phase tool (dry-run → operator disambiguation → commit). | Database operator |
43
43
  | `x-import` | Import an X (Twitter) Basic Data Export — tweet stream renders as one chronological transcript and ingests as a single `:KnowledgeDocument` (`source='x'`); each DM `sessionId` ingests as one `:ConversationArchive` (`source='x-dm'`, keyed on `conversationIdentity`) via `conversation-archive-ingest.sh`. Mentions, replies, and quote-tweet authors resolve to `:Person` on lowercased `xHandle`; every handle and DM senderId confirms against existing nodes (no auto-create). Per-thread KD granularity and `:Post` / `:DirectMessage` labels are explicitly rejected. | Database operator |
44
- | `memory/skills/conversation-archive` | Source-agnostic conversation transcript ingest. One skill for WhatsApp `_chat.txt`, Telegram, Signal, LinkedIn DMs, Zoom transcript, meeting minutes, iMessage, Slack, X DMs `--source <enum>` selects the per-source normaliser. Single Bash entry — `bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source <enum> --owner-element-id <id> --participant-person-ids <csv> --scope <admin\|public>` runs normalise → operator-confirms owner + every distinct sender sessionize at gap-hours boundaries (default 12h) classify each session in-turn (the dispatched specialist produces topic-bounded chunk JSON from the parsed lines; the server-side `memory-classify` step was deleted in Task 424, and Task 435 finishes the driver-side cleanup) memory-ingest with `conversationIdentity` set (writes `:ConversationArchive`), `source=<enum>`. Re-imports are delta-append. Auto-creating participants is forbidden any sender outside the operator-confirmed closed set LOUD-FAILs with `parser-miss`. Distinct from the live `whatsapp` plugin (Baileys). | Database operator |
45
- | `memory/skills/conversation-archive-enrich` | Phase 2 for any named `:ConversationArchive` — source-agnostic per-row insight derivation. Operator-triggered (never auto-fires on Phase 1 completion). Walks the parent's `:Section` chunks in pages via the read-only MCP tool `mcp__memory__conversation-archive-derive-insights`; surfaces high-confidence claims for per-row operator gate (`wire / skip / reject`) over four kinds `mention`, `task`, `preference`, `observed-relationship`. Idempotent on `(elementId(chunk), kind, contentHash)`re-runs collapse identical claims. Confidence floor is a hedging-avoidance instruction in the system prompt, not a numeric post-filter; per Task 424 the LLM step now runs in-turn from the dispatched specialist rather than as a separate server-side OAuth round-trip. | Database operator |
44
+ | `substack-import` | Import a Substack "Export your data" archive — per-essay `:KnowledgeDocument {kind:'substack-post'}` via librarian/document-ingest with synthetic stable `attachmentId = "substack-post-${substackPostId}"` (survives Substack edits); one `:KnowledgeDocument {kind:'substack-subscriber-roster'}` per import run with `:MENTIONS {mentionContext:'substack-subscription', tier, totalOpens, totalClicks, lastOpenedAt, lastClickedAt, engagementWindowDays}` to each subscriber `:Person` MERGEd on `(accountId, email)`. Engagement aggregates parsed from `email_activity.csv` (or `subscriber_activity.csv` / `emails.csv`); overwrite-on-reimport. No new label, no new edge type, no new graph writer. Images attach via canonical `:HAS_ENCLOSURE` (or `:MENTIONS` fallback). Bulk-gate at >200 posts or >2000 subscribers. | Database operator |
45
+ | `memory/skills/conversation-archive` | Source-agnostic conversation transcript ingest. One skill for WhatsApp `_chat.txt`, Telegram, Signal, LinkedIn DMs, Zoom transcript, meeting minutes, iMessage, Slack, X DMs `--source <enum>` selects the per-source normaliser. Single Bash entry — `bash platform/plugins/memory/bin/conversation-archive-ingest.sh <archive> --source <enum> --participant-person-ids <csv> --scope <admin\|public>` — runs normalise → operator-confirms owner + every distinct sender (owner derived from env via Cypher, no flag) sessionize at the fixed 8h gap emit one JSON line carrying prepared sessions (turn-attributed text + per-session cursor). The dispatched specialist iterates the sessions in-turn, produces a typed-section JSON chunking for each, and calls the `memory-ingest` MCP tool with `conversationIdentity` set (writes `:ConversationArchive`, source=<enum>) once per session chunks + cursor advance commit atomically inside one Cypher transaction, so a kill mid-archive resumes from the next session on re-issue without re-classifying anything already written. Re-imports are delta-append. Auto-creating participants is forbidden any sender outside the operator-confirmed closed set LOUD-FAILs with `parser-miss`. Distinct from the live `whatsapp` plugin (Baileys). | Database operator |
46
+ | `memory/skills/conversation-archive-enrich` | Phase 2 for any named `:ConversationArchive` — source-agnostic per-row insight derivation. Operator-triggered (never auto-fires on Phase 1 completion). Walks the parent's `:Section` chunks in pages via the read-only MCP tool `mcp__memory__conversation-archive-list-chunks`; the dispatched specialist reads each chunk in-turn and emits claims under the four-kind contract (`mention`, `task`, `preference`, `observed-relationship`); the skill hands those claims to `mcp__memory__conversation-archive-derive-insights` for per-kind cypher emission, then runs the per-row operator gate (`wire / skip / reject`). Idempotent on `(elementId(chunk), kind, contentHash)` — re-runs collapse identical claims. Confidence floor is a hedging-avoidance instruction the skill embeds in the specialist's per-chunk prompt, not a numeric post-filter; per Task 433 the LLM step runs in-turn from the dispatched specialist rather than as a server-side OAuth round-trip. | Database operator |
46
47
 
47
48
  ### Claude Official (marketplace)
48
49
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "email",
3
- "description": "Email — dedicated email account. Retrieval: email-graph-query for stored email-thread history as :KnowledgeDocument {source:'email'} (recall, search, 'threads about X', 'what did Y send?'); email-read / email-search for live IMAP inbox. Ingestion (operator-initiated, human-in-the-loop): email-fetch lists new messages, email-ingest writes the operator-approved subset. Sending: email-send (new), email-reply (threaded). Config: email-setup, email-status, email-otp-extract.",
3
+ "description": "Email — dedicated email account. Retrieval: email-graph-query for stored email-thread history as :KnowledgeDocument {source:'email'} (recall, search, 'threads about X', 'what did Y send?'); email-read / email-search for live IMAP inbox. Ingestion (operator-initiated, human-in-the-loop): email-fetch lists new messages, email-ingest writes the operator-approved subset. Classification: email-classify (operator-solicited) decomposes a stored thread KD into :Section children via the librarian specialist; reclassify-gate skips when the body grew <25% since the previous classify. Sending: email-send (new), email-reply (threaded). Config: email-setup, email-status, email-otp-extract.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: email
3
- description: "Email — dedicated email account. Retrieval: email-graph-query for stored email-thread history as :KnowledgeDocument {source:'email'} (recall, search, 'threads about X', 'what did Y send?'); email-read / email-search for live IMAP inbox. Ingestion (operator-initiated, human-in-the-loop): email-fetch lists new messages, email-ingest writes the operator-approved subset. Sending: email-send (new), email-reply (threaded). Config: email-setup, email-status, email-otp-extract."
3
+ description: "Email — dedicated email account. Retrieval: email-graph-query for stored email-thread history as :KnowledgeDocument {source:'email'} (recall, search, 'threads about X', 'what did Y send?'); email-read / email-search for live IMAP inbox. Ingestion (operator-initiated, human-in-the-loop): email-fetch lists new messages, email-ingest writes the operator-approved subset. Classification: email-classify (operator-solicited) decomposes a stored thread KD into :Section children via the librarian specialist; reclassify-gate skips when the body grew <25% since the previous classify. Sending: email-send (new), email-reply (threaded). Config: email-setup, email-status, email-otp-extract."
4
4
  tools:
5
5
  - name: email-setup
6
6
  publicAllowlist: false
@@ -26,6 +26,9 @@ tools:
26
26
  - name: email-ingest
27
27
  publicAllowlist: false
28
28
  adminAllowlist: false
29
+ - name: email-classify
30
+ publicAllowlist: false
31
+ adminAllowlist: false
29
32
  - name: email-otp-extract
30
33
  publicAllowlist: false
31
34
  adminAllowlist: false
@@ -64,6 +67,7 @@ Manages the agent's own dedicated email account — IMAP for reading, SMTP for s
64
67
  - **Reply:** `email-reply` — threaded reply to an existing email by `messageId`. Supports `replyAll`.
65
68
  - **Ingestion — fetch:** `email-fetch` — list new IMAP messages since the stored high-water mark. Metadata + body preview only. No graph writes, no classification. Stages the batch in-memory for `email-ingest`.
66
69
  - **Ingestion — apply:** `email-ingest` — apply the operator's per-message decisions to the staged batch. Each Message-ID must carry a disposition (`ingest` or `discard`). Writes only the approved subset and advances the inbox high-water mark.
70
+ - **Classification — solicited:** `email-classify` — operator-solicited reclassify of one stored thread into `:Section` children. Thin wrapper over the generic `kd-classify` (memory plugin): derives the account-scoped `attachmentId` from the root `Message-ID`, runs the body-growth gate (skip when <25% growth since the previous classify), stages the body to a temp file under `$ACCOUNT_DIR/tmp/`, and returns a dispatch envelope. Admin hands the envelope to the `librarian` specialist; `memory-ingest` MERGEs by `attachmentId` and replaces any prior sections in one transaction, also stamping `lastClassifiedAt` + `lastClassifiedBodyLength` for the next gate call.
67
71
  - **Recall/history:** `email-graph-query` — search stored email threads in Neo4j by natural language, sender, date, direction. Each thread is one `:KnowledgeDocument {source:'email'}` carrying the verbatim chronological transcript with `:Person` `FROM`/`TO`/`CC` edges.
68
72
  - **Status:** `email-status` — connection health and configuration state.
69
73
  - **OTP:** `email-otp-extract` — poll for verification codes during service authentication.
@@ -14,6 +14,7 @@ import { emailReply } from "./tools/email-reply.js";
14
14
  import { emailGraphQuery } from "./tools/email-graph-query.js";
15
15
  import { emailFetch } from "./tools/email-fetch.js";
16
16
  import { emailIngest } from "./tools/email-ingest.js";
17
+ import { emailClassify } from "./tools/email-classify.js";
17
18
  import { closeDriver } from "./lib/neo4j.js";
18
19
  const server = new McpServer({
19
20
  name: "maxy-email",
@@ -274,6 +275,30 @@ eagerTool(server, "email-graph-query", "Query email threads stored in the graph
274
275
  }
275
276
  });
276
277
  // ===================================================================
278
+ // email-classify — operator-solicited classify-into-sections for one thread KD
279
+ // ===================================================================
280
+ eagerTool(server, "email-classify", "Operator-solicited reclassify of one email-thread :KnowledgeDocument into :Section children. Takes the root Message-ID of the thread, derives the account-scoped attachmentId, and (a) returns 'no classification needed' when the thread body has grown <25% since the previous classify, or (b) stages the body to a temp file and returns a dispatch envelope the admin agent hands to the `librarian` specialist. Librarian runs the document-ingest skill against the temp file; memory-ingest replaces any prior :Section children and stamps lastClassifiedAt + lastClassifiedBodyLength on the KD. Thin wrapper over the generic kd-classify tool — use this when you only have the human-typed root Message-ID; pass the attachmentId directly to kd-classify if you already have it.", {
281
+ rootMessageId: z.string().describe("Root Message-ID of the thread (no angle brackets) — the same value that identifies the thread KD in the graph (attachmentId = sha256(`email:<accountId>:<rootMessageId>`)). Find it via email-graph-query."),
282
+ }, async ({ rootMessageId }) => {
283
+ if (!accountId)
284
+ return refuseNoAccount("email-classify");
285
+ try {
286
+ const text = await emailClassify({ accountId, rootMessageId });
287
+ return { content: [{ type: "text", text }] };
288
+ }
289
+ catch (err) {
290
+ return {
291
+ content: [
292
+ {
293
+ type: "text",
294
+ text: `email-classify failed: ${err instanceof Error ? err.message : String(err)}`,
295
+ },
296
+ ],
297
+ isError: true,
298
+ };
299
+ }
300
+ });
301
+ // ===================================================================
277
302
  // email-fetch — operator-initiated inbox triage (no graph writes)
278
303
  // ===================================================================
279
304
  eagerTool(server, "email-fetch", "List new inbox messages since the last ingested UID, metadata + body preview only. Writes nothing to the graph. Used by the email-ingest skill: the operator reviews each message returned here and then calls email-ingest with a per-message disposition (ingest or discard).", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type EmailData } from "./graph.js";
2
+ export interface DispatchResult {
3
+ threadsDispatched: number;
4
+ threadsSkipped: number;
5
+ unresolvedAddresses: string[];
6
+ }
7
+ export declare function dispatchEmailMessagesToConversationArchive(messages: EmailData[]): Promise<DispatchResult>;
8
+ //# sourceMappingURL=conversation-archive-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-archive-dispatch.d.ts","sourceRoot":"","sources":["../../src/lib/conversation-archive-dispatch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AA+BhE,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,wBAAsB,0CAA0C,CAC9D,QAAQ,EAAE,SAAS,EAAE,GACpB,OAAO,CAAC,cAAc,CAAC,CA0EzB"}