@rubytech/create-realagent 1.0.826 → 1.0.828

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 (71) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/neo4j/schema.cypher +34 -2
  3. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +19 -13
  4. package/payload/platform/plugins/admin/skills/onboarding/SKILL.md +5 -5
  5. package/payload/platform/plugins/docs/references/cloudflare.md +1 -1
  6. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  7. package/payload/platform/plugins/docs/references/troubleshooting.md +1 -0
  8. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  9. package/payload/platform/plugins/memory/mcp/dist/index.js +6 -41
  10. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  11. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +51 -0
  12. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -1
  13. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +19 -4
  14. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
  15. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +139 -56
  16. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
  17. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts +2 -0
  18. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts.map +1 -0
  19. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +61 -0
  20. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -0
  21. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +34 -0
  22. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  23. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +241 -0
  24. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  25. package/payload/platform/plugins/memory/references/schema-base.md +5 -2
  26. package/payload/platform/plugins/whatsapp-import/PLUGIN.md +17 -15
  27. package/payload/platform/plugins/whatsapp-import/bin/ingest.mjs +313 -366
  28. package/payload/platform/plugins/whatsapp-import/bin/whatsapp-ingest.sh +27 -60
  29. package/payload/platform/plugins/whatsapp-import/lib/dist/delta-cursor.d.ts +18 -0
  30. package/payload/platform/plugins/whatsapp-import/lib/dist/delta-cursor.d.ts.map +1 -0
  31. package/payload/platform/plugins/whatsapp-import/lib/dist/delta-cursor.js +31 -0
  32. package/payload/platform/plugins/whatsapp-import/lib/dist/delta-cursor.js.map +1 -0
  33. package/payload/platform/plugins/whatsapp-import/lib/dist/derive-keys.d.ts +27 -12
  34. package/payload/platform/plugins/whatsapp-import/lib/dist/derive-keys.d.ts.map +1 -1
  35. package/payload/platform/plugins/whatsapp-import/lib/dist/derive-keys.js +40 -20
  36. package/payload/platform/plugins/whatsapp-import/lib/dist/derive-keys.js.map +1 -1
  37. package/payload/platform/plugins/whatsapp-import/lib/dist/index.d.ts +7 -4
  38. package/payload/platform/plugins/whatsapp-import/lib/dist/index.d.ts.map +1 -1
  39. package/payload/platform/plugins/whatsapp-import/lib/dist/index.js +9 -6
  40. package/payload/platform/plugins/whatsapp-import/lib/dist/index.js.map +1 -1
  41. package/payload/platform/plugins/whatsapp-import/lib/dist/sessionize.d.ts +25 -0
  42. package/payload/platform/plugins/whatsapp-import/lib/dist/sessionize.d.ts.map +1 -0
  43. package/payload/platform/plugins/whatsapp-import/lib/dist/sessionize.js +48 -0
  44. package/payload/platform/plugins/whatsapp-import/lib/dist/sessionize.js.map +1 -0
  45. package/payload/platform/plugins/whatsapp-import/lib/dist/to-classifier-input.d.ts +3 -0
  46. package/payload/platform/plugins/whatsapp-import/lib/dist/to-classifier-input.d.ts.map +1 -0
  47. package/payload/platform/plugins/whatsapp-import/lib/dist/to-classifier-input.js +47 -0
  48. package/payload/platform/plugins/whatsapp-import/lib/dist/to-classifier-input.js.map +1 -0
  49. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/delta-append.test.ts +163 -0
  50. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/sessionize.test.ts +91 -0
  51. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/to-classifier-input.test.ts +59 -0
  52. package/payload/platform/plugins/whatsapp-import/lib/src/delta-cursor.ts +54 -0
  53. package/payload/platform/plugins/whatsapp-import/lib/src/derive-keys.ts +55 -32
  54. package/payload/platform/plugins/whatsapp-import/lib/src/index.ts +9 -6
  55. package/payload/platform/plugins/whatsapp-import/lib/src/sessionize.ts +81 -0
  56. package/payload/platform/plugins/whatsapp-import/lib/src/to-classifier-input.ts +48 -0
  57. package/payload/platform/plugins/whatsapp-import/skills/whatsapp-import/SKILL.md +66 -73
  58. package/payload/platform/plugins/whatsapp-import/skills/whatsapp-import/references/conversation-archive-shape.md +143 -0
  59. package/payload/platform/templates/specialists/agents/database-operator.md +10 -11
  60. package/payload/server/chunk-T2OPNP3L.js +654 -0
  61. package/payload/server/cloudflare-task-tracker-CR6TL4VL.js +19 -0
  62. package/payload/server/public/assets/{admin-DOkUspG1.js → admin-BNwPsMhJ.js} +2 -2
  63. package/payload/server/public/assets/{graph-LLMJa4Ch.js → graph-N_Bw-8oT.js} +1 -1
  64. package/payload/server/public/assets/{page-DoaF3DB0.js → page-BKLGP-th.js} +1 -1
  65. package/payload/server/public/graph.html +2 -2
  66. package/payload/server/public/index.html +2 -2
  67. package/payload/server/server.js +277 -164
  68. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/filter-gate.test.ts +0 -172
  69. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/ingest-idempotence.test.ts +0 -141
  70. package/payload/platform/plugins/whatsapp-import/lib/src/filter.ts +0 -136
  71. package/payload/platform/plugins/whatsapp-import/skills/whatsapp-import-enrich/SKILL.md +0 -333
