@rubytech/create-maxy-code 0.1.144 → 0.1.147

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 (130) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/neo4j/schema.cypher +154 -4
  3. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  4. package/payload/platform/plugins/admin/hooks/post-turn-graph-pass.sh +251 -0
  5. package/payload/platform/plugins/admin/skills/datetime/SKILL.md +63 -5
  6. package/payload/platform/plugins/docs/references/internals.md +16 -0
  7. package/payload/platform/plugins/docs/references/memory-guide.md +10 -0
  8. package/payload/platform/plugins/docs/references/platform.md +1 -1
  9. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  10. package/payload/platform/plugins/memory/PLUGIN.md +25 -3
  11. package/payload/platform/plugins/memory/mcp/dist/index.js +309 -11
  12. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  13. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts +2 -0
  14. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts.map +1 -0
  15. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +33 -0
  16. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -0
  17. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts +2 -0
  18. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts.map +1 -0
  19. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js +30 -0
  20. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js.map +1 -0
  21. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts +2 -0
  22. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js +51 -0
  24. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts +2 -0
  26. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts.map +1 -0
  27. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js +68 -0
  28. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js +41 -0
  30. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js.map +1 -1
  31. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +43 -0
  32. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -0
  33. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js +33 -0
  34. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -0
  35. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +18 -5
  36. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +64 -17
  38. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +44 -0
  40. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js +14 -0
  42. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js.map +1 -0
  43. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +26 -0
  44. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -0
  45. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +219 -0
  46. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -0
  47. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts +19 -0
  48. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts.map +1 -0
  49. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js +39 -0
  50. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js.map +1 -0
  51. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts +19 -0
  52. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts.map +1 -0
  53. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js +42 -0
  54. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js.map +1 -0
  55. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts +21 -0
  56. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts.map +1 -0
  57. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js +27 -0
  58. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js.map +1 -0
  59. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts +18 -0
  60. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts.map +1 -0
  61. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js +60 -0
  62. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js.map +1 -0
  63. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +20 -3
  64. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +47 -12
  66. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -1
  67. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts +13 -0
  68. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts.map +1 -0
  69. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js +191 -0
  70. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js.map +1 -0
  71. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts +7 -1
  72. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js +37 -9
  74. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js.map +1 -1
  75. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts +2 -0
  76. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts.map +1 -0
  77. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js +81 -0
  78. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js.map +1 -0
  79. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts +2 -0
  80. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts.map +1 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +115 -0
  82. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -0
  83. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +1 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -1
  85. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +1 -0
  86. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -1
  87. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts +19 -0
  88. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts.map +1 -0
  89. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js +50 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js.map +1 -0
  91. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +45 -0
  92. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +170 -0
  94. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -0
  95. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts +28 -0
  96. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts.map +1 -0
  97. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js +64 -0
  98. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js.map +1 -0
  99. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts +24 -0
  100. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts.map +1 -0
  101. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js +49 -0
  102. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js.map +1 -0
  103. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +34 -0
  104. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts.map +1 -0
  105. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +99 -0
  106. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js.map +1 -0
  107. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts +29 -0
  108. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts.map +1 -0
  109. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js +66 -0
  110. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js.map +1 -0
  111. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -1
  112. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +122 -2
  113. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
  114. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +49 -13
  115. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  116. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +184 -16
  117. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  118. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  119. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +53 -10
  120. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  121. package/payload/platform/plugins/memory/mcp/vitest.config.ts +6 -0
  122. package/payload/platform/plugins/memory/references/schema-base.md +4 -0
  123. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +3 -4
  124. package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +13 -2
  125. package/payload/platform/scripts/seed-neo4j.sh +1 -1
  126. package/payload/platform/templates/agents/admin/IDENTITY.md +9 -1
  127. package/payload/platform/templates/specialists/agents/database-operator.md +30 -2
  128. package/payload/server/server.js +195 -91
  129. package/payload/platform/plugins/admin/hooks/signal-detector-stop.sh +0 -309
  130. package/payload/platform/templates/specialists/agents/signal-detector.md +0 -129
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-date.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/relative-date.test.ts"],"names":[],"mappings":"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"}
@@ -66,5 +66,46 @@ describe("extractDatedStatements", () => {
66
66
  const out = extractDatedStatements("Off-record on 2026-13-01.");
67
67
  expect(out).toEqual([]);
68
68
  });
