@rubytech/create-realagent 1.0.828 → 1.0.830

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 (144) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/config/brand.json +1 -1
  3. package/payload/platform/lib/oauth-llm/dist/index.d.ts +1 -1
  4. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +1 -1
  5. package/payload/platform/lib/oauth-llm/dist/index.js +21 -0
  6. package/payload/platform/lib/oauth-llm/dist/index.js.map +1 -1
  7. package/payload/platform/lib/oauth-llm/src/index.ts +24 -0
  8. package/payload/platform/neo4j/migrations/007-conversation-archive-source.ts +116 -0
  9. package/payload/platform/neo4j/schema.cypher +12 -2
  10. package/payload/platform/package.json +2 -2
  11. package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +6 -6
  12. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +14 -8
  13. package/payload/platform/plugins/admin/skills/onboarding/SKILL.md +2 -2
  14. package/payload/platform/plugins/contacts/mcp/dist/index.js +5 -5
  15. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
  16. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +1 -1
  17. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -1
  18. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +29 -23
  19. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
  20. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  21. package/payload/platform/plugins/memory/PLUGIN.md +6 -5
  22. package/payload/platform/plugins/{whatsapp-import/bin/ingest.mjs → memory/bin/conversation-archive-ingest.mjs} +136 -212
  23. package/payload/platform/plugins/{whatsapp-import/bin/whatsapp-ingest.sh → memory/bin/conversation-archive-ingest.sh} +27 -19
  24. package/payload/platform/plugins/memory/mcp/dist/index.js +26 -212
  25. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  26. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +4 -3
  27. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -1
  28. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +11 -6
  29. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
  30. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +103 -0
  31. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +5 -0
  33. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -0
  34. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +30 -0
  35. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -0
  36. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +48 -0
  37. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -0
  38. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +23 -0
  39. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -0
  40. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts +3 -0
  41. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts.map +1 -0
  42. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js +237 -0
  43. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js.map +1 -0
  44. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts +11 -0
  45. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts.map +1 -0
  46. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js +21 -0
  47. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js.map +1 -0
  48. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts +16 -0
  49. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -0
  50. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +39 -0
  51. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -0
  52. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts +17 -0
  53. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts.map +1 -0
  54. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +90 -0
  55. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -0
  56. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts +9 -0
  57. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts.map +1 -0
  58. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js +32 -0
  59. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js.map +1 -0
  60. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts +3 -0
  61. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts.map +1 -0
  62. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js +27 -0
  63. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js.map +1 -0
  64. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts +45 -0
  65. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts.map +1 -0
  66. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js +125 -0
  67. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js.map +1 -0
  68. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +24 -1
  69. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
  70. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +293 -33
  71. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
  72. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +9 -2
  74. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -1
  75. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts +16 -1
  76. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts.map +1 -1
  77. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js +12 -3
  78. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts +2 -0
  80. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts.map +1 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +75 -0
  82. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -0
  83. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts +2 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts.map +1 -0
  85. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js +67 -0
  86. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js.map +1 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +2 -138
  88. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +39 -3
  90. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
  91. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts +2 -0
  92. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts.map +1 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +148 -0
  94. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -0
  95. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +1 -47
  96. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  97. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +9 -318
  98. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  99. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +7 -0
  100. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  101. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +14 -8
  102. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  103. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +21 -17
  104. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
  105. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +77 -37
  106. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  107. package/payload/platform/plugins/memory/references/schema-base.md +3 -1
  108. package/payload/platform/plugins/{whatsapp-import/skills/whatsapp-import → memory/skills/conversation-archive}/SKILL.md +45 -36
  109. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +59 -6
  110. package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
  111. package/payload/platform/scripts/seed-neo4j.sh +9 -8
  112. package/payload/platform/templates/specialists/agents/database-operator.md +7 -14
  113. package/payload/server/chunk-7BO5HDJC.js +10093 -0
  114. package/payload/server/chunk-CUSH3UXP.js +2305 -0
  115. package/payload/server/chunk-EL4DZ56X.js +1116 -0
  116. package/payload/server/chunk-IWNDVGKT.js +10077 -0
  117. package/payload/server/chunk-KC7NUABI.js +654 -0
  118. package/payload/server/chunk-QOJ2D26Z.js +654 -0
  119. package/payload/server/chunk-RC46ZYGT.js +2305 -0
  120. package/payload/server/chunk-WUVXPZIV.js +1116 -0
  121. package/payload/server/client-pool-3TM3SRIA.js +32 -0
  122. package/payload/server/client-pool-7NTEFNVQ.js +32 -0
  123. package/payload/server/cloudflare-task-tracker-4NIODMGL.js +19 -0
  124. package/payload/server/cloudflare-task-tracker-WE77WXSI.js +19 -0
  125. package/payload/server/maxy-edge.js +3 -3
  126. package/payload/server/neo4j-migrations-4XPNJNM6.js +490 -0
  127. package/payload/server/neo4j-migrations-XTQ4WEV6.js +428 -0
  128. package/payload/server/server.js +6 -6
  129. package/payload/platform/plugins/whatsapp-import/PLUGIN.md +0 -48
  130. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/delta-append.test.ts +0 -163
  131. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/parse-export-lrm.test.ts +0 -83
  132. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/parse-export.test.ts +0 -678
  133. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/sessionize.test.ts +0 -91
  134. package/payload/platform/plugins/whatsapp-import/lib/src/__tests__/to-classifier-input.test.ts +0 -59
  135. package/payload/platform/plugins/whatsapp-import/lib/src/delta-cursor.ts +0 -54
  136. package/payload/platform/plugins/whatsapp-import/lib/src/derive-keys.ts +0 -82
  137. package/payload/platform/plugins/whatsapp-import/lib/src/index.ts +0 -22
  138. package/payload/platform/plugins/whatsapp-import/lib/src/parse-export.ts +0 -471
  139. package/payload/platform/plugins/whatsapp-import/lib/src/sessionize.ts +0 -81
  140. package/payload/platform/plugins/whatsapp-import/lib/src/to-classifier-input.ts +0 -48
  141. package/payload/platform/plugins/whatsapp-import/lib/tsconfig.json +0 -9
  142. package/payload/platform/plugins/whatsapp-import/lib/vitest.config.ts +0 -9
  143. package/payload/platform/plugins/whatsapp-import/skills/whatsapp-import/references/conversation-archive-shape.md +0 -143
  144. package/payload/platform/plugins/whatsapp-import/skills/whatsapp-import/references/export-parse.md +0 -109