@@ -97,6 +97,14 @@ function bumpEdge(breakdown, edgeType) {
97
97
  // Main entry point
98
98
  // ---------------------------------------------------------------------------
99
99
  export async function memoryIngest(params) {
100
+ // Task 891 — ConversationArchive branch. Diverges enough from the document
101
+ // path (no extract cache, no anchor edges, no related entities, delta-append
102
+ // semantics) that it has its own end-to-end implementation in
103
+ // ingestConversationArchive(). The brief consolidates these as one entry
104
+ // (`memoryIngest` with `parentLabel`) so callers see one tool.
105
+ if (params.parentLabel === "ConversationArchive") {
106
+ return ingestConversationArchive(params);
107
+ }
100
108
  const { accountId, attachmentId, documentSummary, anchorNodeId, anchorLabel, sections, documentEdges = [], orphanCandidates = [], scope, sourceUrl, sourceType, documentKeywords: rawDocKeywords, userKeywords: rawUserKeywords, sessionId, } = params;
101
109
  if (!scope) {
102
110
  throw new Error("scope is required — valid values: 'public', 'shared', 'admin', 'user:{identifier}'");
@@ -533,4 +541,237 @@ async function writeRelatedNode(opts) {
533
541
  });
534
542
  return result.records[0].get("nodeId");
535
543
  }
544
+ // ---------------------------------------------------------------------------
545
+ // ConversationArchive ingest (Task 891) — chat-mode branch.
546
+ //
547
+ // MERGE :ConversationArchive on conversationIdentity → cleanup THIS export's
548
+ // chunks by archiveSha256 (delta discipline: prior exports' chunks survive)
549
+ // → CREATE new chunks → extend NEXT chain from existing tail → MERGE
550
+ // :PARTICIPANT_IN edges → update lastIngestedMessageHash + lastIngestedMessageAt.
551
+ //
552
+ // No anchor edges, no related entities, no documentEdges, no orphan candidates.
553
+ // Sections in this branch are :Section:Conversation chunks; properties pass
554
+ // through verbatim (summary, keywords, firstMessageAt, lastMessageAt,
555
+ // participantNames, messageCount).
556
+ // ---------------------------------------------------------------------------
557
+ const CHAT_PROVENANCE_AGENT = "whatsapp-import";
558
+ const CHAT_PROVENANCE_SOURCE = "whatsapp";
559
+ async function ingestConversationArchive(params) {
560
+ const { accountId, attachmentId: conversationIdentity, // semantic rename per parentLabel
561
+ documentSummary, sections, scope, documentKeywords: rawDocKeywords, userKeywords: rawUserKeywords, sessionId, archiveSha256, archiveSourceFile, lastIngestedMessageHash, lastIngestedMessageAt, participantElementIds = [], } = params;
562
+ if (!scope) {
563
+ throw new Error("scope is required");
564
+ }
565
+ if (!archiveSha256 || !archiveSha256.trim()) {
566
+ throw new Error("archiveSha256 is required for parentLabel='ConversationArchive'");
567
+ }
568
+ if (!archiveSourceFile || !archiveSourceFile.trim()) {
569
+ throw new Error("archiveSourceFile is required for parentLabel='ConversationArchive'");
570
+ }
571
+ if (!lastIngestedMessageHash || !lastIngestedMessageHash.trim()) {
572
+ throw new Error("lastIngestedMessageHash is required for parentLabel='ConversationArchive'");
573
+ }
574
+ if (!lastIngestedMessageAt || !lastIngestedMessageAt.trim()) {
575
+ throw new Error("lastIngestedMessageAt is required for parentLabel='ConversationArchive'");
576
+ }
577
+ const keywords = (() => {
578
+ const u = (rawUserKeywords ?? []).map((k) => k.toLowerCase().trim()).filter(Boolean);
579
+ const d = (rawDocKeywords ?? []).map((k) => k.toLowerCase().trim()).filter(Boolean);
580
+ if (u.length === 0 && d.length === 0)
581
+ return undefined;
582
+ return [...new Set([...u, ...d])];
583
+ })();
584
+ const t0 = Date.now();
585
+ const log = (stage, detail) => console.error(`[memory-ingest] [CA:${conversationIdentity.slice(0, 8)}] ${stage}${detail ? ` — ${detail}` : ""} (${Date.now() - t0}ms)`);
586
+ log("start", `${sections.length} chunks, archiveSha256=${archiveSha256.slice(0, 12)}, scope=${scope}`);
587
+ const now = new Date().toISOString();
588
+ const dbSession = getSession();
589
+ let archiveNodeId = "";
590
+ const kindBreakdown = {};
591
+ const edgeBreakdown = {};
592
+ try {
593
+ // 1. Embed every chunk body. Summary too (parent embedding).
594
+ const textsToEmbed = [documentSummary, ...sections.map((s) => s.body)];
595
+ log("embedding", `${textsToEmbed.length} texts`);
596
+ const embeddings = await embedBatch(textsToEmbed);
597
+ const archiveEmbedding = embeddings[0];
598
+ // 2. MERGE :ConversationArchive on conversationIdentity. ON CREATE stamps
599
+ // immutable identity props; ON MATCH bumps the cursor + last-ingest
600
+ // timestamps so the next delta-append run finds the right point.
601
+ const archiveResult = await dbSession.run(`MERGE (a:ConversationArchive { conversationIdentity: $conversationIdentity })
602
+ ON CREATE SET a.accountId = $accountId,
603
+ a.scope = $scope,
604
+ a.summary = $documentSummary,
605
+ a.keywords = $keywords,
606
+ a.embedding = $archiveEmbedding,
607
+ a.archiveSourceFile = $archiveSourceFile,
608
+ a.createdAt = $createdAt,
609
+ a.createdBySession = $sessionId,
610
+ a.createdByAgent = $createdByAgent,
611
+ a.source = $source
612
+ SET a.updatedAt = $updatedAt,
613
+ a.lastIngestedMessageHash = $lastIngestedMessageHash,
614
+ a.lastIngestedMessageAt = $lastIngestedMessageAt,
615
+ a.lastIngestedBySession = $sessionId,
616
+ a.lastIngestedArchiveSha256 = $archiveSha256
617
+ RETURN elementId(a) AS nodeId, count(a) AS affected`, {
618
+ conversationIdentity,
619
+ accountId,
620
+ scope,
621
+ documentSummary,
622
+ keywords: keywords ?? [],
623
+ archiveEmbedding,
624
+ archiveSourceFile,
625
+ createdAt: now,
626
+ updatedAt: now,
627
+ sessionId: sessionId ?? "",
628
+ createdByAgent: CHAT_PROVENANCE_AGENT,
629
+ source: CHAT_PROVENANCE_SOURCE,
630
+ lastIngestedMessageHash,
631
+ lastIngestedMessageAt,
632
+ archiveSha256,
633
+ });
634
+ if (archiveResult.records[0]?.get("affected")?.toNumber?.() !== 1) {
635
+ throw new Error("memory-ingest: ConversationArchive MERGE returned no row — Cypher silent no-op");
636
+ }
637
+ archiveNodeId = archiveResult.records[0].get("nodeId");
638
+ log("archive-merged", `nodeId=${archiveNodeId.slice(0, 12)}`);
639
+ // 3. Cleanup chunks of THIS export (idempotency for re-running the same
640
+ // export bytes). Delta-append re-imports of NEWER exports leave prior
641
+ // chunks alone because their archiveSha256 differs.
642
+ const cleanup = await dbSession.run(`MATCH (a:ConversationArchive { conversationIdentity: $conversationIdentity })
643
+ -[hs:HAS_SECTION]->(c:Section:Conversation { archiveSha256: $archiveSha256 })
644
+ DETACH DELETE c
645
+ RETURN count(c) AS removed`, { conversationIdentity, archiveSha256 });
646
+ const removed = cleanup.records[0]?.get("removed")?.toNumber?.() ?? 0;
647
+ if (removed > 0) {
648
+ log("cleanup", `dropped ${removed} prior chunks for this archiveSha256`);
649
+ }
650
+ // 4. Find existing tail of NEXT chain (if any). Delta-append wires the
651
+ // new first chunk after this tail; first-ever ingest finds nothing.
652
+ const tailResult = await dbSession.run(`MATCH (a:ConversationArchive { conversationIdentity: $conversationIdentity })
653
+ -[:HAS_SECTION]->(c:Section:Conversation)
654
+ WHERE NOT (c)-[:NEXT]->(:Section:Conversation)
655
+ RETURN elementId(c) AS tailId LIMIT 1`, { conversationIdentity });
656
+ let previousChunkId = tailResult.records[0]?.get("tailId") ?? null;
657
+ if (previousChunkId) {
658
+ log("tail-found", `extending NEXT chain from elementId=${previousChunkId.slice(0, 12)}`);
659
+ }
660
+ // 5. CREATE chunk nodes + HAS_SECTION + NEXT chain.
661
+ let chunksWritten = 0;
662
+ let nextEdgesCreated = 0;
663
+ for (let i = 0; i < sections.length; i++) {
664
+ const section = sections[i];
665
+ const bodyEmbedding = embeddings[i + 1];
666
+ const baseProps = {
667
+ accountId,
668
+ title: section.title,
669
+ body: section.body,
670
+ bodyPreview: section.body.slice(0, PREVIEW_LENGTH),
671
+ position: i,
672
+ scope,
673
+ embedding: bodyEmbedding,
674
+ createdAt: now,
675
+ updatedAt: now,
676
+ createdByAgent: CHAT_PROVENANCE_AGENT,
677
+ createdBySource: CHAT_PROVENANCE_AGENT,
678
+ createdBySession: sessionId ?? "",
679
+ source: CHAT_PROVENANCE_SOURCE,
680
+ archiveSha256,
681
+ archiveSourceFile,
682
+ };
683
+ const chunkProps = { ...section.properties, ...baseProps };
684
+ const r = await dbSession.run(`CREATE (c:Section:Conversation)
685
+ SET c = $props
686
+ WITH c
687
+ MATCH (a:ConversationArchive { conversationIdentity: $conversationIdentity })
688
+ CREATE (a)-[hs:HAS_SECTION]->(c)
689
+ SET hs.createdByAgent = $createdByAgent,
690
+ hs.createdBySession = $createdBySession,
691
+ hs.source = $source,
692
+ hs.archiveSha256 = $archiveSha256,
693
+ hs.createdAt = $createdAt
694
+ RETURN elementId(c) AS nodeId`, {
695
+ props: chunkProps,
696
+ conversationIdentity,
697
+ createdByAgent: CHAT_PROVENANCE_AGENT,
698
+ createdBySession: sessionId ?? "",
699
+ source: CHAT_PROVENANCE_SOURCE,
700
+ archiveSha256,
701
+ createdAt: now,
702
+ });
703
+ const chunkId = r.records[0].get("nodeId");
704
+ chunksWritten++;
705
+ bumpKind(kindBreakdown, "Conversation");
706
+ bumpEdge(edgeBreakdown, "HAS_SECTION");
707
+ if (previousChunkId) {
708
+ const nextRes = await dbSession.run(`MATCH (prev:Section:Conversation), (cur:Section:Conversation)
709
+ WHERE elementId(prev) = $prev AND elementId(cur) = $cur
710
+ CREATE (prev)-[n:NEXT]->(cur)
711
+ SET n.createdByAgent = $createdByAgent,
712
+ n.createdBySession = $createdBySession,
713
+ n.source = $source,
714
+ n.archiveSha256 = $archiveSha256,
715
+ n.createdAt = $createdAt
716
+ RETURN count(n) AS created`, {
717
+ prev: previousChunkId,
718
+ cur: chunkId,
719
+ createdByAgent: CHAT_PROVENANCE_AGENT,
720
+ createdBySession: sessionId ?? "",
721
+ source: CHAT_PROVENANCE_SOURCE,
722
+ archiveSha256,
723
+ createdAt: now,
724
+ });
725
+ if (nextRes.records[0]?.get("created")?.toNumber?.() !== 1) {
726
+ throw new Error("memory-ingest: NEXT edge CREATE returned no row — silent no-op");
727
+ }
728
+ nextEdgesCreated++;
729
+ bumpEdge(edgeBreakdown, "NEXT");
730
+ }
731
+ previousChunkId = chunkId;
732
+ }
733
+ // 6. MERGE :PARTICIPANT_IN edges from each operator-confirmed participant
734
+ // to the archive. Idempotent — re-runs are no-ops on the edge set.
735
+ let participantEdgesMerged = 0;
736
+ for (const elemId of participantElementIds) {
737
+ const pres = await dbSession.run(`MATCH (a:ConversationArchive { conversationIdentity: $conversationIdentity })
738
+ MATCH (p) WHERE elementId(p) = $elemId AND (p:Person OR p:AdminUser)
739
+ MERGE (p)-[r:PARTICIPANT_IN]->(a)
740
+ ON CREATE SET r.createdByAgent = $createdByAgent,
741
+ r.createdBySession = $createdBySession,
742
+ r.source = $source,
743
+ r.createdAt = $createdAt
744
+ RETURN count(r) AS merged`, {
745
+ conversationIdentity,
746
+ elemId,
747
+ createdByAgent: CHAT_PROVENANCE_AGENT,
748
+ createdBySession: sessionId ?? "",
749
+ source: CHAT_PROVENANCE_SOURCE,
750
+ createdAt: now,
751
+ });
752
+ const merged = pres.records[0]?.get("merged")?.toNumber?.() ?? 0;
753
+ if (merged !== 1) {
754
+ throw new Error(`memory-ingest: PARTICIPANT_IN MERGE for elementId=${elemId} returned no row — Person/AdminUser may not exist or label mismatch`);
755
+ }
756
+ participantEdgesMerged++;
757
+ bumpEdge(edgeBreakdown, "PARTICIPANT_IN");
758
+ }
759
+ log("neo4j-done", `archive=${archiveNodeId.slice(0, 12)} chunks=${chunksWritten} next-edges=${nextEdgesCreated} participants=${participantEdgesMerged}`);
760
+ return {
761
+ documentNodeId: archiveNodeId,
762
+ sectionCount: chunksWritten,
763
+ kindBreakdown,
764
+ edgeBreakdown,
765
+ relatedCount: 0,
766
+ standaloneCount: 0,
767
+ orphanCandidates: [],
768
+ documentSummary,
769
+ keywords,
770
+ };
771
+ }
772
+ finally {
773
+ await dbSession.close();
774
+ log("complete");
775
+ }
776
+ }
536
777
  //# sourceMappingURL=memory-ingest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-ingest.js","sourceRoot":"","sources":["../../src/tools/memory-ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-ingest.js","sourceRoot":"","sources":["../../src/tools/memory-ingest.ts"],"names":[],"mappings":"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"}
@@ -37,8 +37,9 @@ When loading this reference, confirm which schema files were consulted by noting
37
37
  | CloudflareTunnel | `CloudflareTunnel` | platform-native | — | `accountId`, `tunnelId`, `tunnelName` |
38
38
  | CloudflareHostname | `CloudflareHostname` | platform-native | — | `accountId`, `hostnameValue`, `tunnelId` |
39
39
  | Position | `Position` | platform-native (analogue of `schema:OrganizationRole`) | — | `accountId`, `title`, `startDate` |
40
- | WhatsApp Conversation | `WhatsAppConversation` | extends `schema:Conversation` | — | `accountId`, `conversationId`, `archiveSourceFile`, `firstMessageAt`, `lastMessageAt`, `participantCount`, `messageCount`, `scope`, `createdByAgent`, `createdBySession`, `createdAt` |
41
- | WhatsApp Message | `WhatsAppMessage` | extends `schema:Message` | — | `accountId`, `conversationId`, `messageId`, `dateSent`, `body`, `senderName`, `sequenceIndex`, `scope`, `createdByAgent`, `createdBySession`, `createdAt` |
40
+ | WhatsApp Conversation (legacy) | `WhatsAppConversation` | extends `schema:Conversation` | — | `accountId`, `conversationId`, `archiveSourceFile`, `firstMessageAt`, `lastMessageAt`, `participantCount`, `messageCount`, `scope`, `createdByAgent`, `createdBySession`, `createdAt` |
41
+ | WhatsApp Message (legacy) | `WhatsAppMessage` | extends `schema:Message` | — | `accountId`, `conversationId`, `messageId`, `dateSent`, `body`, `senderName`, `sequenceIndex`, `scope`, `createdByAgent`, `createdBySession`, `createdAt` |
42
+ | ConversationArchive (Task 891) | `ConversationArchive` | platform-native (chunked WhatsApp / messaging archive parent) | — | `accountId`, `conversationIdentity`, `archiveSourceFile`, `summary`, `keywords`, `lastIngestedMessageHash`, `lastIngestedMessageAt`, `lastIngestedArchiveSha256`, `scope`, `createdByAgent`, `createdBySession`, `createdAt` |
42
43
 
43
44
  **Branding properties on LocalBusiness:** `primaryColor`, `accentColor`, `backgroundColor`, `tagline` — optional, used to brand the public chat endpoint. Written via `memory-update` on the LocalBusiness node. Hex color values must match `#[0-9a-fA-F]{3,8}`. Logo and icon are linked via `HAS_BRAND_ASSET → ImageObject` with `purpose: "logo"` or `"icon"`.
44
45
 
@@ -165,6 +166,8 @@ The closed enumeration:
165
166
 
166
167
  `Preface`, `Abstract` (alias for Summary / ExecutiveSummary), `Introduction`, `TableOfContents`, `Chapter`, `Conclusion`, `Appendix`, `Bibliography` (alias for References), `Glossary`, `Acknowledgments` — each becomes `:Section:<Kind>` linked to the document via `(:KnowledgeDocument)-[:HAS_SECTION]->` and chained to siblings via `(:Section)-[:NEXT]->(:Section)` in reading order.
167
168
 
169
+ `Conversation` (Task 891) — chat-mode chunks emitted by `memory-classify` with `mode='chat'`. Becomes `:Section:Conversation` linked via `(:ConversationArchive)-[:HAS_SECTION]->` (a different parent than KnowledgeDocument). Properties beyond the base section shape: `summary`, `keywords`, `firstMessageAt`, `lastMessageAt`, `participantNames`, `messageCount`, `archiveSha256`. The `:Section` validator rules (embedding, body, position) apply uniformly.
170
+
168
171
  **Contract-clause kinds (HAS_SECTION + NEXT, plus special-case extras for two kinds):**
169
172
 
170
173
  `Parties`, `Recitals`, `Definitions`, `Scope`, `Term`, `Payment`, `Confidentiality`, `IntellectualProperty`, `Warranties`, `Indemnification`, `Liability`, `Termination`, `GoverningLaw`, `ForceMajeure`, `Notices`, `EntireAgreement`, `Amendment`, `Assignment`, `Severability`, `Signatures`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: whatsapp-import
3
- description: "Import a WhatsApp `_chat.txt` export (Conversation + Messages with chronological NEXT chain + analysis-derived insights) into the {{productName}} Neo4j graph as a two-phase contract: Phase 1 (`whatsapp-import` skill) lands raw shape via a deterministic Bash entry; Phase 2 (`whatsapp-import-enrich` skill) is operator-driven semantic resolution over the loaded conversation. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default. Distinct from the live `whatsapp` plugin (Baileys QR pairing + in-memory store)."
3
+ description: "Import a WhatsApp `_chat.txt` export into the {{productName}} Neo4j graph as a `:ConversationArchive` parent + chunked `:Section:Conversation` children (the chunked-archive contract). Single-phase ingest: parse operator-confirms owner + every participant sessionize at gap-hours boundary Haiku-chunk each session into topic-bounded :Section:Conversation rows with summary + topic keywords. Re-imports are delta-append: prior chunks never touched. Insight derivation (`:Observation` / `:Task` / `:Preference`) is deferred to a separate follow-up task. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default. Distinct from the live `whatsapp` plugin (Baileys QR pairing + in-memory store)."
4
4
  tools: []
5
5
  always: false
6
6
  embed: false
@@ -10,22 +10,25 @@ metadata: {"platform":{"optional":true,"pluginKey":"whatsapp-import"}}
10
10
 
11
11
  # WhatsApp Import
12
12
 
13
- Ingests a WhatsApp "Export Chat" archive (the `_chat.txt` file plus media attachments) into the {{productName}} Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `database-operator` specialist, which owns external-archive ingestion and ad-hoc graph operations.
13
+ Ingests a WhatsApp "Export Chat" archive (the `_chat.txt` file plus media attachments) into the {{productName}} Neo4j graph as a single document-shaped `:ConversationArchive` with chunked `:Section:Conversation` children. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `database-operator` specialist, which owns external-archive ingestion and ad-hoc graph operations.
14
14
 
15
- ## Two-phase contract (earlier platform fixes + earlier platform fixes)
15
+ ## Single-phase contract (the chunked-archive contract)
16
16
 
17
- The plugin ships two skills that pair as a contract: deterministic load first, then operator-driven semantic enrichment. Splitting them removes the orchestration loop a single bundled phase imposed (the 7h orchestration), and lets re-imports reuse the load phase without redoing the semantic walk.
17
+ Pre-Task-891 the plugin shipped two skills (`whatsapp-import` for raw load + `whatsapp-import-enrich` for Haiku-driven `:Observation` extraction). The split worked but operated at per-message granularity: insights were attached to individual `:Message` rows, missing intent that spans multiple turns, and the auto-`:Person` participant pattern leaked entities on every parser miss. the chunked-archive contract retires both skills and the per-message writer in favour of a single-phase contract:
18
18
 
19
- | Phase | Skill | What it does | Trigger phrase |
20
- |-------|-------|--------------|----------------|
21
- | 1load | [`whatsapp-import`](skills/whatsapp-import/SKILL.md) | Parses `_chat.txt`, writes `:Conversation:WhatsAppConversation` + `:Message:WhatsAppMessage` with NEXT chain, auto-creates one `:Person {participantStatus:'auto-created'}` per distinct senderName, lands `:Observation {observationStatus:'auto-extracted'}` rows from the chunked Haiku insight pass. Single Bash entry; no MCP envelope between steps. | Operator drops a `_chat.txt` file or its containing export folder into chat. |
22
- | 2enrich | [`whatsapp-import-enrich`](skills/whatsapp-import-enrich/SKILL.md) | Walks `participantStatus='auto-created'` and `observationStatus='auto-extracted'` rows scoped to a chosen conversation, surfaces evidence per row, writes operator-confirmed wiring: `apoc.refactor.mergeNodes` for participant promotion/merge, `:MENTIONS`/`:RELATED_TO` edges with `evidenceSnippet`, `:Task` via `task-create`, `:Preference` via `memory-write`. Idempotent re-running surfaces only items still in `auto-created`/`auto-extracted`. | Operator asks to "enrich the X chat", "promote auto-created participants from Y", "wire observations from yesterday's import". |
19
+ 1. **Parse** deterministic `_chat.txt` parser (unchanged from the deterministic parser contract).
20
+ 2. **Operator confirmation** — every distinct senderName must resolve to an existing `:AdminUser` or `:Person` elementId. No auto-creation.
21
+ 3. **Sessionize**split parsed messages at gap-hours boundaries (default 12h).
22
+ 4. **Classify**each session goes to Haiku via `memory-classify` with `mode='chat'`; returns one or more `:Section:Conversation` chunks with topic-bounded `summary`, `keywords`, `firstMessageAt`, `lastMessageAt`, `participantNames`, `messageCount`, and verbatim turn-attributed `body`.
23
+ 5. **Write** — `memory-ingest` with `parentLabel='ConversationArchive'` MERGEs the parent on `conversationIdentity = sha256(accountId + ":" + sortedParticipantElementIds)`, MERGEs `:PARTICIPANT_IN` edges, drops any prior chunks for THIS export's SHA-256 (idempotency), CREATEs new chunks, and extends the existing `:NEXT` chain from its tail.
23
24
 
24
- Phase 2 refuses to run against a Conversation whose `c.lastImportedAt` is null. Phase 1 always precedes Phase 2.
25
+ Re-imports are delta-append: prior chunks are never touched, only messages after `lastIngestedMessageHash` flow through the pipeline. See [skills/whatsapp-import/references/conversation-archive-shape.md](skills/whatsapp-import/references/conversation-archive-shape.md) for the full schema.
26
+
27
+ Insight derivation (`:Observation` / `:Task` / `:Preference` / `:MENTIONS`, anchored to chunks) is deferred to a separate follow-up task with its own skill name.
25
28
 
26
29
  ## When this applies
27
30
 
28
- The admin agent delegates to `database-operator` when the operator drops a `_chat.txt` (or its containing folder) into chat (→ Phase 1) or names enrichment of an already-loaded conversation (→ Phase 2). For Phase 1 the specialist runs the skill's archive-owner confirmation flow before any line is written, then invokes the deterministic Bash entry (`bin/whatsapp-ingest.sh`) once: parse, archive-write (via `memoryArchiveWrite` in-process), and Haiku insight all run in one Node process — no MCP envelope between steps. For Phase 2 the specialist runs `whatsapp-import-enrich`'s bulk preview, asks the operator to confirm scope, then walks the rows with operator confirmation gates.
31
+ The admin agent delegates to `database-operator` when the operator drops a `_chat.txt` (or its containing folder) into chat. The specialist runs the skill's owner + all-participants confirmation flow before any line is written, then invokes the deterministic Bash entry (`bin/whatsapp-ingest.sh`) once: parse sessionize in-process Haiku classify → in-process memory-ingest all run in one Node process.
29
32
 
30
33
  ## Accepted export shapes
31
34
 
@@ -36,11 +39,10 @@ WhatsApp's "Export Chat" emits `[DD/MM/YYYY, HH:MM:SS]` prefixes by default in m
36
39
  - **Not** the live `whatsapp` plugin. That plugin (Baileys QR pairing) holds messages in an in-memory store cleared on restart. This plugin imports historical exports into Neo4j as persistent graph nodes. Names are deliberately distinct (`whatsapp-import` vs `whatsapp`) so the boundary is mechanical.
37
40
  - **Not** a media-transcription pipeline. Voice notes (`.opus`), photos, PDFs are skipped at parse with a counter logged. Transcription / OCR is a separate plugin decision.
38
41
  - **Not** a generic chat-export importer. Each messaging channel (Telegram, iMessage, Signal, SMS dump) ships as its own opt-in plugin under the same shape when requested.
42
+ - **Not** an insight-extraction pass. `:Observation` / `:Task` / `:Preference` derivation against chunks is a separate, follow-up task.
39
43
 
40
44
  ## Relationship to other plugins
41
45
 
42
- - **memory** — Phase 1's underlying write surface, imported in-process by `bin/ingest.mjs` (`memoryArchiveWrite` for bulk Conversation+Messages; direct Cypher `:Observation` writes for the insight pass). Phase 2's enrich skill writes `:Preference` nodes via `mcp__memory__memory-write` and uses `mcp__memory__memory-search` for entity disambiguation. All writes carry `source='whatsapp'` + `createdByAgent='whatsapp-import'` (Phase 1) or `createdByAgent='whatsapp-import-enrich'` (Phase 2) provenance. The legacy `mcp__memory__whatsapp-export-parse` / `whatsapp-export-insight-write` MCP tools and the direct `memory-archive-write` MCP path with `archiveType=whatsapp-export` are blocked at the harness — the Bash entry is the only supported invocation surface for Phase 1.
43
- - **tasks** — Phase 2's `:Task` writes go through `mcp__tasks__task-create` with `affects=$conversationElementId`. Database-operator's frontmatter `tools:` includes `mcp__tasks__task-create` for this path.
44
- - **contacts** — Phase 2's mint-new-Person path (an auto-created participant the operator wants to land as a fresh contact) goes through `mcp__contacts__contact-create`.
45
- - **database-operator specialist** — owns execution for both phases. See [admin/IDENTITY.md](../../../platform/templates/agents/admin/IDENTITY.md) delegation clause and [database-operator.md](../../../platform/templates/specialists/agents/database-operator.md) per-source archive list (which now names both phases under the WhatsApp entry).
46
- - **linkedin-import** — sister plugin under the same pattern (LinkedIn Basic Data Export). LinkedIn ingestion is single-phase today (no enrich pass) because CSV rows already encode entity types deterministically — no auto-created participants, no auto-extracted observations to walk. Reading [linkedin-import/PLUGIN.md](../linkedin-import/PLUGIN.md) is the fastest way to understand the load-phase shape this plugin's Phase 1 follows.
46
+ - **memory** — provides `memory-classify` (with `mode='chat'`) and `memory-ingest` (with `parentLabel='ConversationArchive'`). The whatsapp-import bin imports both in-process no MCP envelope between steps. All writes carry `source='whatsapp'` + `createdByAgent='whatsapp-import'` provenance. The legacy `mcp__memory__whatsapp-export-parse` / `whatsapp-export-insight-write` MCP tools and the `memory-archive-write` MCP path with `archiveType=whatsapp-export` are blocked at the harness — the Bash entry is the only supported invocation surface.
47
+ - **database-operator specialist** — owns execution. See [admin/IDENTITY.md](../../../platform/templates/agents/admin/IDENTITY.md) delegation clause and [database-operator.md](../../../platform/templates/specialists/agents/database-operator.md) per-source archive list (which now names the chunked-archive shape under the WhatsApp entry).
48
+ - **linkedin-import** — sister plugin under the same opt-in pattern (LinkedIn Basic Data Export). Reading [linkedin-import/PLUGIN.md](../linkedin-import/PLUGIN.md) is the fastest way to understand the load-phase shape that complements this plugin's chunked-archive approach.