@rubytech/create-maxy-code 0.1.151 → 0.1.153

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 (87) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -1
  3. package/payload/platform/lib/graph-search/dist/index.js +10 -9
  4. package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
  5. package/payload/platform/lib/graph-search/src/index.ts +10 -9
  6. package/payload/platform/package.json +2 -2
  7. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  8. package/payload/platform/plugins/admin/hooks/__tests__/pre-turn-graph-pass.test.sh +26 -129
  9. package/payload/platform/plugins/admin/hooks/pre-turn-graph-pass.sh +64 -131
  10. package/payload/platform/plugins/docs/PLUGIN.md +1 -1
  11. package/payload/platform/plugins/docs/references/admin-session.md +2 -2
  12. package/payload/platform/plugins/docs/references/internals.md +1 -64
  13. package/payload/platform/plugins/docs/references/platform.md +1 -1
  14. package/payload/platform/plugins/docs/references/plugins-guide.md +2 -2
  15. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +1 -1
  16. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -1
  17. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +25 -45
  18. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
  19. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  20. package/payload/platform/plugins/memory/PLUGIN.md +8 -16
  21. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +14 -11
  22. package/payload/platform/plugins/memory/mcp/dist/index.js +13 -269
  23. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  24. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +1 -24
  25. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -1
  26. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +8 -211
  27. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -1
  28. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +99 -0
  29. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -0
  30. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js +56 -0
  31. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js.map +1 -0
  32. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +12 -32
  33. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +19 -281
  35. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -3
  37. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +15 -14
  40. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +1 -76
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +73 -329
  48. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +10 -12
  51. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  52. package/payload/platform/plugins/memory/mcp/vitest.config.ts +4 -3
  53. package/payload/platform/plugins/memory/references/graph-primitives.md +2 -2
  54. package/payload/platform/plugins/memory/references/schema-base.md +2 -7
  55. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +71 -46
  56. package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +2 -2
  57. package/payload/platform/scripts/seed-neo4j.sh +0 -49
  58. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  59. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +3 -2
  60. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  61. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  62. package/payload/platform/templates/specialists/agents/citation-auditor.md +37 -0
  63. package/payload/platform/templates/specialists/agents/compiled-truth-rewriter.md +42 -0
  64. package/payload/platform/templates/specialists/agents/database-operator.md +2 -30
  65. package/payload/platform/templates/specialists/agents/research-assistant.md +2 -2
  66. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +37 -0
  67. package/payload/server/{adminuser-self-heal-YC47O34W.js → adminuser-self-heal-WSFCOEII.js} +1 -1
  68. package/payload/server/{chunk-T3DJD5QR.js → chunk-AXOL2PPG.js} +1 -1
  69. package/payload/server/{chunk-HYQNUVGO.js → chunk-PFF6I7KP.js} +1 -8
  70. package/payload/server/maxy-edge.js +2 -2
  71. package/payload/server/public/assets/{admin-CnLGltuE.js → admin-kh_oCHeS.js} +54 -54
  72. package/payload/server/public/assets/{data-MB2EWZUP.js → data-BHASh0_Y.js} +1 -1
  73. package/payload/server/public/assets/{graph-B2FnDRz-.js → graph-BhEI09tF.js} +1 -1
  74. package/payload/server/public/assets/graph-labels-DXlmm1og.js +1 -0
  75. package/payload/server/public/assets/{page-BJKRa6Db.js → page-CDWu1Aft.js} +3 -3
  76. package/payload/server/public/assets/{page-Bx2p3W1k.js → page-cyvshX4Z.js} +1 -1
  77. package/payload/server/public/data.html +3 -3
  78. package/payload/server/public/graph.html +3 -3
  79. package/payload/server/public/index.html +4 -4
  80. package/payload/server/server.js +319 -1286
  81. package/payload/platform/lib/graph-search/src/__tests__/query-expansion.test.ts +0 -96
  82. package/payload/platform/lib/graph-search/src/query-expansion.ts +0 -129
  83. package/payload/platform/lib/oauth-llm/src/index.ts +0 -583
  84. package/payload/platform/lib/oauth-llm/tsconfig.json +0 -8
  85. package/payload/platform/lib/screening-patterns/src/index.ts +0 -51
  86. package/payload/platform/lib/screening-patterns/tsconfig.json +0 -8
  87. package/payload/server/public/assets/graph-labels-DDYqDlu3.js +0 -1
