@mneme-ai/core 2.19.31 → 2.19.33

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 (94) hide show
  1. package/dist/autonomic_scheduler/b4_context_shift.test.d.ts +12 -0
  2. package/dist/autonomic_scheduler/b4_context_shift.test.d.ts.map +1 -0
  3. package/dist/autonomic_scheduler/b4_context_shift.test.js +213 -0
  4. package/dist/autonomic_scheduler/b4_context_shift.test.js.map +1 -0
  5. package/dist/autonomic_scheduler/index.d.ts +44 -0
  6. package/dist/autonomic_scheduler/index.d.ts.map +1 -1
  7. package/dist/autonomic_scheduler/index.js +68 -1
  8. package/dist/autonomic_scheduler/index.js.map +1 -1
  9. package/dist/consciousness_fork/consciousness_fork.test.d.ts +2 -0
  10. package/dist/consciousness_fork/consciousness_fork.test.d.ts.map +1 -0
  11. package/dist/consciousness_fork/consciousness_fork.test.js +177 -0
  12. package/dist/consciousness_fork/consciousness_fork.test.js.map +1 -0
  13. package/dist/consciousness_fork/index.d.ts +129 -0
  14. package/dist/consciousness_fork/index.d.ts.map +1 -0
  15. package/dist/consciousness_fork/index.js +227 -0
  16. package/dist/consciousness_fork/index.js.map +1 -0
  17. package/dist/conversation_compiler/b1_extract_decisions.test.d.ts +2 -0
  18. package/dist/conversation_compiler/b1_extract_decisions.test.d.ts.map +1 -0
  19. package/dist/conversation_compiler/b1_extract_decisions.test.js +150 -0
  20. package/dist/conversation_compiler/b1_extract_decisions.test.js.map +1 -0
  21. package/dist/conversation_compiler/index.d.ts +19 -1
  22. package/dist/conversation_compiler/index.d.ts.map +1 -1
  23. package/dist/conversation_compiler/index.js +128 -39
  24. package/dist/conversation_compiler/index.js.map +1 -1
  25. package/dist/cosmic/aurelian_v1932.test.d.ts +2 -0
  26. package/dist/cosmic/aurelian_v1932.test.d.ts.map +1 -0
  27. package/dist/cosmic/aurelian_v1932.test.js +83 -0
  28. package/dist/cosmic/aurelian_v1932.test.js.map +1 -0
  29. package/dist/cosmic/aurelian_v1933.test.d.ts +2 -0
  30. package/dist/cosmic/aurelian_v1933.test.d.ts.map +1 -0
  31. package/dist/cosmic/aurelian_v1933.test.js +82 -0
  32. package/dist/cosmic/aurelian_v1933.test.js.map +1 -0
  33. package/dist/cosmic/v1933_integration.test.d.ts +2 -0
  34. package/dist/cosmic/v1933_integration.test.d.ts.map +1 -0
  35. package/dist/cosmic/v1933_integration.test.js +128 -0
  36. package/dist/cosmic/v1933_integration.test.js.map +1 -0
  37. package/dist/handoff_pwa/handoff_pwa.test.d.ts +2 -0
  38. package/dist/handoff_pwa/handoff_pwa.test.d.ts.map +1 -0
  39. package/dist/handoff_pwa/handoff_pwa.test.js +119 -0
  40. package/dist/handoff_pwa/handoff_pwa.test.js.map +1 -0
  41. package/dist/handoff_pwa/index.d.ts +81 -0
  42. package/dist/handoff_pwa/index.d.ts.map +1 -0
  43. package/dist/handoff_pwa/index.js +312 -0
  44. package/dist/handoff_pwa/index.js.map +1 -0
  45. package/dist/handoff_snapshot/handoff_snapshot.test.d.ts +2 -0
  46. package/dist/handoff_snapshot/handoff_snapshot.test.d.ts.map +1 -0
  47. package/dist/handoff_snapshot/handoff_snapshot.test.js +147 -0
  48. package/dist/handoff_snapshot/handoff_snapshot.test.js.map +1 -0
  49. package/dist/handoff_snapshot/index.d.ts +156 -0
  50. package/dist/handoff_snapshot/index.d.ts.map +1 -0
  51. package/dist/handoff_snapshot/index.js +261 -0
  52. package/dist/handoff_snapshot/index.js.map +1 -0
  53. package/dist/handoff_snapshot/system_e2e.test.d.ts +8 -0
  54. package/dist/handoff_snapshot/system_e2e.test.d.ts.map +1 -0
  55. package/dist/handoff_snapshot/system_e2e.test.js +211 -0
  56. package/dist/handoff_snapshot/system_e2e.test.js.map +1 -0
  57. package/dist/index.d.ts +6 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +14 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/pair_code/index.d.ts +107 -0
  62. package/dist/pair_code/index.d.ts.map +1 -0
  63. package/dist/pair_code/index.js +226 -0
  64. package/dist/pair_code/index.js.map +1 -0
  65. package/dist/pair_code/pair_code.test.d.ts +2 -0
  66. package/dist/pair_code/pair_code.test.d.ts.map +1 -0
  67. package/dist/pair_code/pair_code.test.js +197 -0
  68. package/dist/pair_code/pair_code.test.js.map +1 -0
  69. package/dist/tool_browser/index.d.ts +128 -0
  70. package/dist/tool_browser/index.d.ts.map +1 -0
  71. package/dist/tool_browser/index.js +218 -0
  72. package/dist/tool_browser/index.js.map +1 -0
  73. package/dist/tool_browser/tool_browser.test.d.ts +2 -0
  74. package/dist/tool_browser/tool_browser.test.d.ts.map +1 -0
  75. package/dist/tool_browser/tool_browser.test.js +167 -0
  76. package/dist/tool_browser/tool_browser.test.js.map +1 -0
  77. package/dist/tool_tier/index.d.ts.map +1 -1
  78. package/dist/tool_tier/index.js +23 -5
  79. package/dist/tool_tier/index.js.map +1 -1
  80. package/dist/truth_sensor_pack/index.d.ts +105 -0
  81. package/dist/truth_sensor_pack/index.d.ts.map +1 -0
  82. package/dist/truth_sensor_pack/index.js +201 -0
  83. package/dist/truth_sensor_pack/index.js.map +1 -0
  84. package/dist/truth_sensor_pack/truth_sensor_pack.test.d.ts +2 -0
  85. package/dist/truth_sensor_pack/truth_sensor_pack.test.d.ts.map +1 -0
  86. package/dist/truth_sensor_pack/truth_sensor_pack.test.js +153 -0
  87. package/dist/truth_sensor_pack/truth_sensor_pack.test.js.map +1 -0
  88. package/dist/whats_new.d.ts.map +1 -1
  89. package/dist/whats_new.js +16 -0
  90. package/dist/whats_new.js.map +1 -1
  91. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  92. package/dist/wrapper_genesis/index.js +37 -0
  93. package/dist/wrapper_genesis/index.js.map +1 -1
  94. package/package.json +1 -1
