@rubytech/create-maxy-code 0.1.232 → 0.1.234

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 (69) hide show
  1. package/dist/__tests__/cloudflared-slice.test.js +19 -0
  2. package/dist/__tests__/rss-sampler-installer.test.js +27 -0
  3. package/dist/index.js +68 -1
  4. package/dist/port-resolution.js +20 -0
  5. package/dist/uninstall.js +18 -15
  6. package/package.json +1 -1
  7. package/payload/platform/plugins/memory/PLUGIN.md +5 -1
  8. package/payload/platform/plugins/memory/mcp/dist/index.js +23 -7
  9. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  10. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +16 -0
  11. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -1
  12. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts +2 -0
  13. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts.map +1 -0
  14. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js +24 -0
  15. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js.map +1 -0
  16. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts +2 -0
  17. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts.map +1 -0
  18. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js +51 -0
  19. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js.map +1 -0
  20. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +31 -0
  21. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -1
  22. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -1
  23. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +7 -7
  24. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js +7 -7
  25. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts +15 -0
  26. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts.map +1 -0
  27. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js +37 -0
  28. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts +25 -0
  30. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js +90 -0
  32. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js.map +1 -0
  33. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +117 -0
  34. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts +2 -0
  36. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts.map +1 -0
  37. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js +66 -0
  38. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js.map +1 -0
  39. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +25 -0
  40. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +26 -0
  42. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +6 -3
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +32 -5
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +37 -0
  48. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +72 -0
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  51. package/payload/platform/plugins/scheduling/mcp/dist/index.js +1 -1
  52. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  53. package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +251 -0
  54. package/payload/platform/scripts/resume-tunnel.sh +86 -48
  55. package/payload/platform/scripts/rss-sampler.sh +58 -0
  56. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +4 -0
  57. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  58. package/payload/platform/services/claude-session-manager/dist/http-server.js +4 -0
  59. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  60. package/payload/platform/services/claude-session-manager/dist/index.js +23 -0
  61. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  62. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +14 -2
  63. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  64. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +27 -0
  65. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  66. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +6 -0
  67. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  68. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +2 -0
  69. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Dream-cycle — Task 327 (+ Task 391 prune-revisions phase).
2
+ * Dream-cycle — Task 327 (+ Task 391 prune-revisions, Task 596 phases 6–7).
3
3
  *
4
- * Operator-initiated graph-hygiene sweep. Five phases (1 orphans,
5
- * 2 stale compiled-truth, 3 edges to :Trashed targets, 4 citation audit,
6
- * 5 prune compiled-truth revisions). Phase 6 (backlinks) and 7 (tag
7
- * consistency) are deferred see .tasks/ follow-ups.
4
+ * Operator-initiated graph-hygiene sweep. Seven phases:
5
+ * 1 orphans, 2 stale compiled-truth, 3 edges to :Trashed targets,
6
+ * 4 citation audit, 5 prune compiled-truth revisions,
7
+ * 6 backlink materialisation, 7 tag normalisation.
8
8
  *
9
9
  * Phase ordering is fixed; the `phases` parameter on memory-dream-run
10
- * selects which subset to run, not how to order them. Failure of any
11
- * phase logs `[dream-cycle:phase-<n>:error]` and continues to the next.
10
+ * selects which subset to run. Failure of any phase logs
11
+ * `[dream-cycle:phase-<n>:error]` and continues to the next.
12
12
  */
13
13
  import type { Session } from "neo4j-driver";