@@ -1 +1 @@
1
- {"version":3,"file":"llm-classifier.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/llm-classifier.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-classifier.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/llm-classifier.test.ts"],"names":[],"mappings":"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"}
@@ -12,16 +12,21 @@ test("loadSchema: returns markdownLabels (renamed in Task 736 from labels)", ()
12
12
  assert.ok(schema.markdownLabels instanceof Map, "markdownLabels must be a Map");
13
13
  assert.equal("labels" in schema, false, "old `labels` field must be removed — callers must use markdownLabels");
14
14
  });
15
- test("loadSchema: documents Person with required email-or-telephone group", () => {
15
+ test("loadSchema: documents Person with no identifying-field requirement (Task 894)", () => {
16
16
  const schema = loadSchema();
17
17
  const person = schema.markdownLabels.get("Person");
18
18
  assert.ok(person, "Person must be documented");
19
19
  assert.equal(person.label, "Person");
20
- // Person carries at least one any-of group (email or telephone) per
21
- // schema-base.md. The exact set may evolve, so we assert the structure
22
- // rather than the literal contents.
23
- const hasAnyOf = person.required.some((g) => g.kind === "any-of");
24
- assert.ok(hasAnyOf, "Person must carry an any-of required group");
20
+ // Per Task 894, Person is open: any single identifying property suffices,
21
+ // and the agent + operator manage dedup/conflicts downstream. The
22
+ // markdown row therefore declares no required identifying-field group —
23
+ // accountId is enforced separately by the validator's accountId check.
24
+ const hasIdentifyingRequirement = person.required.some((g) => {
25
+ if (g.kind === "simple")
26
+ return g.name !== "accountId";
27
+ return g.names.some((n) => n !== "accountId");
28
+ });
29
+ assert.equal(hasIdentifyingRequirement, false, "Person must not require any identifying field (givenName, email, telephone, ...)");
25
30
  });
26
31
  test("loadSchema: does NOT document platform-native LocalBusiness", () => {
27
32
  // The regression case from Task 736's incident. LocalBusiness lives in
@@ -1 +1 @@
1
- {"version":3,"file":"schema-loader.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-loader.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-loader.test.ts"],"names":[],"mappings":"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"}
@@ -342,4 +342,107 @@ test("(849) firstName → givenName synonym rewrites BEFORE forbidden check fire
342
342
  accountId: "acct-1",
343
343
  }, { schema, liveSource }), /property name 'firstName' is not Schema\.org — use 'givenName'/);
344
344
  });
