@mneme-ai/core 2.19.22 → 2.19.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/autonomic_breath/autonomic_breath.test.d.ts +2 -0
  2. package/dist/autonomic_breath/autonomic_breath.test.d.ts.map +1 -0
  3. package/dist/autonomic_breath/autonomic_breath.test.js +140 -0
  4. package/dist/autonomic_breath/autonomic_breath.test.js.map +1 -0
  5. package/dist/autonomic_breath/index.d.ts +135 -0
  6. package/dist/autonomic_breath/index.d.ts.map +1 -0
  7. package/dist/autonomic_breath/index.js +180 -0
  8. package/dist/autonomic_breath/index.js.map +1 -0
  9. package/dist/cosmic/aurelian_v1923.test.d.ts +2 -0
  10. package/dist/cosmic/aurelian_v1923.test.d.ts.map +1 -0
  11. package/dist/cosmic/aurelian_v1923.test.js +90 -0
  12. package/dist/cosmic/aurelian_v1923.test.js.map +1 -0
  13. package/dist/cosmic/aurelian_v1924.test.d.ts +2 -0
  14. package/dist/cosmic/aurelian_v1924.test.d.ts.map +1 -0
  15. package/dist/cosmic/aurelian_v1924.test.js +48 -0
  16. package/dist/cosmic/aurelian_v1924.test.js.map +1 -0
  17. package/dist/event_pattern_match/event_pattern_match.test.d.ts +2 -0
  18. package/dist/event_pattern_match/event_pattern_match.test.d.ts.map +1 -0
  19. package/dist/event_pattern_match/event_pattern_match.test.js +175 -0
  20. package/dist/event_pattern_match/event_pattern_match.test.js.map +1 -0
  21. package/dist/event_pattern_match/index.d.ts +99 -0
  22. package/dist/event_pattern_match/index.d.ts.map +1 -0
  23. package/dist/event_pattern_match/index.js +318 -0
  24. package/dist/event_pattern_match/index.js.map +1 -0
  25. package/dist/hippocampus_dreams/hippocampus_dreams.test.d.ts +2 -0
  26. package/dist/hippocampus_dreams/hippocampus_dreams.test.d.ts.map +1 -0
  27. package/dist/hippocampus_dreams/hippocampus_dreams.test.js +106 -0
  28. package/dist/hippocampus_dreams/hippocampus_dreams.test.js.map +1 -0
  29. package/dist/hippocampus_dreams/index.d.ts +79 -0
  30. package/dist/hippocampus_dreams/index.d.ts.map +1 -0
  31. package/dist/hippocampus_dreams/index.js +122 -0
  32. package/dist/hippocampus_dreams/index.js.map +1 -0
  33. package/dist/hormonal/hormonal.test.d.ts +2 -0
  34. package/dist/hormonal/hormonal.test.d.ts.map +1 -0
  35. package/dist/hormonal/hormonal.test.js +116 -0
  36. package/dist/hormonal/hormonal.test.js.map +1 -0
  37. package/dist/hormonal/index.d.ts +105 -0
  38. package/dist/hormonal/index.d.ts.map +1 -0
  39. package/dist/hormonal/index.js +132 -0
  40. package/dist/hormonal/index.js.map +1 -0
  41. package/dist/index.d.ts +8 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +10 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/proprioception/index.d.ts +82 -0
  46. package/dist/proprioception/index.d.ts.map +1 -0
  47. package/dist/proprioception/index.js +170 -0
  48. package/dist/proprioception/index.js.map +1 -0
  49. package/dist/proprioception/proprioception.test.d.ts +2 -0
  50. package/dist/proprioception/proprioception.test.d.ts.map +1 -0
  51. package/dist/proprioception/proprioception.test.js +159 -0
  52. package/dist/proprioception/proprioception.test.js.map +1 -0
  53. package/dist/spinal_reflex/index.d.ts +86 -0
  54. package/dist/spinal_reflex/index.d.ts.map +1 -0
  55. package/dist/spinal_reflex/index.js +180 -0
  56. package/dist/spinal_reflex/index.js.map +1 -0
  57. package/dist/spinal_reflex/spinal_reflex.test.d.ts +2 -0
  58. package/dist/spinal_reflex/spinal_reflex.test.d.ts.map +1 -0
  59. package/dist/spinal_reflex/spinal_reflex.test.js +168 -0
  60. package/dist/spinal_reflex/spinal_reflex.test.js.map +1 -0
  61. package/dist/thalamus/index.d.ts +92 -0
  62. package/dist/thalamus/index.d.ts.map +1 -0
  63. package/dist/thalamus/index.js +95 -0
  64. package/dist/thalamus/index.js.map +1 -0
  65. package/dist/thalamus/thalamus.test.d.ts +2 -0
  66. package/dist/thalamus/thalamus.test.d.ts.map +1 -0
  67. package/dist/thalamus/thalamus.test.js +101 -0
  68. package/dist/thalamus/thalamus.test.js.map +1 -0
  69. package/dist/tool_tier/index.d.ts +101 -0
  70. package/dist/tool_tier/index.d.ts.map +1 -0
  71. package/dist/tool_tier/index.js +228 -0
  72. package/dist/tool_tier/index.js.map +1 -0
  73. package/dist/tool_tier/tool_tier.test.d.ts +2 -0
  74. package/dist/tool_tier/tool_tier.test.d.ts.map +1 -0
  75. package/dist/tool_tier/tool_tier.test.js +133 -0
  76. package/dist/tool_tier/tool_tier.test.js.map +1 -0
  77. package/dist/whats_new.d.ts.map +1 -1
  78. package/dist/whats_new.js +16 -0
  79. package/dist/whats_new.js.map +1 -1
  80. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  81. package/dist/wrapper_genesis/index.js +36 -0
  82. package/dist/wrapper_genesis/index.js.map +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1,101 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { classifyEvent, routeEvent, formatRoute } from "./index.js";