@@ -29,12 +29,13 @@ export default defineConfig({
29
29
  "src/lib/__tests__/graph-write-gate-property.test.ts",
30
30
  // Task 391 — compiled-truth revision history.
31
31
  "src/lib/__tests__/graph-write-gate-label.test.ts",
32
- "src/lib/__tests__/compiled-truth-revision.test.ts",
33
32
  "src/lib/__tests__/phase-prune-revisions.test.ts",
34
33
  // Task 390 — relative-date parser shared by extractor + datetime skill.
35
34
  "src/lib/__tests__/relative-date.test.ts",
36
- // Task 413 operator-hint folding in the compiled-truth rewriter.
37
- "src/lib/__tests__/compiled-truth-rewriter-operator-hint.test.ts",
35
+ // Task 424 deleted compiled-truth-revision.test.ts and
36
+ // compiled-truth-rewriter-operator-hint.test.ts — server-side rewriter
37
+ // path replaced by the compiled-truth-rewriter specialist; revision
38
+ // stamping is paused pending a follow-up task.
38
39
  ],
39
40
  testTimeout: 10_000,
40
41
  },
@@ -41,7 +41,7 @@ token-limit discipline the upstream server enforces.
41
41
  ## When the memory tools are absent
42
42
 
43
43
  If `mcp__memory__memory-write`, `mcp__memory__memory-search`,
44
- `mcp__memory__memory-rank`, `mcp__memory__memory-reindex`,
44
+ `mcp__memory__memory-reindex`,
45
45
  `mcp__memory__session-compact`, `mcp__memory__session-compact-status`, or
46
46
  `mcp__memory__conversation-search` is missing from your tool list, the
47
47
  memory MCP server failed to start on this device. Reply once with