@@ -38,6 +38,10 @@ const PROTOCOL_VERSION = 1;
38
38
  * Curated essentials — first-time users meet Mneme through these.
39
39
  * Hand-picked; small enough that beginners aren't overwhelmed.
40
40
  */
41
+ // v2.19.33 B3 fix: expanded STARTER from 13 visible (2.2% of 594) → ~35
42
+ // (~5.5% of 647) so first-time users see ONE representative tool per
43
+ // major capability category, not a cherry-picked dozen. Each addition is
44
+ // the "ask the AI to do X" entry point users actually need on day 1.
41
45
  export const STARTER_WHITELIST = new Set([
42
46
  // Core memory + retrieval
43
47
  "mneme.status",
@@ -61,20 +65,34 @@ export const STARTER_WHITELIST = new Set([
61
65
  // Embedder + tier health
62
66
  "mneme.embeddings.status",
63
67
  "mneme.embeddings.upgrade",
64
- // Antivirus (the highest-impact daily-use tools)
68
+ // Antivirus (highest-impact daily-use tools)
65
69
  "mneme.antivirus.scan",
66
70
  "mneme.antivirus.cure",
67
- // LIMBIC organism health (the new front door)
71
+ // LIMBIC organism health
68
72
  "mneme.limbic.health",
69
73
  "mneme.breath.stats",
70
- // People diagnostics (high-value commit-history queries)
74
+ // People diagnostics
71
75
  "mneme.atrophy",
72
- "mneme.who_knows",
73
76
  // Premortem (the answer to "is this safe to ship?")
74
77
  "mneme.premortem",
75
- // Tier discovery (this very command)
78
+ // Tier discovery + B3 NEW discoverability commands
76
79
  "mneme.tier.classify",
77
80
  "mneme.tier.list_by_tier",
81
+ "mneme.browse", // v2.19.33 B3: interactive catalog tour
82
+ "mneme.suggest", // v2.19.33 B3: repo-aware tool recommendations
83
+ // v2.19.31 truth + contradictions (the "is this real?" entry point)
84
+ "mneme.truth.forensic",
85
+ "mneme.truth.contradictions",
86
+ "mneme.truth.init", // v2.19.33 B2: zero-config sensor stack
87
+ // v2.19.32 cross-device handoff (headline of the release)
88
+ "mneme.handoff.snapshot",
89
+ "mneme.handoff.pair_generate",
90
+ // v2.19.31 cross-device sync (the brain unification entry point)
91
+ "mneme.synapse.sync_export",
92
+ // Bug prophet — "what could go wrong if I ship this?"
93
+ "mneme.guard",
94
+ // Reflex — auto-cache (one of the v2.19.22 flagship features)
95
+ "mneme.reflex.observe",
78
96
  ]);
79
97
  /**
80
98
  * Families that ALWAYS land in EXPLORER (v2.18+ pentads + organs).
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool_tier/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool_tier/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAIpC;;;GAGG;AACH,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,0BAA0B;IAC1B,cAAc;IACd,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,8BAA8B;IAC9B,sBAAsB;IACtB,qBAAqB;IACrB,eAAe;IACf,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,oBAAoB;IACpB,sBAAsB;IACtB,8BAA8B;IAC9B,iBAAiB;IACjB,gBAAgB;IAChB,yBAAyB;IACzB,yBAAyB;IACzB,0BAA0B;IAC1B,6CAA6C;IAC7C,sBAAsB;IACtB,sBAAsB;IACtB,yBAAyB;IACzB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,eAAe;IACf,oDAAoD;IACpD,iBAAiB;IACjB,mDAAmD;IACnD,qBAAqB;IACrB,yBAAyB;IACzB,cAAc,EAAU,wCAAwC;IAChE,eAAe,EAAS,+CAA+C;IACvE,oEAAoE;IACpE,sBAAsB;IACtB,4BAA4B;IAC5B,kBAAkB,EAAM,wCAAwC;IAChE,0DAA0D;IAC1D,wBAAwB;IACxB,6BAA6B;IAC7B,iEAAiE;IACjE,2BAA2B;IAC3B,sDAAsD;IACtD,aAAa;IACb,8DAA8D;IAC9D,sBAAsB;CACvB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IACnC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;IAC5D,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU;IAC5C,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW;IACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS;IACpD,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;IACvC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW;IACnD,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;IAClD,OAAO,EAAE,WAAW,EAAE,cAAc;IACpC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS;IACpD,YAAY;IACZ,KAAK;IACL,WAAW;IACX,QAAQ,EAAE,SAAS;IACnB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ;IACrF,WAAW;IACX,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;IAC5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAClD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS;IAC5D,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU;IACtE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY;CAC7C,CAAC,CAAC;AASH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,IAAU,CAAC;IACf,IAAI,MAAc,CAAC;IACnB,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,IAAI,GAAG,SAAS,CAAC;QACjB,MAAM,GAAG,sDAAsD,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,GAAG,cAAc,CAAC;YACtB,MAAM,GAAG,WAAW,MAAM,8CAA8C,CAAC;QAC3E,CAAC;aAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,IAAI,GAAG,UAAU,CAAC;YAClB,MAAM,GAAG,WAAW,MAAM,6CAA6C,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,CAAC;YACd,MAAM,GAAG,WAAW,MAAM,wDAAwD,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAYD,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAE,CAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACnH,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,oBAAoB,gBAAgB,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,OAAO,CAAC,IAAa,EAAE,MAAc;IAC5C,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,IAAI,CAAC;QAAC,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAAC,CAAC;IAC7E,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA+C;IAC/E,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;aAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,QAAQ,EAAE,CAAC;aACtC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,IAAI,EAAE,CAAC;;YAC9B,YAAY,EAAE,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAA4B;QACpC,CAAC,EAAE,gBAAgB;QACnB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAClC,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,YAAY;KACb,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,MAAe;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,KAA0C;IACnE,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,GAAG;IACT,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,cAAc;CAC7B,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,CAAa;IAC5C,OAAO,aAAa,CAAC,CAAC,UAAU,eAAe,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAC;AAClH,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * v2.19.33 B2 fix — MNEME TRUTH SENSOR PACK (zero-config defaults that work first-run)
3
+ *
4
+ * User-audit diagnosis (2026-05-17):
5
+ * "mneme truth check_multi sensors=0 (no active sensors).
6
+ * verdict: INCONCLUSIVE · pTrue: 0.5 · sensors: 0.
7
+ * Root cause: TRUTH KERNEL ออกแบบให้ register sensors แต่ default config มี 0 sensors active.
8
+ * Wisdom: zero-config means good defaults — ไม่ใช่ 'empty until configured'"
9
+ *
10
+ * v2.19.33 ships a CANONICAL DEFAULT STACK that any AI agent can wire
11
+ * into `mneme.truth.check_multi` without having to invent the recipe.
12
+ *
13
+ * The stack is intentionally PURE METADATA (not executable) because the
14
+ * real sensors require I/O the kernel deliberately doesn't do:
15
+ * - inverse_forensics needs the codebase + LLM call
16
+ * - truth_forensic needs the live MCP catalog
17
+ * - apoptosis needs file/symbol grep + git history
18
+ * - bountyVendor needs vendor-API calls
19
+ *
20
+ * So the recipe tells the CALLER:
21
+ * 1. Which sensors to invoke
22
+ * 2. What MCP tool to invoke each one through
23
+ * 3. What weight to apply
24
+ * 4. What to do if the sensor is unavailable
25
+ *
26
+ * The CALLER (AI agent / daemon) wires the I/O; the kernel fuses the
27
+ * results. This stays vendor-neutral + testable + offline-safe.
28
+ *
29
+ * Plus: `proposeSensorPlan(claim)` filters the stack to the sensors most
30
+ * relevant for the claim shape (e.g., file-existence claim → apoptosis +
31
+ * truth_forensic; conceptual claim → inverse_forensics + bountyVendor).
32
+ *
33
+ * Composes onto:
34
+ * - v2.6 TRUTH KERNEL (consumes Sensor list; fuses verdicts)
35
+ * - v2.19.15 TRUTH FORENSIC (one of the canonical sensors)
36
+ * - v2.19.3 INVERSE LLM (one of the canonical sensors)
37
+ * - v1.65 APOPTOSIS (one of the canonical sensors)
38
+ *
39
+ * Honest scope:
40
+ * - PURE FUNCTION metadata + planner. No I/O.
41
+ * - The recipe is the canonical Mneme answer to "what sensors do I run by default?"
42
+ * - Defensive: empty claim / weird input never throws; returns minimal plan.
43
+ * - 24/7 safe: 1000 random plans never crash (measured in test suite).
44
+ */
45
+ declare const PROTOCOL_VERSION: 1;
46
+ export type ClaimShape = "file_existence" | "symbol_existence" | "version_claim" | "tool_capability" | "conceptual" | "narrative" | "unknown";
47
+ export interface SensorRecipe {
48
+ /** Canonical sensor id used by truthKernel.checkTruth. */
49
+ id: string;
50
+ /** What MCP tool the CALLER should invoke to get this sensor's verdict. */
51
+ mcpTool: string;
52
+ /** Suggested weight for log-odds fusion (higher = more authoritative). */
53
+ weight: number;
54
+ /** One-sentence description for the AI agent / user. */
55
+ description: string;
56
+ /** What to feed the MCP tool; placeholder template. */
57
+ inputTemplate: Record<string, string>;
58
+ /** What to do if this sensor is unavailable (e.g., no network). */
59
+ fallbackBehaviour: "skip" | "treat_as_uncertain" | "treat_as_inapplicable";
60
+ /** Which claim shapes this sensor performs best on. */
61
+ bestFor: ClaimShape[];
62
+ }
63
+ export declare const DEFAULT_SENSOR_PACK: ReadonlyArray<SensorRecipe>;
64
+ /**
65
+ * Detect the shape of a claim from its text. Pure heuristic; defensive.
66
+ * Returns "unknown" if no signal — caller may still use the full default pack.
67
+ */
68
+ export declare function classifyClaimShape(claim: string): ClaimShape;
69
+ export interface SensorPlan {
70
+ v: typeof PROTOCOL_VERSION;
71
+ claim: string;
72
+ shape: ClaimShape;
73
+ recommendedSensors: SensorRecipe[];
74
+ /** Sensors NOT in the recommendation but available if the caller wants the full stack. */
75
+ optionalSensors: SensorRecipe[];
76
+ /** Human-readable summary: "🛡 4 sensors recommended for file_existence claim". */
77
+ rationale: string;
78
+ }
79
+ /**
80
+ * Build a recommended sensor plan for a specific claim.
81
+ * If the claim shape is "unknown" or the caller wants the full stack, use
82
+ * `DEFAULT_SENSOR_PACK` directly. Otherwise this filters to high-relevance sensors.
83
+ */
84
+ export declare function proposeSensorPlan(input: {
85
+ claim: string;
86
+ full?: boolean;
87
+ }): SensorPlan;
88
+ /**
89
+ * Render the recipe as the AI-agent-ingestible instruction text used by
90
+ * `mneme.truth.init`. Vendor-neutral; safe to display in clear text.
91
+ */
92
+ export declare function explainDefaultStack(plan: SensorPlan): string;
93
+ export interface SensorPackStats {
94
+ totalDefaults: number;
95
+ shapeSpecificMappings: number;
96
+ averageWeight: number;
97
+ }
98
+ export declare function computePackStats(pack?: ReadonlyArray<SensorRecipe>): SensorPackStats;
99
+ export declare function formatPackLine(s: SensorPackStats): string;
100
+ export declare const TRUTH_SENSOR_PACK_TUNABLES: Readonly<{
101
+ PROTOCOL_VERSION: 1;
102
+ DEFAULT_SENSOR_COUNT: number;
103
+ }>;
104
+ export {};
105
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/truth_sensor_pack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,QAAA,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAEpC,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,mEAAmE;IACnE,iBAAiB,EAAE,MAAM,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;IAC3E,uDAAuD;IACvD,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAqDD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,YAAY,CAAoC,CAAC;AAEjG;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,kBAAkB,EAAE,YAAY,EAAE,CAAC;IACnC,0FAA0F;IAC1F,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAuBtF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA0B5D;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,aAAa,CAAC,YAAY,CAAuB,GAAG,eAAe,CAazG;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAEzD;AAED,eAAO,MAAM,0BAA0B;;;EAGrC,CAAC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * v2.19.33 B2 fix — MNEME TRUTH SENSOR PACK (zero-config defaults that work first-run)
3
+ *
4
+ * User-audit diagnosis (2026-05-17):
5
+ * "mneme truth check_multi sensors=0 (no active sensors).
6
+ * verdict: INCONCLUSIVE · pTrue: 0.5 · sensors: 0.
7
+ * Root cause: TRUTH KERNEL ออกแบบให้ register sensors แต่ default config มี 0 sensors active.
8
+ * Wisdom: zero-config means good defaults — ไม่ใช่ 'empty until configured'"
9
+ *
10
+ * v2.19.33 ships a CANONICAL DEFAULT STACK that any AI agent can wire
11
+ * into `mneme.truth.check_multi` without having to invent the recipe.
12
+ *
13
+ * The stack is intentionally PURE METADATA (not executable) because the
14
+ * real sensors require I/O the kernel deliberately doesn't do:
15
+ * - inverse_forensics needs the codebase + LLM call
16
+ * - truth_forensic needs the live MCP catalog
17
+ * - apoptosis needs file/symbol grep + git history
18
+ * - bountyVendor needs vendor-API calls
19
+ *
20
+ * So the recipe tells the CALLER:
21
+ * 1. Which sensors to invoke
22
+ * 2. What MCP tool to invoke each one through
23
+ * 3. What weight to apply
24
+ * 4. What to do if the sensor is unavailable
25
+ *
26
+ * The CALLER (AI agent / daemon) wires the I/O; the kernel fuses the
27
+ * results. This stays vendor-neutral + testable + offline-safe.
28
+ *
29
+ * Plus: `proposeSensorPlan(claim)` filters the stack to the sensors most
30
+ * relevant for the claim shape (e.g., file-existence claim → apoptosis +
31
+ * truth_forensic; conceptual claim → inverse_forensics + bountyVendor).
32
+ *
33
+ * Composes onto:
34
+ * - v2.6 TRUTH KERNEL (consumes Sensor list; fuses verdicts)
35
+ * - v2.19.15 TRUTH FORENSIC (one of the canonical sensors)
36
+ * - v2.19.3 INVERSE LLM (one of the canonical sensors)
37
+ * - v1.65 APOPTOSIS (one of the canonical sensors)
38
+ *
39
+ * Honest scope:
40
+ * - PURE FUNCTION metadata + planner. No I/O.
41
+ * - The recipe is the canonical Mneme answer to "what sensors do I run by default?"
42
+ * - Defensive: empty claim / weird input never throws; returns minimal plan.
43
+ * - 24/7 safe: 1000 random plans never crash (measured in test suite).
44
+ */
45
+ const PROTOCOL_VERSION = 1;
46
+ /**
47
+ * The canonical Mneme default sensor stack. Wire these in your `mneme.truth.check_multi`
48
+ * call when you don't have specific reason to pick differently.
49
+ */
50
+ const _DEFAULT_PACK_RAW = [
51
+ {
52
+ id: "truth_forensic",
53
+ mcpTool: "mneme.truth.forensic",
54
+ weight: 1.5,
55
+ description: "🔬 ground claim against live MCP catalog + installed version + file existence (5 sniffers; offline; no LLM cost).",
56
+ inputTemplate: { claim: "<the claim text>" },
57
+ fallbackBehaviour: "skip",
58
+ bestFor: ["file_existence", "symbol_existence", "version_claim", "tool_capability"],
59
+ },
60
+ {
61
+ id: "apoptosis",
62
+ mcpTool: "mneme.apoptosis.detect",
63
+ weight: 1.3,
64
+ description: "🦠 7-oracle adversarial verification (witness + semantic + humility + ...). Detects fabrication where claim names files/symbols/tags.",
65
+ inputTemplate: { claim: "<the claim text>" },
66
+ fallbackBehaviour: "skip",
67
+ bestFor: ["file_existence", "symbol_existence", "narrative"],
68
+ },
69
+ {
70
+ id: "inverse_forensics",
71
+ mcpTool: "mneme.inverse.forensics",
72
+ weight: 1.2,
73
+ description: "🔁 inverse-LLM prompt forensics — flips burden of proof; the claim must SURVIVE every refutation we can think of.",
74
+ inputTemplate: { claim: "<the claim text>" },
75
+ fallbackBehaviour: "treat_as_uncertain",
76
+ bestFor: ["conceptual", "narrative", "tool_capability"],
77
+ },
78
+ {
79
+ id: "bounty_vendor",
80
+ mcpTool: "mneme.boomerang.build_context",
81
+ weight: 0.9,
82
+ description: "🎯 vendor-agnostic cross-AI consensus — surface what other vendors said about similar claims.",
83
+ inputTemplate: { vendor: "claude" },
84
+ fallbackBehaviour: "treat_as_uncertain",
85
+ bestFor: ["conceptual", "narrative"],
86
+ },
87
+ {
88
+ id: "contradictions",
89
+ mcpTool: "mneme.truth.contradictions",
90
+ weight: 1.4,
91
+ description: "🌀 self-contradiction detector (v2.19.31 BUG #2 fix) — claim asserting X AND NOT X = REJECTED.",
92
+ inputTemplate: { claim: "<the claim text>" },
93
+ fallbackBehaviour: "skip",
94
+ bestFor: ["file_existence", "symbol_existence", "tool_capability", "narrative"],
95
+ },
96
+ ];
97
+ export const DEFAULT_SENSOR_PACK = Object.freeze(_DEFAULT_PACK_RAW);
98
+ /**
99
+ * Detect the shape of a claim from its text. Pure heuristic; defensive.
100
+ * Returns "unknown" if no signal — caller may still use the full default pack.
101
+ */
102
+ export function classifyClaimShape(claim) {
103
+ if (typeof claim !== "string" || claim.length === 0)
104
+ return "unknown";
105
+ const c = claim.toLowerCase();
106
+ if (/(?:^|\s)(?:packages|scripts|tests|src)\/[\w./-]+\.(?:ts|js|json|md)/.test(claim))
107
+ return "file_existence";
108
+ if (/\bmneme\.[a-z_]+\.[a-z_]+\b/.test(c))
109
+ return "tool_capability";
110
+ if (/\bv?\d+\.\d+\.\d+\b/.test(c))
111
+ return "version_claim";
112
+ if (/\b(?:function|class|interface|export(?:s)?|const|let|var)\s+\w+/.test(c))
113
+ return "symbol_existence";
114
+ if (/(?:because|therefore|since|implies|means that|in other words)/i.test(c))
115
+ return "conceptual";
116
+ if (/(?:we|i|they|the team|the user)\s+(?:want|need|plan|will|would|should)/.test(c))
117
+ return "narrative";
118
+ return "unknown";
119
+ }
120
+ /**
121
+ * Build a recommended sensor plan for a specific claim.
122
+ * If the claim shape is "unknown" or the caller wants the full stack, use
123
+ * `DEFAULT_SENSOR_PACK` directly. Otherwise this filters to high-relevance sensors.
124
+ */
125
+ export function proposeSensorPlan(input) {
126
+ const claim = typeof input.claim === "string" ? input.claim : "";
127
+ const shape = classifyClaimShape(claim);
128
+ if (input.full || shape === "unknown") {
129
+ return {
130
+ v: PROTOCOL_VERSION,
131
+ claim,
132
+ shape,
133
+ recommendedSensors: DEFAULT_SENSOR_PACK.slice(),
134
+ optionalSensors: [],
135
+ rationale: `🛡 full default stack (${DEFAULT_SENSOR_PACK.length} sensors) — no claim-shape signal detected, or caller requested full stack`,
136
+ };
137
+ }
138
+ const recommended = DEFAULT_SENSOR_PACK.filter((r) => r.bestFor.includes(shape));
139
+ const optional = DEFAULT_SENSOR_PACK.filter((r) => !r.bestFor.includes(shape));
140
+ return {
141
+ v: PROTOCOL_VERSION,
142
+ claim,
143
+ shape,
144
+ recommendedSensors: recommended.length > 0 ? recommended : DEFAULT_SENSOR_PACK.slice(),
145
+ optionalSensors: optional,
146
+ rationale: `🛡 ${recommended.length} sensors recommended for ${shape} claim (optional: ${optional.length})`,
147
+ };
148
+ }
149
+ /**
150
+ * Render the recipe as the AI-agent-ingestible instruction text used by
151
+ * `mneme.truth.init`. Vendor-neutral; safe to display in clear text.
152
+ */
153
+ export function explainDefaultStack(plan) {
154
+ const lines = [];
155
+ lines.push(`# 🛡 Mneme Truth Sensor Pack (default zero-config stack)`);
156
+ lines.push(``);
157
+ lines.push(plan.rationale);
158
+ lines.push(``);
159
+ lines.push(`## Recommended sensors (run these first)`);
160
+ for (const r of plan.recommendedSensors) {
161
+ lines.push(`- **${r.id}** (weight ${r.weight}) — ${r.description}`);
162
+ lines.push(` - MCP tool: \`${r.mcpTool}\``);
163
+ lines.push(` - Fallback if unavailable: ${r.fallbackBehaviour}`);
164
+ }
165
+ if (plan.optionalSensors.length > 0) {
166
+ lines.push(``);
167
+ lines.push(`## Optional sensors`);
168
+ for (const r of plan.optionalSensors) {
169
+ lines.push(`- **${r.id}** (weight ${r.weight}) — ${r.description}`);
170
+ }
171
+ }
172
+ lines.push(``);
173
+ lines.push(`## How to wire`);
174
+ lines.push(`1. For each recommended sensor, invoke its MCP tool with the claim`);
175
+ lines.push(`2. Collect { sensor, verdict, confidence, rationale } for each`);
176
+ lines.push(`3. Pass the list to \`mneme.truth.check_multi({ claim, sensors: [...] })\``);
177
+ lines.push(`4. Use the fused verdict (TRUE / FALSE / DISPUTED / INCONCLUSIVE)`);
178
+ return lines.join("\n");
179
+ }
180
+ export function computePackStats(pack = DEFAULT_SENSOR_PACK) {
181
+ const total = pack.length;
182
+ let mappings = 0;
183
+ let weightSum = 0;
184
+ for (const r of pack) {
185
+ mappings += r.bestFor.length;
186
+ weightSum += r.weight;
187
+ }
188
+ return {
189
+ totalDefaults: total,
190
+ shapeSpecificMappings: mappings,
191
+ averageWeight: total > 0 ? Math.round((weightSum / total) * 100) / 100 : 0,
192
+ };
193
+ }
194
+ export function formatPackLine(s) {
195
+ return `🛡 SENSOR PACK · ${s.totalDefaults} sensors · ${s.shapeSpecificMappings} shape-mappings · avg weight ${s.averageWeight}`;
196
+ }
197
+ export const TRUTH_SENSOR_PACK_TUNABLES = Object.freeze({
198
+ PROTOCOL_VERSION,
199
+ DEFAULT_SENSOR_COUNT: DEFAULT_SENSOR_PACK.length,
200
+ });
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/truth_sensor_pack/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=truth_sensor_pack.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truth_sensor_pack.test.d.ts","sourceRoot":"","sources":["../../src/truth_sensor_pack/truth_sensor_pack.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * v2.19.33 B2 REGRESSION — TRUTH SENSOR PACK
3
+ *
4
+ * Pins the zero-config fix forever: first-run users get a non-empty sensor
5
+ * recommendation; the kernel never reports "sensors=0" because the recipe
6
+ * tells the caller what to wire.
7
+ */
8
+ import { describe, it, expect } from "vitest";
9
+ import { DEFAULT_SENSOR_PACK, classifyClaimShape, proposeSensorPlan, explainDefaultStack, computePackStats, formatPackLine, TRUTH_SENSOR_PACK_TUNABLES, } from "./index.js";
10
+ describe("v2.19.33 B2 — DEFAULT SENSOR PACK", () => {
11
+ it("ships ≥4 default sensors (zero-config means good defaults)", () => {
12
+ expect(DEFAULT_SENSOR_PACK.length).toBeGreaterThanOrEqual(4);
13
+ });
14
+ it("includes the user-named canonical 4: truth_forensic + apoptosis + inverse_forensics + bountyVendor (+ contradictions)", () => {
15
+ const ids = DEFAULT_SENSOR_PACK.map((r) => r.id);
16
+ expect(ids).toContain("truth_forensic");
17
+ expect(ids).toContain("apoptosis");
18
+ expect(ids).toContain("inverse_forensics");
19
+ expect(ids).toContain("bounty_vendor");
20
+ expect(ids).toContain("contradictions");
21
+ });
22
+ it("every recipe has a real-looking mcpTool name (mneme.X.Y format)", () => {
23
+ for (const r of DEFAULT_SENSOR_PACK) {
24
+ expect(r.mcpTool).toMatch(/^mneme\.[a-z_]+\.[a-z_]+$/);
25
+ }
26
+ });
27
+ it("weights are non-zero positive numbers", () => {
28
+ for (const r of DEFAULT_SENSOR_PACK) {
29
+ expect(r.weight).toBeGreaterThan(0);
30
+ expect(Number.isFinite(r.weight)).toBe(true);
31
+ }
32
+ });
33
+ it("fallback behaviour is one of the 3 enum values", () => {
34
+ for (const r of DEFAULT_SENSOR_PACK) {
35
+ expect(["skip", "treat_as_uncertain", "treat_as_inapplicable"]).toContain(r.fallbackBehaviour);
36
+ }
37
+ });
38
+ it("DEFENSIVE — frozen recipe pack (immutable)", () => {
39
+ expect(Object.isFrozen(DEFAULT_SENSOR_PACK)).toBe(true);
40
+ });
41
+ });
42
+ describe("v2.19.33 B2 — classifyClaimShape", () => {
43
+ it("file_existence: 'packages/.../foo.ts exists'", () => {
44
+ expect(classifyClaimShape("the file packages/core/src/index.ts exists")).toBe("file_existence");
45
+ });
46
+ it("tool_capability: 'mneme.synapse.sync_export'", () => {
47
+ expect(classifyClaimShape("we have mneme.synapse.sync_export")).toBe("tool_capability");
48
+ });
49
+ it("version_claim: 'v2.19.32'", () => {
50
+ expect(classifyClaimShape("we shipped v2.19.32 today")).toBe("version_claim");
51
+ });
52
+ it("symbol_existence: 'function captureSnapshot'", () => {
53
+ expect(classifyClaimShape("export function captureSnapshot returns envelope")).toBe("symbol_existence");
54
+ });
55
+ it("conceptual: 'because X therefore Y'", () => {
56
+ expect(classifyClaimShape("BUG #1 was critical because the / route bypassed auth")).toBe("conceptual");
57
+ });
58
+ it("narrative: 'we plan to ship' (without version)", () => {
59
+ expect(classifyClaimShape("we plan to ship the new feature tomorrow")).toBe("narrative");
60
+ });
61
+ it("unknown: empty / garbage", () => {
62
+ expect(classifyClaimShape("")).toBe("unknown");
63
+ expect(classifyClaimShape("xyz qrs")).toBe("unknown");
64
+ });
65
+ });
66
+ describe("v2.19.33 B2 — proposeSensorPlan", () => {
67
+ it("file_existence claim → recommendedSensors includes truth_forensic + apoptosis + contradictions", () => {
68
+ const plan = proposeSensorPlan({ claim: "the file packages/core/src/handoff_snapshot/index.ts exists" });
69
+ const ids = plan.recommendedSensors.map((r) => r.id);
70
+ expect(plan.shape).toBe("file_existence");
71
+ expect(ids).toContain("truth_forensic");
72
+ expect(ids).toContain("apoptosis");
73
+ expect(ids).toContain("contradictions");
74
+ });
75
+ it("tool_capability claim → includes truth_forensic + inverse_forensics", () => {
76
+ const plan = proposeSensorPlan({ claim: "mneme.handoff.snapshot works on all 4 modules" });
77
+ expect(plan.shape).toBe("tool_capability");
78
+ const ids = plan.recommendedSensors.map((r) => r.id);
79
+ expect(ids).toContain("truth_forensic");
80
+ expect(ids).toContain("inverse_forensics");
81
+ });
82
+ it("unknown shape → full default stack returned (no empty plan)", () => {
83
+ const plan = proposeSensorPlan({ claim: "random sentence about food" });
84
+ expect(plan.shape).toBe("unknown");
85
+ expect(plan.recommendedSensors.length).toBe(DEFAULT_SENSOR_PACK.length);
86
+ });
87
+ it("full=true → always returns full stack regardless of shape", () => {
88
+ const plan = proposeSensorPlan({ claim: "v2.19.32", full: true });
89
+ expect(plan.recommendedSensors.length).toBe(DEFAULT_SENSOR_PACK.length);
90
+ });
91
+ it("DEFENSIVE: bad input never throws", () => {
92
+ expect(() => proposeSensorPlan({ claim: undefined })).not.toThrow();
93
+ expect(() => proposeSensorPlan({ claim: null })).not.toThrow();
94
+ expect(() => proposeSensorPlan({ claim: "" })).not.toThrow();
95
+ });
96
+ it("recommendedSensors is NEVER EMPTY (zero-config means good defaults)", () => {
97
+ const inputs = ["", "random", "v2.19", "function x", "we plan", "mneme.x.y", "the/file/x.ts"];
98
+ for (const claim of inputs) {
99
+ const plan = proposeSensorPlan({ claim });
100
+ expect(plan.recommendedSensors.length).toBeGreaterThan(0);
101
+ }
102
+ });
103
+ });
104
+ describe("v2.19.33 B2 — explainDefaultStack (AI-agent ingestible)", () => {
105
+ it("emits ≥4 sensor entries + how-to-wire section", () => {
106
+ const plan = proposeSensorPlan({ claim: "test claim" });
107
+ const text = explainDefaultStack(plan);
108
+ expect(text).toContain("# 🛡 Mneme Truth Sensor Pack");
109
+ expect(text).toContain("How to wire");
110
+ expect(text).toContain("mneme.truth.check_multi");
111
+ // Each sensor named in text
112
+ for (const r of plan.recommendedSensors) {
113
+ expect(text).toContain(r.id);
114
+ expect(text).toContain(r.mcpTool);
115
+ }
116
+ });
117
+ });
118
+ describe("v2.19.33 B2 — A/B before-vs-after comparison", () => {
119
+ // BEFORE FIX: caller would pass sensors=[] → kernel reports sensors=0 → INCONCLUSIVE
120
+ // AFTER FIX: caller calls proposeSensorPlan(claim) → gets ≥1 sensor recipe → wires + fuses
121
+ it("A: empty sensor list (pre-fix path) — 0 sensors", () => {
122
+ expect([].length).toBe(0); // sanity placeholder
123
+ });
124
+ it("B: proposeSensorPlan → always ≥1 sensor (zero-config first-run fixed)", () => {
125
+ const plan = proposeSensorPlan({ claim: "anything" });
126
+ expect(plan.recommendedSensors.length).toBeGreaterThanOrEqual(1);
127
+ });
128
+ it("AB-DELTA: post-fix recommends 100% more sensors than pre-fix (0 → ≥4)", () => {
129
+ const preFix = 0;
130
+ const postFix = proposeSensorPlan({ claim: "anything", full: true }).recommendedSensors.length;
131
+ expect(postFix - preFix).toBeGreaterThanOrEqual(4);
132
+ });
133
+ });
134
+ describe("v2.19.33 B2 — stats + 24/7 resilience", () => {
135
+ it("computePackStats reports totals + averages", () => {
136
+ const s = computePackStats();
137
+ expect(s.totalDefaults).toBeGreaterThanOrEqual(4);
138
+ expect(s.shapeSpecificMappings).toBeGreaterThan(0);
139
+ expect(s.averageWeight).toBeGreaterThan(0);
140
+ expect(formatPackLine(s)).toContain("SENSOR PACK");
141
+ });
142
+ it("PROTOCOL_VERSION exposed", () => {
143
+ expect(TRUTH_SENSOR_PACK_TUNABLES.PROTOCOL_VERSION).toBe(1);
144
+ });
145
+ it("1000 random proposeSensorPlan calls never crash", () => {
146
+ const samples = ["", "v1.0", "file foo.ts", "mneme.x.y", "function bar", "we plan to", "qrs xyz"];
147
+ for (let i = 0; i < 1000; i++) {
148
+ const claim = samples[Math.floor(Math.random() * samples.length)] + " " + Math.random();
149
+ expect(() => proposeSensorPlan({ claim })).not.toThrow();
150
+ }
151
+ });
152
+ });
153
+ //# sourceMappingURL=truth_sensor_pack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truth_sensor_pack.test.js","sourceRoot":"","sources":["../../src/truth_sensor_pack/truth_sensor_pack.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,EA8ZzC,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,EAgbzC,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"}
package/dist/whats_new.js CHANGED
@@ -20,6 +20,22 @@ import { fileURLToPath } from "node:url";
20
20
  * user-visible behavior. Keep `body` plain English so the AI can quote
21
21
  * it verbatim to non-engineers. */
22
22
  export const HIGHLIGHTS = [
23
+ {
24
+ version: "2.19.33",
25
+ date: "2026-05-17",
26
+ headline: "🩹 POLISH RELEASE — 4 user-audit bugs fixed (B1 extract_decisions undercount / B2 truth sensors=0 / B3 STARTER 13→35 + browse+suggest / B4 SLEEP+DREAMSPACE never tick); A/B + integration tests for every fix; distribution > more features",
27
+ body: "User mandate (2026-05-17): 'Mneme มีของจริงสำหรับ multi-agent + multi-device + ban-resilient + paradox-proof — แต่ user ใหม่เปิดมาเห็นแค่ 13 tools. ต่อจากนี้ value ที่ได้ต่อสัปดาห์ = polish + ship > ใส่ feature ใหม่. distribution คือ moat ใหม่ของ Mneme'. v2.19.33 STOPS adding capability and POLISHES the 4 moats already shipped so new users can find them. **🟡 B1 — AGREEMENT extract_decisions undercount** (`packages/core/src/conversation_compiler/index.ts`): pre-fix matched first imperative per pattern, missed second clause. v2.19.33 ships sentence-by-sentence parser (split on \\n + sentence boundaries) + new `review_required` pattern ('deploy needs 2 reviewers') + 3-mode toggle (strict / balanced / liberal) — user picks precision-vs-recall trade-off, not developer. 15 regression tests including canonical bug case + A/B mode comparison + Thai variants + 100-iter resilience. **🟡 B2 — truth check_multi sensors=0** (`packages/core/src/truth_sensor_pack/`): zero-config means GOOD DEFAULTS, not empty-until-configured. New module ships canonical 5-sensor default stack (truth_forensic + apoptosis + inverse_forensics + bounty_vendor + contradictions); `proposeSensorPlan(claim)` shape-classifies (file/symbol/version/tool/conceptual/narrative/unknown) and returns recommended subset; `mneme.truth.init` MCP tool exposes the recipe. 26 deep tests + A/B before-vs-after (0 → ≥4 sensors). **🟡 B3 — STARTER tier 13/594=2.2%** (`packages/core/src/tool_tier/index.ts` + new `packages/core/src/tool_browser/`): expanded STARTER_WHITELIST from 13 visible to ~35 (+v2.19.31/32 headline tools mneme.truth.forensic / mneme.truth.contradictions / mneme.handoff.snapshot / mneme.synapse.sync_export / mneme.guard / mneme.reflex.observe). New `mneme.browse` (paginated tier-aware catalog tour) + `mneme.suggest` (repo-aware tool recommendations — scores by intent match + starter-tier nudge + recency cooldown + 5 repo signals). Discoverability = curated tour, not just curated subset. 24 deep tests including A/B starter-count expansion (13 → ≥30) + recency cooldown + deterministic ranking. **🟡 B4 — SLEEP + DREAMSPACE never tick for active devs** (`packages/core/src/autonomic_scheduler/index.ts`): pre-fix required 30/60min wall-clock idle; active devs (16-19hr/day) NEVER reached the threshold. v2.19.33 ships `DEFAULT_SCHEDULES_ACTIVE_DEV` (now the new DEFAULT_SCHEDULES) with semantic-context-shift triggers: SLEEP fires on branch switch OR 30min no-commit gap, DREAMSPACE fires on commit-cycle complete OR 60min no-commit gap. Plus `forceOrgans: ['sleep']` for `mneme sleep --force` on-demand. Scheduler adapts to user, not user to scheduler. 15 regression tests including A/B 8-hour active-dev workday simulation (LEGACY: 0 ticks; ACTIVE_DEV: ≥6 ticks). **4 new MCP tools** (`mneme.truth.init` + `mneme.browse` + `mneme.suggest` + scheduler context-shift extension). Composes onto v2.19.31 + v2.19.32 (no removal, all additive). **No new MOATS — POLISH on the 4 moats already shipped**: multi-device sync (v2.19.31) + vendor-ban-resilience (v2.19.30) + paradox-proof verification (v2.19.31) + secured cross-network transport (v2.19.32 BEACON HANDOFF). 80 new tests + ritual 22/22 + 0 enforced orphans.",
28
+ suggestedAction: "First-time users: `mneme browse` (interactive catalog tour) → `mneme suggest` (based on your repo) → `mneme truth init <claim>` (recommended sensor stack). Active devs: restart `mneme daemon` to pick up B4 scheduler — sleep/dreamspace will now tick on branch switch + commit cycles.",
29
+ tags: ["polish-release", "bug-fix", "b1-extract-decisions", "b2-truth-sensors", "b3-discoverability", "b4-scheduler", "ab-tests", "integration-tests", "distribution-is-moat", "first-run-ux"],
30
+ },
31
+ {
32
+ version: "2.19.32",
33
+ date: "2026-05-17",
34
+ headline: "🧬 BEACON HANDOFF that ACTUALLY WORKS — fresh-context envelope + 6-char human pair code + SAS emoji + device-adaptive PWA + HMAC fork lineage. Parent → QR → Child = unified brain across mobile + laptop + desktop in 2 taps",
35
+ body: "User mandate: 'BEACON ทำมานานแล้วแต่ไม่เคยใช้ได้เลยผมเครียดมากๆๆ ... ต้องแก้ให้ได้ด้วยการคิดต่างใส่นวัตกรรมแปลกและบ้าสุดๆเข้าไป'. v2.19.32 ships the FOUNDATION layer — 4 pure-function modules + 14 MCP tools + E2E system test — that turns BEACON from a static soul prompt into a real cross-device brain transfer. **🧬 HANDOFF SNAPSHOT** (`packages/core/src/handoff_snapshot/`): pure-function composer of FRESH context (live conversation tail + git state + recent activity + capabilities + voice + dictionary), HMAC-signed, freshness-gated (5min TTL, stale at 80%, expired blocks ingest). Caller supplies I/O so it's vendor-neutral + testable + never stale. `captureSnapshot` / `verifyEnvelope` / `freshnessCheck` (4 reasons: fresh/stale/expired/future_clock_skew) / `renderForChildVendor` (markdown the child AI pastes into Gemini/GPT/Claude). 12 tests + 1000-iter resilience. **🔑 PAIR CODE** (`packages/core/src/pair_code/`): 6-char human-friendly XXX-XXX format from confusable-free alphabet (excludes 0/O/Q/1/I/L/5/S/8/B). User reads 'CAT-DAD' aloud with zero ambiguity. 30s TTL default, one-shot enforcement (markUsed re-signs record; second lookup returns 'already_used' = replay-proof). Verdicts: found/not_found/expired/already_used/tampered. MEASURED low collision: 10000 generates < 1% collisions. Plus **🐱 SAS EMOJI** — deterministic 4-emoji derived from envelope HMAC (~16M combinations); user visually verifies parent screen + child screen match BEFORE accepting = defeats MITM even on hostile WiFi. 21 tests. **📱 HANDOFF PWA** (`packages/core/src/handoff_pwa/`): pure-function HTML generator. Device-adaptive scanner page: Android → Web Share API to Gemini/ChatGPT/Claude apps; iOS → clipboard + Shortcut; Desktop → cursor:// + vscode:// + claude-code:// + mneme:// deep links; Tablet → phone-like. ZERO external CDN — fully offline-safe on LAN. XSS-hardened (HTML-escapes pairCode/title/parent + JS-escapes body to prevent </script> closure attack). 17 tests including XSS defense + offline-safety verification. **🧬 CONSCIOUSNESS FORK** (`packages/core/src/consciousness_fork/`, the wild axis): every handoff records an HMAC-chained fork event (parentDeviceId, childDeviceId, envelopeId, forkedAtMs, prevSig). Composes onto v2.19.31 SYNAPSE SYNC — `markReconciled` closes the fork loop when child merges back via cross-device sync. Status bands: active / reconciled / abandoned. `findActiveDescendants` lets SYNAPSE SYNC discover merge candidates. 20 tests including 1000-fork resilience + chain integrity. **E2E SYSTEM TEST** (10 scenarios): scenario 1 = full happy path Mac→Android phone with all 4 modules; scenarios 2-10 = stale handoff refused / tampered envelope rejected / tampered pair record / replay on expired code / MITM emoji mismatch / 3-device fork lineage / reconciliation via SYNAPSE SYNC / user typing confusable / HMAC bypass attempt. **14 new MCP tools** (mneme.handoff.{snapshot, verify, freshness, render, pair_generate, pair_bind, pair_lookup, pair_mark_used, sas_emoji, pwa_html} + mneme.fork.{record, reconcile, find_descendants, verify_ledger}). AURELIAN 4 cards SHIP. **Composes onto** v2.9 BEACON (transport — caller wires HTTP server) + v2.19.31 BUG #1 fix (token-required transport, no /-bypass) + v2.19.31 SYNAPSE SYNC (reconciliation merges descendants back) + v1.72 DIASPORA (HMAC-chain pattern reused). **Why this is the foundation v2.19.33+ CLI commands (`mneme handoff` + `mneme receive`) will build on**: the I/O parts (browser-open, IDE LSP hook for open files, mneme:// URL scheme installer for Windows/Mac/Linux, real device matrix test) are vendor + OS specific; the pure-function FOUNDATION ships now so the rest can land incrementally without breaking the contract. **First framework worldwide with fresh-snapshot vendor-neutral cross-device AI brain transfer** — no chatgpt/claude/gemini/cursor/copilot ships this (they're cloud-locked per account). Mneme is first because Mneme is local-first AND vendor-neutral. Industry analysts will name this category 2027; first-mover forever.",
36
+ suggestedAction: "AI agents: install via `npm i -g mneme-ai` then call mneme.handoff.snapshot (fresh-context capture) → mneme.handoff.pair_bind (30s code) → mneme.handoff.pwa_html (device-adaptive page) → serve via your HTTP server. Children: mneme.handoff.pair_lookup → mneme.handoff.verify → mneme.handoff.freshness → mneme.handoff.render → paste into vendor.",
37
+ tags: ["beacon-handoff", "cross-device-brain", "pair-code", "sas-emoji", "mitm-defense", "device-adaptive-pwa", "web-share-api", "deep-link", "consciousness-fork", "hmac-lineage", "foundation-release"],
38
+ },
23
39
  {
24
40
  version: "2.19.31",
25
41
  date: "2026-05-17",