14
14
  export interface PhaseContext {
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Dream-cycle — Task 327 (+ Task 391 prune-revisions phase).
2
+ * Dream-cycle — Task 327 (+ Task 391 prune-revisions, Task 596 phases 6–7).
3
3
  *
4
- * Operator-initiated graph-hygiene sweep. Five phases (1 orphans,
5
- * 2 stale compiled-truth, 3 edges to :Trashed targets, 4 citation audit,
6
- * 5 prune compiled-truth revisions). Phase 6 (backlinks) and 7 (tag
7
- * consistency) are deferred see .tasks/ follow-ups.
4
+ * Operator-initiated graph-hygiene sweep. Seven phases:
5
+ * 1 orphans, 2 stale compiled-truth, 3 edges to :Trashed targets,
6
+ * 4 citation audit, 5 prune compiled-truth revisions,
7
+ * 6 backlink materialisation, 7 tag normalisation.
8
8
  *
9
9
  * Phase ordering is fixed; the `phases` parameter on memory-dream-run
10
- * selects which subset to run, not how to order them. Failure of any
11
- * phase logs `[dream-cycle:phase-<n>:error]` and continues to the next.
10
+ * selects which subset to run. Failure of any phase logs
11
+ * `[dream-cycle:phase-<n>:error]` and continues to the next.
12
12
  */
13
13
  export {};
14
14
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Phase 6 — materialise persistent :BACKLINKS edges (Task 596).
3
+ *
4
+ * For every (src)-[:MENTIONS|REFERENCES]->(tgt) pair scoped to accountId,
5
+ * MERGE (tgt)-[:BACKLINKS]->(src). MERGE is idempotent — re-running
6
+ * produces no duplicate edges and only newly-created edges set createdAt.
7
+ *
8
+ * proposed = total (src,tgt) pairs found in forward direction.
9
+ * applied = total BACKLINKS edges after the MERGE (new + pre-existing;
10
+ * Cypher cannot distinguish ON CREATE count from total in a
11
+ * single MERGE pass without APOC).
12
+ */
13
+ import type { PhaseContext, PhaseResult } from "./index.js";
14
+ export declare function phaseBacklinks(ctx: PhaseContext): Promise<PhaseResult>;
15
+ //# sourceMappingURL=phase-backlinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-backlinks.d.ts","sourceRoot":"","sources":["../../../src/lib/dream-cycle/phase-backlinks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA+B5E"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Phase 6 — materialise persistent :BACKLINKS edges (Task 596).
3
+ *
4
+ * For every (src)-[:MENTIONS|REFERENCES]->(tgt) pair scoped to accountId,
5
+ * MERGE (tgt)-[:BACKLINKS]->(src). MERGE is idempotent — re-running
6
+ * produces no duplicate edges and only newly-created edges set createdAt.
7
+ *
8
+ * proposed = total (src,tgt) pairs found in forward direction.
9
+ * applied = total BACKLINKS edges after the MERGE (new + pre-existing;
10
+ * Cypher cannot distinguish ON CREATE count from total in a
11
+ * single MERGE pass without APOC).
12
+ */
13
+ export async function phaseBacklinks(ctx) {
14
+ const start = Date.now();
15
+ const { accountId, session } = ctx;
16
+ const result = await session.run(`MATCH (src)-[:MENTIONS|REFERENCES]->(tgt)
17
+ WHERE src.accountId = $accountId AND tgt.accountId = $accountId
18
+ WITH src, tgt
19
+ MERGE (tgt)-[bl:BACKLINKS]->(src)
20
+ ON CREATE SET bl.accountId = $accountId,
21
+ bl.createdAt = datetime()
22
+ RETURN count(src) AS proposed,
23
+ count(CASE WHEN bl.createdAt IS NOT NULL THEN 1 END) AS applied`, { accountId });
24
+ const proposed = Number(result.records[0]?.get("proposed") ?? 0);
25
+ const applied = Number(result.records[0]?.get("applied") ?? 0);
26
+ const elapsedMs = Date.now() - start;
27
+ process.stderr.write(`[dream-cycle] phase=6 op=backlinks-written accountId=${accountId} count=${applied} elapsedMs=${elapsedMs}\n`);
28
+ return {
29
+ phase: 6,
30
+ name: "backlinks",
31
+ durationSec: Math.round(elapsedMs / 1000),
32
+ proposed,
33
+ applied,
34
+ deferred: 0,
35
+ };
36
+ }
37
+ //# sourceMappingURL=phase-backlinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-backlinks.js","sourceRoot":"","sources":["../../../src/lib/dream-cycle/phase-backlinks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAiB;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;;;;;;;4EAOwE,EACxE,EAAE,SAAS,EAAE,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAErC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wDAAwD,SAAS,UAAU,OAAO,cAAc,SAAS,IAAI,CAC9G,CAAC;IACF,OAAO;QACL,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACzC,QAAQ;QACR,OAAO;QACP,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Phase 7 — tag deduplication and normalisation (Task 596).
3
+ *
4
+ * Two passes:
5
+ *
6
+ * Pass A — KnowledgeDocument nodes with a `tags` string-array property.
7
+ * For each node, normalise every tag (lowercase, strip non-alphanumeric
8
+ * except hyphens/underscores/spaces, trim), deduplicate, and write back
9
+ * only when the normalised array differs from the original.
10
+ *
11
+ * Pass B — :DefinedTerm {category:'obsidian-tag'} nodes.
12
+ * Group by normalised name. For each group with more than one variant,
13
+ * pick the first alphabetically as canonical, retarget all :TAGGED_WITH
14
+ * edges from non-canonical nodes to the canonical node, then detach-delete
15
+ * non-canonical nodes that become edge-free.
16
+ *
17
+ * `applied` = number of KD nodes updated + number of DefinedTerm non-canonical
18
+ * variants whose :TAGGED_WITH edges were retargeted (whether or not the node
19
+ * was subsequently deleted — deletion is blocked when other edges exist).
20
+ */
21
+ import type { PhaseContext, PhaseResult } from "./index.js";
22
+ /** Normalise a tag string: lowercase, strip non-alphanumeric-separator chars, trim. */
23
+ export declare function normaliseTagStr(tag: string): string;
24
+ export declare function phaseTagNormalisation(ctx: PhaseContext): Promise<PhaseResult>;
25
+ //# sourceMappingURL=phase-tag-normalisation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-tag-normalisation.d.ts","sourceRoot":"","sources":["../../../src/lib/dream-cycle/phase-tag-normalisation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAgFnF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Phase 7 — tag deduplication and normalisation (Task 596).
3
+ *
4
+ * Two passes:
5
+ *
6
+ * Pass A — KnowledgeDocument nodes with a `tags` string-array property.
7
+ * For each node, normalise every tag (lowercase, strip non-alphanumeric
8
+ * except hyphens/underscores/spaces, trim), deduplicate, and write back
9
+ * only when the normalised array differs from the original.
10
+ *
11
+ * Pass B — :DefinedTerm {category:'obsidian-tag'} nodes.
12
+ * Group by normalised name. For each group with more than one variant,
13
+ * pick the first alphabetically as canonical, retarget all :TAGGED_WITH
14
+ * edges from non-canonical nodes to the canonical node, then detach-delete
15
+ * non-canonical nodes that become edge-free.
16
+ *
17
+ * `applied` = number of KD nodes updated + number of DefinedTerm non-canonical
18
+ * variants whose :TAGGED_WITH edges were retargeted (whether or not the node
19
+ * was subsequently deleted — deletion is blocked when other edges exist).
20
+ */
21
+ /** Normalise a tag string: lowercase, strip non-alphanumeric-separator chars, trim. */
22
+ export function normaliseTagStr(tag) {
23
+ return tag
24
+ .toLowerCase()
25
+ .replace(/[^a-z0-9_\- ]/g, "")
26
+ .trim();
27
+ }
28
+ export async function phaseTagNormalisation(ctx) {
29
+ const start = Date.now();
30
+ const { accountId, session } = ctx;
31
+ let applied = 0;
32
+ // --- Pass A: KnowledgeDocument tags[] array ---
33
+ const kdResult = await session.run(`MATCH (n:KnowledgeDocument)
34
+ WHERE n.accountId = $accountId AND n.tags IS NOT NULL AND size(n.tags) > 0
35
+ RETURN elementId(n) AS eid, n.tags AS tags`, { accountId });
36
+ for (const record of kdResult.records) {
37
+ const eid = record.get("eid");
38
+ const tags = record.get("tags");
39
+ const normTags = [...new Set(tags.map(normaliseTagStr).filter((t) => t.length > 0))];
40
+ if (normTags.length !== tags.length || normTags.some((t, i) => t !== tags[i])) {
41
+ await session.run(`MATCH (n) WHERE elementId(n) = $eid SET n.tags = $tags`, { eid, tags: normTags });
42
+ applied++;
43
+ }
44
+ }
45
+ // --- Pass B: DefinedTerm obsidian-tag variants ---
46
+ const dtResult = await session.run(`MATCH (t:DefinedTerm)
47
+ WHERE t.accountId = $accountId AND t.category = 'obsidian-tag'
48
+ RETURN elementId(t) AS eid, t.name AS name`, { accountId });
49
+ const groups = new Map();
50
+ for (const record of dtResult.records) {
51
+ const eid = record.get("eid");
52
+ const name = record.get("name");
53
+ const key = normaliseTagStr(name);
54
+ if (!groups.has(key))
55
+ groups.set(key, []);
56
+ groups.get(key).push({ eid, name });
57
+ }
58
+ for (const [, variants] of groups) {
59
+ if (variants.length <= 1)
60
+ continue;
61
+ // Canonical = alphabetically first (stable, deterministic).
62
+ variants.sort((a, b) => a.name.localeCompare(b.name));
63
+ const canonical = variants[0];
64
+ const nonCanonicals = variants.slice(1);
65
+ for (const nonCanon of nonCanonicals) {
66
+ await session.run(`MATCH (t:DefinedTerm) WHERE elementId(t) = $oldEid
67
+ MATCH (canon:DefinedTerm) WHERE elementId(canon) = $canonEid
68
+ OPTIONAL MATCH (src)-[r:TAGGED_WITH]->(t)
69
+ FOREACH (_ IN CASE WHEN src IS NOT NULL THEN [1] ELSE [] END |
70
+ MERGE (src)-[:TAGGED_WITH]->(canon)
71
+ DELETE r
72
+ )
73
+ WITH t
74
+ WHERE NOT (t)-[]-()
75
+ DETACH DELETE t`, { oldEid: nonCanon.eid, canonEid: canonical.eid });
76
+ applied++;
77
+ }
78
+ }
79
+ const elapsedMs = Date.now() - start;
80
+ process.stderr.write(`[dream-cycle] phase=7 op=tags-normalised accountId=${accountId} merged=${applied} elapsedMs=${elapsedMs}\n`);
81
+ return {
82
+ phase: 7,
83
+ name: "tag-normalisation",
84
+ durationSec: Math.round(elapsedMs / 1000),
85
+ proposed: applied,
86
+ applied,
87
+ deferred: 0,
88
+ };
89
+ }
90
+ //# sourceMappingURL=phase-tag-normalisation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-tag-normalisation.js","sourceRoot":"","sources":["../../../src/lib/dream-cycle/phase-tag-normalisation.ts"],"names":[],"mappings":"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"}
@@ -178,4 +178,121 @@ describe("conversation-archive-derive-insights — runtime", () => {
178
178
  expect(result.rejectionsFiltered).toBe(1);
179
179
  });
180
180
  });