345
+ // ---------------------------------------------------------------------------
346
+ // Task 893 — `mode: "update"` partial-update behaviour
347
+ // ---------------------------------------------------------------------------
348
+ test('(893) mode:"update" skips required-property check (partial Person SET)', () => {
349
+ // The personal-profile Person already has givenName/familyName from PIN
350
+ // setup. A partial SET adding `homeLocation` only must accept — required
351
+ // properties are not re-validated against the partial input. Without
352
+ // mode:"update" the validator would reject for missing givenName.
353
+ const schema = makeSchema({
354
+ documented: [
355
+ {
356
+ label: "Person",
357
+ required: [
358
+ { kind: "simple", name: "givenName" },
359
+ { kind: "simple", name: "familyName" },
360
+ { kind: "any-of", names: ["email", "telephone"] },
361
+ ],
362
+ },
363
+ ],
364
+ });
365
+ const liveSource = makeLiveSource({
366
+ live: ["Person"],
367
+ declared: ["Person"],
368
+ });
369
+ const { lines, emit } = captureEmits();
370
+ validateWrite({
371
+ labels: ["Person"],
372
+ properties: { homeLocation: "London" },
373
+ accountId: "acct-1",
374
+ }, { schema, liveSource, emit }, { mode: "update" });
375
+ const accepted = lines.find((l) => l.includes("outcome=accepted"));
376
+ assert.ok(accepted, `expected accepted log, got: ${lines.join(" | ")}`);
377
+ assert.match(accepted, /mode=update/);
378
+ // Required-props loop did not run, so its log line must NOT appear.
379
+ const reqLine = lines.find((l) => l.includes("required-props"));
380
+ assert.ok(!reqLine, `expected no required-props log under mode=update, got: ${lines.join(" | ")}`);
381
+ });
382
+ test('(893) mode:"update" still rejects forbidden Person.name', () => {
383
+ // Skipping required-props must NOT skip the Forbidden Properties check.
384
+ // Task 849's `Person | name` rule fires regardless of mode.
385
+ const schema = makeSchema({
386
+ documented: [
387
+ {
388
+ label: "Person",
389
+ required: [{ kind: "simple", name: "givenName" }],
390
+ },
391
+ ],
392
+ forbidden: [{ label: "Person", property: "name", rationale: "use givenName + familyName" }],
393
+ });
394
+ const liveSource = makeLiveSource({
395
+ live: ["Person"],
396
+ declared: ["Person"],
397
+ });
398
+ assert.throws(() => validateWrite({
399
+ labels: ["Person"],
400
+ properties: { name: "Joel Smalley" },
401
+ accountId: "acct-1",
402
+ }, { schema, liveSource }, { mode: "update" }), /'name' is not a valid Person property/);
403
+ });
404
+ test('(893) mode:"update" still rejects synonyms (phone → telephone)', () => {
405
+ // Skipping required-props must NOT skip the synonym pass either. A
406
+ // partial Person update with the schema-synonym `phone` must reject
407
+ // with the canonical-name hint.
408
+ const schema = makeSchema({
409
+ documented: [
410
+ {
411
+ label: "Person",
412
+ required: [{ kind: "simple", name: "givenName" }],
413
+ },
414
+ ],
415
+ synonyms: [["phone", "telephone"]],
416
+ });
417
+ const liveSource = makeLiveSource({
418
+ live: ["Person"],
419
+ declared: ["Person"],
420
+ });
421
+ assert.throws(() => validateWrite({
422
+ labels: ["Person"],
423
+ properties: { phone: "+447111111111" },
424
+ accountId: "acct-1",
425
+ }, { schema, liveSource }, { mode: "update" }), /property name 'phone' is not Schema\.org — use 'telephone'/);
426
+ });
427
+ test('(893) mode defaults to "create" when omitted; required-props still fires', () => {
428
+ // Backwards compatibility: existing callers (memoryWrite) pass no
429
+ // options object; behaviour is unchanged.
430
+ const schema = makeSchema({
431
+ documented: [
432
+ {
433
+ label: "Person",
434
+ required: [{ kind: "simple", name: "givenName" }],
435
+ },
436
+ ],
437
+ });
438
+ const liveSource = makeLiveSource({
439
+ live: ["Person"],
440
+ declared: ["Person"],
441
+ });
442
+ assert.throws(() => validateWrite({
443
+ labels: ["Person"],
444
+ properties: { homeLocation: "London" },
445
+ accountId: "acct-1",
446
+ }, { schema, liveSource }), /missing required property 'givenName'/);
447
+ });
345
448
  //# sourceMappingURL=schema-validator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-validator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-validator.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-validator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ConversationNormaliser, ConversationSource } from "./types.js";
