@rubytech/create-maxy-code 0.1.151 → 0.1.152
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.
- package/package.json +1 -1
- package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-search/dist/index.js +10 -9
- package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-search/src/index.ts +10 -9
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/PLUGIN.md +1 -1
- package/payload/platform/plugins/admin/hooks/__tests__/pre-turn-graph-pass.test.sh +26 -129
- package/payload/platform/plugins/admin/hooks/pre-turn-graph-pass.sh +64 -131
- package/payload/platform/plugins/docs/PLUGIN.md +1 -1
- package/payload/platform/plugins/docs/references/admin-session.md +2 -2
- package/payload/platform/plugins/docs/references/internals.md +1 -64
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/platform/plugins/docs/references/plugins-guide.md +2 -2
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +25 -45
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
- package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +8 -16
- package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +14 -11
- package/payload/platform/plugins/memory/mcp/dist/index.js +13 -269
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +1 -24
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +8 -211
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +99 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js +56 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +12 -32
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +19 -281
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +15 -14
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +1 -76
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +73 -329
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +10 -12
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +4 -3
- package/payload/platform/plugins/memory/references/graph-primitives.md +2 -2
- package/payload/platform/plugins/memory/references/schema-base.md +2 -7
- package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +71 -46
- package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +2 -2
- package/payload/platform/scripts/seed-neo4j.sh +0 -49
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +3 -2
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
- package/payload/platform/templates/specialists/agents/citation-auditor.md +37 -0
- package/payload/platform/templates/specialists/agents/compiled-truth-rewriter.md +42 -0
- package/payload/platform/templates/specialists/agents/database-operator.md +2 -30
- package/payload/platform/templates/specialists/agents/research-assistant.md +2 -2
- package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +37 -0
- package/payload/server/{adminuser-self-heal-YC47O34W.js → adminuser-self-heal-WSFCOEII.js} +1 -1
- package/payload/server/{chunk-T3DJD5QR.js → chunk-AXOL2PPG.js} +1 -1
- package/payload/server/{chunk-HYQNUVGO.js → chunk-PFF6I7KP.js} +1 -8
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/assets/{admin-CnLGltuE.js → admin-kh_oCHeS.js} +54 -54
- package/payload/server/public/assets/{data-MB2EWZUP.js → data-BHASh0_Y.js} +1 -1
- package/payload/server/public/assets/{graph-B2FnDRz-.js → graph-BhEI09tF.js} +1 -1
- package/payload/server/public/assets/graph-labels-DXlmm1og.js +1 -0
- package/payload/server/public/assets/{page-BJKRa6Db.js → page-CDWu1Aft.js} +3 -3
- package/payload/server/public/assets/{page-Bx2p3W1k.js → page-cyvshX4Z.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +3 -3
- package/payload/server/public/index.html +4 -4
- package/payload/server/server.js +319 -1286
- package/payload/platform/lib/graph-search/src/__tests__/query-expansion.test.ts +0 -96
- package/payload/platform/lib/graph-search/src/query-expansion.ts +0 -129
- package/payload/platform/lib/oauth-llm/src/index.ts +0 -583
- package/payload/platform/lib/oauth-llm/tsconfig.json +0 -8
- package/payload/platform/lib/screening-patterns/src/index.ts +0 -51
- package/payload/platform/lib/screening-patterns/tsconfig.json +0 -8
- 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
|
|
37
|
-
|
|
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-
|
|
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**
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
79
|
-
text
|
|
80
|
-
cached
|
|
81
|
-
by id
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
105
|
+
**Document mode (default).** Build the JSON with this top-level shape:
|
|
112
106
|
|
|
113
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- `
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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-
|
|
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
|
-
'
|
|
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
|