3
+ const SECRET = "thalamus-test-secret-997744";
4
+ function evt(kind, ts = 1) {
5
+ return { v: 1, kind, context: {}, ts };
6
+ }
7
+ function ctx(over = {}) {
8
+ return { hasReflexCacheHit: false, daemonAlive: true, idleMs: 0, ...over };
9
+ }
10
+ describe("v2.19.23 THALAMUS · classifyEvent (deterministic routing)", () => {
11
+ it("daemon dead -> breath (highest priority)", () => {
12
+ const d = classifyEvent({ event: evt("tool_call"), context: ctx({ daemonAlive: false }), secret: SECRET });
13
+ expect(d.tier).toBe("breath");
14
+ expect(d.reason).toContain("daemon_dead");
15
+ });
16
+ it("daemon alive + cache hit -> reflex", () => {
17
+ const d = classifyEvent({ event: evt("tool_call"), context: ctx({ hasReflexCacheHit: true }), secret: SECRET });
18
+ expect(d.tier).toBe("reflex");
19
+ expect(d.reason).toContain("cache_hit");
20
+ });
21
+ it("daemon alive + no cache + active -> cortex (fallback)", () => {
22
+ const d = classifyEvent({ event: evt("tool_call"), context: ctx({ idleMs: 100 }), secret: SECRET });
23
+ expect(d.tier).toBe("cortex");
24
+ expect(d.reason).toContain("no_cache");
25
+ });
26
+ it("explicit idle_tick event -> dream regardless of idleMs", () => {
27
+ const d = classifyEvent({ event: evt("idle_tick"), context: ctx(), secret: SECRET });
28
+ expect(d.tier).toBe("dream");
29
+ expect(d.reason).toContain("idle");
30
+ });
31
+ it("idleMs > threshold -> dream", () => {
32
+ const d = classifyEvent({
33
+ event: evt("tool_call"),
34
+ context: ctx({ idleMs: 31 * 60 * 1000, dreamIdleThresholdMs: 30 * 60 * 1000 }),
35
+ secret: SECRET,
36
+ });
37
+ expect(d.tier).toBe("dream");
38
+ });
39
+ it("breath beats cache_hit beats dream beats cortex (priority order)", () => {
40
+ const allTriggers = ctx({ hasReflexCacheHit: true, idleMs: 9_999_999, daemonAlive: false });
41
+ expect(classifyEvent({ event: evt("idle_tick"), context: allTriggers, secret: SECRET }).tier).toBe("breath");
42
+ expect(classifyEvent({ event: evt("idle_tick"), context: { ...allTriggers, daemonAlive: true }, secret: SECRET }).tier).toBe("reflex");
43
+ expect(classifyEvent({ event: evt("idle_tick"), context: { ...allTriggers, daemonAlive: true, hasReflexCacheHit: false }, secret: SECRET }).tier).toBe("dream");
44
+ });
45
+ it("MEASURED 100% determinism: same input -> same HMAC sig (50 trials)", () => {
46
+ const input = { event: evt("tool_call", 42), context: ctx({ hasReflexCacheHit: true }), secret: SECRET };
47
+ const firstSig = classifyEvent(input).sig;
48
+ let allEqual = true;
49
+ for (let i = 0; i < 50; i++) {
50
+ if (classifyEvent(input).sig !== firstSig) {
51
+ allEqual = false;
52
+ break;
53
+ }
54
+ }
55
+ expect(allEqual).toBe(true);
56
+ });
57
+ });
58
+ describe("v2.19.23 THALAMUS · routeEvent (dispatch)", () => {
59
+ function mkHandlers() {
60
+ const calls = { reflex: 0, cortex: 0, dream: 0, breath: 0 };
61
+ return {
62
+ handlers: {
63
+ reflex: async () => { calls["reflex"]++; return "reflex_result"; },
64
+ cortex: async () => { calls["cortex"]++; return "cortex_result"; },
65
+ dream: async () => { calls["dream"]++; return "dream_result"; },
66
+ breath: async () => { calls["breath"]++; return "breath_result"; },
67
+ },
68
+ calls,
69
+ };
70
+ }
71
+ it("routes to reflex handler on cache_hit", async () => {
72
+ const { handlers, calls } = mkHandlers();
73
+ const r = await routeEvent({ event: evt("tool_call"), context: ctx({ hasReflexCacheHit: true }), handlers, secret: SECRET });
74
+ expect(r.decision.tier).toBe("reflex");
75
+ expect(r.result).toBe("reflex_result");
76
+ expect(calls).toEqual({ reflex: 1, cortex: 0, dream: 0, breath: 0 });
77
+ });
78
+ it("routes to breath handler when daemon dead (highest priority)", async () => {
79
+ const { handlers, calls } = mkHandlers();
80
+ const r = await routeEvent({ event: evt("tool_call"), context: ctx({ daemonAlive: false, hasReflexCacheHit: true }), handlers, secret: SECRET });
81
+ expect(r.decision.tier).toBe("breath");
82
+ expect(r.result).toBe("breath_result");
83
+ expect(calls["breath"]).toBe(1);
84
+ expect(calls["reflex"]).toBe(0);
85
+ });
86
+ it("routes to dream handler on idle_tick", async () => {
87
+ const { handlers, calls } = mkHandlers();
88
+ const r = await routeEvent({ event: evt("idle_tick"), context: ctx(), handlers, secret: SECRET });
89
+ expect(r.decision.tier).toBe("dream");
90
+ expect(calls["dream"]).toBe(1);
91
+ });
92
+ });
93
+ describe("v2.19.23 THALAMUS · formatter", () => {
94
+ it("formatRoute uses ⚡/🧠/💤/🫁 per tier", () => {
95
+ expect(formatRoute({ v: 1, tier: "reflex", reason: "x", sig: "" })).toContain("⚡");
96
+ expect(formatRoute({ v: 1, tier: "cortex", reason: "x", sig: "" })).toContain("🧠");
97
+ expect(formatRoute({ v: 1, tier: "dream", reason: "x", sig: "" })).toContain("💤");
98
+ expect(formatRoute({ v: 1, tier: "breath", reason: "x", sig: "" })).toContain("🫁");
99
+ });
100
+ });
101
+ //# sourceMappingURL=thalamus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thalamus.test.js","sourceRoot":"","sources":["../../src/thalamus/thalamus.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * v2.19.24 — MNEME TOOL TIER (extends v2.19.23 PROPRIOCEPTION)
3
+ *
4
+ * "เลิก split 67 vs 505. ทุก tool เห็นด้วยกัน + TIER badge — user
5
+ * เห็น tier ที่เหมาะกับ skill, AI เห็นทั้งหมด"
6
+ * — user audit, 2026-05-17
7
+ *
8
+ * Diagnosis: v2.19.23 PROPRIOCEPTION unified the catalog but AI agents
9
+ * still saw 568 tools while users saw ~67 in `mneme --help`. Same
10
+ * structural drift, different surface. The fix is not to HIDE tools
11
+ * from AI — it's to STRATIFY them so users see the right slice for
12
+ * their skill level, and AI still sees the full catalog through MCP.
13
+ *
14
+ * 4 tiers (deterministic classifier; no ML):
15
+ * ⭐⭐⭐ STARTER — curated essentials; first-time users
16
+ * ⭐⭐ EXPLORER — v2.18+ pentads + power-user families
17
+ * ⭐ DEEP — orchestration / system / advanced
18
+ * 🔬 EXPERIMENTAL — edge cases / one-off experiments
19
+ *
20
+ * Pure-function classifier; HMAC-signed budget report; CLI surfaces
21
+ * `mneme tools` with `--tier T` filter. AI agents always see the
22
+ * superset via MCP; "the catalog the AI sees ⊇ the catalog the user
23
+ * sees" — info drift goes to zero structurally.
24
+ *
25
+ * Honest scope:
26
+ * - 3 explicit family sets (STARTER_FAMILIES / STARTER_WHITELIST /
27
+ * EXPERIMENTAL_FAMILIES). The "v2.18+ pentads" tier (EXPLORER) is
28
+ * derived from a canonical V218_PLUS_FAMILIES set already used in
29
+ * v2.19.21 GAP CLOSER. Everything else falls to DEEP.
30
+ * - Tier is a HINT to the user, not a security boundary. AI agents
31
+ * can call ANY tier via MCP; the surface choice is presentation-only.
32
+ * - Composes onto v2.19.23 PROPRIOCEPTION (UnifiedCatalogEntry shape)
33
+ * + v2.19.21 KNOWN_LEGACY_TOP_LEVEL (CLI mount surface).
34
+ */
35
+ declare const PROTOCOL_VERSION: 1;
36
+ export type Tier = "starter" | "explorer" | "deep" | "experimental";
37
+ /**
38
+ * Curated essentials — first-time users meet Mneme through these.
39
+ * Hand-picked; small enough that beginners aren't overwhelmed.
40
+ */
41
+ export declare const STARTER_WHITELIST: ReadonlySet<string>;
42
+ /**
43
+ * Families that ALWAYS land in EXPLORER (v2.18+ pentads + organs).
44
+ * These are the "power-user / agent-integration" surface. Same set
45
+ * the v2.19.21 GAP CLOSER audited.
46
+ */
47
+ export declare const EXPLORER_FAMILIES: ReadonlySet<string>;
48
+ /**
49
+ * EXPERIMENTAL — research / edge-case / opinionated tools. Often
50
+ * vendor-specific or single-purpose. Defaulted hidden from the
51
+ * starter view; AI can still call them.
52
+ */
53
+ export declare const EXPERIMENTAL_FAMILIES: ReadonlySet<string>;
54
+ export interface TierClassification {
55
+ v: typeof PROTOCOL_VERSION;
56
+ toolName: string;
57
+ tier: Tier;
58
+ reason: string;
59
+ }
60
+ /**
61
+ * Classify a single tool name into one of 4 tiers. Deterministic.
62
+ *
63
+ * Rules (priority order):
64
+ * 1. STARTER_WHITELIST hit → starter
65
+ * 2. EXPERIMENTAL_FAMILIES hit → experimental
66
+ * 3. EXPLORER_FAMILIES hit → explorer
67
+ * 4. fallback → deep
68
+ *
69
+ * The fallback is deliberate: anything we haven't explicitly classified
70
+ * is treated as DEEP (advanced; not for first-time users). That way new
71
+ * tools default to advanced visibility, not noise.
72
+ */
73
+ export declare function classifyTier(toolName: string): TierClassification;
74
+ export interface TierBudget {
75
+ v: typeof PROTOCOL_VERSION;
76
+ totalTools: number;
77
+ starter: number;
78
+ explorer: number;
79
+ deep: number;
80
+ experimental: number;
81
+ sig: string;
82
+ }
83
+ /**
84
+ * Compute a HMAC-signed budget across all tools. Caller passes the
85
+ * full tool name list; we classify each and tally.
86
+ */
87
+ export declare function computeTierBudget(input: {
88
+ toolNames: string[];
89
+ secret?: string;
90
+ }): TierBudget;
91
+ export declare function verifyBudget(b: TierBudget, secret?: string): boolean;
92
+ /** Filter tool names by tier; preserves input order. */
93
+ export declare function listByTier(input: {
94
+ toolNames: string[];
95
+ tier: Tier;
96
+ }): string[];
97
+ export declare const TIER_BADGE: Record<Tier, string>;
98
+ export declare const TIER_LABEL: Record<Tier, string>;
99
+ export declare function formatBudgetLine(b: TierBudget): string;
100
+ export {};
101
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tool_tier/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,QAAA,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAEpC,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,cAAc,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAqChD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAmBhD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAOpD,CAAC;AAEH,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAqBjE;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAsBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAmB7F;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,MAAM,EAAE,CAE/E;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAK3C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAK3C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * v2.19.24 — MNEME TOOL TIER (extends v2.19.23 PROPRIOCEPTION)
3
+ *
4
+ * "เลิก split 67 vs 505. ทุก tool เห็นด้วยกัน + TIER badge — user
5
+ * เห็น tier ที่เหมาะกับ skill, AI เห็นทั้งหมด"
6
+ * — user audit, 2026-05-17
7
+ *
8
+ * Diagnosis: v2.19.23 PROPRIOCEPTION unified the catalog but AI agents
9
+ * still saw 568 tools while users saw ~67 in `mneme --help`. Same
10
+ * structural drift, different surface. The fix is not to HIDE tools
11
+ * from AI — it's to STRATIFY them so users see the right slice for
12
+ * their skill level, and AI still sees the full catalog through MCP.
13
+ *
14
+ * 4 tiers (deterministic classifier; no ML):
15
+ * ⭐⭐⭐ STARTER — curated essentials; first-time users
16
+ * ⭐⭐ EXPLORER — v2.18+ pentads + power-user families
17
+ * ⭐ DEEP — orchestration / system / advanced
18
+ * 🔬 EXPERIMENTAL — edge cases / one-off experiments
19
+ *
20
+ * Pure-function classifier; HMAC-signed budget report; CLI surfaces
21
+ * `mneme tools` with `--tier T` filter. AI agents always see the
22
+ * superset via MCP; "the catalog the AI sees ⊇ the catalog the user
23
+ * sees" — info drift goes to zero structurally.
24
+ *
25
+ * Honest scope:
26
+ * - 3 explicit family sets (STARTER_FAMILIES / STARTER_WHITELIST /
27
+ * EXPERIMENTAL_FAMILIES). The "v2.18+ pentads" tier (EXPLORER) is
28
+ * derived from a canonical V218_PLUS_FAMILIES set already used in
29
+ * v2.19.21 GAP CLOSER. Everything else falls to DEEP.
30
+ * - Tier is a HINT to the user, not a security boundary. AI agents
31
+ * can call ANY tier via MCP; the surface choice is presentation-only.
32
+ * - Composes onto v2.19.23 PROPRIOCEPTION (UnifiedCatalogEntry shape)
33
+ * + v2.19.21 KNOWN_LEGACY_TOP_LEVEL (CLI mount surface).
34
+ */
35
+ import { createHmac, timingSafeEqual } from "node:crypto";
36
+ const PROTOCOL_VERSION = 1;
37
+ /**
38
+ * Curated essentials — first-time users meet Mneme through these.
39
+ * Hand-picked; small enough that beginners aren't overwhelmed.
40
+ */
41
+ export const STARTER_WHITELIST = new Set([
42
+ // Core memory + retrieval
43
+ "mneme.status",
44
+ "mneme.ask",
45
+ "mneme.why",
46
+ "mneme.who_knows",
47
+ "mneme.index",
48
+ // Install + upgrade lifecycle
49
+ "mneme.system.upgrade",
50
+ "mneme.system.health",
51
+ "mneme.upgrade",
52
+ "mneme.doctor",
53
+ "mneme.init",
54
+ // Pulse + identity
55
+ "mneme.welcome",
56
+ "mneme.capabilities",
57
+ "mneme.intent.execute",
58
+ // What's new + smart dispatch
59
+ "mneme.whats_new",
60
+ "mneme.smart_do",
61
+ // Embedder + tier health
62
+ "mneme.embeddings.status",
63
+ "mneme.embeddings.upgrade",
64
+ // Antivirus (the highest-impact daily-use tools)
65
+ "mneme.antivirus.scan",
66
+ "mneme.antivirus.cure",
67
+ // LIMBIC organism health (the new front door)
68
+ "mneme.limbic.health",
69
+ "mneme.breath.stats",
70
+ // People diagnostics (high-value commit-history queries)
71
+ "mneme.atrophy",
72
+ "mneme.who_knows",
73
+ // Premortem (the answer to "is this safe to ship?")
74
+ "mneme.premortem",
75
+ // Tier discovery (this very command)
76
+ "mneme.tier.classify",
77
+ "mneme.tier.list_by_tier",
78
+ ]);
79
+ /**
80
+ * Families that ALWAYS land in EXPLORER (v2.18+ pentads + organs).
81
+ * These are the "power-user / agent-integration" surface. Same set
82
+ * the v2.19.21 GAP CLOSER audited.
83
+ */
84
+ export const EXPLORER_FAMILIES = new Set([
85
+ "arena", "badge", "oracle", "nexus",
86
+ "confessional", "ghost", "trinity", "insurance", "boomerang",
87
+ "evolution", "soul", "mcp_drift", "embedder",
88
+ "inverse", "intent", "dna", "chronostasis", "agreement",
89
+ "dream", "colony", "honey", "retroactive", "genetic",
90
+ "jackpot", "genome", "proof", "suggest",
91
+ "mortal", "muscle", "dialect", "brain", "chrysalis",
92
+ "snn", "negev", "dreams", "chimera", "consequence",
93
+ "truth", "federated", "reachability",
94
+ "caption", "inpaint", "rci", "provenance", "textron",
95
+ // v2.19.21+
96
+ "cli",
97
+ // v2.19.22
98
+ "reflex", "catalog",
99
+ // v2.19.23 LIMBIC organs
100
+ "breath", "thalamus", "proprioception", "spinal", "hippocampus", "hormonal", "limbic",
101
+ // v2.19.24
102
+ "tier", "event",
103
+ ]);
104
+ /**
105
+ * EXPERIMENTAL — research / edge-case / opinionated tools. Often
106
+ * vendor-specific or single-purpose. Defaulted hidden from the
107
+ * starter view; AI can still call them.
108
+ */
109
+ export const EXPERIMENTAL_FAMILIES = new Set([
110
+ "alien", "cf", "adversary", "mesh", "aletheia", "honeypot",
111
+ "court", "tribunal", "diaspora", "telepathy",
112
+ "abyss", "lattice", "neuron", "conduit", "synapse",
113
+ "osmosis", "aura", "relay", "chameleon", "anchor", "rainbow",
114
+ "permeate", "seamless", "ascension", "hyperscan", "precog", "sentinel",
115
+ "wormhole", "metron", "beacon", "nexus_lock",
116
+ ]);
117
+ /**
118
+ * Classify a single tool name into one of 4 tiers. Deterministic.
119
+ *
120
+ * Rules (priority order):
121
+ * 1. STARTER_WHITELIST hit → starter
122
+ * 2. EXPERIMENTAL_FAMILIES hit → experimental
123
+ * 3. EXPLORER_FAMILIES hit → explorer
124
+ * 4. fallback → deep
125
+ *
126
+ * The fallback is deliberate: anything we haven't explicitly classified
127
+ * is treated as DEEP (advanced; not for first-time users). That way new
128
+ * tools default to advanced visibility, not noise.
129
+ */
130
+ export function classifyTier(toolName) {
131
+ let tier;
132
+ let reason;
133
+ if (STARTER_WHITELIST.has(toolName)) {
134
+ tier = "starter";
135
+ reason = "starter_whitelist hit (curated for first-time users)";
136
+ }
137
+ else {
138
+ const parts = toolName.split(".");
139
+ const family = parts[1] ?? parts[0] ?? "";
140
+ if (EXPERIMENTAL_FAMILIES.has(family)) {
141
+ tier = "experimental";
142
+ reason = `family '${family}' in experimental set (research / edge-case)`;
143
+ }
144
+ else if (EXPLORER_FAMILIES.has(family)) {
145
+ tier = "explorer";
146
+ reason = `family '${family}' in explorer set (v2.18+ pentads + organs)`;
147
+ }
148
+ else {
149
+ tier = "deep";
150
+ reason = `family '${family}' not classified explicitly → DEEP fallback (advanced)`;
151
+ }
152
+ }
153
+ return { v: PROTOCOL_VERSION, toolName, tier, reason };
154
+ }
155
+ function canon(v) {
156
+ if (v === null || typeof v !== "object")
157
+ return JSON.stringify(v);
158
+ if (Array.isArray(v))
159
+ return "[" + v.map(canon).join(",") + "]";
160
+ const keys = Object.keys(v).sort();
161
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
162
+ }
163
+ function defaultSecret() {
164
+ return process.env["MNEME_TIER_SECRET"] || `mneme-tool-tier-v${PROTOCOL_VERSION}`;
165
+ }
166
+ function hmacHex(body, secret) {
167
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
168
+ }
169
+ function safeEqHex(a, b) {
170
+ try {
171
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ }
177
+ /**
178
+ * Compute a HMAC-signed budget across all tools. Caller passes the
179
+ * full tool name list; we classify each and tally.
180
+ */
181
+ export function computeTierBudget(input) {
182
+ let starter = 0, explorer = 0, deep = 0, experimental = 0;
183
+ for (const n of input.toolNames) {
184
+ const c = classifyTier(n);
185
+ if (c.tier === "starter")
186
+ starter++;
187
+ else if (c.tier === "explorer")
188
+ explorer++;
189
+ else if (c.tier === "deep")
190
+ deep++;
191
+ else
192
+ experimental++;
193
+ }
194
+ const body = {
195
+ v: PROTOCOL_VERSION,
196
+ totalTools: input.toolNames.length,
197
+ starter,
198
+ explorer,
199
+ deep,
200
+ experimental,
201
+ };
202
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
203
+ return { ...body, sig };
204
+ }
205
+ export function verifyBudget(b, secret) {
206
+ const { sig, ...body } = b;
207
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
208
+ }
209
+ /** Filter tool names by tier; preserves input order. */
210
+ export function listByTier(input) {
211
+ return input.toolNames.filter((n) => classifyTier(n).tier === input.tier);
212
+ }
213
+ export const TIER_BADGE = {
214
+ starter: "⭐⭐⭐",
215
+ explorer: "⭐⭐",
216
+ deep: "⭐",
217
+ experimental: "🔬",
218
+ };
219
+ export const TIER_LABEL = {
220
+ starter: "STARTER",
221
+ explorer: "EXPLORER",
222
+ deep: "DEEP",
223
+ experimental: "EXPERIMENTAL",
224
+ };
225
+ export function formatBudgetLine(b) {
226
+ return `🪞 TIER · ${b.totalTools} total · ⭐⭐⭐${b.starter} · ⭐⭐${b.explorer} · ⭐${b.deep} · 🔬${b.experimental}`;
227
+ }
228
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool_tier/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool_tier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_tier.test.d.ts","sourceRoot":"","sources":["../../src/tool_tier/tool_tier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { classifyTier, computeTierBudget, verifyBudget, listByTier, formatBudgetLine, TIER_BADGE, TIER_LABEL, } from "./index.js";
3
+ const SECRET = "tier-test-secret-997744";
4
+ describe("v2.19.24 TOOL TIER · classifyTier (deterministic)", () => {
5
+ it("STARTER_WHITELIST hit -> starter", () => {
6
+ expect(classifyTier("mneme.status").tier).toBe("starter");
7
+ expect(classifyTier("mneme.ask").tier).toBe("starter");
8
+ expect(classifyTier("mneme.limbic.health").tier).toBe("starter");
9
+ expect(classifyTier("mneme.tier.classify").tier).toBe("starter");
10
+ });
11
+ it("EXPERIMENTAL_FAMILIES hit -> experimental", () => {
12
+ expect(classifyTier("mneme.alien.template").tier).toBe("experimental");
13
+ expect(classifyTier("mneme.cf.simulate").tier).toBe("experimental");
14
+ expect(classifyTier("mneme.aletheia.gate").tier).toBe("experimental");
15
+ expect(classifyTier("mneme.honeypot.seed").tier).toBe("experimental");
16
+ });
17
+ it("EXPLORER_FAMILIES hit (v2.18+ pentads + organs) -> explorer", () => {
18
+ expect(classifyTier("mneme.arena.judge").tier).toBe("explorer");
19
+ expect(classifyTier("mneme.ghost.distill").tier).toBe("explorer");
20
+ expect(classifyTier("mneme.reflex.predict").tier).toBe("explorer");
21
+ expect(classifyTier("mneme.breath.decide").tier).toBe("explorer");
22
+ expect(classifyTier("mneme.hippocampus.consolidate").tier).toBe("explorer");
23
+ });
24
+ it("uncategorised family -> deep (advanced fallback)", () => {
25
+ expect(classifyTier("mneme.unrecognised_family.action").tier).toBe("deep");
26
+ expect(classifyTier("mneme.something.else").tier).toBe("deep");
27
+ });
28
+ it("STARTER beats EXPLORER beats EXPERIMENTAL beats DEEP (priority order)", () => {
29
+ // mneme.limbic.health is in starter whitelist; family 'limbic' is also explorer
30
+ expect(classifyTier("mneme.limbic.health").tier).toBe("starter");
31
+ // mneme.intent.execute is starter whitelist; family 'intent' is also explorer
32
+ expect(classifyTier("mneme.intent.execute").tier).toBe("starter");
33
+ });
34
+ it("MEASURED 100% determinism (50 trials on mixed tools)", () => {
35
+ const tools = [
36
+ "mneme.status", "mneme.alien.template", "mneme.arena.judge",
37
+ "mneme.unknown.x", "mneme.ghost.distill",
38
+ ];
39
+ const firstResults = tools.map((t) => classifyTier(t).tier);
40
+ let allEqual = true;
41
+ for (let i = 0; i < 50; i++) {
42
+ const r = tools.map((t) => classifyTier(t).tier);
43
+ if (JSON.stringify(r) !== JSON.stringify(firstResults)) {
44
+ allEqual = false;
45
+ break;
46
+ }
47
+ }
48
+ expect(allEqual).toBe(true);
49
+ });
50
+ });
51
+ describe("v2.19.24 TOOL TIER · computeTierBudget", () => {
52
+ it("counts each tier correctly", () => {
53
+ const b = computeTierBudget({
54
+ toolNames: [
55
+ "mneme.status", // starter
56
+ "mneme.ask", // starter
57
+ "mneme.arena.judge", // explorer
58
+ "mneme.ghost.distill", // explorer
59
+ "mneme.alien.template", // experimental
60
+ "mneme.unknown.x", // deep
61
+ ],
62
+ secret: SECRET,
63
+ });
64
+ expect(b.totalTools).toBe(6);
65
+ expect(b.starter).toBe(2);
66
+ expect(b.explorer).toBe(2);
67
+ expect(b.experimental).toBe(1);
68
+ expect(b.deep).toBe(1);
69
+ expect(b.starter + b.explorer + b.deep + b.experimental).toBe(b.totalTools);
70
+ });
71
+ it("empty list -> all zero", () => {
72
+ const b = computeTierBudget({ toolNames: [], secret: SECRET });
73
+ expect(b.totalTools).toBe(0);
74
+ expect(b.starter).toBe(0);
75
+ expect(b.explorer).toBe(0);
76
+ expect(b.deep).toBe(0);
77
+ expect(b.experimental).toBe(0);
78
+ });
79
+ it("HMAC sig verifies on untampered; rejects tamper", () => {
80
+ const b = computeTierBudget({ toolNames: ["mneme.status"], secret: SECRET });
81
+ expect(verifyBudget(b, SECRET)).toBe(true);
82
+ const tampered = { ...b, starter: 999 };
83
+ expect(verifyBudget(tampered, SECRET)).toBe(false);
84
+ });
85
+ it("MEASURED 100% determinism: same input -> same sig (50 trials)", () => {
86
+ const input = { toolNames: ["mneme.status", "mneme.arena.judge", "mneme.unknown"], secret: SECRET };
87
+ const firstSig = computeTierBudget(input).sig;
88
+ let allEqual = true;
89
+ for (let i = 0; i < 50; i++) {
90
+ if (computeTierBudget(input).sig !== firstSig) {
91
+ allEqual = false;
92
+ break;
93
+ }
94
+ }
95
+ expect(allEqual).toBe(true);
96
+ });
97
+ });
98
+ describe("v2.19.24 TOOL TIER · listByTier", () => {
99
+ it("filters to the requested tier; preserves input order", () => {
100
+ const tools = ["mneme.status", "mneme.arena.judge", "mneme.ask", "mneme.alien.x"];
101
+ expect(listByTier({ toolNames: tools, tier: "starter" })).toEqual(["mneme.status", "mneme.ask"]);
102
+ expect(listByTier({ toolNames: tools, tier: "explorer" })).toEqual(["mneme.arena.judge"]);
103
+ expect(listByTier({ toolNames: tools, tier: "experimental" })).toEqual(["mneme.alien.x"]);
104
+ });
105
+ it("returns empty when no tools match", () => {
106
+ expect(listByTier({ toolNames: ["mneme.status"], tier: "experimental" })).toEqual([]);
107
+ });
108
+ });
109
+ describe("v2.19.24 TOOL TIER · presentation constants", () => {
110
+ it("TIER_BADGE maps each tier to a visual badge", () => {
111
+ expect(TIER_BADGE.starter).toBe("⭐⭐⭐");
112
+ expect(TIER_BADGE.explorer).toBe("⭐⭐");
113
+ expect(TIER_BADGE.deep).toBe("⭐");
114
+ expect(TIER_BADGE.experimental).toBe("🔬");
115
+ });
116
+ it("TIER_LABEL upper-cases each tier", () => {
117
+ expect(TIER_LABEL.starter).toBe("STARTER");
118
+ expect(TIER_LABEL.experimental).toBe("EXPERIMENTAL");
119
+ });
120
+ it("formatBudgetLine includes all 4 tier counts", () => {
121
+ const b = computeTierBudget({
122
+ toolNames: ["mneme.status", "mneme.arena.judge", "mneme.unknown", "mneme.alien.x"],
123
+ secret: SECRET,
124
+ });
125
+ const line = formatBudgetLine(b);
126
+ expect(line).toContain("TIER");
127
+ expect(line).toContain("⭐⭐⭐1");
128
+ expect(line).toContain("⭐⭐1");
129
+ expect(line).toContain("⭐1");
130
+ expect(line).toContain("🔬1");
131
+ });
132
+ });
133
+ //# sourceMappingURL=tool_tier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_tier.test.js","sourceRoot":"","sources":["../../src/tool_tier/tool_tier.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"whats_new.d.ts","sourceRoot":"","sources":["../src/whats_new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;oCAEoC;AACpC,eAAO,MAAM,UAAU,EAAE,iBAAiB,EA6UzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB;kCAC8B;IAC9B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD;sEACsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,GAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAA2B,GAAG,cAAc,CAkB5I;AAED;yEACyE;AACzE,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB3E"}
1
+ {"version":3,"file":"whats_new.d.ts","sourceRoot":"","sources":["../src/whats_new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;oCAEoC;AACpC,eAAO,MAAM,UAAU,EAAE,iBAAiB,EA+VzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB;kCAC8B;IAC9B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD;sEACsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,GAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAA2B,GAAG,cAAc,CAkB5I;AAED;yEACyE;AACzE,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB3E"}