2
+ export * from "./types.js";
3
+ export { whatsappTextNormaliser } from "./whatsapp-text.js";
4
+ export declare function getNormaliser(source: ConversationSource): ConversationNormaliser;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/conversation-normalisers/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG7E,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAc5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,CAShF"}
@@ -0,0 +1,30 @@
1
+ // Source-specific normalisers for conversation-archive ingestion.
2
+ //
3
+ // Each normaliser implements `ConversationNormaliser` and returns the same
4
+ // `ParsedLine[]` contract regardless of source format. Adding a new source
5
+ // (telegram, slack, signal, …) means adding a sibling file here, registering
6
+ // it in `NORMALISERS_BY_SOURCE` below, and extending `CONVERSATION_SOURCES`
7
+ // in `types.ts`. No new skill, no new MCP tool, no new plugin.
8
+ import { whatsappTextNormaliser } from "./whatsapp-text.js";
9
+ export * from "./types.js";
10
+ export { whatsappTextNormaliser } from "./whatsapp-text.js";
11
+ /**
12
+ * Closed registry from source enum → normaliser. Phase 0 ships only
13
+ * `whatsapp`; future sources land here as they are implemented.
14
+ *
15
+ * `getNormaliser` is the only legal lookup — it loud-fails on unimplemented
16
+ * sources rather than silently returning undefined, so the orchestrator
17
+ * cannot drift into "source name in enum but no parser wired" territory.
18
+ */
19
+ const NORMALISERS_BY_SOURCE = {
20
+ whatsapp: whatsappTextNormaliser,
21
+ };
22
+ export function getNormaliser(source) {
23
+ const normaliser = NORMALISERS_BY_SOURCE[source];
24
+ if (!normaliser) {
25
+ const implemented = Object.keys(NORMALISERS_BY_SOURCE).join(", ");
26
+ throw new Error(`conversation-archive: no normaliser implemented for source="${source}". Implemented: ${implemented}. Add a sibling file in conversation-normalisers/ and register it in NORMALISERS_BY_SOURCE.`);
27
+ }
28
+ return normaliser;
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/conversation-normalisers/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,+DAA+D;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAgE;IACzF,QAAQ,EAAE,sBAAsB;CACjC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,+DAA+D,MAAM,mBAAmB,WAAW,6FAA6F,CACjM,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,48 @@
1
+ export declare const CONVERSATION_SOURCES: readonly ["whatsapp", "telegram", "signal", "linkedin-messages", "zoom-transcript", "meeting-minutes", "imessage", "slack", "other"];
2
+ export type ConversationSource = (typeof CONVERSATION_SOURCES)[number];
3
+ export declare function isConversationSource(s: unknown): s is ConversationSource;
4
+ /**
5
+ * One message after source-specific parsing. Identical shape across every
6
+ * source — the normaliser is the only place that knows how the source emits
7
+ * timestamps, sender display names, body line breaks, or quoted-reply markers.
8
+ */
9
+ export interface ParsedLine {
10
+ /** Sender display name as it appeared in the export (verbatim). */
11
+ senderName: string;
12
+ /** ISO 8601 instant with timezone offset (e.g. "2026-04-30T18:42:00+01:00"). */
13
+ dateSent: string;
14
+ /** Message body, multi-line preserved, trailing whitespace stripped. */
15
+ body: string;
16
+ /** Position within the post-skip parsed sequence, 0-based. */
17
+ sequenceIndex: number;
18
+ }
19
+ export interface NormaliserCounters {
20
+ parsed: number;
21
+ systemSkipped: number;
22
+ mediaSkipped: number;
23
+ parseErrors: number;
24
+ }
25
+ export interface NormaliserInput {
26
+ /** Absolute path to the source file or directory the normaliser knows. */
27
+ filePath: string;
28
+ /** Account scope for any provenance composition. */
29
+ accountId: string;
30
+ /** IANA timezone the operator confirmed (e.g. "Europe/London"). */
31
+ timezone: string;
32
+ /**
33
+ * Source-specific options. WhatsApp: `dateFormat`. Other sources may add
34
+ * their own keys; unknown keys are ignored by every normaliser.
35
+ */
36
+ opts?: Record<string, unknown>;
37
+ }
38
+ export interface NormaliserResult {
39
+ parsedLines: ParsedLine[];
40
+ /** SHA-256 hex of the source file bytes (or the canonical digest the
41
+ * normaliser computes for non-file sources). */
42
+ archiveSha256: string;
43
+ /** Basename suitable for operator audit (e.g. "_chat.txt"). */
44
+ archiveSourceFile: string;
45
+ counters: NormaliserCounters;
46
+ }
47
+ export type ConversationNormaliser = (input: NormaliserInput) => Promise<NormaliserResult> | NormaliserResult;
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/conversation-normalisers/types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,sIAUvB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAExE;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B;qDACiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,23 @@
1
+ // Conversation-archive ingest contracts (Task 894).
2
+ //
3
+ // One skill, one writer, one bash entry — source becomes a property on
4
+ // :ConversationArchive and a pluggable normaliser, never a separate skill.
5
+ //
6
+ // `ConversationSource` is the closed enum stamped on every :ConversationArchive
7
+ // and :Section:Conversation. Adding a new source = adding a normaliser
8
+ // implementation here + extending this enum, never a new skill or plugin.
9
+ export const CONVERSATION_SOURCES = [
10
+ "whatsapp",
11
+ "telegram",
12
+ "signal",
13
+ "linkedin-messages",
14
+ "zoom-transcript",
15
+ "meeting-minutes",
16
+ "imessage",
17
+ "slack",
18
+ "other",
19
+ ];
20
+ export function isConversationSource(s) {
21
+ return typeof s === "string" && CONVERSATION_SOURCES.includes(s);
22
+ }
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/conversation-normalisers/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,0EAA0E;AAE1E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU;IACV,UAAU;IACV,QAAQ;IACR,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,UAAU;IACV,OAAO;IACP,OAAO;CACC,CAAC;AAIX,MAAM,UAAU,oBAAoB,CAAC,CAAU;IAC7C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NormaliserInput, NormaliserResult } from "./types.js";
2
+ export declare function whatsappTextNormaliser(input: NormaliserInput): NormaliserResult;
3
+ //# sourceMappingURL=whatsapp-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-text.d.ts","sourceRoot":"","sources":["../../../src/lib/conversation-normalisers/whatsapp-text.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAc,MAAM,YAAY,CAAC;AAuDhF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA8G/E"}
@@ -0,0 +1,237 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ import { basename } from "node:path";
4
+ const TIMESTAMP_PREFIX = /^\[(\d{2})\/(\d{2})\/(\d{4}|\d{2}),\s+(\d{1,2}):(\d{2})(?::(\d{2}))?\]\s*(.*)$/;
5
+ const LINE_LEVEL_SYSTEM_PATTERNS = [
6
+ /^Messages and calls are end-to-end encrypted/i,
7
+ /'s security code changed\.?$/i,
8
+ / created group ["“”]/,
9
+ / added /,
10
+ / removed /,
11
+ / left$/,
12
+ / changed the subject from /,
13
+ / changed this group's icon/,
14
+ / joined using this group's invite link/,
15
+ /^You're now an admin$/i,
16
+ /^You created group/i,
17
+ ];
18
+ const BODY_LEVEL_SYSTEM_PATTERNS = [
19
+ /^You deleted this message\.?$/,
20
+ /^This message was deleted\.?$/,
21
+ ];
22
+ const MEDIA_ONLY_PATTERNS = [
23
+ /^<Media omitted>$/,
24
+ /^IMG-\d+-\w+\.(jpg|jpeg|png|heic|gif)\s*\(file attached\)$/i,
25
+ /^VID-\d+-\w+\.mp4\s*\(file attached\)$/i,
26
+ /^PTT-\d+-\w+\.opus\s*\(file attached\)$/i,
27
+ /^AUD-\d+-\w+\.opus\s*\(file attached\)$/i,
28
+ /^STK-\d+-\w+\.webp\s*\(file attached\)$/i,
29
+ /^.+\.(pdf|docx|doc|xlsx|xls|pptx|ppt|zip|csv|txt)\s*\(file attached\)$/i,
30
+ /^‎.+attached:\s*.+$/,
31
+ ];
32
+ export function whatsappTextNormaliser(input) {
33
+ const { filePath, accountId, timezone } = input;
34
+ const opts = (input.opts ?? {});
35
+ if (!accountId || !accountId.trim()) {
36
+ throw new Error("whatsapp-text: accountId is required.");
37
+ }
38
+ if (!timezone || !timezone.trim()) {
39
+ throw new Error("whatsapp-text: timezone is required (e.g. 'Europe/London').");
40
+ }
41
+ const rawBytes = readFileSync(filePath);
42
+ const archiveSha256 = createHash("sha256").update(rawBytes).digest("hex");
43
+ const text = decodeAndNormalise(rawBytes);
44
+ if (text.length === 0) {
45
+ throw new Error(`whatsapp-text: file is empty — not a _chat.txt. file=${filePath}`);
46
+ }
47
+ const lines = text.split("\n");
48
+ const ordering = resolveOrdering(opts.dateFormat, lines);
49
+ const counters = { parsed: 0, systemSkipped: 0, mediaSkipped: 0, parseErrors: 0 };
50
+ const raw = [];
51
+ for (let i = 0; i < lines.length; i++) {
52
+ const line = lines[i];
53
+ if (line.length === 0 && i === lines.length - 1)
54
+ continue;
55
+ const prefixMatch = matchTimestampPrefix(line, ordering);
56
+ if (prefixMatch) {
57
+ raw.push({
58
+ rawLineIndex: i + 1,
59
+ ...prefixMatch.dateParts,
60
+ remainder: prefixMatch.remainder,
61
+ });
62
+ }
63
+ else {
64
+ const last = raw[raw.length - 1];
65
+ if (last)
66
+ last.remainder += "\n" + line;
67
+ }
68
+ }
69
+ const parsedLines = [];
70
+ for (const r of raw) {
71
+ const remainder = r.remainder;
72
+ const colonIdx = remainder.indexOf(": ");
73
+ if (colonIdx === -1) {
74
+ const trimmed = remainder.replace(/\s+$/, "");
75
+ if (matchesAny(trimmed, LINE_LEVEL_SYSTEM_PATTERNS)) {
76
+ counters.systemSkipped++;
77
+ continue;
78
+ }
79
+ counters.parseErrors++;
80
+ throw new Error(`whatsapp-text: parse-error file=${filePath} line=${r.rawLineIndex} reason=no-sender-body-separator content="${trimmed.slice(0, 80)}"`);
81
+ }
82
+ const senderName = remainder.slice(0, colonIdx).trim();
83
+ const body = remainder.slice(colonIdx + 2).replace(/\s+$/, "");
84
+ if (body.length === 0) {
85
+ counters.systemSkipped++;
86
+ continue;
87
+ }
88
+ if (matchesAny(body, BODY_LEVEL_SYSTEM_PATTERNS)) {
89
+ counters.systemSkipped++;
90
+ continue;
91
+ }
92
+ if (matchesAny(body, MEDIA_ONLY_PATTERNS)) {
93
+ counters.mediaSkipped++;
94
+ continue;
95
+ }
96
+ const dateSent = isoWithOffset(r.year, r.month, r.day, r.hour, r.minute, r.second, timezone);
97
+ parsedLines.push({
98
+ senderName,
99
+ dateSent,
100
+ body,
101
+ sequenceIndex: parsedLines.length,
102
+ });
103
+ counters.parsed++;
104
+ }
105
+ if (parsedLines.length === 0 && counters.systemSkipped === 0 && counters.mediaSkipped === 0) {
106
+ const sample = sampleFirstNonBlankLine(lines, 100);
107
+ process.stderr.write(`[conversation-archive] parse-grammar-miss source=whatsapp first-line="${sample}"\n`);
108
+ throw new Error(`whatsapp-text: zero parsed lines after walking ${filePath} — not a _chat.txt or all lines failed grammar. parse-grammar-miss first-line="${sample}"`);
109
+ }
110
+ return {
111
+ parsedLines,
112
+ archiveSha256,
113
+ archiveSourceFile: basename(filePath),
114
+ counters,
115
+ };
116
+ }
117
+ function decodeAndNormalise(bytes) {
118
+ let text;
119
+ try {
120
+ text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
121
+ }
122
+ catch (err) {
123
+ throw new Error(`whatsapp-text: UTF-8 decode failed — ${err instanceof Error ? err.message : String(err)}. The file is not valid UTF-8; re-export from WhatsApp.`);
124
+ }
125
+ if (text.charCodeAt(0) === 0xfeff)
126
+ text = text.slice(1);
127
+ text = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
128
+ // Strip leading bidi marks (U+200E LRM, U+200F RLM) only at line-start —
129
+ // some WhatsApp builds prefix the timestamp header. Body-internal bidi
130
+ // marks are preserved (semantic). See Task 887.
131
+ const leadingBidiMatches = text.match(/(?:^|\n)[‎‏]+/g) || [];
132
+ let lrmStripped = 0;
133
+ let rlmStripped = 0;
134
+ for (const m of leadingBidiMatches) {
135
+ for (const ch of m) {
136
+ if (ch === "‎")
137
+ lrmStripped++;
138
+ else if (ch === "‏")
139
+ rlmStripped++;
140
+ }
141
+ }
142
+ if (leadingBidiMatches.length > 0) {
143
+ text = text.replace(/(^|\n)[‎‏]+/g, "$1");
144
+ process.stderr.write(`[conversation-archive] source=whatsapp decoded normalised lrm-stripped=${lrmStripped} rlm-stripped=${rlmStripped}\n`);
145
+ }
146
+ return text;
147
+ }
148
+ function matchTimestampPrefix(line, ordering) {
149
+ const m = line.match(TIMESTAMP_PREFIX);
150
+ if (!m)
151
+ return null;
152
+ const a = parseInt(m[1], 10);
153
+ const b = parseInt(m[2], 10);
154
+ const yearRaw = m[3];
155
+ const hour = parseInt(m[4], 10);
156
+ const minute = parseInt(m[5], 10);
157
+ const second = m[6] !== undefined ? parseInt(m[6], 10) : 0;
158
+ const remainder = m[7] ?? "";
159
+ const day = ordering === "MMDD" ? b : a;
160
+ const month = ordering === "MMDD" ? a : b;
161
+ if (month < 1 || month > 12 || day < 1 || day > 31)
162
+ return null;
163
+ if (hour > 23 || minute > 59 || second > 59)
164
+ return null;
165
+ const year = yearRaw.length === 2 ? 2000 + parseInt(yearRaw, 10) : parseInt(yearRaw, 10);
166
+ return { dateParts: { year, month, day, hour, minute, second }, remainder };
167
+ }
168
+ function resolveOrdering(explicit, lines) {
169
+ if (explicit === "MM/DD/YY" || explicit === "MM/DD/YYYY")
170
+ return "MMDD";
171
+ if (explicit === "DD/MM/YY" || explicit === "DD/MM/YYYY")
172
+ return "DDMM";
173
+ for (const line of lines) {
174
+ if (matchTimestampPrefix(line, "DDMM"))
175
+ return "DDMM";
176
+ if (matchTimestampPrefix(line, "MMDD"))
177
+ return "MMDD";
178
+ }
179
+ return "DDMM";
180
+ }
181
+ function sampleFirstNonBlankLine(lines, maxScan) {
182
+ const scanLimit = Math.min(maxScan, lines.length);
183
+ for (let i = 0; i < scanLimit; i++) {
184
+ const trimmed = lines[i].trim();
185
+ if (trimmed.length === 0)
186
+ continue;
187
+ const sanitised = trimmed.replace(/[\x00-\x1F\x7F]/g, "");
188
+ return sanitised.slice(0, 80);
189
+ }
190
+ return "";
191
+ }
192
+ function matchesAny(text, patterns) {
193
+ for (const p of patterns)
194
+ if (p.test(text))
195
+ return true;
196
+ return false;
197
+ }
198
+ function isoWithOffset(year, month, day, hour, minute, second, timezone) {
199
+ const guessUtcMs = Date.UTC(year, month - 1, day, hour, minute, second);
200
+ let offMin = offsetMinutesAt(new Date(guessUtcMs), timezone);
201
+ const refinedUtcMs = guessUtcMs - offMin * 60_000;
202
+ offMin = offsetMinutesAt(new Date(refinedUtcMs), timezone);
203
+ const sign = offMin >= 0 ? "+" : "-";
204
+ const absOff = Math.abs(offMin);
205
+ const offHH = String(Math.floor(absOff / 60)).padStart(2, "0");
206
+ const offMM = String(absOff % 60).padStart(2, "0");
207
+ const Y = String(year).padStart(4, "0");
208
+ const M = String(month).padStart(2, "0");
209
+ const D = String(day).padStart(2, "0");
210
+ const H = String(hour).padStart(2, "0");
211
+ const Mi = String(minute).padStart(2, "0");
212
+ const S = String(second).padStart(2, "0");
213
+ return `${Y}-${M}-${D}T${H}:${Mi}:${S}${sign}${offHH}:${offMM}`;
214
+ }
215
+ function offsetMinutesAt(date, timezone) {
216
+ const formatter = new Intl.DateTimeFormat("en-US", {
217
+ timeZone: timezone,
218
+ timeZoneName: "longOffset",
219
+ });
220
+ const parts = formatter.formatToParts(date);
221
+ const tzPart = parts.find((p) => p.type === "timeZoneName");
222
+ if (!tzPart) {
223
+ throw new Error(`whatsapp-text: unable to read offset for timezone "${timezone}".`);
224
+ }
225
+ const value = tzPart.value;
226
+ if (value === "GMT" || value === "UTC")
227
+ return 0;
228
+ const m = value.match(/^(?:GMT|UTC)([+-])(\d{1,2}):?(\d{2})?$/);
229
+ if (!m) {
230
+ throw new Error(`whatsapp-text: cannot parse timezone offset "${value}" for IANA zone "${timezone}".`);
231
+ }
232
+ const sign = m[1] === "+" ? 1 : -1;
233
+ const hh = parseInt(m[2], 10);
234
+ const mm = m[3] ? parseInt(m[3], 10) : 0;
235
+ return sign * (hh * 60 + mm);
236
+ }
237
+ //# sourceMappingURL=whatsapp-text.js.map