@@ -377,7 +377,7 @@ memory-search({
377
377
  ## When to switch back to memory-search
378
378
 
379
379
  - "Things similar to X" → `memory-search` (vector + BM25 hybrid)
380
- - "Candidates to rank by criterion Y" → `memory-rank`
380
+ - "Candidates to rank by criterion Y" → `memory-search` for the pool, rank in-turn yourself
381
381
  - "Conversations where we discussed Z" → `conversation-search`
382
382
 
383
383
  Cypher is for relational certainty. Vector search is for similarity. They
@@ -81,16 +81,11 @@ Every `:Person`, `:Organization`, and `:Concept` carries a two-part knowledge sh
81
81
  | `compiledTruthUpdatedAt` | datetime | Last rewriter or operator write. Epoch on first write. |
82
82
  | `compiledTruthSource` | `'rewriter' \| 'operator'` | Last writer. `'operator'` marks passes shaped by an operator hint from chat; the rewriter respects a 7-day cooldown against further auto-rewriter passes unless `forceRewrite=true` is set. |
83
83
 
84
- The compiled truth is system-managed: direct writes to any of the three properties via `memory-update` or `memory-write` are **rejected loudly** (Task 413). The rewriter is the only writer, and it is invoked only through one of these paths:
85
-
86
- - `memory-update(nodeId, {}, rewriteCompiledTruth: true)` — invokes the OAuth-LLM rewriter against the most recent 10 `:TimelineEvent` rows. Resulting write is stamped `compiledTruthSource = 'rewriter'`.
87
- - `memory-update(nodeId, {}, rewriteCompiledTruth: true, forceRewrite: true)` — same, but bypasses the 7-day operator cooldown.
88
- - `memory-update(nodeId, {}, rewriteCompiledTruth: true, operatorHint: "<correction in operator's own words>")` — Task 413 chat-triggered operator nudge for the admin twin. Folds the hint into the rewriter prompt with precedence over the timeline, stamps `compiledTruthSource = 'operator'` (and the `:CompiledTruthRevision` row mirrors that source), skips the 7-day cooldown (the operator is driving), and skips the public-twin auto-fire so admin-side corrections do not leak unreviewed to the public surface. Hint cap: 1000 chars. There is no operator direct-edit surface — the LLM stays in the per-step path.
89
- - `memory-update(nodeId, {}, rewriteCompiledTruth: true, publicOperatorHint: "<correction in operator's own words>")` — Task 420 chat-triggered operator nudge for the public twin. Only valid on `:Organization` / `:Concept` / `:Project` / `:LocalBusiness` (the public-twin label set; `:Person` has no public twin and is refused). Folds the hint into the public-mode rewriter prompt with precedence over the timeline, stamps `compiledTruthPublicSource = 'operator'`, bypasses the public-cooldown (the operator is driving), and fires regardless of whether the admin pass changed `compiledTruth`. The admin pass still runs normally; admin and public hints are independent and may be supplied together. Hint cap: 1000 chars. No public direct-edit surface exists — the public rewriter is always in the path.
84
+ The compiled truth is system-managed: direct writes to any of the three properties via `memory-update` or `memory-write` are **rejected loudly** for normal callers. Task 424 moved the rewriter into the dispatched `compiled-truth-rewriter` specialist, which is the only sanctioned writer. The admin agent surfaces an operator request (e.g. "refresh Acme's compiled truth", or "fix the bio for Joel — say he's an angel investor now") by dispatching the specialist via the Task tool with the `nodeId`, an optional `operatorHint` (admin-twin correction), and an optional `publicOperatorHint` (public-twin correction). The specialist reads the node + 90-day timeline, computes the new summary, and writes it back via `memory-update`; the gate allows the write because `MAXY_SPECIALIST=compiled-truth-rewriter` is stamped on its env at spawn time.
90
85
 
91
86
  ### Revision history (Task 391)
92
87
 
93
- Every rewriter write captures a `:CompiledTruthRevision` row in the same transaction as the `compiledTruth` SET, linked by `(:Person|:Organization|:Concept)-[:HAS_REVISION]->(:CompiledTruthRevision)`. Revisions are read-only after write — the dream-cycle phase 5 prune (keep newest 20 per entity) is the only mutation path. Read the chain via `memory-compiled-truth-history(nodeId)`. The `source` enum on each revision is `'rewriter' | 'operator'`, mirroring `compiledTruthSource`.
88
+ Existing `:CompiledTruthRevision` rows remain readable via `memory-compiled-truth-history(nodeId)`; the dream-cycle phase 5 prune (keep newest 20 per entity) still runs. Task 424 deleted the inline single-TX revision stamp that used to fire on every rewriter SET. Reinstatement under the new specialist path is tracked at [Task 436](../../../../.tasks/436-reinstate-compiled-truth-revision-stamping.md); until then, new specialist writes do not extend the revision chain.
94
89
 
95
90
  ### Timeline events
96
91
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: document-ingest
3
- description: Universal document ingestion — maps any unstructured document (PDF, text, transcript, web page) OR chat archive (WhatsApp `_chat.txt`) to ontologically-grounded graph nodes via Haiku-driven classification. Triggers when the operator uploads or fetches a document or chat export for ingestion. One skill for every input shape — no per-doctype, no per-channel branching.
3
+ description: Universal document ingestion — maps any unstructured document (PDF, text, transcript, web page) OR chat archive (WhatsApp `_chat.txt`) to ontologically-grounded graph nodes. The dispatched specialist reads the cached extract and produces typed-section JSON in-turn from the loaded ontology, then calls memory-ingest (Task 424 removed the separate server-side memory-classify step). Triggers when the operator uploads or fetches a document or chat export for ingestion. One skill for every input shape — no per-doctype, no per-channel branching.
4
4
  ---
5
5
 
6
6
  # Document Ingest
@@ -17,7 +17,7 @@ Ingests any unstructured input — documents (PDF, text, transcript, web page) a
17
17
  | Chat archive (`_chat.txt`, X DMs, Telegram, …) | `:KnowledgeDocument` | `conversationIdentity` | `:Section` (no secondary label — source distinguishes at the parent) | `chat` |
18
18
  | X (Twitter) tweet-stream transcript (rendered by `x-import`) | `:KnowledgeDocument` (`source='x'`) | `attachmentId` | `:Section:<Kind>` from closed enumeration | `document` |
19
19
 
20
- The classifier in `memory-classify` decides which section kinds each section maps to (document mode) or chunks the archive into topic-bounded `:Section` nodes (chat mode). The skill orchestrates the pipeline; the classifier reads the loaded ontology; the writer enforces the validator. **Classifier failure is terminal — the ingest aborts entirely; nothing is written. Loud failures, never silent landfill.**
20
+ **You** (the dispatched specialist) decide which section kinds each section maps to (document mode) or chunk the archive into topic-bounded `:Section` nodes (chat mode). The skill drives the pipeline; you read the loaded ontology directly and produce the typed JSON in your turn; the writer enforces the validator. **Classification failure is terminal — the ingest aborts entirely; nothing is written. Loud failures, never silent landfill.**
21
21
 
22
22
  ## Routing — chat vs document (mandatory first decision)
23
23
 
@@ -26,7 +26,7 @@ Before anchor confirmation, decide which identity property to pass to `memory-in
26
26
  - **Chat archive** — input filename ends in `_chat.txt`, the dispatch brief names the input as a WhatsApp chat / messaging-channel export, or the operator labels it as such. Set `mode='chat'` and pass `conversationIdentity` (omit `attachmentId`). Skip anchor confirmation; run participant confirmation instead (see § Participant confirmation). The classifier produces `:Section` chunks; no anchor edges, no related entities.
27
27
  - **Document** — everything else. Set `mode='document'` and pass `attachmentId` (omit `conversationIdentity`). Run the anchor confirmation flow below.
28
28
 
29
- Both branches go through the same three tools (`memory-ingest-extract` → `memory-classify` `memory-ingest`); only the parameters differ.
29
+ Both branches go through the same two tools (`memory-ingest-extract` → `memory-ingest`) with you producing typed-section JSON in between; only the parameters differ.
30
30
 
31
31
  ## Anchor confirmation (mandatory first step)
32
32
 
@@ -46,7 +46,7 @@ The confirmation flow:
46
46
  1. Read the dispatch brief. Extract the document path and the named subject.
47
47
  2. If the subject is not named, or is ambiguous, ask the operator in one sentence: "I'm about to ingest `<filename>`. Anchor it to the account owner's UserProfile, the business (`<LocalBusiness.name>`), or a third party — which?". Wait for the answer.
48
48
  3. Run a one-shot graph read to resolve the anchor's element ID. For UserProfile: `MATCH (u:UserProfile {accountId: $accountId}) RETURN elementId(u) AS anchorId, 'UserProfile' AS anchorLabel`. For LocalBusiness: `MATCH (b:LocalBusiness {accountId: $accountId}) RETURN elementId(b) AS anchorId, 'LocalBusiness' AS anchorLabel`. For a third party: search by name via `memory-search` and pick the matching node.
49
- 4. Persist `$anchorNodeId` and `$anchorLabel` for the rest of the run. These flow into both `memory-classify` (as part of the `anchorDescription`) and `memory-ingest` (as the `anchorNodeId` + `anchorLabel` parameters).
49
+ 4. Persist `$anchorNodeId` and `$anchorLabel` for the rest of the run. They flow into your in-turn classification (as the anchorDescription you reason against) and into `memory-ingest` (as the `anchorNodeId` + `anchorLabel` parameters).
50
50
 
51
51
  ## Participant confirmation (chat mode only)
52
52
 
@@ -70,66 +70,91 @@ Compute archive metadata before classify:
70
70
 
71
71
  ## Pipeline
72
72
 
73
- Four steps in order. Steps 1–3 are deterministic tool calls (the agent does not classify; the agent calls the classifier tool). Step 4 is agent-driven graph writes against the existing graph, gated by the dispatch brief's named entity list. Hallucination defence and ontology validation stay server-side in `memory-classify` and the `memory-write` validator.
73
+ Four steps in order. Step 1 is a deterministic tool call. Step 2 is **your in-turn work**: you read the cached text plus the loaded ontology and produce typed-section JSON. Step 3 hands that JSON to `memory-ingest`. Step 4 is agent-driven graph writes against the existing graph, gated by the dispatch brief's named entity list. Ontology validation stays server-side in the `memory-ingest` writer (the writer rejects sections whose `kind` is outside the loaded label set).
74
74
 
75
75
  ```
76
- EXTRACT --> CLASSIFY --> INGEST --> WIRE-BRIEF-ENTITIES
77
- │ │
78
- v v v v
79
- text sections one :Section KD-level edges from
80
- cached + KD-level per semantic the new KnowledgeDocument
81
- by id edges boundary + to each entity the
82
- + orphans NEXT chain + dispatch brief named
83
- anchor edges (Person / Organization /
84
- + related Service / Task / Event /
85
- entities + KnowledgeDocument /
86
- classifier- BrandingData) — plus an
87
- emitted KD- orphan list for brief-
88
- level edges named entities not found
89
- (PARTY / in the graph.
90
- PARTICIPANT /
91
- FROM/TO/CC /
92
- SPEAKER)
76
+ EXTRACT --> CLASSIFY (in-turn) --> INGEST --> WIRE-BRIEF-ENTITIES
77
+ │ │
78
+ v v v v
79
+ text sections one :Section KD-level edges from
80
+ cached + KD-level per semantic the new KnowledgeDocument
81
+ by id edges boundary + to each entity the
82
+ + orphans NEXT chain + dispatch brief named
83
+ (you produce anchor edges (Person / Organization /
84
+ this JSON + related Service / Task / Event /
85
+ yourself, from entities + KnowledgeDocument /
86
+ the ontology + typed-edge BrandingData) — plus an
87
+ the cached text) KD-level orphan list for brief-
88
+ edges named entities not found
89
+ (PARTY / in the graph.
90
+ PARTICIPANT /
91
+ FROM/TO/CC /
92
+ SPEAKER)
93
93
  ```
94
94
 
95
95
  ### 1. `memory-ingest-extract`
96
96
 
97
97
  Pulls text from the file and caches it under the `attachmentId`. Inputs: `storagePath`, `filename`, `mimeType`, `attachmentId` (all from the attachment metadata block in your brief). Returns metadata + a 240-char preview. The full text lives in the in-process cache.
98
98
 
99
- After extract returns, look at the document's char count and emit a one-line size→latency estimate in chat **before** calling `memory-classify`, so the operator knows whether to expect a 10s turnaround or a 90–180s wait. The `memory-classify` server enforces a 180s ceiling on the Haiku call — anything above the >20K band may push toward that ceiling and time out loudly.
99
+ After extract returns, emit one line in chat: "Ingesting `<filename>` (`<N>` chars)." Documents > ~525K chars need chunked processing in step 2 flag this in the line so the operator knows the turn will run long.
100
100
 
101
- | chars | estimate |
102
- |---|---|
103
- | <5K | ~10s |
104
- | 5K–10K | ~20s |
105
- | 10K–20K | ~45–90s |
106
- | 20K–525K | ~90–180s (single-shot) |
107
- | >525K | chunked: ~90–180s × ⌈chars / 525K⌉ |
101
+ ### 2. Classify in-turn (your work)
108
102
 
109
- For inputs >525K chars memory-classify enters the chunked path automatically: deterministic 525K-char chunks with 17.5K-char overlap, one Haiku call per chunk, server-side merge of same-kind boundary straddlers. Inputs >682K chars in chat mode loud-fail with `cause:"input-too-large"` the chat path must keep sessions under the per-call ceiling via sessionize.
103
+ You produce typed-section JSON yourself from the cached text and the loaded ontology. There is no classifier tool Task 424 deleted it. Read the relevant ontology references first (`platform/plugins/memory/references/schema-base.md` and, when `brand.json#vertical` is set, the matching `schema-<vertical>.md`) so every `kind` you emit is a label the writer will accept.
110
104
 
111
- Form: "Classifying `<filename>` (`<N>` chars) expect ~`<estimate>`."
105
+ **Document mode (default).** Build the JSON with this top-level shape:
112
106
 
113
- ### 2. `memory-classify`
107
+ ```
108
+ {
109
+ "documentSummary": "<1-3 sentences>",
110
+ "documentKeywords": ["<3-10 lowercase topic keywords>"],
111
+ "sections": [
112
+ {
113
+ "kind": "<from closed enumeration>",
114
+ "title": "<short title>",
115
+ "body": "<documentText.slice(sourceStart, sourceEnd)>",
116
+ "summary": "<≤500 chars>",
117
+ "sourceStart": <int>,
118
+ "sourceEnd": <int>,
119
+ "properties": { ... },
120
+ "anchorEdge": { "type": "<edge>", "direction": "from-anchor", "properties": { ... } },
121
+ "related": [ ... ],
122
+ "classifierReason": "<only when kind === 'Other'>"
123
+ }
124
+ ],
125
+ "documentEdges": [ ... ],
126
+ "orphanCandidates": [ ... ]
127
+ }
128
+ ```
129
+
130
+ Use the natural-edge map below to pick `anchorEdge` per kind. `body` is the verbatim slice of the cached text between `sourceStart` (inclusive) and `sourceEnd` (exclusive). `summary` ≤ 500 chars.
114
131
 
115
- Calls Haiku with the loaded ontology and the cached text.
132
+ ```
133
+ Section kind | Anchor edge (direction = from-anchor unless noted)
134
+ Position (identity) | (anchor:UserProfile)-[:HAS_POSITION]->(:Section:Position); section -[:AT]-> related:Organization (merge:true)
135
+ Education (identity) | (anchor:UserProfile)-[:ATTENDED {degree, startDate, endDate}]->(:Section:Education); section -[:ATTENDED]-> related:Organization {organizationCategory:'educational'} (merge:true)
136
+ Credential (identity) | (anchor:UserProfile)-[:HOLDS]->(:Section:Credential)
137
+ Skill (identity) | (anchor:UserProfile)-[:HAS_SKILL]->(:Section:Skill)
138
+ Biography (identity) | (anchor:UserProfile)-[:DESCRIBED_BY]->(:Section:Biography)
139
+ Project (standalone, not :Section) | (anchor:UserProfile)-[:CREATED]->(:Project); optional (:Project)-[:UNDER]->related:Organization (merge:true)
140
+ Preface, Abstract, Introduction, TableOfContents, Chapter, Conclusion, Appendix, Bibliography, Glossary, Acknowledgments (structural)
141
+ | anchorEdge: null — anchored only via (:KnowledgeDocument)-[:HAS_SECTION]->(:Section:<Kind>) + (:Section)-[:NEXT]->(:Section)
142
+ Parties, Recitals, Definitions, Scope, Term, Payment, Confidentiality, IntellectualProperty, Warranties, Indemnification, Liability, Termination, GoverningLaw, ForceMajeure, Notices, EntireAgreement, Amendment, Assignment, Severability, Signatures (contract-clause)
143
+ | anchorEdge: null — anchored via HAS_SECTION + NEXT; for Parties section, additionally emit top-level documentEdges PARTY entries; for Definitions, emit related DefinedTerm nodes with edge type DEFINES (direction outgoing from the Definitions section).
144
+ Other (label fallback) | anchorEdge: null — section-kind closure miss; you MUST also include 'classifierReason' (one-line about-what)
145
+ ```
116
146
 
117
- **Document mode (default).** Inputs: `attachmentId` (same one), `anchorDescription` (a short sentence built from the confirmed anchor — e.g. `"subject = UserProfile (the account owner); edges from UserProfile."` or `"subject = LocalBusiness {name: 'Acme Roofing'} (the operator's business); edges from LocalBusiness."`).
147
+ `documentEdges` covers party-like links the document itself names: `PARTY` for contract parties, `PARTICIPANT` for meeting/call attendees, `FROM`/`TO`/`CC` for email-header parties, `SPEAKER` for transcript voices. The `memory-ingest` tool definition spells out the exact field shape.
118
148
 
119
- **Chat mode.** Inputs: `attachmentId` (same one, used as the classify cache key only does NOT flow to the writer in chat mode), `mode='chat'`, `anchorDescription` (a short sentence naming the conversation — e.g. `"WhatsApp conversation between Joel and Adam (2 participants)"`). The chat prompt drops the natural-edge map, the closed enumeration, and the orphan logic — Haiku produces topic-bounded `:Section` chunks (kind `'Conversation'`) with `summary`, `keywords`, `firstMessageAt`, `lastMessageAt`, `participantNames`, `messageCount` per chunk. The whole archive may produce one chunk (short conversation) or many (long chat with topic transitions); chunks cover every message in chronological order with no gaps.
149
+ `orphanCandidates` is the list of entities you wanted to emit but could not natural-edge. Surface them so the ontology can grow.
120
150
 
121
- Returns:
151
+ **Chat mode.** Same top-level shape with every `sections[].kind = "Conversation"` and per-chunk properties: `summary`, `keywords`, `firstMessageAt`, `lastMessageAt`, `participantNames`, `messageCount`. Cover every message in chronological order with no gaps. Drop `anchorEdge` (always null) and `related`. Use the participant elementIds from § Participant confirmation; do not invent new ones.
122
152
 
123
- - `documentSummary`1-3 sentences for the KnowledgeDocument node
124
- - `documentKeywords` — 3-10 lowercase topic keywords
125
- - `sections` — section-shaped output, each with `kind` (from the closed enumeration), `title`, `body` (server-reconstructed via `documentText.slice(sourceStart, sourceEnd)` — the LLM emits offsets, not body text), `summary` (≤500 chars, server-validated), `sourceStart`/`sourceEnd` (whole-document char offsets — translated by the chunked-classify path so the writer always sees whole-doc coordinates), `properties`, `anchorEdge` (or null), optional `related`, optional `classifierReason` (when `kind === "Other"`)
126
- - `documentEdges` — optional. Document-level edges off the KnowledgeDocument, picked by document shape: `PARTY` for contract parties (Person/Organization); `PARTICIPANT` for meeting/call attendees (Person/Organization); `FROM`/`TO`/`CC` for email header parties (Person, plus Organization for `TO`/`CC`); `SPEAKER` for voice-note/single-speaker transcript speakers (Person). Anchor stays the document subject from step 1; these edges are additional document→party links the writer applies off the KnowledgeDocument, not off any Section
127
- - `orphanCandidates` — nodes the classifier wanted to emit but could not natural-edge. Surfaced loudly to the operator (see Output contract below)
128
- - `hallucinatedRelated` — diagnostic count of related-kind values dropped server-side as ontology misses
153
+ **Chunking — long inputs.** For inputs > ~525K chars, work through the cached text in deterministic ~525K-char windows with ~17.5K-char overlap, emit sections per window, and merge same-kind boundary straddlers yourself before calling `memory-ingest`. Inputs > 682K chars in chat mode are too large to keep within one turn abort with `cause:"input-too-large"` and ask the operator to sessionize the export before re-dispatch.
129
154
 
130
- **Failure is terminal.** If the call returns `{kind: "fallback", reason}`, the LLM was unavailable, malformed, or otherwise unusable. **Do not call `memory-ingest`. Do not write anything.** Return to the dispatching agent immediately with a structured blocker: `Classifier unavailable — <reason>. Document not ingested. Operator must <remediation>.` The dispatching agent surfaces this to the operator in plain English. There is no "fallback-to-UNMAPPED-section" write path — that fallback was removed by design.
155
+ **Failure is terminal.** If you cannot produce the JSON (the ontology you need isn't loaded, the extract is empty, the document is opaque), **do not call `memory-ingest`. Do not write anything.** Return to the dispatching agent immediately with a structured blocker: `Classifier unable to map document — <reason>. Document not ingested. Operator must <remediation>.` There is no "fallback-to-UNMAPPED-section" write path — that fallback was removed by design.
131
156
 
132
- After step 2 succeeds, emit a chat message before step 3 naming what the classifier produced: **"Classified into N sections, covering: <topic keywords>."** This is step 2 of the four-step narrative the operator sees per ingest.
157
+ After you've assembled the JSON, emit a chat message before step 3 naming what you produced: **"Classified into N sections, covering: <topic keywords>."** This is step 2 of the four-step narrative the operator sees per ingest.
133
158
 
134
159
  ### 3. `memory-ingest`
135
160
 
@@ -207,7 +232,7 @@ Each ingest produces up to four chat messages, each at the moment it happens. Fa
207
232
  | Step | Emitted by | Trigger | Content |
208
233
  |---|---|---|---|
209
234
  | 1 | Admin agent | On dispatch to librarian | "Sending `<filename>` to librarian for ingest." |
210
- | 2 | Librarian (this skill) | After `memory-classify` returns ok | "Classified `<filename>` into `<N>` sections, covering: `<topicKeyword1>, <topicKeyword2>, …`." |
235
+ | 2 | Librarian (this skill) | After you finish producing the typed-section JSON in-turn | "Classified `<filename>` into `<N>` sections, covering: `<topicKeyword1>, <topicKeyword2>, …`." |
211
236
  | 3 | Librarian (this skill) | After `memory-ingest` returns | "Created/connected: `<kind: count via edgeType to anchor>` for each kind; `<orphan-candidates: label and reason>` for any orphans; `<related entities created or merged: kind: count>`." |
212
237
  | 4 | Librarian (this skill) | After `wire-brief-entities` step completes AND the brief named at least one entity | "Wired `<N>` brief entities: `<K>` Persons via `<edge>`, `<M>` Organizations via `<edge>`, `<T>` Tasks via `REFERENCES`. `<P>` entities not found in graph: `<comma-separated names>`." |
213
238
 
@@ -29,7 +29,7 @@ Chain into `daily-prep` with `date: today`. Reproduce its chronological event li
29
29
 
30
30
  ### 3. Open tasks ranked
31
31
 
32
- Call `memory-rank` with `kind: task` and `limit: 5`. This returns the tasks the ranker considers most urgent given current context, with one-line reasoning per task. Reproduce the ranked list with its reasoning. Do not re-rank against memory-search results.
32
+ Call `memory-search` for `:Task` nodes with `status: open` and `limit: 15`. You rank the returned pool yourself against the day's context recent commitments named in section 1, today's calendar from section 2, the owner's stated current priorities — and reproduce the top 5 with one short reasoning line each ("urgent because the offer goes out today", "blocking the Acme close"). The ranking happens in your turn, not in a server-side LLM call.
33
33
 
34
34
  ### 4. Overnight changes
35
35
 
@@ -76,7 +76,7 @@ The whole briefing must fit in one screen. If any section would overflow, collap
76
76
 
77
77
  - **`work-list` empty.** Section 1 collapses to "nothing outstanding".
78
78
  - **`schedule-list` empty.** Section 2 collapses to "nothing in the diary today".
79
- - **`memory-rank` returns fewer than five.** List what it returned; do not pad.
79
+ - **`memory-search` for tasks returns fewer than five.** List what it returned; do not pad. (Your own ranking happens in-turn against the day's context.)
80
80
  - **`profile-read` shows the owner has no `lastActiveSession`.** Section 4 collapses to "no prior session recorded" rather than reporting from training data.
81
81
 
82
82
  ## What this skill does not do
@@ -486,55 +486,6 @@ fi
486
486
 
487
487
  echo "$SCHEMA_CYPHER" | "$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J_URI"
488
488
 
489
- # ------------------------------------------------------------------
490
- # 2.4 Compiled-truth + timeline backfill (compiled-truth + timeline)
491
- # ------------------------------------------------------------------
492
- # Every existing :Person / :Organization / :Concept gains the three
493
- # compiled-truth properties on first run. Idempotent — the WHERE clause
494
- # `compiledTruth IS NULL` makes re-runs a no-op for already-stamped nodes.
495
- # Rewriter invocation is deferred to operator demand (memory-update with
496
- # rewriteCompiledTruth:true); fresh installs have no entities anyway.
497
- #
498
- # Timeline-event seeding from :Message-[:MENTIONS]->entity edges is also
499
- # idempotent: the `WHERE NOT EXISTS { ... :TimelineEvent }` guard prevents
500
- # re-creation across runs. Skips messages without a parseable createdAt.
501
- COMPILED_TRUTH_BACKFILL_CYPHER=$(cat <<'BACKFILL_EOF'
502
- // Stamp compiled-truth defaults on existing entities.
503
- MATCH (n)
504
- WHERE (n:Person OR n:Organization OR n:Concept)
505
- AND n.compiledTruth IS NULL
506
- SET n.compiledTruth = '',
507
- n.compiledTruthUpdatedAt = datetime('1970-01-01T00:00:00Z'),
508
- n.compiledTruthSource = 'rewriter'
509
- RETURN labels(n)[0] AS label, count(n) AS stamped;
510
-
511
- // Seed :TimelineEvent rows from existing :Message-[:MENTIONS]->entity edges.
512
- // Guard: only when the Message has a parseable createdAt AND no equivalent
513
- // :TimelineEvent already exists for this (entity, message) pair.
514
- MATCH (m:Message)-[:MENTIONS]->(e)
515
- WHERE (e:Person OR e:Organization OR e:Concept)
516
- AND m.createdAt IS NOT NULL
517
- AND NOT EXISTS {
518
- MATCH (e)-[:HAS_TIMELINE_EVENT]->(t:TimelineEvent {source: m.messageId})
519
- }
520
- WITH e, m
521
- WHERE e.accountId IS NOT NULL
522
- MERGE (e)-[:HAS_TIMELINE_EVENT]->(t:TimelineEvent {timelineEventId: randomUUID()})
523
- ON CREATE SET t.accountId = e.accountId,
524
- t.occurredAt = datetime(m.createdAt),
525
- t.kind = 'mentioned',
526
- t.summary = coalesce(substring(m.body, 0, 500), '(no body)'),
527
- t.source = m.messageId,
528
- t.matched = '(backfilled from :MENTIONS edge)',
529
- t.createdAt = datetime(),
530
- t.scope = coalesce(e.scope, 'admin')
531
- RETURN labels(e)[0] AS entityLabel, count(t) AS seeded;
532
- BACKFILL_EOF
533
- )
534
-
535
- echo "==> Backfilling compiled-truth + timeline (compiled-truth + timeline)..."
536
- echo "$COMPILED_TRUTH_BACKFILL_CYPHER" | "$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J_URI" --format plain 2>&1 | sed 's/^/ /'
537
-
538
489
  # ------------------------------------------------------------------
539
490
  # 2.5 Bootstrap root :LocalBusiness for the account
540
491
  # ------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
@@ -134,8 +134,9 @@ export function __registerPtyTrackerForTests(tracker) {
134
134
  */
135
135
  export const HEADLESS_ROLES = new Set([
136
136
  'database-operator',
137
- 'memory-classify',
138
- 'classifier',
137
+ 'citation-auditor',
138
+ 'typed-edge-classifier',
139
+ 'compiled-truth-rewriter',
139
140
  ]);
140
141
  export const PERMISSION_MODES = ['default', 'acceptEdits', 'plan', 'auto', 'bypassPermissions'];
141
142
  /** Task 346 — plugin name (matches `platform/plugins/memory/PLUGIN.md`'s