69
+ // Task 390 — relative + quarter forms via parseRelativeDate.
70
+ describe("relative + quarter forms", () => {
71
+ const REF = new Date("2026-05-20T14:30:00Z"); // Wednesday.
72
+ it("parses 'last Tuesday' against reference", () => {
73
+ const out = extractDatedStatements("Met them last Tuesday.", REF);
74
+ expect(out).toHaveLength(1);
75
+ expect(out[0].occurredAt).toBe("2026-05-19T00:00:00Z");
76
+ expect(out[0].form).toBe("relative");
77
+ });
78
+ it("parses 'two weeks ago' against reference", () => {
79
+ const out = extractDatedStatements("Closed the deal two weeks ago.", REF);
80
+ expect(out[0].occurredAt).toBe("2026-05-06T00:00:00Z");
81
+ expect(out[0].form).toBe("relative");
82
+ });
83
+ it("parses fiscal quarter Q3 2024", () => {
84
+ const out = extractDatedStatements("Revenue dipped in Q3 2024.", REF);
85
+ expect(out[0].occurredAt).toBe("2024-07-01T00:00:00Z");
86
+ expect(out[0].form).toBe("quarter");
87
+ });
88
+ it("parses 'Q1 last year' against reference year", () => {
89
+ const out = extractDatedStatements("Hired the team in Q1 last year.", REF);
90
+ expect(out[0].occurredAt).toBe("2025-01-01T00:00:00Z");
91
+ expect(out[0].form).toBe("quarter");
92
+ });
93
+ it("returns no row for recurring forms", () => {
94
+ const out = extractDatedStatements("We sync every other Friday.", REF);
95
+ expect(out).toEqual([]);
96
+ });
97
+ it("literal forms still take priority over relative", () => {
98
+ const out = extractDatedStatements("On 2026-03-10 we met last Tuesday.", REF);
99
+ expect(out[0].form).toBe("iso");
100
+ expect(out[0].occurredAt).toBe("2026-03-10T00:00:00Z");
101
+ });
102
+ it("defaults reference to now when omitted", () => {
103
+ const out = extractDatedStatements("Met them yesterday.");
104
+ // Just assert that we got a row and the day is recent — exact value
105
+ // depends on the test-run clock.
106
+ expect(out).toHaveLength(1);
107
+ expect(out[0].form).toBe("relative");
108
+ });
109
+ });
69
110
  });
70
111
  //# sourceMappingURL=timeline-extractor.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-extractor.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/timeline-extractor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline-extractor.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/timeline-extractor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Task 391 — compiled-truth revision history.