181
+ // ---------------------------------------------------------------------------
182
+ // Task 595 — inline-rewrite signals
183
+ // ---------------------------------------------------------------------------
184
+ describe("conversation-archive-derive-insights — inline-rewrite signals (Task 595)", () => {
185
+ it("DeriveInsightsParams declares inlineRewrite and inlineRewriteThreshold", () => {
186
+ const src = readFileSync(TOOL_PATH, "utf-8");
187
+ expect(src).toContain("inlineRewrite?: boolean");
188
+ expect(src).toContain("inlineRewriteThreshold?: number");
189
+ });
190
+ it("DeriveInsightsResult declares inlineRewriteSignals optional field with displayName and mentionCount", () => {
191
+ const src = readFileSync(TOOL_PATH, "utf-8");
192
+ expect(src).toMatch(/inlineRewriteSignals\?:\s*\{/);
193
+ expect(src).toContain("displayName: string");
194
+ expect(src).toContain("mentionCount: number");
195
+ });
196
+ it("inlineRewriteSignals is undefined when inlineRewrite param is absent", async () => {
197
+ mockSession.run.mockResolvedValue({ records: [{ get: () => "archive-1" }] });
198
+ const { conversationArchiveDeriveInsights } = await import("../../tools/conversation-archive-derive-insights.js");
199
+ const result = await conversationArchiveDeriveInsights({
200
+ accountId: "acc1",
201
+ archiveElementId: "arc1",
202
+ chunkElementId: "chunk1",
203
+ claims: [
204
+ { kind: "mention", evidenceSnippet: "Joel joined.", subject: "Joel Smith", payload: {} },
205
+ { kind: "mention", evidenceSnippet: "Joel again.", subject: "Joel Smith", payload: {} },
206
+ ],
207
+ });
208
+ expect(result.inlineRewriteSignals).toBeUndefined();
209
+ });
210
+ it("returns signal when a subject appears >= threshold times with inlineRewrite=true", async () => {
211
+ mockSession.run.mockResolvedValue({ records: [{ get: () => "archive-1" }] });
212
+ const { conversationArchiveDeriveInsights } = await import("../../tools/conversation-archive-derive-insights.js");
213
+ const result = await conversationArchiveDeriveInsights({
214
+ accountId: "acc1",
215
+ archiveElementId: "arc1",
216
+ chunkElementId: "chunk1",
217
+ claims: [
218
+ { kind: "mention", evidenceSnippet: "Joel joined.", subject: "Joel Smith", payload: {} },
219
+ { kind: "mention", evidenceSnippet: "Joel again.", subject: "Joel Smith", payload: {} },
220
+ ],
221
+ inlineRewrite: true,
222
+ inlineRewriteThreshold: 2,
223
+ });
224
+ expect(result.inlineRewriteSignals).toBeDefined();
225
+ expect(result.inlineRewriteSignals).toHaveLength(1);
226
+ expect(result.inlineRewriteSignals[0].displayName).toBe("Joel Smith");
227
+ expect(result.inlineRewriteSignals[0].mentionCount).toBe(2);
228
+ });
229
+ it("does not return a signal when mention count is below threshold", async () => {
230
+ mockSession.run.mockResolvedValue({ records: [{ get: () => "archive-1" }] });
231
+ const { conversationArchiveDeriveInsights } = await import("../../tools/conversation-archive-derive-insights.js");
232
+ const result = await conversationArchiveDeriveInsights({
233
+ accountId: "acc1",
234
+ archiveElementId: "arc1",
235
+ chunkElementId: "chunk1",
236
+ claims: [
237
+ { kind: "mention", evidenceSnippet: "Joel joined.", subject: "Joel Smith", payload: {} },
238
+ ],
239
+ inlineRewrite: true,
240
+ inlineRewriteThreshold: 2,
241
+ });
242
+ expect(result.inlineRewriteSignals).toEqual([]);
243
+ });
244
+ it("uses default threshold of 2 when inlineRewriteThreshold is omitted", async () => {
245
+ mockSession.run.mockResolvedValue({ records: [{ get: () => "archive-1" }] });
246
+ const { conversationArchiveDeriveInsights } = await import("../../tools/conversation-archive-derive-insights.js");
247
+ // Two mentions of same entity with no explicit threshold → default 2 fires
248
+ const result = await conversationArchiveDeriveInsights({
249
+ accountId: "acc1",
250
+ archiveElementId: "arc1",
251
+ chunkElementId: "chunk1",
252
+ claims: [
253
+ { kind: "mention", evidenceSnippet: "Joel joined.", subject: "Joel Smith", payload: {} },
254
+ { kind: "mention", evidenceSnippet: "Joel again.", subject: "Joel Smith", payload: {} },
255
+ ],
256
+ inlineRewrite: true,
257
+ // inlineRewriteThreshold intentionally omitted — default 2 should apply
258
+ });
259
+ expect(result.inlineRewriteSignals).toHaveLength(1);
260
+ expect(result.inlineRewriteSignals[0].displayName).toBe("Joel Smith");
261
+ expect(result.inlineRewriteSignals[0].mentionCount).toBe(2);
262
+ });
263
+ it("counts rejected mention claims in signals (density is rejection-independent)", async () => {
264
+ mockSession.run.mockResolvedValue({ records: [{ get: () => "archive-1" }] });
265
+ const { conversationArchiveDeriveInsights, rejectionsJsonlPath } = await import("../../tools/conversation-archive-derive-insights.js");
266
+ // Write a rejection for the first Joel mention so it is filtered from proposals
267
+ const { createHash } = await import("node:crypto");
268
+ const { writeFileSync, mkdirSync } = await import("node:fs");
269
+ const { dirname } = await import("node:path");
270
+ const rPath = rejectionsJsonlPath("acc1");
271
+ mkdirSync(dirname(rPath), { recursive: true });
272
+ const h = createHash("sha256");
273
+ h.update("mention");
274
+ h.update(" ");
275
+ h.update("Joel Smith");
276
+ h.update(" ");
277
+ h.update("Joel joined.");
278
+ const contentHash = h.digest("hex");
279
+ writeFileSync(rPath, JSON.stringify({ chunkElementId: "chunk1", kind: "mention", contentHash }) + "\n");
280
+ const result = await conversationArchiveDeriveInsights({
281
+ accountId: "acc1",
282
+ archiveElementId: "arc1",
283
+ chunkElementId: "chunk1",
284
+ claims: [
285
+ { kind: "mention", evidenceSnippet: "Joel joined.", subject: "Joel Smith", payload: {} },
286
+ { kind: "mention", evidenceSnippet: "Joel again.", subject: "Joel Smith", payload: {} },
287
+ ],
288
+ inlineRewrite: true,
289
+ inlineRewriteThreshold: 2,
290
+ });
291
+ // First mention is rejected → only 1 proposal, but signals should still count both
292
+ expect(result.proposals).toHaveLength(1);
293
+ expect(result.rejectionsFiltered).toBe(1);
294
+ expect(result.inlineRewriteSignals).toHaveLength(1);
295
+ expect(result.inlineRewriteSignals[0].mentionCount).toBe(2); // not 1
296
+ });
297
+ });
181
298
  //# sourceMappingURL=conversation-archive-derive-insights.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-archive-derive-insights.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/conversation-archive-derive-insights.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-archive-derive-insights.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/conversation-archive-derive-insights.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-ingest-inline-rewrite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-ingest-inline-rewrite.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-inline-rewrite.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Task 595 — inline compiled-truth reconciliation gate in memory-ingest.
3
+ *
4
+ * All assertions read source to avoid live-DB dependencies, matching the
5
+ * pattern established by the existing memory-ingest.test.ts suite.
6
+ */
7
+ import { describe, it, expect } from "vitest";
8
+ import { readFileSync } from "node:fs";
9
+ import { resolve } from "node:path";
10
+ const INGEST_PATH = resolve(import.meta.dirname, "../../tools/memory-ingest.ts");
11
+ function src() {
12
+ return readFileSync(INGEST_PATH, "utf-8");
13
+ }
14
+ describe("memory-ingest — inline compiled-truth gate (Task 595)", () => {
15
+ it("IngestParams declares inlineRewrite, forceRewrite, inlineRewriteThreshold", () => {
16
+ const s = src();
17
+ expect(s).toContain("inlineRewrite?: boolean");
18
+ expect(s).toContain("forceRewrite?: boolean");
19
+ expect(s).toContain("inlineRewriteThreshold?: number");
20
+ });
21
+ it("IngestResult declares inlineRewriteCandidates and inlineRewriteDeferred optional fields", () => {
22
+ const s = src();
23
+ expect(s).toMatch(/inlineRewriteCandidates\?:\s*InlineRewriteCandidate\[\]/);
24
+ expect(s).toMatch(/inlineRewriteDeferred\?:\s*InlineRewriteDeferred\[\]/);
25
+ });
26
+ it("imports InlineRewriteCandidate and InlineRewriteDeferred from compiled-truth-revision", () => {
27
+ const s = src();
28
+ expect(s).toContain("InlineRewriteCandidate");
29
+ expect(s).toContain("InlineRewriteDeferred");
30
+ expect(s).toMatch(/from ["']\.\.\/lib\/compiled-truth-revision\.js["']/);
31
+ });
32
+ it("queryInlineRewriteCandidates queries MENTIONS and REFERENCES edges via HAS_SECTION*0..1", () => {
33
+ const s = src();
34
+ expect(s).toContain("queryInlineRewriteCandidates");
35
+ expect(s).toContain("HAS_SECTION*0..1");
36
+ expect(s).toMatch(/MENTIONS\|REFERENCES/);
37
+ });
38
+ it("label extraction uses known primary-label allowlist for deterministic ordering", () => {
39
+ const s = src();
40
+ // Must not use NOT IN filter (non-deterministic ordering for multi-labeled nodes).
41
+ // Must use IN filter against a closed set of compiledTruth-bearing labels.
42
+ expect(s).toMatch(/l IN \[.*'Person'.*'Organization'.*'Concept'/);
43
+ expect(s).not.toContain("l NOT IN ['Trashed']");
44
+ });
45
+ it("gate only runs when inlineRewrite param is true", () => {
46
+ const s = src();
47
+ expect(s).toMatch(/if\s*\(\s*params\.inlineRewrite\s*\)/);
48
+ });
49
+ it("applies 7-day cooldown window and forceRewrite bypass", () => {
50
+ const s = src();
51
+ expect(s).toContain("7 * 24 * 60 * 60 * 1000");
52
+ expect(s).toMatch(/params\.forceRewrite/);
53
+ });
54
+ it("emits the observability log line with op=compiled-truth-inline", () => {
55
+ const s = src();
56
+ expect(s).toContain("op=compiled-truth-inline");
57
+ expect(s).toContain("entitiesChecked=");
58
+ expect(s).toContain("entitiesRecompiled=");
59
+ expect(s).toContain("entitiesDeferred=");
60
+ });
61
+ it("default threshold is 2 when inlineRewriteThreshold is not provided", () => {
62
+ const s = src();
63
+ expect(s).toContain("inlineRewriteThreshold ?? 2");
64
+ });
65
+ });
66
+ //# sourceMappingURL=memory-ingest-inline-rewrite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-ingest-inline-rewrite.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-ingest-inline-rewrite.test.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,19 @@ export interface DeriveInsightsParams {
46
46
  claims: AgentClaim[];
47
47
  /** Optional override for the SDK-injected session id (provenance stamping). */
48
48
  sessionId?: string;
49
+ /**
50
+ * When true, count mention-claim subjects in this chunk and return those
51
+ * reaching `inlineRewriteThreshold` in `inlineRewriteSignals`. The calling
52
+ * skill accumulates signals across chunks; when an entity's cumulative count
53
+ * hits threshold, resolve it via `memory-search` and dispatch the
54
+ * `compiled-truth-rewriter` specialist.
55
+ */
56
+ inlineRewrite?: boolean;
57
+ /**
58
+ * Minimum mention-claim count for a subject to appear in
59
+ * `inlineRewriteSignals`. Default: 2.
60
+ */
61
+ inlineRewriteThreshold?: number;
49
62
  }
50
63
  export interface Proposal {
51
64
  /** elementId of the source conversation-document :Section chunk. */
@@ -84,6 +97,18 @@ export interface DeriveInsightsResult {
84
97
  rejectionsFiltered: number;
85
98
  /** Claims the agent emitted that did not survive normalisation (missing required fields). */
86
99
  invalidClaims: number;
100
+ /**
101
+ * Entities mentioned >= `inlineRewriteThreshold` times among this chunk's
102
+ * "mention" claims. Populated only when `inlineRewrite=true`. The calling
103
+ * skill accumulates across all chunks; when an entity's cumulative count
104
+ * reaches threshold, resolve it via `memory-search` and dispatch the
105
+ * `compiled-truth-rewriter` specialist. Uses display names only — no
106
+ * elementId resolution happens here.
107
+ */
108
+ inlineRewriteSignals?: {
109
+ displayName: string;
110
+ mentionCount: number;
111
+ }[];
87
112
  }
88
113
  export declare function conversationArchiveDeriveInsights(params: DeriveInsightsParams): Promise<DeriveInsightsResult>;
89
114
  //# sourceMappingURL=conversation-archive-derive-insights.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-archive-derive-insights.d.ts","sourceRoot":"","sources":["../../src/tools/conversation-archive-derive-insights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA0BH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D;AAID,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAID,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAwC7D;AAQD,eAAO,MAAM,cAAc,qEAKjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAM3D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;OAIG;IACH,cAAc,EAAE;QACd,eAAe,EAAE,KAAK,CAAC;YACrB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC;YACpB,cAAc,EAAE,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;SAClD,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;CACvB;AA6QD,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
1
+ {"version":3,"file":"conversation-archive-derive-insights.d.ts","sourceRoot":"","sources":["../../src/tools/conversation-archive-derive-insights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA0BH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D;AAID,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAID,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAwC7D;AAQD,eAAO,MAAM,cAAc,qEAKjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAM3D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;OAIG;IACH,cAAc,EAAE;QACd,eAAe,EAAE,KAAK,CAAC;YACrB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC;YACpB,cAAc,EAAE,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;SAClD,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxE;AA6QD,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
@@ -343,6 +343,10 @@ async function conversationArchiveDeriveInsightsImpl(params) {
343
343
  process.stderr.write(`[conversation-archive-derive-insights] start accountId=${accountId} archiveElementId=${archiveElementId} chunkElementId=${chunkElementId} claims=${claims.length}\n`);
344
344
  const rejections = loadRejections(accountId);
345
345
  const proposals = [];
346
+ // All valid (normalised + buildable) proposals, including rejected ones.
347
+ // Used for inline-rewrite signal counting so the density signal is not
348
+ // deflated by the operator's rejection history on specific evidence snippets.
349
+ const validProposals = [];
346
350
  let rejectionsFiltered = 0;
347
351
  let invalidClaims = 0;
348
352
  for (const rawClaim of claims) {
@@ -356,12 +360,33 @@ async function conversationArchiveDeriveInsightsImpl(params) {
356
360
  invalidClaims += 1;
357
361
  continue;
358
362
  }
363
+ validProposals.push(proposal);
359
364
  if (rejections.has(rejectionKey(proposal.chunkElementId, proposal.kind, proposal.contentHash))) {
360
365
  rejectionsFiltered += 1;
361
366
  continue;
362
367
  }
363
368
  proposals.push(proposal);
364
369
  }
370
+ // Inline compiled-truth reconciliation signals (opt-in — Task 595).
371
+ // Count mention-claim subjects across ALL valid claims (including
372
+ // operator-rejected ones) so the density signal is not deflated by
373
+ // rejections of specific evidence snippets. A rejection of an evidence
374
+ // snippet does not mean the entity should be excluded from rewrite signals.
375
+ let inlineRewriteSignals;
376
+ if (params.inlineRewrite) {
377
+ const threshold = params.inlineRewriteThreshold ?? 2;
378
+ const counts = {};
379
+ for (const p of validProposals) {
380
+ if (p.kind === "mention" && p.disambiguation) {
381
+ const displayName = p.disambiguation.needsResolution[0]?.displayName ?? "";
382
+ if (displayName)
383
+ counts[displayName] = (counts[displayName] ?? 0) + 1;
384
+ }
385
+ }
386
+ inlineRewriteSignals = Object.entries(counts)
387
+ .filter(([, count]) => count >= threshold)
388
+ .map(([displayName, mentionCount]) => ({ displayName, mentionCount }));
389
+ }
365
390
  process.stderr.write(`[conversation-archive-derive-insights] done accountId=${accountId} archiveElementId=${archiveElementId} chunkElementId=${chunkElementId} proposals=${proposals.length} rejections-filtered=${rejectionsFiltered} invalidClaims=${invalidClaims} ms=${Date.now() - start}\n`);
366
391
  return {
367
392
  archiveElementId,
@@ -369,6 +394,7 @@ async function conversationArchiveDeriveInsightsImpl(params) {
369
394
  proposals,
370
395
  rejectionsFiltered,
371
396
  invalidClaims,
397
+ ...(inlineRewriteSignals !== undefined ? { inlineRewriteSignals } : {}),
372
398
  };
373
399
  }
374
400
  //# sourceMappingURL=conversation-archive-derive-insights.js.map