@rubytech/create-maxy-code 0.1.132 → 0.1.138
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/dist/__tests__/installer-specialist-registration.test.js +5 -40
- package/dist/index.js +24 -28
- package/dist/specialist-registration.js +0 -15
- package/package.json +1 -1
- package/payload/platform/lib/graph-search/dist/boosts.d.ts +39 -0
- package/payload/platform/lib/graph-search/dist/boosts.d.ts.map +1 -0
- package/payload/platform/lib/graph-search/dist/boosts.js +57 -0
- package/payload/platform/lib/graph-search/dist/boosts.js.map +1 -0
- package/payload/platform/lib/graph-search/dist/dedup.d.ts +29 -0
- package/payload/platform/lib/graph-search/dist/dedup.d.ts.map +1 -0
- package/payload/platform/lib/graph-search/dist/dedup.js +97 -0
- package/payload/platform/lib/graph-search/dist/dedup.js.map +1 -0
- package/payload/platform/lib/graph-search/dist/index.d.ts +70 -8
- package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-search/dist/index.js +323 -62
- package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +37 -0
- package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +1 -0
- package/payload/platform/lib/graph-search/dist/query-expansion.js +101 -0
- package/payload/platform/lib/graph-search/dist/query-expansion.js.map +1 -0
- package/payload/platform/lib/graph-search/dist/route.d.ts +29 -0
- package/payload/platform/lib/graph-search/dist/route.d.ts.map +1 -0
- package/payload/platform/lib/graph-search/dist/route.js +53 -0
- package/payload/platform/lib/graph-search/dist/route.js.map +1 -0
- package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts +31 -0
- package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts.map +1 -0
- package/payload/platform/lib/graph-search/dist/rrf-fusion.js +57 -0
- package/payload/platform/lib/graph-search/dist/rrf-fusion.js.map +1 -0
- package/payload/platform/lib/graph-search/src/__tests__/boosts.test.ts +59 -0
- package/payload/platform/lib/graph-search/src/__tests__/dedup.test.ts +83 -0
- package/payload/platform/lib/graph-search/src/__tests__/query-expansion.test.ts +96 -0
- package/payload/platform/lib/graph-search/src/__tests__/route.test.ts +62 -0
- package/payload/platform/lib/graph-search/src/__tests__/rrf-fusion.test.ts +39 -0
- package/payload/platform/lib/graph-search/src/boosts.ts +61 -0
- package/payload/platform/lib/graph-search/src/dedup.ts +108 -0
- package/payload/platform/lib/graph-search/src/index.ts +407 -65
- package/payload/platform/lib/graph-search/src/query-expansion.ts +129 -0
- package/payload/platform/lib/graph-search/src/route.ts +70 -0
- package/payload/platform/lib/graph-search/src/rrf-fusion.ts +62 -0
- package/payload/platform/neo4j/schema.cypher +80 -1
- package/payload/platform/plugins/admin/hooks/session-end-retrospective.sh +4 -2
- package/payload/platform/plugins/admin/mcp/dist/index.js +6 -4
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/docs/references/internals.md +36 -10
- package/payload/platform/plugins/docs/references/neo4j.md +63 -0
- package/payload/platform/plugins/docs/references/session-retrospective.md +11 -4
- package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js +2 -2
- package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/index.js +114 -5
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js +25 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js +70 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +50 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +33 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +99 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +21 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +24 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts +13 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js +151 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +55 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +290 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts +19 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +102 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js +18 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +5 -0
- 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/__tests__/memory-write-emit.test.js +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +14 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +29 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +22 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +31 -1
- 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 +182 -50
- 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 +76 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +30 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +129 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/scripts/backfill-typed-edges.ts +72 -0
- package/payload/platform/plugins/memory/mcp/scripts/generate-edge-docs.ts +75 -0
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +5 -0
- package/payload/platform/plugins/memory/references/schema-base.md +44 -0
- package/payload/platform/scripts/seed-neo4j.sh +49 -0
- package/payload/platform/templates/agents/admin/IDENTITY.md +4 -3
- package/payload/platform/templates/specialists/agents/database-operator.md +9 -1
- package/payload/server/{adminuser-self-heal-QAWOZ3JV.js → adminuser-self-heal-YC47O34W.js} +2 -1
- package/payload/server/{chunk-JSBRDJBE.js → chunk-HYQNUVGO.js} +9 -1
- package/payload/server/{chunk-HCYM5FLU.js → chunk-T3DJD5QR.js} +3 -1
- package/payload/server/maxy-edge.js +3 -2
- package/payload/server/public/assets/{admin-FcRHAL-3.js → admin-BM9aXUUh.js} +1 -1
- package/payload/server/public/assets/{data-Ds37mflX.js → data-Ds2ECtfP.js} +1 -1
- package/payload/server/public/assets/{graph-CmWRhaiS.js → graph-BzxObKMM.js} +1 -1
- package/payload/server/public/assets/{graph-labels-Ch2r00Gt.js → graph-labels-Dwgep_nr.js} +1 -1
- package/payload/server/public/assets/{page-BcHhJXUt.js → page-BlkBsjP2.js} +1 -1
- package/payload/server/public/assets/page-h_SA5SVQ.js +51 -0
- 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 +803 -76
- package/payload/server/public/assets/page-BOtNny_4.js +0 -51
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed-edge auto-extraction pass.
|
|
3
|
+
*
|
|
4
|
+
* Runs once per session at the retrospective turn (admin-spawned via
|
|
5
|
+
* database-operator), or as a one-off backfill. Reads prose-bearing
|
|
6
|
+
* nodes (Message/Page/Meeting/Email/Idea/Note/Post/Report) the operator's
|
|
7
|
+
* account wrote since `sinceIso`, batches them, asks Haiku for typed-edge
|
|
8
|
+
* proposals against the `TYPED_EDGE_ALLOWLIST` schema, validates each
|
|
9
|
+
* proposal inline, and MERGEs accepted edges directly via Cypher with
|
|
10
|
+
* `createdBy` provenance.
|
|
11
|
+
*
|
|
12
|
+
* Continue-on-error: per-batch Haiku failure increments `failed`; per-edge
|
|
13
|
+
* MERGE failure increments `rejected`. A single bad batch never bricks the
|
|
14
|
+
* pass — partial results are returned to the caller.
|
|
15
|
+
*
|
|
16
|
+
* The pass does NOT route through `graph-write-gate`: that gate is a
|
|
17
|
+
* node-precondition surface (AdminUser + LocalBusiness must exist), not
|
|
18
|
+
* an edge-schema validator. Edge validation is owned here against
|
|
19
|
+
* `TYPED_EDGE_ALLOWLIST`.
|
|
20
|
+
*
|
|
21
|
+
* Auth: Haiku is called via Claude Code OAuth — never the Anthropic API key.
|
|
22
|
+
*/
|
|
23
|
+
import { callOauthLlm } from "../../../../../lib/oauth-llm/dist/index.js";
|
|
24
|
+
import { HAIKU_MODEL } from "../../../../../lib/models/dist/index.js";
|
|
25
|
+
import { TYPED_EDGE_ALLOWLIST, TYPED_EDGE_TYPES, PROSE_BEARING_LABELS, isAllowedTypedEdge, } from "./typed-edge-schema.js";
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Haiku prompt assembly — schema is rendered from TYPED_EDGE_ALLOWLIST so the
|
|
28
|
+
// prompt cannot drift from the validator.
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
function buildSystemPrompt() {
|
|
31
|
+
const allowlistLines = TYPED_EDGE_ALLOWLIST.map(({ sourceLabel, edgeType, targetLabel }) => ` (:${sourceLabel})-[:${edgeType}]->(:${targetLabel})`).join("\n");
|
|
32
|
+
return [
|
|
33
|
+
"You are a typed-edge extractor for a knowledge graph.",
|
|
34
|
+
"",
|
|
35
|
+
"You will be given a batch of prose nodes (each with an elementId and a",
|
|
36
|
+
"label). Read each node's text and propose typed edges that the text",
|
|
37
|
+
"supports. Only propose edges from this exact allowlist of",
|
|
38
|
+
"(sourceLabel)-[EDGE_TYPE]->(targetLabel) triples:",
|
|
39
|
+
"",
|
|
40
|
+
allowlistLines,
|
|
41
|
+
"",
|
|
42
|
+
"Rules:",
|
|
43
|
+
"- A proposal's sourceElementId MUST match one of the input elementIds.",
|
|
44
|
+
"- A proposal's edgeType MUST be one of the listed types: " +
|
|
45
|
+
TYPED_EDGE_TYPES.join(", ") + ".",
|
|
46
|
+
"- The (sourceLabel, edgeType, targetLabel) triple MUST appear in the",
|
|
47
|
+
" allowlist above. The sourceLabel is the label of the prose node at",
|
|
48
|
+
" sourceElementId; you do not pick it — it is fixed by the input.",
|
|
49
|
+
"- targetName is the canonical identifying property of the target node",
|
|
50
|
+
" (Person -> givenName + familyName joined with a space; Organization,",
|
|
51
|
+
" LocalBusiness, Event, Meeting, Page, Note, Report, Post -> name or title).",
|
|
52
|
+
"- Propose nothing when the text does not clearly support an edge. False",
|
|
53
|
+
" positives are worse than misses; this pass runs every session.",
|
|
54
|
+
"- Do not invent entities the text does not name.",
|
|
55
|
+
"",
|
|
56
|
+
"Return your answer through the structured tool call. No prose reply.",
|
|
57
|
+
].join("\n");
|
|
58
|
+
}
|
|
59
|
+
const ProposalTool = {
|
|
60
|
+
name: "emit_typed_edge_proposals",
|
|
61
|
+
description: "Emit one or more typed-edge proposals for the input batch of prose nodes.",
|
|
62
|
+
input_schema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
proposals: {
|
|
66
|
+
type: "array",
|
|
67
|
+
description: "Zero or more edge proposals.",
|
|
68
|
+
items: {
|
|
69
|
+
type: "object",
|
|
70
|
+
properties: {
|
|
71
|
+
sourceElementId: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "elementId of the prose node the edge originates from. Must match one of the input batch.",
|
|
74
|
+
},
|
|
75
|
+
edgeType: {
|
|
76
|
+
type: "string",
|
|
77
|
+
enum: [...TYPED_EDGE_TYPES],
|
|
78
|
+
description: "Edge type from the allowlist.",
|
|
79
|
+
},
|
|
80
|
+
targetLabel: {
|
|
81
|
+
type: "string",
|
|
82
|
+
description: "Neo4j label of the target node (Person, Organization, LocalBusiness, Event, etc.).",
|
|
83
|
+
},
|
|
84
|
+
targetName: {
|
|
85
|
+
type: "string",
|
|
86
|
+
description: "Canonical identifying name of the target node.",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
required: ["sourceElementId", "edgeType", "targetLabel", "targetName"],
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
required: ["proposals"],
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Neo4j: enumerate prose-bearing nodes
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
async function enumerateProseNodes(session, accountId, sinceIso, limit) {
|
|
100
|
+
// Multi-label MATCH using ANY/labels(). Prose-bearing labels are a fixed
|
|
101
|
+
// set; we filter in-cypher to keep the query plan deterministic.
|
|
102
|
+
// text source: prefer `text`, fall back to `body` then `content` — different
|
|
103
|
+
// prose labels carry their text under different property names across the
|
|
104
|
+
// existing writers. NULL coalescing via COALESCE.
|
|
105
|
+
const cypher = sinceIso
|
|
106
|
+
? `MATCH (n)
|
|
107
|
+
WHERE n.accountId = $accountId
|
|
108
|
+
AND ANY(l IN labels(n) WHERE l IN $labels)
|
|
109
|
+
AND n.updatedAt >= $sinceIso
|
|
110
|
+
RETURN elementId(n) AS elementId,
|
|
111
|
+
[l IN labels(n) WHERE l IN $labels][0] AS label,
|
|
112
|
+
COALESCE(n.text, n.body, n.content, '') AS text
|
|
113
|
+
ORDER BY n.updatedAt ASC
|
|
114
|
+
LIMIT $limit`
|
|
115
|
+
: `MATCH (n)
|
|
116
|
+
WHERE n.accountId = $accountId
|
|
117
|
+
AND ANY(l IN labels(n) WHERE l IN $labels)
|
|
118
|
+
RETURN elementId(n) AS elementId,
|
|
119
|
+
[l IN labels(n) WHERE l IN $labels][0] AS label,
|
|
120
|
+
COALESCE(n.text, n.body, n.content, '') AS text
|
|
121
|
+
ORDER BY n.updatedAt ASC
|
|
122
|
+
LIMIT $limit`;
|
|
123
|
+
const result = await session.run(cypher, {
|
|
124
|
+
accountId,
|
|
125
|
+
labels: [...PROSE_BEARING_LABELS],
|
|
126
|
+
sinceIso,
|
|
127
|
+
limit,
|
|
128
|
+
});
|
|
129
|
+
return result.records
|
|
130
|
+
.map((r) => ({
|
|
131
|
+
elementId: String(r.get("elementId")),
|
|
132
|
+
label: String(r.get("label")),
|
|
133
|
+
text: String(r.get("text") ?? ""),
|
|
134
|
+
}))
|
|
135
|
+
.filter((n) => n.text.trim().length > 0);
|
|
136
|
+
}
|
|
137
|
+
async function callHaikuForBatch(nodes, systemPrompt) {
|
|
138
|
+
const userMessage = JSON.stringify({
|
|
139
|
+
batch: nodes.map((n) => ({
|
|
140
|
+
elementId: n.elementId,
|
|
141
|
+
label: n.label,
|
|
142
|
+
// Cap text length so very large prose nodes don't blow the context
|
|
143
|
+
// window. 4000 chars is enough for entity extraction; the typed-edge
|
|
144
|
+
// pass is not a summariser.
|
|
145
|
+
text: n.text.slice(0, 4000),
|
|
146
|
+
})),
|
|
147
|
+
}, null, 2);
|
|
148
|
+
const llmResult = await callOauthLlm({
|
|
149
|
+
model: HAIKU_MODEL,
|
|
150
|
+
system: systemPrompt,
|
|
151
|
+
userMessage,
|
|
152
|
+
maxTokens: 4096,
|
|
153
|
+
timeoutMs: 60_000,
|
|
154
|
+
tools: [ProposalTool],
|
|
155
|
+
toolChoiceName: ProposalTool.name,
|
|
156
|
+
});
|
|
157
|
+
if (llmResult.kind === "fallback") {
|
|
158
|
+
return { proposals: [], failureReason: `${llmResult.cause}: ${llmResult.reason}` };
|
|
159
|
+
}
|
|
160
|
+
if (llmResult.kind !== "ok-tool") {
|
|
161
|
+
return { proposals: [], failureReason: "no-tool-use" };
|
|
162
|
+
}
|
|
163
|
+
const rawProposals = llmResult.input.proposals;
|
|
164
|
+
if (!Array.isArray(rawProposals)) {
|
|
165
|
+
return { proposals: [], failureReason: "proposals-not-array" };
|
|
166
|
+
}
|
|
167
|
+
return { proposals: rawProposals, failureReason: null };
|
|
168
|
+
}
|
|
169
|
+
function validateProposal(raw, batchNodesByElementId) {
|
|
170
|
+
const sourceElementId = typeof raw.sourceElementId === "string" ? raw.sourceElementId : "";
|
|
171
|
+
const edgeType = typeof raw.edgeType === "string" ? raw.edgeType : "";
|
|
172
|
+
const targetLabel = typeof raw.targetLabel === "string" ? raw.targetLabel : "";
|
|
173
|
+
const targetName = typeof raw.targetName === "string" ? raw.targetName.trim() : "";
|
|
174
|
+
if (!sourceElementId || !edgeType || !targetLabel || !targetName) {
|
|
175
|
+
return { proposal: null, reason: "missing-field" };
|
|
176
|
+
}
|
|
177
|
+
const sourceNode = batchNodesByElementId.get(sourceElementId);
|
|
178
|
+
if (!sourceNode) {
|
|
179
|
+
return { proposal: null, reason: "unknown-source-node" };
|
|
180
|
+
}
|
|
181
|
+
if (!isAllowedTypedEdge(sourceNode.label, edgeType, targetLabel)) {
|
|
182
|
+
return { proposal: null, reason: "not-in-allowlist" };
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
proposal: { sourceElementId, edgeType, targetLabel, targetName },
|
|
186
|
+
reason: null,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
// MERGE one accepted proposal as a typed edge with createdBy provenance
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
async function mergeEdge(session, accountId, proposal, sourceLabel, conversationId) {
|
|
193
|
+
// The edge type is interpolated into Cypher because parameterised
|
|
194
|
+
// relationship types are not supported. We have already validated the
|
|
195
|
+
// edgeType against the closed-enum allowlist, so the interpolation is
|
|
196
|
+
// safe — no operator string reaches this point.
|
|
197
|
+
// The target is MERGEd on (accountId, name) so re-runs are idempotent.
|
|
198
|
+
// The edge is MERGEd on its endpoint pair with provenance attached at
|
|
199
|
+
// ON CREATE, leaving existing edges untouched.
|
|
200
|
+
const cypher = `
|
|
201
|
+
MATCH (s:${sourceLabel} {accountId: $accountId})
|
|
202
|
+
WHERE elementId(s) = $sourceElementId
|
|
203
|
+
MERGE (t:${proposal.targetLabel} {accountId: $accountId, name: $targetName})
|
|
204
|
+
ON CREATE SET t.createdAt = $nowIso, t.updatedAt = $nowIso
|
|
205
|
+
ON MATCH SET t.updatedAt = $nowIso
|
|
206
|
+
MERGE (s)-[r:${proposal.edgeType}]->(t)
|
|
207
|
+
ON CREATE SET r.createdAt = $nowIso,
|
|
208
|
+
r.createdByAgent = 'typed-edge-pass',
|
|
209
|
+
r.createdByTool = 'memory-typed-edge-pass',
|
|
210
|
+
r.createdByConversation = $conversationId,
|
|
211
|
+
r.createdByModel = $modelId
|
|
212
|
+
RETURN elementId(r) AS edgeId
|
|
213
|
+
`;
|
|
214
|
+
try {
|
|
215
|
+
const result = await session.run(cypher, {
|
|
216
|
+
accountId,
|
|
217
|
+
sourceElementId: proposal.sourceElementId,
|
|
218
|
+
targetName: proposal.targetName,
|
|
219
|
+
conversationId,
|
|
220
|
+
modelId: HAIKU_MODEL,
|
|
221
|
+
nowIso: new Date().toISOString(),
|
|
222
|
+
});
|
|
223
|
+
if (result.records.length === 0) {
|
|
224
|
+
// Source node missing (defensive — should not happen because the
|
|
225
|
+
// enumeration just listed it).
|
|
226
|
+
return { ok: false, reason: "source-not-found" };
|
|
227
|
+
}
|
|
228
|
+
return { ok: true };
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
return {
|
|
232
|
+
ok: false,
|
|
233
|
+
reason: `merge-error:${err instanceof Error ? err.message : String(err)}`,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// ---------------------------------------------------------------------------
|
|
238
|
+
// Orchestration
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
export async function runTypedEdgePass(args) {
|
|
241
|
+
const { session, accountId, sinceIso, batchSize = 8, conversationId = null, maxNodes = 500, } = args;
|
|
242
|
+
const start = Date.now();
|
|
243
|
+
const accountShort = accountId.slice(0, 8);
|
|
244
|
+
const nodes = await enumerateProseNodes(session, accountId, sinceIso, maxNodes);
|
|
245
|
+
if (nodes.length === 0) {
|
|
246
|
+
const ms = Date.now() - start;
|
|
247
|
+
console.log(`[typed-edge-pass] accountId=${accountShort}… nodes=0 proposed=0 accepted=0 rejected=0 failed=0 ms=${ms}`);
|
|
248
|
+
return { nodes: 0, proposed: 0, accepted: 0, rejected: 0, failed: 0, ms };
|
|
249
|
+
}
|
|
250
|
+
const systemPrompt = buildSystemPrompt();
|
|
251
|
+
let proposed = 0;
|
|
252
|
+
let accepted = 0;
|
|
253
|
+
let rejected = 0;
|
|
254
|
+
let failed = 0;
|
|
255
|
+
for (let i = 0; i < nodes.length; i += batchSize) {
|
|
256
|
+
const batch = nodes.slice(i, i + batchSize);
|
|
257
|
+
const batchIndex = batch.reduce((m, n) => {
|
|
258
|
+
m.set(n.elementId, n);
|
|
259
|
+
return m;
|
|
260
|
+
}, new Map());
|
|
261
|
+
const { proposals: rawProposals, failureReason } = await callHaikuForBatch(batch, systemPrompt);
|
|
262
|
+
if (failureReason) {
|
|
263
|
+
failed += 1;
|
|
264
|
+
console.log(`[typed-edge-pass] accountId=${accountShort}… batch=${Math.floor(i / batchSize)} reason=${failureReason}`);
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
for (const raw of rawProposals) {
|
|
268
|
+
proposed += 1;
|
|
269
|
+
const { proposal, reason } = validateProposal(raw, batchIndex);
|
|
270
|
+
if (!proposal) {
|
|
271
|
+
rejected += 1;
|
|
272
|
+
console.log(`[typed-edge-pass] accountId=${accountShort}… reject reason=${reason ?? "unknown"} raw=${JSON.stringify(raw)}`);
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
const sourceLabel = batchIndex.get(proposal.sourceElementId).label;
|
|
276
|
+
const mergeResult = await mergeEdge(session, accountId, proposal, sourceLabel, conversationId);
|
|
277
|
+
if (mergeResult.ok) {
|
|
278
|
+
accepted += 1;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
rejected += 1;
|
|
282
|
+
console.log(`[typed-edge-pass] accountId=${accountShort}… reject reason=${mergeResult.reason}`);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const ms = Date.now() - start;
|
|
287
|
+
console.log(`[typed-edge-pass] accountId=${accountShort}… nodes=${nodes.length} proposed=${proposed} accepted=${accepted} rejected=${rejected} failed=${failed} ms=${ms}`);
|
|
288
|
+
return { nodes: nodes.length, proposed, accepted, rejected, failed, ms };
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=typed-edge-pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-edge-pass.js","sourceRoot":"","sources":["../../src/lib/typed-edge-pass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface TypedEdgePair {
|
|
2
|
+
readonly sourceLabel: string;
|
|
3
|
+
readonly edgeType: string;
|
|
4
|
+
readonly targetLabel: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The nine edge types ported from gbrain's auto-link layer, with the
|
|
8
|
+
* legal source/target label pairs for each.
|
|
9
|
+
*
|
|
10
|
+
* Order is stable so the prompt and docs render deterministically.
|
|
11
|
+
*/
|
|
12
|
+
export declare const TYPED_EDGE_ALLOWLIST: ReadonlyArray<TypedEdgePair>;
|
|
13
|
+
/** Returns true when this triple is allowed by the typed-edge pass. */
|
|
14
|
+
export declare function isAllowedTypedEdge(sourceLabel: string, edgeType: string, targetLabel: string): boolean;
|
|
15
|
+
/** Edge types the pass may propose, deduplicated and sorted. */
|
|
16
|
+
export declare const TYPED_EDGE_TYPES: ReadonlyArray<string>;
|
|
17
|
+
/** Prose-bearing node labels the pass enumerates. Fixed set; non-prose labels are out of scope. */
|
|
18
|
+
export declare const PROSE_BEARING_LABELS: ReadonlyArray<string>;
|
|
19
|
+
//# sourceMappingURL=typed-edge-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-edge-schema.d.ts","sourceRoot":"","sources":["../../src/lib/typed-edge-schema.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,CA6D7D,CAAC;AAUF,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAET;AAED,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAE3C,CAAC;AAET,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAStD,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Typed-edge allowlist — the single source of truth for which
|
|
2
|
+
// (sourceLabel, EDGE_TYPE, targetLabel) triples the typed-edge pass may
|
|
3
|
+
// MERGE into the graph. The Cypher schema file declares indexes and
|
|
4
|
+
// constraints only; edge-type semantics live here.
|
|
5
|
+
//
|
|
6
|
+
// Used in three places:
|
|
7
|
+
// 1. The Haiku system prompt for the typed-edge pass — the model is
|
|
8
|
+
// told to propose only edges from this list.
|
|
9
|
+
// 2. Inline validation inside `runTypedEdgePass` — any proposal whose
|
|
10
|
+
// (source, edge, target) is not in this list is rejected and logged
|
|
11
|
+
// with reason "not-in-allowlist".
|
|
12
|
+
// 3. The doc generator that emits the edge-types table into
|
|
13
|
+
// `.docs/neo4j.md` and the bundled `platform/plugins/docs/references/neo4j.md`.
|
|
14
|
+
//
|
|
15
|
+
// Adding a new edge type or label pair: edit this file, run the doc
|
|
16
|
+
// generator, ship in one PR. Schema.cypher carries a comment header
|
|
17
|
+
// pointing here.
|
|
18
|
+
//
|
|
19
|
+
// Scope: this constant only governs the typed-edge pass. Edges written
|
|
20
|
+
// directly by `database-operator` or by document-ingest follow the
|
|
21
|
+
// broader schema-base.md / vertical-schema rules and are out of scope
|
|
22
|
+
// for this allowlist.
|
|
23
|
+
/**
|
|
24
|
+
* The nine edge types ported from gbrain's auto-link layer, with the
|
|
25
|
+
* legal source/target label pairs for each.
|
|
26
|
+
*
|
|
27
|
+
* Order is stable so the prompt and docs render deterministically.
|
|
28
|
+
*/
|
|
29
|
+
export const TYPED_EDGE_ALLOWLIST = [
|
|
30
|
+
// ATTENDED — person attended an event.
|
|
31
|
+
{ sourceLabel: "Person", edgeType: "ATTENDED", targetLabel: "Event" },
|
|
32
|
+
{ sourceLabel: "Person", edgeType: "ATTENDED", targetLabel: "Meeting" },
|
|
33
|
+
// WORKS_AT — person currently works at an organisation.
|
|
34
|
+
{ sourceLabel: "Person", edgeType: "WORKS_AT", targetLabel: "Organization" },
|
|
35
|
+
{ sourceLabel: "Person", edgeType: "WORKS_AT", targetLabel: "LocalBusiness" },
|
|
36
|
+
// INVESTED_IN — person or organisation invested in an organisation.
|
|
37
|
+
{ sourceLabel: "Person", edgeType: "INVESTED_IN", targetLabel: "Organization" },
|
|
38
|
+
{ sourceLabel: "Person", edgeType: "INVESTED_IN", targetLabel: "LocalBusiness" },
|
|
39
|
+
{ sourceLabel: "Organization", edgeType: "INVESTED_IN", targetLabel: "Organization" },
|
|
40
|
+
{ sourceLabel: "Organization", edgeType: "INVESTED_IN", targetLabel: "LocalBusiness" },
|
|
41
|
+
// FOUNDED — person founded an organisation.
|
|
42
|
+
{ sourceLabel: "Person", edgeType: "FOUNDED", targetLabel: "Organization" },
|
|
43
|
+
{ sourceLabel: "Person", edgeType: "FOUNDED", targetLabel: "LocalBusiness" },
|
|
44
|
+
// ADVISES — person advises an organisation or another person.
|
|
45
|
+
{ sourceLabel: "Person", edgeType: "ADVISES", targetLabel: "Organization" },
|
|
46
|
+
{ sourceLabel: "Person", edgeType: "ADVISES", targetLabel: "LocalBusiness" },
|
|
47
|
+
{ sourceLabel: "Person", edgeType: "ADVISES", targetLabel: "Person" },
|
|
48
|
+
// MENTIONS — prose-bearing node mentions any entity.
|
|
49
|
+
{ sourceLabel: "Message", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
50
|
+
{ sourceLabel: "Message", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
51
|
+
{ sourceLabel: "Message", edgeType: "MENTIONS", targetLabel: "LocalBusiness" },
|
|
52
|
+
{ sourceLabel: "Message", edgeType: "MENTIONS", targetLabel: "Event" },
|
|
53
|
+
{ sourceLabel: "Page", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
54
|
+
{ sourceLabel: "Page", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
55
|
+
{ sourceLabel: "Page", edgeType: "MENTIONS", targetLabel: "LocalBusiness" },
|
|
56
|
+
{ sourceLabel: "Page", edgeType: "MENTIONS", targetLabel: "Event" },
|
|
57
|
+
{ sourceLabel: "Meeting", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
58
|
+
{ sourceLabel: "Meeting", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
59
|
+
{ sourceLabel: "Email", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
60
|
+
{ sourceLabel: "Email", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
61
|
+
{ sourceLabel: "Note", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
62
|
+
{ sourceLabel: "Note", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
63
|
+
{ sourceLabel: "Idea", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
64
|
+
{ sourceLabel: "Idea", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
65
|
+
{ sourceLabel: "Post", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
66
|
+
{ sourceLabel: "Post", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
67
|
+
{ sourceLabel: "Report", edgeType: "MENTIONS", targetLabel: "Person" },
|
|
68
|
+
{ sourceLabel: "Report", edgeType: "MENTIONS", targetLabel: "Organization" },
|
|
69
|
+
// AUTHORED — person authored a prose-bearing artefact.
|
|
70
|
+
{ sourceLabel: "Person", edgeType: "AUTHORED", targetLabel: "Post" },
|
|
71
|
+
{ sourceLabel: "Person", edgeType: "AUTHORED", targetLabel: "Report" },
|
|
72
|
+
{ sourceLabel: "Person", edgeType: "AUTHORED", targetLabel: "Page" },
|
|
73
|
+
{ sourceLabel: "Person", edgeType: "AUTHORED", targetLabel: "Note" },
|
|
74
|
+
// ATTACHED_TO — document or media attached to a higher-level entity.
|
|
75
|
+
{ sourceLabel: "Email", edgeType: "ATTACHED_TO", targetLabel: "Meeting" },
|
|
76
|
+
{ sourceLabel: "Page", edgeType: "ATTACHED_TO", targetLabel: "Project" },
|
|
77
|
+
{ sourceLabel: "Note", edgeType: "ATTACHED_TO", targetLabel: "Project" },
|
|
78
|
+
// REFERENCES — one prose-bearing node references another.
|
|
79
|
+
{ sourceLabel: "Page", edgeType: "REFERENCES", targetLabel: "Page" },
|
|
80
|
+
{ sourceLabel: "Report", edgeType: "REFERENCES", targetLabel: "Report" },
|
|
81
|
+
{ sourceLabel: "Report", edgeType: "REFERENCES", targetLabel: "Page" },
|
|
82
|
+
];
|
|
83
|
+
/** Set form for O(1) lookup during validation. */
|
|
84
|
+
const ALLOWLIST_SET = new Set(TYPED_EDGE_ALLOWLIST.map(({ sourceLabel, edgeType, targetLabel }) => `${sourceLabel}|${edgeType}|${targetLabel}`));
|
|
85
|
+
/** Returns true when this triple is allowed by the typed-edge pass. */
|
|
86
|
+
export function isAllowedTypedEdge(sourceLabel, edgeType, targetLabel) {
|
|
87
|
+
return ALLOWLIST_SET.has(`${sourceLabel}|${edgeType}|${targetLabel}`);
|
|
88
|
+
}
|
|
89
|
+
/** Edge types the pass may propose, deduplicated and sorted. */
|
|
90
|
+
export const TYPED_EDGE_TYPES = Array.from(new Set(TYPED_EDGE_ALLOWLIST.map((p) => p.edgeType))).sort();
|
|
91
|
+
/** Prose-bearing node labels the pass enumerates. Fixed set; non-prose labels are out of scope. */
|
|
92
|
+
export const PROSE_BEARING_LABELS = [
|
|
93
|
+
"Message",
|
|
94
|
+
"Page",
|
|
95
|
+
"Meeting",
|
|
96
|
+
"Email",
|
|
97
|
+
"Idea",
|
|
98
|
+
"Note",
|
|
99
|
+
"Post",
|
|
100
|
+
"Report",
|
|
101
|
+
];
|
|
102
|
+
//# sourceMappingURL=typed-edge-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-edge-schema.js","sourceRoot":"","sources":["../../src/lib/typed-edge-schema.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js
CHANGED
|
@@ -47,7 +47,24 @@ const baseParams = {
|
|
|
47
47
|
describe("memorySearch — fields projection (Task 138)", () => {
|
|
48
48
|
beforeEach(() => {
|
|
49
49
|
hybridMock.mockReset();
|
|
50
|
-
hybridMock.mockResolvedValue({
|
|
50
|
+
hybridMock.mockResolvedValue({
|
|
51
|
+
mode: "hybrid",
|
|
52
|
+
results: [makeResult()],
|
|
53
|
+
expandMs: 0,
|
|
54
|
+
rawMerged: 1,
|
|
55
|
+
suppressed: 0,
|
|
56
|
+
bm25Bypass: 0,
|
|
57
|
+
threshold: null,
|
|
58
|
+
stageCounts: {
|
|
59
|
+
expansions: 1,
|
|
60
|
+
vector: 1,
|
|
61
|
+
bm25: 0,
|
|
62
|
+
fused: 1,
|
|
63
|
+
boosted: 1,
|
|
64
|
+
deduped: 1,
|
|
65
|
+
final: 1,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
51
68
|
});
|
|
52
69
|
it("fields undefined → response identical to today (all properties present, related untouched)", async () => {
|
|
53
70
|
const res = await memorySearch({ ...baseParams });
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-search-fields.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-search-fields.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,yEAAyE;AACzE,8DAA8D;AAC9D,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3B,EAAE,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACpD,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,SAAS,UAAU;IACjB,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE;aAC7C;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,qBAAqB;SACjC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-search-fields.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-search-fields.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,yEAAyE;AACzE,8DAA8D;AAC9D,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3B,EAAE,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACpD,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,SAAS,UAAU;IACjB,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE;aAC7C;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,qBAAqB;SACjC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,iBAAiB,CAAC;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI;YACf,WAAW,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,CAAC;aACT;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAChC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,qBAAqB;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAA0B,EAAE,EAAE;YACrD,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC,CAAgC,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE9E,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,MAAM,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -10,6 +10,11 @@ vi.mock("../../lib/embeddings.js", () => ({
|
|
|
10
10
|
}));
|
|
11
11
|
vi.mock("../../lib/graph-write-gate.js", () => ({
|
|
12
12
|
checkGraphWriteGate: vi.fn().mockResolvedValue({ ok: true }),
|
|
13
|
+
checkPropertyWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
14
|
+
COMPILED_TRUTH_MAX_CHARS: 2000,
|
|
15
|
+
}));
|
|
16
|
+
vi.mock("../../lib/compiled-truth-rewriter.js", () => ({
|
|
17
|
+
rewriteCompiledTruth: vi.fn().mockResolvedValue({ kind: "refused", reason: "no-events" }),
|
|
13
18
|
}));
|
|
14
19
|
vi.mock("./memory-write.js", () => ({
|
|
15
20
|
buildTextRepresentation: () => "stub-text",
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-update-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-update-emit.test.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;AAEtC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW;CAC9B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-update-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-update-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ vi.mock("../../lib/schema-validator.js", () => ({
|
|
|
13
13
|
}));
|
|
14
14
|
vi.mock("../../lib/graph-write-gate.js", () => ({
|
|
15
15
|
checkGraphWriteGate: vi.fn().mockResolvedValue({ ok: true }),
|
|
16
|
+
checkPropertyWriteGate: vi.fn().mockReturnValue({ ok: true }),
|
|
17
|
+
COMPILED_TRUTH_MAX_CHARS: 2000,
|
|
16
18
|
}));
|
|
17
19
|
vi.mock("../../../../../../lib/graph-write/dist/index.js", () => ({
|
|
18
20
|
writeNodeWithEdges: vi.fn(),
|
package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-write-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-write-emit.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;AAEtC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW;CAC9B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-write-emit.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/memory-write-emit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-search.d.ts","sourceRoot":"","sources":["../../src/tools/memory-search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAmB7G,MAAM,MAAM,kBAAkB,GAC1B,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAC3B;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1C,wBAAsB,YAAY,CAChC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"memory-search.d.ts","sourceRoot":"","sources":["../../src/tools/memory-search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAmB7G,MAAM,MAAM,kBAAkB,GAC1B,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAC3B;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1C,wBAAsB,YAAY,CAChC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyEzB"}
|
|
@@ -5,8 +5,22 @@ export async function memorySearch(params) {
|
|
|
5
5
|
const session = getSession();
|
|
6
6
|
const limit = params.limit ?? 10;
|
|
7
7
|
const { fields, ...hybridParams } = params;
|
|
8
|
+
const callStart = Date.now();
|
|
8
9
|
try {
|
|
9
10
|
const res = await hybrid(session, embed, { ...hybridParams, limit });
|
|
11
|
+
const callMs = Date.now() - callStart;
|
|
12
|
+
process.stderr.write(`[graph-search:hybrid] accountId=${(params.accountId ?? "").slice(0, 8)} ` +
|
|
13
|
+
`retrievalClass=${params.retrievalClass ?? "general"} ` +
|
|
14
|
+
`expansions=${res.stageCounts.expansions} ` +
|
|
15
|
+
`vector=${res.stageCounts.vector} ` +
|
|
16
|
+
`bm25=${res.stageCounts.bm25} ` +
|
|
17
|
+
`fused=${res.stageCounts.fused} ` +
|
|
18
|
+
`boosted=${res.stageCounts.boosted} ` +
|
|
19
|
+
`deduped=${res.stageCounts.deduped} ` +
|
|
20
|
+
`final=${res.stageCounts.final} ` +
|
|
21
|
+
`mode=${res.mode} ` +
|
|
22
|
+
`ms=${callMs} ` +
|
|
23
|
+
`expand-ms=${res.expandMs}\n`);
|
|
10
24
|
try {
|
|
11
25
|
const trashCensus = await session.run(`MATCH (n:Trashed) WHERE n.accountId = $accountId RETURN count(n) AS c`, { accountId: params.accountId });
|
|
12
26
|
const skipped = trashCensus.records[0]?.get("c");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-search.js","sourceRoot":"","sources":["../../src/tools/memory-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAwC,MAAM,+CAA+C,CAAC;AAuB7G,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAA0B;IAE1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-search.js","sourceRoot":"","sources":["../../src/tools/memory-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool wrapper for the typed-edge pass.
|
|
3
|
+
*
|
|
4
|
+
* Called by `database-operator` (Task-spawned by admin at the session-end
|
|
5
|
+
* retrospective). Admin does not call this tool directly — it is not in
|
|
6
|
+
* `ADMIN_CORE_TOOLS`. Backfill invokes the underlying `runTypedEdgePass`
|
|
7
|
+
* via the CLI script, bypassing this tool.
|
|
8
|
+
*
|
|
9
|
+
* Returns the pass counters so database-operator can hand them back to
|
|
10
|
+
* admin for the `session-retrospective-mark-complete` call.
|
|
11
|
+
*/
|
|
12
|
+
import type { Session } from "neo4j-driver";
|
|
13
|
+
import { type TypedEdgePassResult } from "../lib/typed-edge-pass.js";
|
|
14
|
+
export interface MemoryTypedEdgePassArgs {
|
|
15
|
+
/**
|
|
16
|
+
* Lower bound on `node.updatedAt`. The admin agent passes the session
|
|
17
|
+
* start timestamp from the retrospective prompt. Backfill mode passes
|
|
18
|
+
* null (handled by the CLI script, not this tool).
|
|
19
|
+
*/
|
|
20
|
+
sinceIso: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional conversation id stamped onto the createdBy provenance of
|
|
23
|
+
* MERGEd edges. Admin passes its own conversation id; if absent, the
|
|
24
|
+
* env var fallback is used.
|
|
25
|
+
*/
|
|
26
|
+
conversationId?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function memoryTypedEdgePass(args: MemoryTypedEdgePassArgs, session: Session, accountId: string): Promise<TypedEdgePassResult>;
|
|
29
|
+
//# sourceMappingURL=memory-typed-edge-pass.d.ts.map
|