3
+ *
4
+ * Single shared primitive that writes a new `:CompiledTruthRevision`
5
+ * row and the `:HAS_REVISION` edge in the same transaction as the
6
+ * caller's `compiledTruth` SET. Callers compose this Cypher block
7
+ * into their own write statement so the SET and the revision MERGE
8
+ * commit atomically — if either fails, neither lands.
9
+ *
10
+ * Two source values are sanctioned: 'rewriter' (rewriter library
11
+ * wrote it) and 'operator' (sanctioned operator-edit route — not yet
12
+ * implemented; see follow-up Task 393).
13
+ *
14
+ * Pruning is the dream-cycle's job (phase 5). This file never
15
+ * deletes.
16
+ */
17
+ import type { Session } from "neo4j-driver";
18
+ export type CompiledTruthRevisionSource = "rewriter" | "operator";
19
+ /**
20
+ * Cypher fragment that creates one `:CompiledTruthRevision` row and
21
+ * links it from the entity bound as `n` in the caller's MATCH. The
22
+ * caller is responsible for binding `n` (the entity) and providing
23
+ * `$accountId`, `$truth`, and `$source` parameters.
24
+ *
25
+ * Designed to be concatenated after a `compiledTruth` SET so both
26
+ * mutations sit in the same `session.run` call (single TX).
27
+ */
28
+ export declare const REVISION_CYPHER_FRAGMENT = "\nWITH n\nCREATE (r:CompiledTruthRevision {\n revisionId: randomUUID(),\n accountId: $accountId,\n truth: $truth,\n writtenAt: datetime(),\n source: $source\n})\nCREATE (n)-[:HAS_REVISION]->(r)\n";
29
+ /**
30
+ * Convenience runner for tests and ad-hoc callers that want to write
31
+ * a revision in isolation (no concurrent `compiledTruth` SET).
32
+ * Production writers compose `REVISION_CYPHER_FRAGMENT` into their
33
+ * own statement; this helper exists so test code does not have to
34
+ * duplicate the fragment.
35
+ */
36
+ export declare function writeRevisionStandalone(args: {
37
+ session: Session;
38
+ nodeId: string;
39
+ accountId: string;
40
+ truth: string;
41
+ source: CompiledTruthRevisionSource;
42
+ }): Promise<void>;
43
+ //# sourceMappingURL=compiled-truth-revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiled-truth-revision.d.ts","sourceRoot":"","sources":["../../src/lib/compiled-truth-revision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,6MAUpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,2BAA2B,CAAC;CACrC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Cypher fragment that creates one `:CompiledTruthRevision` row and
3
+ * links it from the entity bound as `n` in the caller's MATCH. The
4
+ * caller is responsible for binding `n` (the entity) and providing
5
+ * `$accountId`, `$truth`, and `$source` parameters.
6
+ *
7
+ * Designed to be concatenated after a `compiledTruth` SET so both
8
+ * mutations sit in the same `session.run` call (single TX).
9
+ */
10
+ export const REVISION_CYPHER_FRAGMENT = `
11
+ WITH n
12
+ CREATE (r:CompiledTruthRevision {
13
+ revisionId: randomUUID(),
14
+ accountId: $accountId,
15
+ truth: $truth,
16
+ writtenAt: datetime(),
17
+ source: $source
18
+ })
19
+ CREATE (n)-[:HAS_REVISION]->(r)
20
+ `;
21
+ /**
22
+ * Convenience runner for tests and ad-hoc callers that want to write
23
+ * a revision in isolation (no concurrent `compiledTruth` SET).
24
+ * Production writers compose `REVISION_CYPHER_FRAGMENT` into their
25
+ * own statement; this helper exists so test code does not have to
26
+ * duplicate the fragment.
27
+ */
28
+ export async function writeRevisionStandalone(args) {
29
+ const { session, nodeId, accountId, truth, source } = args;
30
+ await session.run(`MATCH (n) WHERE elementId(n) = $nodeId AND n.accountId = $accountId
31
+ ${REVISION_CYPHER_FRAGMENT}`, { nodeId, accountId, truth, source });
32
+ }
33
+ //# sourceMappingURL=compiled-truth-revision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiled-truth-revision.js","sourceRoot":"","sources":["../../src/lib/compiled-truth-revision.ts"],"names":[],"mappings":"AAoBA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;CAUvC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAM7C;IACC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3D,MAAM,OAAO,CAAC,GAAG,CACf;OACG,wBAAwB,EAAE,EAC7B,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CACrC,CAAC;AACJ,CAAC"}
@@ -4,18 +4,30 @@ export interface TimelineEventForRewriter {
4
4
  kind: string;
5
5
  summary: string;
6
6
  }
