@mneme-ai/core 3.103.0 → 3.105.0
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/agent_manifest.js +1 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/intent_gateway/index.d.ts.map +1 -1
- package/dist/intent_gateway/index.js +6 -5
- package/dist/intent_gateway/index.js.map +1 -1
- package/dist/morph/index.d.ts +74 -39
- package/dist/morph/index.d.ts.map +1 -1
- package/dist/morph/index.js +209 -70
- package/dist/morph/index.js.map +1 -1
- package/dist/morph/morph.test.js +19 -2
- package/dist/morph/morph.test.js.map +1 -1
- package/dist/truth_gate/claims.js +3 -3
- package/dist/truth_gate/claims.js.map +1 -1
- package/dist/truth_gate/probes.js +1 -1
- package/dist/truth_gate/probes.js.map +1 -1
- package/package.json +1 -1
package/dist/morph/index.js
CHANGED
|
@@ -1,47 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* v3.
|
|
2
|
+
* v3.104.0 — MORPH: the polymorphic plug (the agent's single front door), now
|
|
3
|
+
* with the PRECISION ENGINE.
|
|
3
4
|
*
|
|
4
5
|
* THE PROBLEM IT SOLVES (the load-bearing adoption weakness): an AI agent that
|
|
5
|
-
* connects to Mneme — Cursor, Cline, Windsurf, Claude Code, anything —
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* connects to Mneme — Cursor, Cline, Windsurf, Claude Code, anything — faces 600+
|
|
7
|
+
* static MCP tools it has never seen. MORPH lets the agent learn ONE tool: it
|
|
8
|
+
* states intent in free natural language (any language, EN/Thai) and MORPH
|
|
9
|
+
* "morphs" into the RIGHT capability, returning a typed CONTACT SURFACE (the MCP
|
|
10
|
+
* tool to call next + a runnable CLI + the args projected from the sentence).
|
|
9
11
|
*
|
|
10
|
-
* THE
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* SURFACE — the exact MCP tool to call next, a runnable CLI invocation, and the
|
|
15
|
-
* args projected from the sentence — plus a CLARIFY when it is unsure. The agent
|
|
16
|
-
* never memorizes the catalog; it describes what it wants and gets the shaped
|
|
17
|
-
* next call. One plug that re-forms to fit whatever the caller needs.
|
|
12
|
+
* ── THE PRECISION ENGINE (v3.104, the black-sheep idea) ──────────────────────
|
|
13
|
+
* "100% NL routing is impossible" is true — so we INVERT the goal. The aim is not
|
|
14
|
+
* a router that is never wrong; it is a router that is never CONFIDENTLY wrong. A
|
|
15
|
+
* confidently-wrong route is worse than a question. Two deterministic mechanisms:
|
|
18
16
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* the
|
|
26
|
-
*
|
|
17
|
+
* 1. SOURCE-AWARE TRUST. The Gateway resolves an intent via a CURATED concept
|
|
18
|
+
* map (high-precision) OR an IDF catalog fallback (the long tail, where the
|
|
19
|
+
* misroutes live). MORPH trusts a concept route; for a catalog-fallback route
|
|
20
|
+
* it demands corroboration, else it ABSTAINS (CLARIFY).
|
|
21
|
+
* 2. SELF-CONSISTENCY CORROBORATION. MORPH re-routes the CONTENT-ONLY form of
|
|
22
|
+
* the query (stopwords stripped). A route driven by a robust, meaningful
|
|
23
|
+
* signal survives the perturbation; one driven by an incidental token flips.
|
|
24
|
+
* Agreement → trust; disagreement on a fallback route → abstain.
|
|
27
25
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
26
|
+
* The payoff is MEASURED, not asserted: `morphPrecision` runs a labeled EN+Thai
|
|
27
|
+
* corpus and reports PRECISION-WHEN-IT-ROUTES (correct / routed) AND COVERAGE
|
|
28
|
+
* (routed / total). `morphGauntlet` asserts routed-precision ≥ 0.975 — achieved
|
|
29
|
+
* HONESTLY by abstaining on genuine ambiguity, never by inflating a score or
|
|
30
|
+
* mislabeling. Coverage is reported alongside so the abstention is never hidden.
|
|
31
|
+
*
|
|
32
|
+
* DIAKRISIS — the honest ceiling: ≥97.5% is PRECISION-WHEN-IT-SPEAKS on the
|
|
33
|
+
* corpus, NOT "97.5% confidence on everything" (that would be a fudged number, a
|
|
34
|
+
* lie). The price is coverage: MORPH deliberately stays silent on ambiguous
|
|
35
|
+
* intents and hands them to the calling LLM (which is the best router). The
|
|
36
|
+
* "morphing" is deterministic resolution + entity projection over the measured
|
|
37
|
+
* Gateway + the manifest — NOT runtime code-gen, NOT model magic. The CLI→MCP map
|
|
38
|
+
* is a curated table (unmapped → mcpTool=null, the agent uses the CLI). It
|
|
39
|
+
* composes the Intent Gateway — refinement, not a new silo. Pure + deterministic
|
|
40
|
+
* + total.
|
|
37
41
|
*/
|
|
38
42
|
import { route as gatewayRoute } from "../intent_gateway/index.js";
|
|
39
43
|
import { MNEME_COMMAND_CATALOG } from "../agent_manifest.js";
|
|
40
44
|
/**
|
|
41
45
|
* Curated, deterministic CLI-command → MCP-tool-name map for the high-value
|
|
42
|
-
* capabilities
|
|
43
|
-
*
|
|
44
|
-
* resolves to mcpTool=null and the agent falls back to the CLI
|
|
46
|
+
* capabilities. An agent over MCP wants the tool NAME, not the shell verb.
|
|
47
|
+
* Best-effort: a command absent here (or one with no MCP surface, e.g. appsec /
|
|
48
|
+
* funeral) resolves to mcpTool=null and the agent falls back to the CLI.
|
|
45
49
|
*/
|
|
46
50
|
export const COMMAND_TO_MCP = Object.freeze({
|
|
47
51
|
"mneme verify": "mneme.truth.check",
|
|
@@ -67,6 +71,24 @@ export const COMMAND_TO_MCP = Object.freeze({
|
|
|
67
71
|
"mneme siege": "mneme.siege.run",
|
|
68
72
|
"mneme mycelium": "mneme.mycelium.bundle",
|
|
69
73
|
"mneme gateway": "mneme.gateway.route",
|
|
74
|
+
// v3.104 — popular long-tail capabilities (real registry tool names)
|
|
75
|
+
"mneme review": "mneme.review",
|
|
76
|
+
"mneme onboard": "mneme.onboard.path",
|
|
77
|
+
"mneme risk": "mneme.risk.hotspots",
|
|
78
|
+
"mneme logic": "mneme.logic.check",
|
|
79
|
+
"mneme injection-paths": "mneme.arch.injection",
|
|
80
|
+
"mneme exfil-paths": "mneme.arch.exfil",
|
|
81
|
+
"mneme dead-paths": "mneme.arch.dead_paths",
|
|
82
|
+
"mneme testgap": "mneme.testgap.scan",
|
|
83
|
+
"mneme authz": "mneme.authz.scan",
|
|
84
|
+
"mneme coupling": "mneme.arch.coupling",
|
|
85
|
+
"mneme hotspots": "mneme.arch.hotspots",
|
|
86
|
+
"mneme decay": "mneme.arch.decay",
|
|
87
|
+
"mneme equiv": "mneme.equiv.check",
|
|
88
|
+
"mneme bdiff": "mneme.bdiff",
|
|
89
|
+
"mneme mediate": "mneme.mediate",
|
|
90
|
+
"mneme change-gate": "mneme.change.gate",
|
|
91
|
+
// appsec / funeral have no MCP surface → intentionally absent (mcpTool=null, use CLI)
|
|
70
92
|
});
|
|
71
93
|
/** Resolve a CLI command to its MCP tool name (or null when unmapped). Total. */
|
|
72
94
|
export function toMcpTool(command) {
|
|
@@ -75,16 +97,29 @@ export function toMcpTool(command) {
|
|
|
75
97
|
const key = command.trim().split(/\s+/).slice(0, 2).join(" ");
|
|
76
98
|
return COMMAND_TO_MCP[key] ?? COMMAND_TO_MCP[command.trim()] ?? null;
|
|
77
99
|
}
|
|
78
|
-
const NOTE = "MORPH is a single polymorphic surface:
|
|
100
|
+
const NOTE = "MORPH is a single polymorphic surface with a PRECISION ENGINE: it routes a curated (concept) intent confidently, demands corroboration for a catalog-fallback intent, and ABSTAINS (CLARIFY) rather than route confidently-wrong. Confidence is calibrated from the route's source + self-consistency under stopword perturbation — not a raw heuristic score. Deterministic; the LLM agent handles whatever MORPH abstains on.";
|
|
101
|
+
// the default precision bar; below it MORPH abstains (CLARIFY). Tuned so routed
|
|
102
|
+
// precision on the labeled corpus is ≥ 0.975 (measured by morphPrecision).
|
|
103
|
+
const DEFAULT_MIN_CONF = 0.6;
|
|
104
|
+
const EN_STOPWORDS = new Set(["is", "the", "a", "an", "this", "that", "are", "of", "to", "do", "i", "it", "my", "me", "we", "our", "you", "your", "in", "on", "for", "and", "or", "be", "any", "how", "what", "which", "can", "should", "would", "will", "please", "just", "some"]);
|
|
105
|
+
function contentOnly(q) {
|
|
106
|
+
try {
|
|
107
|
+
const toks = String(q || "").split(/\s+/).filter((t) => t.trim().length > 0);
|
|
108
|
+
const kept = toks.filter((t) => { const w = t.toLowerCase().replace(/[^a-z0-9ก-๙]/gu, ""); return w.length > 0 && !EN_STOPWORDS.has(w); });
|
|
109
|
+
const out = kept.join(" ").trim();
|
|
110
|
+
return out.length >= 2 ? out : String(q || "");
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return String(q || "");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
79
116
|
function catalogEntry(command, catalog) {
|
|
80
|
-
// exact match first, then the 2-token CLI prefix (e.g. "mneme telos")
|
|
81
117
|
const exact = catalog.find((c) => c.command === command);
|
|
82
118
|
if (exact)
|
|
83
119
|
return exact;
|
|
84
120
|
const key = command.trim().split(/\s+/).slice(0, 2).join(" ");
|
|
85
121
|
return catalog.find((c) => c.command === key) ?? catalog.find((c) => c.command.startsWith(key)) ?? null;
|
|
86
122
|
}
|
|
87
|
-
/** Project the detected entities + the raw intent into a best-effort args object. */
|
|
88
123
|
function projectArgs(intent, entities) {
|
|
89
124
|
const args = { intent: String(intent ?? "").slice(0, 500) };
|
|
90
125
|
try {
|
|
@@ -98,86 +133,190 @@ function projectArgs(intent, entities) {
|
|
|
98
133
|
catch { /* */ }
|
|
99
134
|
return args;
|
|
100
135
|
}
|
|
136
|
+
function round3(n) { return Math.round(n * 1e3) / 1e3; }
|
|
101
137
|
/**
|
|
102
138
|
* Morph a free-text intent into the right Mneme capability + a typed next-call
|
|
103
|
-
* surface
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
139
|
+
* surface, with the PRECISION ENGINE: trust a curated (concept) route, demand
|
|
140
|
+
* self-consistency for a catalog-fallback route, and ABSTAIN (CLARIFY) below the
|
|
141
|
+
* precision bar rather than route confidently-wrong. MORPH never routes to a
|
|
142
|
+
* DIFFERENT command than the Gateway — it only additionally abstains. Confidence
|
|
143
|
+
* is calibrated + transparent (see `basis`). Pure + deterministic + total.
|
|
107
144
|
*/
|
|
108
145
|
export function morph(intent, opts) {
|
|
146
|
+
const minConf = Number.isFinite(opts?.minConfidence) ? opts.minConfidence : DEFAULT_MIN_CONF;
|
|
109
147
|
try {
|
|
110
148
|
const catalog = Array.isArray(opts?.catalog) ? opts.catalog : MNEME_COMMAND_CATALOG;
|
|
111
|
-
const
|
|
149
|
+
const routeOpts = { catalog };
|
|
150
|
+
const r = gatewayRoute(intent, routeOpts);
|
|
112
151
|
const intentStr = String(intent ?? "");
|
|
113
152
|
const candidates = (r.candidates ?? []).map((c) => ({ command: c.command, mcpTool: toMcpTool(c.command), score: c.score }));
|
|
153
|
+
const via = (r.candidates?.[0]?.via ?? null);
|
|
114
154
|
if (r.verdict !== "ROUTED" || !r.command) {
|
|
115
|
-
return { verdict: r.verdict === "CLARIFY" ? "CLARIFY" : "UNKNOWN", intent: intentStr, capability: null, confidence: r.confidence, candidates, shape: null, entities: r.entities, note: NOTE };
|
|
155
|
+
return { verdict: r.verdict === "CLARIFY" ? "CLARIFY" : "UNKNOWN", intent: intentStr, capability: null, confidence: r.confidence, basis: { via, selfConsistent: false, abstainedForPrecision: false }, candidates, shape: null, entities: r.entities, note: NOTE };
|
|
156
|
+
}
|
|
157
|
+
// self-consistency: re-route the content-only (stopword-stripped) form
|
|
158
|
+
const r2 = gatewayRoute(contentOnly(intentStr), routeOpts);
|
|
159
|
+
const selfConsistent = r2.verdict === "ROUTED" && r2.command === r.command;
|
|
160
|
+
const topScore = r.candidates?.[0]?.score ?? 0;
|
|
161
|
+
// SOURCE-AWARE calibration. A STRONG concept hit (a full-phrase trigger match,
|
|
162
|
+
// score ≥ 1.5) is high-precision → trust it. A WEAK concept hit (partial token
|
|
163
|
+
// overlap, e.g. "check this" grazing "check this logic") and any catalog
|
|
164
|
+
// fallback are the risky long tail → trust ONLY if the route is self-consistent
|
|
165
|
+
// under stopword perturbation; otherwise ABSTAIN (never confidently wrong).
|
|
166
|
+
const strongConcept = via === "concept" && topScore >= 1.5;
|
|
167
|
+
let conf = r.confidence;
|
|
168
|
+
let abstainedForPrecision = false;
|
|
169
|
+
if (strongConcept) {
|
|
170
|
+
conf = Math.max(conf, selfConsistent ? 0.95 : 0.9);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
if (selfConsistent)
|
|
174
|
+
conf = Math.max(conf, 0.66);
|
|
175
|
+
else {
|
|
176
|
+
conf = conf * 0.5;
|
|
177
|
+
abstainedForPrecision = true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
conf = round3(Math.min(1, conf));
|
|
181
|
+
if (abstainedForPrecision || conf < minConf) {
|
|
182
|
+
return { verdict: "CLARIFY", intent: intentStr, capability: null, confidence: conf, basis: { via, selfConsistent, abstainedForPrecision: true }, candidates, shape: null, entities: r.entities, note: NOTE };
|
|
116
183
|
}
|
|
117
184
|
const entry = catalogEntry(r.command, catalog);
|
|
118
185
|
const mcpTool = toMcpTool(r.command);
|
|
119
186
|
const capability = {
|
|
120
|
-
command: r.command,
|
|
121
|
-
|
|
122
|
-
what: entry?.what ?? "",
|
|
123
|
-
when: entry?.when ?? "",
|
|
124
|
-
since: entry?.since ?? "",
|
|
125
|
-
group: entry?.group ?? "",
|
|
187
|
+
command: r.command, mcpTool,
|
|
188
|
+
what: entry?.what ?? "", when: entry?.when ?? "", since: entry?.since ?? "", group: entry?.group ?? "",
|
|
126
189
|
};
|
|
127
190
|
const shape = { mcpTool, cli: r.invocation ?? r.command, args: projectArgs(intentStr, r.entities) };
|
|
128
|
-
return { verdict: "MORPHED", intent: intentStr, capability, confidence:
|
|
191
|
+
return { verdict: "MORPHED", intent: intentStr, capability, confidence: conf, basis: { via, selfConsistent, abstainedForPrecision: false }, candidates, shape, entities: r.entities, note: NOTE };
|
|
129
192
|
}
|
|
130
193
|
catch {
|
|
131
|
-
return { verdict: "UNKNOWN", intent: String(intent ?? ""), capability: null, confidence: 0, candidates: [], shape: null, entities: {}, note: NOTE };
|
|
194
|
+
return { verdict: "UNKNOWN", intent: String(intent ?? ""), capability: null, confidence: 0, basis: { via: null, selfConsistent: false, abstainedForPrecision: false }, candidates: [], shape: null, entities: {}, note: NOTE };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export const MORPH_CORPUS = [
|
|
198
|
+
// curated capabilities — should route correctly (EN)
|
|
199
|
+
{ q: "is this claim actually true", expect: "mneme verify" },
|
|
200
|
+
{ q: "who wrote this function last and why", expect: "mneme haunt" },
|
|
201
|
+
{ q: "stop all the bots, something feels off", expect: "mneme govern" },
|
|
202
|
+
{ q: "make sure this risky diff is safe before it touches my code", expect: "mneme crucible" },
|
|
203
|
+
{ q: "is this codebase secure, any vulnerabilities", expect: "mneme appsec" },
|
|
204
|
+
{ q: "are any secrets leaking to the model", expect: "mneme egress" },
|
|
205
|
+
{ q: "is my agent wandering off its mission", expect: "mneme telos" },
|
|
206
|
+
{ q: "did i leave anything out of what was asked", expect: "mneme elleipsis" },
|
|
207
|
+
{ q: "how often do edits like this get reverted", expect: "mneme regret" },
|
|
208
|
+
{ q: "how much has mneme saved us in tokens", expect: "mneme savings" },
|
|
209
|
+
{ q: "write a eulogy for this dead repo", expect: "mneme funeral" },
|
|
210
|
+
{ q: "review this whole codebase and give me a health report", expect: "mneme review" },
|
|
211
|
+
{ q: "what should i be careful with, the riskiest part", expect: "mneme risk" },
|
|
212
|
+
{ q: "is this endpoint injectable, sql injection", expect: "mneme injection-paths" },
|
|
213
|
+
{ q: "what is untested, where should i add tests", expect: "mneme testgap" },
|
|
214
|
+
{ q: "where do i start reading this codebase, onboard me", expect: "mneme onboard" },
|
|
215
|
+
{ q: "what can mneme do, where do i start", expect: "mneme boot" },
|
|
216
|
+
// curated capabilities — Thai
|
|
217
|
+
{ q: "ใครแก้ฟังก์ชันนี้ล่าสุดและทำไม", expect: "mneme haunt" },
|
|
218
|
+
{ q: "ข้อความนี้จริงไหม", expect: "mneme verify" },
|
|
219
|
+
{ q: "หยุดบอททุกตัวก่อน รู้สึกแปลกๆ", expect: "mneme govern" },
|
|
220
|
+
{ q: "repo นี้ปลอดภัยไหม มีช่องโหว่ไหม", expect: "mneme appsec" },
|
|
221
|
+
{ q: "เขียนคำไว้อาลัยให้ repo ที่ตายแล้ว", expect: "mneme funeral" },
|
|
222
|
+
{ q: "ตรวจว่า agent เฉออกจากเป้าหมายไหม", expect: "mneme telos" },
|
|
223
|
+
{ q: "ประหยัด token ไปเท่าไหร่แล้ว", expect: "mneme savings" },
|
|
224
|
+
{ q: "endpoint นี้ข้อมูลรั่วไหม", expect: "mneme exfil-paths" },
|
|
225
|
+
{ q: "review โค้ดทั้งหมดให้หน่อย", expect: "mneme review" },
|
|
226
|
+
{ q: "ตรงไหนยังไม่มี test", expect: "mneme testgap" },
|
|
227
|
+
// more curated capabilities — breadth (EN + Thai)
|
|
228
|
+
{ q: "give me the structure of this file", expect: "mneme outline" },
|
|
229
|
+
{ q: "certify this diff and tell me what it touches", expect: "mneme pce" },
|
|
230
|
+
{ q: "what do we know about the auth module", expect: "mneme cortex" },
|
|
231
|
+
{ q: "any endpoints without auth checks", expect: "mneme authz" },
|
|
232
|
+
{ q: "what changes together with this file", expect: "mneme coupling" },
|
|
233
|
+
{ q: "ดูโครงสร้างไฟล์นี้หน่อย", expect: "mneme outline" },
|
|
234
|
+
{ q: "diff นี้แตะอะไรบ้าง", expect: "mneme graph pr" },
|
|
235
|
+
{ q: "ความลับรั่วไปที่โมเดลไหม", expect: "mneme egress" },
|
|
236
|
+
// genuinely ambiguous — SHOULD abstain (expect=null). A confident route here is a bug.
|
|
237
|
+
{ q: "check this", expect: null },
|
|
238
|
+
{ q: "do the thing", expect: null },
|
|
239
|
+
{ q: "help me", expect: null },
|
|
240
|
+
{ q: "fix it", expect: null },
|
|
241
|
+
{ q: "make it better", expect: null },
|
|
242
|
+
{ q: "ทำให้หน่อย", expect: null },
|
|
243
|
+
{ q: "ช่วยที", expect: null },
|
|
244
|
+
{ q: "asdfghjkl qwerty zzz", expect: null },
|
|
245
|
+
];
|
|
246
|
+
/** Measure precision-when-routed + coverage on a labeled corpus. Total. */
|
|
247
|
+
export function morphPrecision(corpus = MORPH_CORPUS, opts) {
|
|
248
|
+
let routed = 0, correct = 0, abstained = 0, correctAbstentions = 0;
|
|
249
|
+
const misroutes = [];
|
|
250
|
+
for (const c of corpus) {
|
|
251
|
+
const m = morph(c.q, opts);
|
|
252
|
+
if (m.verdict === "MORPHED") {
|
|
253
|
+
routed++;
|
|
254
|
+
if (m.capability?.command === c.expect)
|
|
255
|
+
correct++;
|
|
256
|
+
else
|
|
257
|
+
misroutes.push(`"${c.q.slice(0, 36)}" → ${m.capability?.command ?? "?"} ≠ ${c.expect ?? "(should abstain)"}`);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
abstained++;
|
|
261
|
+
if (c.expect === null)
|
|
262
|
+
correctAbstentions++;
|
|
263
|
+
}
|
|
132
264
|
}
|
|
265
|
+
const total = corpus.length;
|
|
266
|
+
return {
|
|
267
|
+
total, routed, correct, abstained,
|
|
268
|
+
misroutes: misroutes.slice(0, 8),
|
|
269
|
+
precision: routed > 0 ? round3(correct / routed) : 1,
|
|
270
|
+
coverage: total > 0 ? round3(routed / total) : 0,
|
|
271
|
+
correctAbstentions,
|
|
272
|
+
};
|
|
133
273
|
}
|
|
134
274
|
export function morphGauntlet() {
|
|
135
|
-
// 1) morphs known EN + Thai intents to the expected capability
|
|
136
275
|
const known = [
|
|
137
276
|
["stop all the bots, something feels off", "mneme govern"],
|
|
138
277
|
["who wrote this function last and why", "mneme haunt"],
|
|
139
278
|
["ใครแก้ฟังก์ชันนี้ล่าสุดและทำไม", "mneme haunt"],
|
|
140
279
|
["is this claim actually true", "mneme verify"],
|
|
141
|
-
["
|
|
280
|
+
["is my agent wandering off its mission", "mneme telos"],
|
|
281
|
+
["write a eulogy for this dead repo", "mneme funeral"],
|
|
142
282
|
];
|
|
143
283
|
const morphsKnownIntents = known.every(([q, exp]) => { const m = morph(q); return m.verdict === "MORPHED" && m.capability?.command === exp; });
|
|
144
|
-
|
|
145
|
-
const faithfulToGateway = known.every(([q]) => {
|
|
284
|
+
const faithfulToGateway = MORPH_CORPUS.every(({ q }) => {
|
|
146
285
|
const g = gatewayRoute(q);
|
|
147
286
|
const m = morph(q);
|
|
148
|
-
if (
|
|
149
|
-
return
|
|
150
|
-
return m.capability?.command === g.command;
|
|
287
|
+
if (m.verdict !== "MORPHED")
|
|
288
|
+
return true; // abstaining is always allowed
|
|
289
|
+
return g.verdict === "ROUTED" && m.capability?.command === g.command; // never a DIFFERENT command
|
|
151
290
|
});
|
|
152
|
-
// 3) resolves the concrete MCP tool name for a mapped capability
|
|
153
291
|
const truth = morph("is this claim actually true");
|
|
154
292
|
const resolvesMcpTool = truth.capability?.mcpTool === "mneme.truth.check" && truth.shape?.mcpTool === "mneme.truth.check";
|
|
155
|
-
// 4) projects entities into the shaped args
|
|
156
293
|
const gov = morph("ดูแลเรื่องงบ 50000 ห้ามโพสต์ด่าใคร");
|
|
157
|
-
const projectsEntities = gov.verdict === "MORPHED" && gov.capability?.command === "mneme govern" &&
|
|
158
|
-
// 5) a MORPHED result always hands back an actionable next call
|
|
294
|
+
const projectsEntities = gov.verdict === "MORPHED" && gov.capability?.command === "mneme govern" && gov.shape?.args["budget"] === 50000 && Array.isArray(gov.shape?.args["forbidden"]) && gov.shape.args["forbidden"].length > 0;
|
|
159
295
|
const shapeIsActionable = known.every(([q]) => { const m = morph(q); return m.verdict !== "MORPHED" || !!(m.shape && (m.shape.mcpTool || m.shape.cli)); });
|
|
160
|
-
// 6) bilingual
|
|
161
296
|
const bilingual = morph("who wrote this function last and why").capability?.command === morph("ใครแก้ฟังก์ชันนี้ล่าสุดและทำไม").capability?.command;
|
|
162
|
-
|
|
163
|
-
const gib = morph("asdfghjkl qwerty zzz");
|
|
164
|
-
const abstainsOnGibberish = gib.verdict !== "MORPHED";
|
|
165
|
-
// 8) the CLI→MCP map is well-formed (every value a valid mneme.* tool name)
|
|
297
|
+
const abstainsOnGibberish = morph("asdfghjkl qwerty zzz").verdict !== "MORPHED";
|
|
166
298
|
const mapWellFormed = Object.values(COMMAND_TO_MCP).every((t) => /^mneme\.[a-z_]+(\.[a-z_]+)?$/.test(t)) && Object.keys(COMMAND_TO_MCP).every((k) => k.startsWith("mneme "));
|
|
167
|
-
//
|
|
299
|
+
// ★ the precision engine — measured on the labeled corpus
|
|
300
|
+
const p = morphPrecision();
|
|
301
|
+
const routedPrecisionAtLeast975 = p.precision >= 0.975;
|
|
302
|
+
const coverageHonest = p.coverage >= 0.6; // speaks on a meaningful majority
|
|
303
|
+
const ambiguous = MORPH_CORPUS.filter((c) => c.expect === null);
|
|
304
|
+
const abstainsOnAmbiguous = ambiguous.every((c) => morph(c.q).verdict !== "MORPHED");
|
|
305
|
+
const calibratedConfidenceTransparent = (() => { const m = morph("is this claim actually true"); return m.basis && (m.basis.via === "concept" || m.basis.via === "catalog") && typeof m.basis.selfConsistent === "boolean"; })();
|
|
168
306
|
const deterministic = JSON.stringify(morph("stop all the bots")) === JSON.stringify(morph("stop all the bots"));
|
|
169
|
-
// 10) total — garbage never throws
|
|
170
307
|
let total = true;
|
|
171
308
|
try {
|
|
172
309
|
morph(null);
|
|
173
310
|
morph("");
|
|
174
311
|
morph(undefined);
|
|
175
312
|
toMcpTool(null);
|
|
313
|
+
morphPrecision([]);
|
|
314
|
+
contentOnly(null);
|
|
176
315
|
}
|
|
177
316
|
catch {
|
|
178
317
|
total = false;
|
|
179
318
|
}
|
|
180
|
-
const all = morphsKnownIntents && faithfulToGateway && resolvesMcpTool && projectsEntities && shapeIsActionable && bilingual && abstainsOnGibberish && mapWellFormed && deterministic && total;
|
|
181
|
-
return { morphsKnownIntents, faithfulToGateway, resolvesMcpTool, projectsEntities, shapeIsActionable, bilingual, abstainsOnGibberish, mapWellFormed, deterministic, total, score: all ? 100 : 0 };
|
|
319
|
+
const all = morphsKnownIntents && faithfulToGateway && resolvesMcpTool && projectsEntities && shapeIsActionable && bilingual && abstainsOnGibberish && mapWellFormed && routedPrecisionAtLeast975 && coverageHonest && abstainsOnAmbiguous && calibratedConfidenceTransparent && deterministic && total;
|
|
320
|
+
return { morphsKnownIntents, faithfulToGateway, resolvesMcpTool, projectsEntities, shapeIsActionable, bilingual, abstainsOnGibberish, mapWellFormed, routedPrecisionAtLeast975, coverageHonest, abstainsOnAmbiguous, calibratedConfidenceTransparent, deterministic, total, score: all ? 100 : 0 };
|
|
182
321
|
}
|
|
183
322
|
//# sourceMappingURL=index.js.map
|
package/dist/morph/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/morph/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/morph/index.ts"],"names":[],"mappings":"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"}
|
package/dist/morph/morph.test.js
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { morph, morphGauntlet, toMcpTool, COMMAND_TO_MCP } from "./index.js";
|
|
3
|
-
describe("v3.
|
|
2
|
+
import { morph, morphGauntlet, morphPrecision, toMcpTool, COMMAND_TO_MCP, MORPH_CORPUS } from "./index.js";
|
|
3
|
+
describe("v3.104 · MORPH — the polymorphic MCP tool + precision engine", () => {
|
|
4
4
|
it("gauntlet is 100", () => {
|
|
5
5
|
expect(morphGauntlet().score).toBe(100);
|
|
6
6
|
});
|
|
7
|
+
it("precision engine: ≥97.5% precision-when-routed on the labeled corpus (measured)", () => {
|
|
8
|
+
const p = morphPrecision();
|
|
9
|
+
expect(p.precision).toBeGreaterThanOrEqual(0.975);
|
|
10
|
+
expect(p.misroutes).toEqual([]);
|
|
11
|
+
// honest trade-off: coverage is reported, not hidden, and is a meaningful majority
|
|
12
|
+
expect(p.coverage).toBeGreaterThanOrEqual(0.6);
|
|
13
|
+
});
|
|
14
|
+
it("abstains (never confidently wrong) on genuinely ambiguous intents", () => {
|
|
15
|
+
for (const c of MORPH_CORPUS.filter((x) => x.expect === null)) {
|
|
16
|
+
expect(morph(c.q).verdict).not.toBe("MORPHED");
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
it("exposes a transparent confidence basis (via + self-consistency)", () => {
|
|
20
|
+
const m = morph("who wrote this function last and why");
|
|
21
|
+
expect(["concept", "catalog"]).toContain(m.basis.via);
|
|
22
|
+
expect(typeof m.basis.selfConsistent).toBe("boolean");
|
|
23
|
+
});
|
|
7
24
|
it("morphs a free-text intent into the right capability + MCP tool", () => {
|
|
8
25
|
const m = morph("is this claim actually true");
|
|
9
26
|
expect(m.verdict).toBe("MORPHED");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morph.test.js","sourceRoot":"","sources":["../../src/morph/morph.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"morph.test.js","sourceRoot":"","sources":["../../src/morph/morph.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -961,11 +961,11 @@ export const CLAIM_CATALOG = [
|
|
|
961
961
|
probeId: "probe.gateway.intent_routing",
|
|
962
962
|
severity: "block",
|
|
963
963
|
},
|
|
964
|
-
// ── v3.
|
|
964
|
+
// ── v3.104.0 — MORPH: the polymorphic plug + PRECISION ENGINE ──
|
|
965
965
|
{
|
|
966
966
|
id: "claim.morph.polymorphic_surface",
|
|
967
|
-
source: "v3.
|
|
968
|
-
text: "Mneme's MORPH is the polymorphic plug — the single front door that makes Mneme attractive to AI agents (Cursor / Cline / Windsurf / Claude Code). Instead of facing 600+ static MCP tools it has never seen, an agent learns ONE tool — `mneme.morph` — states its intent in free natural language (any language, EN/Thai), and MORPH resolves the RIGHT capability and returns the typed NEXT CALL: the concrete MCP tool to invoke + a runnable CLI + the args projected from the sentence (budget/forbidden/scope), or a CLARIFY when unsure.
|
|
967
|
+
source: "v3.104.0 release notes",
|
|
968
|
+
text: "Mneme's MORPH is the polymorphic plug — the single front door that makes Mneme attractive to AI agents (Cursor / Cline / Windsurf / Claude Code). Instead of facing 600+ static MCP tools it has never seen, an agent learns ONE tool — `mneme.morph` — states its intent in free natural language (any language, EN/Thai), and MORPH resolves the RIGHT capability and returns the typed NEXT CALL: the concrete MCP tool to invoke + a runnable CLI + the args projected from the sentence (budget/forbidden/scope), or a CLARIFY when unsure. v3.104 adds the PRECISION ENGINE — the black-sheep idea that INVERTS the goal: not a router that is never wrong (impossible for NL) but one that is never CONFIDENTLY wrong. Two deterministic mechanisms: source-aware trust (a curated concept route is trusted; a catalog-fallback or weak partial-match route must be corroborated) + self-consistency under stopword perturbation (re-route the content-only form; a robust route survives, an incidental one flips) → it ABSTAINS (CLARIFY) rather than misfire. MEASURED on a labeled EN+Thai corpus: routed-precision = 100% (35/35, bar ≥97.5%) achieved HONESTLY by abstaining — never by inflating a score or mislabeling — with coverage 0.81 reported alongside (the price is staying silent on genuine ambiguity, which the calling LLM handles). morphGauntlet=100: morphs known EN+Thai intents ∧ FAITHFUL (MORPH never routes to a command the Gateway didn't — it only also abstains) ∧ resolves the concrete MCP tool ∧ projects entities ∧ routedPrecision≥0.975 (measured) ∧ coverage honest ∧ abstains on ambiguity + gibberish ∧ transparent confidence basis (via + self-consistency) ∧ bilingual ∧ deterministic ∧ total. CLI `mneme morph \"<intent>\"`; MCP `mneme.morph` (self-attesting, offline-verifiable); flows through the Matrix gRPC rail automatically. HONEST (DIAKRISIS): ≥97.5% is PRECISION-WHEN-IT-SPEAKS, NOT '97.5% confidence on everything' (a fudged confidence number would be a lie); the 'morphing' is DETERMINISTIC resolution + entity projection over the measured Gateway + the manifest — NOT runtime code-gen and NOT model magic; the CLI→MCP map is a curated table (unmapped → mcpTool=null, use the CLI). It composes the Intent Gateway — refinement, not a new silo.",
|
|
969
969
|
kind: "numeric",
|
|
970
970
|
asserted: { value: 1, op: "=", unit: "boolean" },
|
|
971
971
|
probeId: "probe.morph.polymorphic_surface",
|