7
- export interface RewriteParams {
8
- /** Display name of the subject (Person.name, Organization.name, Concept.name). */
7
+ /** Admin-twin label set (Task 392). All five carry `compiledTruth`. */
8
+ export type AdminTwinLabel = "Person" | "Organization" | "Concept" | "Project" | "LocalBusiness";
9
+ /** Public-twin label set (Task 392). Four labels carry `compiledTruthPublic`; :Person is excluded by design. */
10
+ export type PublicTwinLabel = "Organization" | "Concept" | "Project" | "LocalBusiness";
11
+ export type RewriteMode = "admin" | "public";
12
+ interface BaseRewriteParams {
13
+ /** Display name of the subject (Person.name, Organization.name, etc.). */
9
14
  subjectName: string;
10
- /** Label of the subject node "Person", "Organization", or "Concept". */
11
- subjectLabel: "Person" | "Organization" | "Concept";
12
- /** Current compiledTruth — empty string is fine. */
15
+ /** Current compiled-truth fieldempty string is fine. */
13
16
  currentTruth: string;
14
17
  /** Most recent N :TimelineEvent rows, newest-first. */
15
18
  events: TimelineEventForRewriter[];
16
19
  /** Override the model. Default: claude-haiku-4-5. */
17
20
  model?: string;
18
21
  }
22
+ interface AdminRewriteParams extends BaseRewriteParams {
23
+ mode?: "admin";
24
+ subjectLabel: AdminTwinLabel;
25
+ }
26
+ interface PublicRewriteParams extends BaseRewriteParams {
27
+ mode: "public";
28
+ subjectLabel: PublicTwinLabel;
29
+ }
30
+ export type RewriteParams = AdminRewriteParams | PublicRewriteParams;
19
31
  export type RewriteResult = {
20
32
  kind: "ok";
21
33
  compiledTruth: string;
@@ -30,4 +42,5 @@ export type RewriteResult = {
30
42
  fallback: CallOauthLlmFallback;
31
43
  };
32
44
  export declare function rewriteCompiledTruth(p: RewriteParams): Promise<RewriteResult>;
45
+ export {};
33
46
  //# sourceMappingURL=compiled-truth-rewriter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiled-truth-rewriter.d.ts","sourceRoot":"","sources":["../../src/lib/compiled-truth-rewriter.ts"],"names":[],"mappings":"AAmBA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,4CAA4C,CAAC;AAGpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;IACpD,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAyC5D,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAsDnF"}
1
+ {"version":3,"file":"compiled-truth-rewriter.d.ts","sourceRoot":"","sources":["../../src/lib/compiled-truth-rewriter.ts"],"names":[],"mappings":"AAsCA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,4CAA4C,CAAC;AAGpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,cAAc,GACd,SAAS,GACT,SAAS,GACT,eAAe,CAAC;AAEpB,gHAAgH;AAChH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,SAAS,GACT,SAAS,GACT,eAAe,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C,UAAU,iBAAiB;IACzB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,cAAc,CAAC;CAC9B;AAED,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAErE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAqE5D,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA2DnF"}
@@ -1,25 +1,44 @@
1
- // Compiled-truth rewriter (Task 306).
1
+ // Compiled-truth rewriter (Task 306, extended Task 392 with public mode).
2
2
  //
3
- // Given a node's current `compiledTruth` and its most-recent N :TimelineEvent
4
- // rows, produce a new compiledTruth ≤ 2000 chars. Strictly OAuth-bearer LLM
5
- // (admin classifier doctrine — never API key). The skill / agent / backfill
6
- // caller is responsible for: (a) selecting which node to rewrite, (b)
7
- // enforcing the 7-day operator-edit cooldown, (c) writing the result back.
8
- // This library is the prompt + LLM call + cap-enforcement only.
3
+ // Given a node's current compiled-truth field and its most-recent N
4
+ // :TimelineEvent rows, produce a new summary ≤ 2000 chars. Strictly
5
+ // OAuth-bearer LLM (admin classifier doctrine — never API key). The
6
+ // caller is responsible for: (a) selecting which node to rewrite,
7
+ // (b) enforcing the 7-day operator-edit cooldown (per mode the admin
8
+ // and public cooldowns are independent timestamps), (c) writing the
9
+ // result back to the correct field (`compiledTruth` for admin mode,
10
+ // `compiledTruthPublic` for public mode). This library is the prompt +
11
+ // LLM call + cap-enforcement only.
9
12
  //
10
- // Output style baseline (this sprint):
13
+ // Mode semantics (Task 392):
14
+ // - `mode: 'admin'` (default) — operator's view. Subject label may be
15
+ // any of the five admin-twin labels (Person, Organization, Concept,
16
+ // Project, LocalBusiness). Writer writes `compiledTruth`.
17
+ // - `mode: 'public'` — customer-facing twin. Subject label restricted
18
+ // to the four public-twin labels (Organization, Concept, Project,
19
+ // LocalBusiness) by the type system; :Person is structurally
20
+ // excluded because operators' notes on contacts are never public.
21
+ // Writer writes `compiledTruthPublic`.
22
+ //
23
+ // Output style baseline (both modes):
11
24
  // - ≤ COMPILED_TRUTH_MAX_CHARS
12
25
  // - Neutral, declarative voice. Third person.
13
26
  // - No hedging adverbs ("likely", "perhaps", "possibly", "presumably").
14
27
  // - No first person ("I", "we"), no second person ("you").
15
28
  // - No marketing / superlatives.
16
29
  //
30
+ // Public-mode additional rules (forbidden patterns the admin mode tolerates):
31
+ // - No operator-voice constructions ("needs follow-up", "should chase up",
32
+ // "to discuss", "TBD", "action: ...", "next step: ...").
33
+ // - No commentary on the operator's relationship with the subject.
34
+ // - No internal status, sentiment, or assessment of the subject.
35
+ //
17
36
  // Voice grafting (no AI tells, IDENTITY alignment, BrainBench eval) is
18
37
  // deferred — see follow-up task referenced in the task brief.
19
38
  import { callOauthLlm, } from "../../../../../lib/oauth-llm/dist/index.js";
20
39
  import { COMPILED_TRUTH_MAX_CHARS } from "./graph-write-gate.js";
21
40
  const DEFAULT_MODEL = "claude-haiku-4-5";
22
- const SYSTEM_PROMPT = [
41
+ const ADMIN_SYSTEM_PROMPT = [
23
42
  "You are the compiled-truth rewriter for a personal knowledge graph.",
24
43
  "",
25
44
  "Your job: produce a neutral, declarative summary of what the operator knows about a subject right now.",
@@ -34,12 +53,38 @@ const SYSTEM_PROMPT = [
34
53
  "- Do not invent details that are not present in either the existing truth or the timeline.",
35
54
  "- Do not add a preamble (no 'Here is the summary:'). Output the summary directly.",
36
55
  ].join("\n");
56
+ const PUBLIC_SYSTEM_PROMPT = [
57
+ "You are the public-facing compiled-truth rewriter for a knowledge graph.",
58
+ "",
59
+ "Your job: produce a neutral, customer-facing summary of a subject. The output is",
60
+ "read by people outside the operator's organisation — customers, prospects, public visitors.",
61
+ "",
62
+ "RULES (all binding, never relaxed):",
63
+ `- Output must be ${COMPILED_TRUTH_MAX_CHARS} characters or fewer. This is a hard cap.`,
64
+ "- Third person only. No 'I', 'we', 'you', 'us'.",
65
+ "- Declarative voice. No hedging adverbs (likely, perhaps, possibly, presumably, apparently, seemingly).",
66
+ "- No marketing copy, no superlatives, no promotional language.",
67
+ "- No operator-voice constructions. Forbidden phrasings include: 'needs follow-up', 'to chase',",
68
+ " 'to discuss', 'TBD', 'action:', 'next step:', 'awaiting reply', 'pending response'.",
69
+ "- No commentary on the operator's relationship with the subject (e.g. 'main client', 'difficult contact').",
70
+ "- No internal status, sentiment, or assessment ('promising', 'risky', 'aggressive', 'cooperative').",
71
+ "- Restate only externally-verifiable facts from the timeline (what the subject is, what they do,",
72
+ " what they have publicly done or said). Drop scheduling notes, internal sentiment, and operator intent.",
73
+ "- If the existing summary contradicts the timeline, the timeline wins.",
74
+ "- Do not invent details that are not present in either the existing summary or the timeline.",
75
+ "- Do not add a preamble (no 'Here is the summary:'). Output the summary directly.",
76
+ ].join("\n");
77
+ function systemPromptFor(mode) {
78
+ return mode === "public" ? PUBLIC_SYSTEM_PROMPT : ADMIN_SYSTEM_PROMPT;
79
+ }
37
80
  function buildUserMessage(p) {
81
+ const mode = p.mode ?? "admin";
82
+ const fieldName = mode === "public" ? "compiledTruthPublic" : "compiledTruth";
38
83
  const lines = [];
39
84
  lines.push(`Subject: ${p.subjectName}`);
40
85
  lines.push(`Label: :${p.subjectLabel}`);
41
86
  lines.push("");
42
- lines.push("Current compiledTruth:");
87
+ lines.push(`Current ${fieldName}:`);
43
88
  lines.push(p.currentTruth ? p.currentTruth : "(empty)");
44
89
  lines.push("");
45
90
  lines.push(`Timeline events (newest-first, ${p.events.length} shown):`);
@@ -47,38 +92,40 @@ function buildUserMessage(p) {
47
92
  lines.push(`- [${e.occurredAt}] kind=${e.kind}: ${e.summary}`);
48
93
  }
49
94
  lines.push("");
50
- lines.push("Rewrite the compiledTruth.");
95
+ lines.push(`Rewrite the ${fieldName}.`);
51
96
  return lines.join("\n");
52
97
  }
53
98
  function isOkText(r) {
54
99
  return r.kind === "ok";
55
100
  }
56
101
  export async function rewriteCompiledTruth(p) {
102
+ const mode = p.mode ?? "admin";
57
103
  if (p.events.length === 0) {
58
- console.log(`[compiled-truth-rewriter] refused subject="${p.subjectName}" reason=no-events`);
104
+ console.log(`[compiled-truth-rewriter] refused mode=${mode} subject="${p.subjectName}" reason=no-events`);
59
105
  return { kind: "refused", reason: "no-events" };
60
106
  }
107
+ const systemPrompt = systemPromptFor(mode);
61
108
  const userMessage = buildUserMessage(p);
62
109
  const result = await callOauthLlm({
63
110
  model: p.model ?? DEFAULT_MODEL,
64
- system: SYSTEM_PROMPT,
111
+ system: systemPrompt,
65
112
  userMessage,
66
113
  maxTokens: 1024,
67
114
  });
68
115
  if (!isOkText(result)) {
69
- console.log(`[compiled-truth-rewriter] llm-failure subject="${p.subjectName}" cause=${result.cause}`);
116
+ console.log(`[compiled-truth-rewriter] llm-failure mode=${mode} subject="${p.subjectName}" cause=${result.cause}`);
70
117
  return { kind: "llm-failure", fallback: result };
71
118
  }
72
119
  const truth = result.text.trim();
73
120
  const before = p.currentTruth.length;
74
121
  const after = truth.length;
75
- console.log(`[compiled-truth-rewriter] subject="${p.subjectName}" charsBefore=${before} charsAfter=${after} events=${p.events.length}`);
122
+ console.log(`[compiled-truth-rewriter] mode=${mode} subject="${p.subjectName}" subjectLabel=${p.subjectLabel} charsBefore=${before} charsAfter=${after} events=${p.events.length}`);
76
123
  if (after > COMPILED_TRUTH_MAX_CHARS) {
77
124
  // One retry with a stricter prompt before surfacing the over-cap failure.
78
125
  // Per eng review: avoids losing the rewrite on a single LLM verbosity slip.
79
126
  const stricterResult = await callOauthLlm({
80
127
  model: p.model ?? DEFAULT_MODEL,
81
- system: SYSTEM_PROMPT +
128
+ system: systemPrompt +
82
129
  `\n\nPRIOR ATTEMPT WAS ${after} CHARACTERS — TOO LONG. ` +
83
130
  `Tighten to fit ${COMPILED_TRUTH_MAX_CHARS}. Drop the lowest-value sentences first.`,
84
131
  userMessage,
@@ -89,7 +136,7 @@ export async function rewriteCompiledTruth(p) {
89
136
  }
90
137
  const retry = stricterResult.text.trim();
91
138
  if (retry.length > COMPILED_TRUTH_MAX_CHARS) {
92
- console.log(`[compiled-truth-rewriter] still-too-long subject="${p.subjectName}" retryLen=${retry.length}`);
139
+ console.log(`[compiled-truth-rewriter] still-too-long mode=${mode} subject="${p.subjectName}" retryLen=${retry.length}`);
93
140
  return { kind: "too-long", attemptedLen: retry.length };
94
141
  }
95
142
  return { kind: "ok", compiledTruth: retry };
@@ -1 +1 @@
1
- {"version":3,"file":"compiled-truth-rewriter.js","sourceRoot":"","sources":["../../src/lib/compiled-truth-rewriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiled-truth-rewriter.js","sourceRoot":"","sources":["../../src/lib/compiled-truth-rewriter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Dream-cycle — Task 327 (+ Task 391 prune-revisions phase).
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.
8
+ *
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.
12
+ */
13
+ import type { Session } from "neo4j-driver";
14
+ export interface PhaseContext {
15
+ accountId: string;
16
+ session: Session;
17
+ /** Per-run config (e.g. phase 4's maxEventsPerRun, resumeCursor). */
18
+ config: PhaseConfig;
19
+ }
20
+ export interface PhaseConfig {
21
+ /** Phase 4 (citation audit) cap. Default 200. */
22
+ maxEventsPerRun?: number;
23
+ /** Phase 4 resume cursor: timelineEventId to start AFTER. */
24
+ resumeCursor?: string | null;
25
+ }
26
+ export interface PhaseResult {
27
+ phase: number;
28
+ name: string;
29
+ durationSec: number;
30
+ /** Items the phase found warranting action (orphans, gaps, etc.). */
31
+ proposed: number;
32
+ /** Items the phase actually mutated (e.g. dead-edge marks, citations applied). */
33
+ applied: number;
34
+ /** Items deferred to a review queue. */
35
+ deferred: number;
36
+ /** Phase-specific extra payload (e.g. phase 4's lastEventCursor). */
37
+ extra?: Record<string, unknown>;
38
+ }
39
+ export interface PhaseError {
40
+ phase: number;
41
+ name: string;
42
+ reason: string;
43
+ }
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/dream-cycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Dream-cycle — Task 327 (+ Task 391 prune-revisions phase).
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.
8
+ *
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.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/dream-cycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Phase 4 — citation audit. Absorbs Task 330's standalone citation-fixer.
3
+ *
4
+ * Finds `:TimelineEvent` rows for this account with empty/missing
5
+ * `citations`. For each, gathers the 2-hop source neighbourhood
6
+ * (`:Message`, `:KnowledgeDocument`, `:Meeting`) and asks the OAuth LLM
7
+ * to propose citations.
8
+ *
9
+ * Two confidence buckets:
10
+ * - high → exactly one obvious source. Auto-apply: SET t.citations.
11
+ * - low → ambiguous or zero sources. Write a `:CitationProposal`
12
+ * with options; defer to operator review.
13
+ *
14
+ * Bounded run: `maxEventsPerRun` (default 200) caps the per-invocation
15
+ * LLM cost. The last-processed `timelineEventId` is returned as
16
+ * `extra.lastEventCursor`; memory-dream-run threads it onto the next
17
+ * `:Report` so a subsequent invocation resumes after that id.
18
+ *
19
+ * Trust boundary: classifier sees neighbour text as DATA, not
20
+ * instructions. Hallucinated source ids are mapped to
21
+ * `[deleted:<id>]` when they don't resolve to a real node — the spec's
22
+ * "never silently guess" rule.
23
+ */
24
+ import type { PhaseContext, PhaseResult } from "./index.js";
25
+ export declare function phaseCitationAudit(ctx: PhaseContext): Promise<PhaseResult>;
26
+ //# sourceMappingURL=phase-citation-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-citation-audit.d.ts","sourceRoot":"","sources":["../../../src/lib/dream-cycle/phase-citation-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2D5D,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuHhF"}