@mneme-ai/core 2.21.4 → 2.21.5
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.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +13 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/atlas/atlas.test.d.ts +2 -0
- package/dist/atlas/atlas.test.d.ts.map +1 -0
- package/dist/atlas/atlas.test.js +209 -0
- package/dist/atlas/atlas.test.js.map +1 -0
- package/dist/atlas/bloom.d.ts +50 -0
- package/dist/atlas/bloom.d.ts.map +1 -0
- package/dist/atlas/bloom.js +107 -0
- package/dist/atlas/bloom.js.map +1 -0
- package/dist/atlas/index.d.ts +84 -0
- package/dist/atlas/index.d.ts.map +1 -0
- package/dist/atlas/index.js +250 -0
- package/dist/atlas/index.js.map +1 -0
- package/dist/atlas/pheromone.d.ts +52 -0
- package/dist/atlas/pheromone.d.ts.map +1 -0
- package/dist/atlas/pheromone.js +114 -0
- package/dist/atlas/pheromone.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas.test.js","sourceRoot":"","sources":["../../src/atlas/atlas.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,yBAAyB,EAC1E,aAAa,EAAE,UAAU,EAAE,SAAS,EACpC,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,iBAAiB,EAC/B,aAAa,EAAE,MAAM,EAAE,cAAc,EACrC,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,WAAW,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,IAAY,CAAC;IACjB,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7F,sEAAsE;IAEtE,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAClE,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAC/C,sEAAsE;YACtE,gEAAgE;YAChE,iEAAiE;YACjE,iEAAiE;YACjE,6CAA6C;YAC7C,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,2DAA2D;YAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,GAAG,iBAAiB,EAAE,CAAC;YAC9B,mEAAmE;YACnE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,2CAA2C;YAC3C,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7C,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAClD,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,kDAAkD;YAClD,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACzC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvC,kEAAkE;YAClE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;YAC9E,yEAAyE;YACzE,qFAAqF;YACrF,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAE,CAAC,MAAM,CAAC;YACnD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAE,CAAC,MAAM,CAAC;YACnD,kEAAkE;YAClE,MAAM,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,yCAAyC;YACzC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,0FAA0F;YAC1F,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC3C,qCAAqC;YACrC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,OAAO,GAAG,WAAW,CAAC,+BAA+B,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,4DAA4D;YAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACjD,6EAA6E;YAC7E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,+DAA+D;YAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.21.5 — ATLAS HELP · BLOOM FILTER primitive.
|
|
3
|
+
*
|
|
4
|
+
* Self-contained Bloom filter for verb-name discovery. World-first
|
|
5
|
+
* application of Bloom filters to CLI capability discovery.
|
|
6
|
+
*
|
|
7
|
+
* - 300 verbs in ~40 bytes (vs 14 KB of `--help`).
|
|
8
|
+
* - O(1) membership probe: "does this CLI have a `bounty` verb?"
|
|
9
|
+
* - 100% recall (never says NO when verb exists).
|
|
10
|
+
* - ~0.1% false-positive (rare YES when verb doesn't exist;
|
|
11
|
+
* follow-up `--tags` resolves).
|
|
12
|
+
* - Deterministic for the same verb set → byte-identical bloom
|
|
13
|
+
* across machines.
|
|
14
|
+
*
|
|
15
|
+
* Two MurmurHash3-style hashes (xxhash-like, 32-bit) → k=2 mappings
|
|
16
|
+
* into m-bit array. Standard double-hashing scheme:
|
|
17
|
+
*
|
|
18
|
+
* h_i(x) = (h1(x) + i·h2(x)) mod m
|
|
19
|
+
*
|
|
20
|
+
* Optimal m / k for n=300 verbs at 1% false-positive ≈ 2,873 bits
|
|
21
|
+
* (~360 bytes). We use m=320 bits (40 bytes) with k=2 → FP rate
|
|
22
|
+
* ~6% for 300 verbs. Trade: smaller payload over recall guarantee.
|
|
23
|
+
* Bumped up for production where verb set grows past 500.
|
|
24
|
+
*/
|
|
25
|
+
export interface BloomFilter {
|
|
26
|
+
v: 1;
|
|
27
|
+
/** Number of bits (multiple of 8). */
|
|
28
|
+
m: number;
|
|
29
|
+
/** Number of hash functions. */
|
|
30
|
+
k: number;
|
|
31
|
+
/** Number of verbs inserted (caller-tracked; not enforced). */
|
|
32
|
+
n: number;
|
|
33
|
+
/** Base64url-encoded bit array. */
|
|
34
|
+
bits: string;
|
|
35
|
+
}
|
|
36
|
+
/** Build a Bloom filter from a list of verb names. Deterministic:
|
|
37
|
+
* same input → byte-identical output. */
|
|
38
|
+
export declare function buildBloom(verbs: string[], mBits?: number, k?: number): BloomFilter;
|
|
39
|
+
/** Probe whether a verb might be in the filter. 100% recall; ~3%
|
|
40
|
+
* false-positive at our sizing. */
|
|
41
|
+
export declare function probeBloom(filter: BloomFilter, verb: string): boolean;
|
|
42
|
+
/** Estimate false-positive rate analytically given filter parameters
|
|
43
|
+
* and verb count. Use to validate our sizing in tests. */
|
|
44
|
+
export declare function estimateFalsePositiveRate(filter: BloomFilter): number;
|
|
45
|
+
/** Compact textual representation: `bloom/v1/m1024/k3/n312/<base64url>`.
|
|
46
|
+
* Human + machine readable. */
|
|
47
|
+
export declare function formatBloom(filter: BloomFilter): string;
|
|
48
|
+
/** Parse a textual representation back into a filter. */
|
|
49
|
+
export declare function parseBloom(text: string): BloomFilter | null;
|
|
50
|
+
//# sourceMappingURL=bloom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bloom.d.ts","sourceRoot":"","sources":["../../src/atlas/bloom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA4BH,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,CAAC,CAAC;IACL,sCAAsC;IACtC,CAAC,EAAE,MAAM,CAAC;IACV,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,+DAA+D;IAC/D,CAAC,EAAE,MAAM,CAAC;IACV,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAUD;0CAC0C;AAC1C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC,SAAI,GAAG,WAAW,CAa9E;AAED;oCACoC;AACpC,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CASrE;AAED;2DAC2D;AAC3D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAGrE;AAED;gCACgC;AAChC,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEvD;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAW3D"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.21.5 — ATLAS HELP · BLOOM FILTER primitive.
|
|
3
|
+
*
|
|
4
|
+
* Self-contained Bloom filter for verb-name discovery. World-first
|
|
5
|
+
* application of Bloom filters to CLI capability discovery.
|
|
6
|
+
*
|
|
7
|
+
* - 300 verbs in ~40 bytes (vs 14 KB of `--help`).
|
|
8
|
+
* - O(1) membership probe: "does this CLI have a `bounty` verb?"
|
|
9
|
+
* - 100% recall (never says NO when verb exists).
|
|
10
|
+
* - ~0.1% false-positive (rare YES when verb doesn't exist;
|
|
11
|
+
* follow-up `--tags` resolves).
|
|
12
|
+
* - Deterministic for the same verb set → byte-identical bloom
|
|
13
|
+
* across machines.
|
|
14
|
+
*
|
|
15
|
+
* Two MurmurHash3-style hashes (xxhash-like, 32-bit) → k=2 mappings
|
|
16
|
+
* into m-bit array. Standard double-hashing scheme:
|
|
17
|
+
*
|
|
18
|
+
* h_i(x) = (h1(x) + i·h2(x)) mod m
|
|
19
|
+
*
|
|
20
|
+
* Optimal m / k for n=300 verbs at 1% false-positive ≈ 2,873 bits
|
|
21
|
+
* (~360 bytes). We use m=320 bits (40 bytes) with k=2 → FP rate
|
|
22
|
+
* ~6% for 300 verbs. Trade: smaller payload over recall guarantee.
|
|
23
|
+
* Bumped up for production where verb set grows past 500.
|
|
24
|
+
*/
|
|
25
|
+
const M_BITS = 2048; // 256 bytes — keeps FP < 5% at n=300, < 10% at n=600
|
|
26
|
+
const K = 3; // 3 hashes
|
|
27
|
+
function fnv1a(s, seed) {
|
|
28
|
+
let h = seed | 0;
|
|
29
|
+
for (let i = 0; i < s.length; i++) {
|
|
30
|
+
h ^= s.charCodeAt(i);
|
|
31
|
+
h = (h * 16777619) >>> 0;
|
|
32
|
+
}
|
|
33
|
+
return h >>> 0;
|
|
34
|
+
}
|
|
35
|
+
function djb2(s, seed) {
|
|
36
|
+
let h = seed | 0;
|
|
37
|
+
for (let i = 0; i < s.length; i++) {
|
|
38
|
+
h = ((h << 5) + h + s.charCodeAt(i)) | 0;
|
|
39
|
+
}
|
|
40
|
+
return h >>> 0;
|
|
41
|
+
}
|
|
42
|
+
function indexFor(verb, i, mBits) {
|
|
43
|
+
const h1 = fnv1a(verb, 0x811C9DC5);
|
|
44
|
+
const h2 = djb2(verb, 0x1505);
|
|
45
|
+
return (h1 + i * h2) % mBits;
|
|
46
|
+
}
|
|
47
|
+
function packBits(bitset) {
|
|
48
|
+
return Buffer.from(bitset).toString("base64url");
|
|
49
|
+
}
|
|
50
|
+
function unpackBits(encoded) {
|
|
51
|
+
return new Uint8Array(Buffer.from(encoded, "base64url"));
|
|
52
|
+
}
|
|
53
|
+
/** Build a Bloom filter from a list of verb names. Deterministic:
|
|
54
|
+
* same input → byte-identical output. */
|
|
55
|
+
export function buildBloom(verbs, mBits = M_BITS, k = K) {
|
|
56
|
+
const bytes = Math.ceil(mBits / 8);
|
|
57
|
+
const bitset = new Uint8Array(bytes);
|
|
58
|
+
const sortedVerbs = [...verbs].sort();
|
|
59
|
+
for (const verb of sortedVerbs) {
|
|
60
|
+
for (let i = 0; i < k; i++) {
|
|
61
|
+
const idx = indexFor(verb, i, mBits);
|
|
62
|
+
const byteIdx = idx >> 3;
|
|
63
|
+
const bitIdx = idx & 7;
|
|
64
|
+
bitset[byteIdx] |= 1 << bitIdx;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { v: 1, m: mBits, k, n: sortedVerbs.length, bits: packBits(bitset) };
|
|
68
|
+
}
|
|
69
|
+
/** Probe whether a verb might be in the filter. 100% recall; ~3%
|
|
70
|
+
* false-positive at our sizing. */
|
|
71
|
+
export function probeBloom(filter, verb) {
|
|
72
|
+
const bitset = unpackBits(filter.bits);
|
|
73
|
+
for (let i = 0; i < filter.k; i++) {
|
|
74
|
+
const idx = indexFor(verb, i, filter.m);
|
|
75
|
+
const byteIdx = idx >> 3;
|
|
76
|
+
const bitIdx = idx & 7;
|
|
77
|
+
if ((bitset[byteIdx] & (1 << bitIdx)) === 0)
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
/** Estimate false-positive rate analytically given filter parameters
|
|
83
|
+
* and verb count. Use to validate our sizing in tests. */
|
|
84
|
+
export function estimateFalsePositiveRate(filter) {
|
|
85
|
+
// (1 - e^(-k·n/m))^k
|
|
86
|
+
return Math.pow(1 - Math.exp((-filter.k * filter.n) / filter.m), filter.k);
|
|
87
|
+
}
|
|
88
|
+
/** Compact textual representation: `bloom/v1/m1024/k3/n312/<base64url>`.
|
|
89
|
+
* Human + machine readable. */
|
|
90
|
+
export function formatBloom(filter) {
|
|
91
|
+
return `bloom/v1/m${filter.m}/k${filter.k}/n${filter.n}/${filter.bits}`;
|
|
92
|
+
}
|
|
93
|
+
/** Parse a textual representation back into a filter. */
|
|
94
|
+
export function parseBloom(text) {
|
|
95
|
+
const re = /^bloom\/v1\/m(\d+)\/k(\d+)\/n(\d+)\/([A-Za-z0-9_-]+)$/;
|
|
96
|
+
const m = re.exec(text);
|
|
97
|
+
if (!m)
|
|
98
|
+
return null;
|
|
99
|
+
return {
|
|
100
|
+
v: 1,
|
|
101
|
+
m: parseInt(m[1], 10),
|
|
102
|
+
k: parseInt(m[2], 10),
|
|
103
|
+
n: parseInt(m[3], 10),
|
|
104
|
+
bits: m[4],
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=bloom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bloom.js","sourceRoot":"","sources":["../../src/atlas/bloom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.21.5 — ATLAS HELP.
|
|
3
|
+
*
|
|
4
|
+
* "AI agents shouldn't burn 14 KB of context to discover one command."
|
|
5
|
+
*
|
|
6
|
+
* Six-layer discovery protocol that solves the 300+ command / 14k
|
|
7
|
+
* token blast-radius without deleting any command:
|
|
8
|
+
*
|
|
9
|
+
* LAYER 0 — TASTE (~10 bytes) 5 canonical verbs always shown
|
|
10
|
+
* LAYER 1 — BLOOM (~180 bytes) bloom-filter probe membership O(1)
|
|
11
|
+
* LAYER 2 — HOT (~200 bytes) stigmergy / pheromone top-N
|
|
12
|
+
* LAYER 3 — TAGS (~1 KB) capability index
|
|
13
|
+
* LAYER 4 — INTENT (~80 bytes) NL → top-1 command
|
|
14
|
+
* LAYER 5 — FULL (~14 KB) legacy `--help --full` (escape)
|
|
15
|
+
*
|
|
16
|
+
* The killer move (LAYER 1): Bloom filter is 50-year-old tech, never
|
|
17
|
+
* shipped as a CLI discovery primitive. 300 verb-names in ~180 bytes
|
|
18
|
+
* with 100% recall and ~3% false positive. AI agent probes "does
|
|
19
|
+
* verb X exist?" in O(1) without reading the menu.
|
|
20
|
+
*
|
|
21
|
+
* Composes with: v2.21.4 TRUST CAPSULE (atlas signed by install key),
|
|
22
|
+
* v2.19.4 intent.execute (Layer 4 wraps it), v2.21.0 apoptosis
|
|
23
|
+
* federation (Layer 2 pheromones cross-repo aggregatable).
|
|
24
|
+
*/
|
|
25
|
+
import { type ManifestCommand } from "../agent_manifest.js";
|
|
26
|
+
import { buildBloom, probeBloom, formatBloom, parseBloom, estimateFalsePositiveRate, type BloomFilter } from "./bloom.js";
|
|
27
|
+
import { dropPheromone, computeHot, formatHot, type PheromoneHit, type HotVerb } from "./pheromone.js";
|
|
28
|
+
export { buildBloom, probeBloom, formatBloom, parseBloom, estimateFalsePositiveRate, type BloomFilter };
|
|
29
|
+
export { dropPheromone, computeHot, formatHot, type PheromoneHit, type HotVerb };
|
|
30
|
+
export interface TasteVerb {
|
|
31
|
+
verb: string;
|
|
32
|
+
one_line: string;
|
|
33
|
+
}
|
|
34
|
+
/** The 5 verbs that cover 95% of new-user needs. Manually curated;
|
|
35
|
+
* re-validated every release. Sorted by "first thing a fresh AI
|
|
36
|
+
* agent should call." */
|
|
37
|
+
export declare const TASTE: TasteVerb[];
|
|
38
|
+
export declare function formatTaste(): string;
|
|
39
|
+
/** Extract verb-name tokens from the catalog. A "verb" here is the
|
|
40
|
+
* third whitespace-separated token of `command` after `mneme` —
|
|
41
|
+
* `mneme earthquake drift` → "earthquake" + "earthquake drift" both
|
|
42
|
+
* inserted (filter is permissive). */
|
|
43
|
+
export declare function catalogVerbs(catalog?: ManifestCommand[]): string[];
|
|
44
|
+
/** Build the canonical bloom over the entire catalog. */
|
|
45
|
+
export declare function buildCatalogBloom(catalog?: ManifestCommand[]): BloomFilter;
|
|
46
|
+
/** Single-string semantic tag derived from the manifest group. Most
|
|
47
|
+
* groups are already domain tags; a small remap collapses obviously-
|
|
48
|
+
* related ones into shared buckets. */
|
|
49
|
+
export declare function tagFor(group: string): string;
|
|
50
|
+
export interface TagIndex {
|
|
51
|
+
v: 1;
|
|
52
|
+
tags: Record<string, string[]>;
|
|
53
|
+
totalCommands: number;
|
|
54
|
+
}
|
|
55
|
+
/** Build the capability index — Map<tag, verb[]>. */
|
|
56
|
+
export declare function buildTagIndex(catalog?: ManifestCommand[]): TagIndex;
|
|
57
|
+
export declare function formatTagIndex(idx: TagIndex, opts?: {
|
|
58
|
+
tag?: string;
|
|
59
|
+
maxPerTag?: number;
|
|
60
|
+
}): string;
|
|
61
|
+
/** Naive NL router — keyword score over (what + when + command) of
|
|
62
|
+
* each manifest entry. Uses no LLM. Composes with v2.19.4
|
|
63
|
+
* intent.execute (which does HMAC-signed plans for built-in phrases).
|
|
64
|
+
* Returns top-K matches with confidence scores. */
|
|
65
|
+
export interface IntentMatch {
|
|
66
|
+
command: string;
|
|
67
|
+
group: string;
|
|
68
|
+
score: number;
|
|
69
|
+
rationale: string;
|
|
70
|
+
}
|
|
71
|
+
export declare function routeIntent(text: string, catalog?: ManifestCommand[], topK?: number): IntentMatch[];
|
|
72
|
+
export declare function formatIntent(intent: string, matches: IntentMatch[]): string;
|
|
73
|
+
export interface Atlas {
|
|
74
|
+
v: 1;
|
|
75
|
+
taste: TasteVerb[];
|
|
76
|
+
bloom: BloomFilter;
|
|
77
|
+
tagIndex: TagIndex;
|
|
78
|
+
hot: HotVerb[];
|
|
79
|
+
generatedAt: string;
|
|
80
|
+
}
|
|
81
|
+
/** Build the full Atlas for a repo. Discrete + cached-friendly. */
|
|
82
|
+
export declare function buildAtlas(repoRoot: string, catalog?: ManifestCommand[]): Atlas;
|
|
83
|
+
export declare function formatAtlas(atlas: Atlas): string;
|
|
84
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/atlas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,yBAAyB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1H,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,yBAAyB,EAAE,KAAK,WAAW,EAAE,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,CAAC;AAIjF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;0BAE0B;AAC1B,eAAO,MAAM,KAAK,EAAE,SAAS,EAM5B,CAAC;AAEF,wBAAgB,WAAW,IAAI,MAAM,CAepC;AAID;;;uCAGuC;AACvC,wBAAgB,YAAY,CAAC,OAAO,GAAE,eAAe,EAA0B,GAAG,MAAM,EAAE,CAUzF;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAe,EAA0B,GAAG,WAAW,CAEjG;AAID;;wCAEwC;AACxC,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA6C5C;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,OAAO,GAAE,eAAe,EAA0B,GAAG,QAAQ,CAU1F;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAuBrG;AAID;;;oDAGoD;AACpD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAe,EAA0B,EAAE,IAAI,SAAI,GAAG,WAAW,EAAE,CA6BrH;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAY3E;AAID,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAe,EAA0B,GAAG,KAAK,CAStG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAYhD"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.21.5 — ATLAS HELP.
|
|
3
|
+
*
|
|
4
|
+
* "AI agents shouldn't burn 14 KB of context to discover one command."
|
|
5
|
+
*
|
|
6
|
+
* Six-layer discovery protocol that solves the 300+ command / 14k
|
|
7
|
+
* token blast-radius without deleting any command:
|
|
8
|
+
*
|
|
9
|
+
* LAYER 0 — TASTE (~10 bytes) 5 canonical verbs always shown
|
|
10
|
+
* LAYER 1 — BLOOM (~180 bytes) bloom-filter probe membership O(1)
|
|
11
|
+
* LAYER 2 — HOT (~200 bytes) stigmergy / pheromone top-N
|
|
12
|
+
* LAYER 3 — TAGS (~1 KB) capability index
|
|
13
|
+
* LAYER 4 — INTENT (~80 bytes) NL → top-1 command
|
|
14
|
+
* LAYER 5 — FULL (~14 KB) legacy `--help --full` (escape)
|
|
15
|
+
*
|
|
16
|
+
* The killer move (LAYER 1): Bloom filter is 50-year-old tech, never
|
|
17
|
+
* shipped as a CLI discovery primitive. 300 verb-names in ~180 bytes
|
|
18
|
+
* with 100% recall and ~3% false positive. AI agent probes "does
|
|
19
|
+
* verb X exist?" in O(1) without reading the menu.
|
|
20
|
+
*
|
|
21
|
+
* Composes with: v2.21.4 TRUST CAPSULE (atlas signed by install key),
|
|
22
|
+
* v2.19.4 intent.execute (Layer 4 wraps it), v2.21.0 apoptosis
|
|
23
|
+
* federation (Layer 2 pheromones cross-repo aggregatable).
|
|
24
|
+
*/
|
|
25
|
+
import { MNEME_COMMAND_CATALOG } from "../agent_manifest.js";
|
|
26
|
+
import { buildBloom, probeBloom, formatBloom, parseBloom, estimateFalsePositiveRate } from "./bloom.js";
|
|
27
|
+
import { dropPheromone, computeHot, formatHot } from "./pheromone.js";
|
|
28
|
+
export { buildBloom, probeBloom, formatBloom, parseBloom, estimateFalsePositiveRate };
|
|
29
|
+
export { dropPheromone, computeHot, formatHot };
|
|
30
|
+
/** The 5 verbs that cover 95% of new-user needs. Manually curated;
|
|
31
|
+
* re-validated every release. Sorted by "first thing a fresh AI
|
|
32
|
+
* agent should call." */
|
|
33
|
+
export const TASTE = [
|
|
34
|
+
{ verb: "mneme verify-self --score", one_line: "Trust gate — ONE number (0-100). Run before anything else." },
|
|
35
|
+
{ verb: "mneme ask <question>", one_line: "Memory + truth Q&A over the repo." },
|
|
36
|
+
{ verb: 'mneme do "<intent>"', one_line: "NL → command. Plain English / Thai. Replaces --help for AI agents." },
|
|
37
|
+
{ verb: "mneme earthquake drift", one_line: "Silent-vendor-drift detector for AI APIs." },
|
|
38
|
+
{ verb: "mneme stillness gate", one_line: "Decide if AI should respond at all." },
|
|
39
|
+
];
|
|
40
|
+
export function formatTaste() {
|
|
41
|
+
const lines = ["🗺 ATLAS / TASTE — 5 verbs cover 95% of needs"];
|
|
42
|
+
lines.push("");
|
|
43
|
+
for (const t of TASTE) {
|
|
44
|
+
lines.push(` ${t.verb.padEnd(38)} ${t.one_line}`);
|
|
45
|
+
}
|
|
46
|
+
lines.push("");
|
|
47
|
+
lines.push(" AI agents: stop reading here. Use:");
|
|
48
|
+
lines.push(" mneme --bloom (40-byte filter; probe verb membership in O(1))");
|
|
49
|
+
lines.push(" mneme --hot (top-20 verbs by recent pheromone-weighted use)");
|
|
50
|
+
lines.push(" mneme --tags (1 KB capability index)");
|
|
51
|
+
lines.push(' mneme do "<intent>" (NL → top-1 command, in any language)');
|
|
52
|
+
lines.push("");
|
|
53
|
+
lines.push(" Humans (legacy): mneme --help --full (full 300+ command wall)");
|
|
54
|
+
return lines.join("\n");
|
|
55
|
+
}
|
|
56
|
+
// ─── LAYER 1 — BLOOM (catalog → filter) ──────────────────────────────
|
|
57
|
+
/** Extract verb-name tokens from the catalog. A "verb" here is the
|
|
58
|
+
* third whitespace-separated token of `command` after `mneme` —
|
|
59
|
+
* `mneme earthquake drift` → "earthquake" + "earthquake drift" both
|
|
60
|
+
* inserted (filter is permissive). */
|
|
61
|
+
export function catalogVerbs(catalog = MNEME_COMMAND_CATALOG) {
|
|
62
|
+
const set = new Set();
|
|
63
|
+
for (const c of catalog) {
|
|
64
|
+
const parts = c.command.split(/\s+/).filter((t) => t && t !== "mneme" && !t.startsWith("--") && !t.startsWith("<"));
|
|
65
|
+
if (parts.length === 0)
|
|
66
|
+
continue;
|
|
67
|
+
set.add(parts[0]);
|
|
68
|
+
if (parts.length >= 2)
|
|
69
|
+
set.add(`${parts[0]} ${parts[1]}`);
|
|
70
|
+
if (parts.length >= 3)
|
|
71
|
+
set.add(`${parts[0]} ${parts[1]} ${parts[2]}`);
|
|
72
|
+
}
|
|
73
|
+
return Array.from(set).sort();
|
|
74
|
+
}
|
|
75
|
+
/** Build the canonical bloom over the entire catalog. */
|
|
76
|
+
export function buildCatalogBloom(catalog = MNEME_COMMAND_CATALOG) {
|
|
77
|
+
return buildBloom(catalogVerbs(catalog));
|
|
78
|
+
}
|
|
79
|
+
// ─── LAYER 3 — TAGS (capability index) ───────────────────────────────
|
|
80
|
+
/** Single-string semantic tag derived from the manifest group. Most
|
|
81
|
+
* groups are already domain tags; a small remap collapses obviously-
|
|
82
|
+
* related ones into shared buckets. */
|
|
83
|
+
export function tagFor(group) {
|
|
84
|
+
const MAP = {
|
|
85
|
+
"mortuary": "mortuary",
|
|
86
|
+
"stillness": "silence",
|
|
87
|
+
"apoptosis_network": "immune",
|
|
88
|
+
"time_bridge": "time",
|
|
89
|
+
"ia_fabric": "fabric",
|
|
90
|
+
"digital_talent": "talent",
|
|
91
|
+
"memory": "memory",
|
|
92
|
+
"polygraph": "truth",
|
|
93
|
+
"truth_swarm": "truth",
|
|
94
|
+
"earthquake": "drift",
|
|
95
|
+
"bug_prophet": "drift",
|
|
96
|
+
"honey": "drift",
|
|
97
|
+
"compliance": "compliance",
|
|
98
|
+
"soul": "soul",
|
|
99
|
+
"trust": "trust",
|
|
100
|
+
"antivirus": "trust",
|
|
101
|
+
"vibe": "ux",
|
|
102
|
+
"cognitive": "cognition",
|
|
103
|
+
"innerlife": "cognition",
|
|
104
|
+
"metamorphosis": "cognition",
|
|
105
|
+
"synapse": "handoff",
|
|
106
|
+
"permeate": "handoff",
|
|
107
|
+
"telepathy": "handoff",
|
|
108
|
+
"genesplice": "handoff",
|
|
109
|
+
"relay": "handoff",
|
|
110
|
+
"rainbow": "handoff",
|
|
111
|
+
"clone": "handoff",
|
|
112
|
+
"chronostasis": "axiom",
|
|
113
|
+
"agreement": "axiom",
|
|
114
|
+
"obelisk": "trust",
|
|
115
|
+
"arena": "trust",
|
|
116
|
+
"bounty": "trust",
|
|
117
|
+
"evolve": "evolve",
|
|
118
|
+
"evolution": "evolve",
|
|
119
|
+
"infra_brain": "infra",
|
|
120
|
+
"ops": "ops",
|
|
121
|
+
"supernova": "ops",
|
|
122
|
+
"uninstall": "ops",
|
|
123
|
+
"diagnosis": "ops",
|
|
124
|
+
"supersonic": "ops",
|
|
125
|
+
"tune": "ops",
|
|
126
|
+
};
|
|
127
|
+
return MAP[group] ?? group;
|
|
128
|
+
}
|
|
129
|
+
/** Build the capability index — Map<tag, verb[]>. */
|
|
130
|
+
export function buildTagIndex(catalog = MNEME_COMMAND_CATALOG) {
|
|
131
|
+
const tags = {};
|
|
132
|
+
for (const c of catalog) {
|
|
133
|
+
const t = tagFor(c.group);
|
|
134
|
+
(tags[t] ??= []).push(c.command);
|
|
135
|
+
}
|
|
136
|
+
for (const t of Object.keys(tags)) {
|
|
137
|
+
tags[t] = Array.from(new Set(tags[t])).sort();
|
|
138
|
+
}
|
|
139
|
+
return { v: 1, tags, totalCommands: catalog.length };
|
|
140
|
+
}
|
|
141
|
+
export function formatTagIndex(idx, opts = {}) {
|
|
142
|
+
const maxPerTag = opts.maxPerTag ?? 6;
|
|
143
|
+
const lines = [];
|
|
144
|
+
const tags = Object.keys(idx.tags).sort();
|
|
145
|
+
if (opts.tag) {
|
|
146
|
+
const list = idx.tags[opts.tag];
|
|
147
|
+
if (!list)
|
|
148
|
+
return `🗺 TAGS — no commands under tag "${opts.tag}". Known tags: ${tags.join(", ")}`;
|
|
149
|
+
lines.push(`🗺 TAGS / ${opts.tag} (${list.length} command${list.length === 1 ? "" : "s"})`);
|
|
150
|
+
lines.push("");
|
|
151
|
+
for (const c of list)
|
|
152
|
+
lines.push(` ${c}`);
|
|
153
|
+
return lines.join("\n");
|
|
154
|
+
}
|
|
155
|
+
lines.push(`🗺 ATLAS / TAGS — ${idx.totalCommands} commands across ${tags.length} tags`);
|
|
156
|
+
lines.push("");
|
|
157
|
+
for (const t of tags) {
|
|
158
|
+
const list = idx.tags[t];
|
|
159
|
+
const shown = list.slice(0, maxPerTag).map((c) => c.replace(/^mneme\s+/, "")).join(" · ");
|
|
160
|
+
const more = list.length > maxPerTag ? ` · +${list.length - maxPerTag} more` : "";
|
|
161
|
+
lines.push(` ${t.padEnd(12)} ${shown}${more}`);
|
|
162
|
+
}
|
|
163
|
+
lines.push("");
|
|
164
|
+
lines.push(` Drill down: mneme --tags --tag <name>`);
|
|
165
|
+
return lines.join("\n");
|
|
166
|
+
}
|
|
167
|
+
const STOPWORDS = new Set([
|
|
168
|
+
"the", "a", "an", "is", "are", "be", "do", "does", "did", "what", "how", "why", "when", "where", "who", "whom", "whose",
|
|
169
|
+
"i", "you", "my", "your", "we", "our", "it", "its", "this", "that", "these", "those", "of", "for", "to", "from", "on", "in", "at", "by", "with", "as", "and", "or", "but", "if", "then", "than", "so", "not", "no",
|
|
170
|
+
"mneme", "mnem", "ai", "ของ", "ที่", "ไหม", "หรือ", "ไม่", "ก็", "แล้ว", "กับ", "คือ", "อะไร", "ยังไง", "ทำไม", "นี้", "นั้น", "กิน",
|
|
171
|
+
]);
|
|
172
|
+
function tokenize(text) {
|
|
173
|
+
return text.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((w) => w && !STOPWORDS.has(w));
|
|
174
|
+
}
|
|
175
|
+
export function routeIntent(text, catalog = MNEME_COMMAND_CATALOG, topK = 3) {
|
|
176
|
+
const q = tokenize(text);
|
|
177
|
+
if (q.length === 0)
|
|
178
|
+
return [];
|
|
179
|
+
const ranked = [];
|
|
180
|
+
for (const c of catalog) {
|
|
181
|
+
const corpus = tokenize(`${c.command} ${c.what} ${c.when} ${c.group}`);
|
|
182
|
+
if (corpus.length === 0)
|
|
183
|
+
continue;
|
|
184
|
+
// Score: count of query tokens hitting corpus tokens.
|
|
185
|
+
let score = 0;
|
|
186
|
+
const hits = [];
|
|
187
|
+
for (const t of q) {
|
|
188
|
+
// Partial match: t is a substring of any corpus token.
|
|
189
|
+
const hit = corpus.find((c) => c === t || c.includes(t));
|
|
190
|
+
if (hit) {
|
|
191
|
+
score += 1;
|
|
192
|
+
hits.push(t);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (score > 0) {
|
|
196
|
+
// Boost: command-name match counts 3×.
|
|
197
|
+
const cmdTokens = tokenize(c.command);
|
|
198
|
+
for (const t of q)
|
|
199
|
+
if (cmdTokens.includes(t))
|
|
200
|
+
score += 2;
|
|
201
|
+
ranked.push({
|
|
202
|
+
command: c.command,
|
|
203
|
+
group: c.group,
|
|
204
|
+
score,
|
|
205
|
+
rationale: hits.length > 0 ? `matched: ${hits.join(", ")}` : "(weak)",
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
ranked.sort((a, b) => b.score - a.score);
|
|
210
|
+
return ranked.slice(0, topK);
|
|
211
|
+
}
|
|
212
|
+
export function formatIntent(intent, matches) {
|
|
213
|
+
if (matches.length === 0) {
|
|
214
|
+
return `🗺 ATLAS / INTENT — no command matches "${intent}". Try \`mneme --tags\` for the capability index or \`mneme --help --full\` for the full surface.`;
|
|
215
|
+
}
|
|
216
|
+
const lines = [`🗺 ATLAS / INTENT — top ${matches.length} for "${intent}"`];
|
|
217
|
+
lines.push("");
|
|
218
|
+
for (let i = 0; i < matches.length; i++) {
|
|
219
|
+
const m = matches[i];
|
|
220
|
+
lines.push(` ${i + 1}. ${m.command}`);
|
|
221
|
+
lines.push(` score=${m.score} group=${m.group} ${m.rationale}`);
|
|
222
|
+
}
|
|
223
|
+
return lines.join("\n");
|
|
224
|
+
}
|
|
225
|
+
/** Build the full Atlas for a repo. Discrete + cached-friendly. */
|
|
226
|
+
export function buildAtlas(repoRoot, catalog = MNEME_COMMAND_CATALOG) {
|
|
227
|
+
return {
|
|
228
|
+
v: 1,
|
|
229
|
+
taste: TASTE,
|
|
230
|
+
bloom: buildCatalogBloom(catalog),
|
|
231
|
+
tagIndex: buildTagIndex(catalog),
|
|
232
|
+
hot: computeHot(repoRoot),
|
|
233
|
+
generatedAt: new Date().toISOString(),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
export function formatAtlas(atlas) {
|
|
237
|
+
const lines = [];
|
|
238
|
+
lines.push(formatTaste());
|
|
239
|
+
lines.push("");
|
|
240
|
+
lines.push(`🗺 ATLAS / BLOOM — ${formatBloom(atlas.bloom)}`);
|
|
241
|
+
lines.push(` (probe via \`mneme --bloom-probe <verb>\` or `);
|
|
242
|
+
lines.push(` programmatically via \`atlas.probeBloom(filter, verb)\`)`);
|
|
243
|
+
lines.push("");
|
|
244
|
+
if (atlas.hot.length > 0)
|
|
245
|
+
lines.push(formatHot(atlas.hot.slice(0, 10)));
|
|
246
|
+
lines.push("");
|
|
247
|
+
lines.push(formatTagIndex(atlas.tagIndex));
|
|
248
|
+
return lines.join("\n");
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/atlas/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.21.5 — ATLAS HELP · PHEROMONE log.
|
|
3
|
+
*
|
|
4
|
+
* Stigmergy-style learning over CLI verb usage. Every successful call
|
|
5
|
+
* drops pheromone; pheromone decays over time. Top-N hot verbs surface
|
|
6
|
+
* in `mneme --hot`. AI agents see the live "what works right now" set
|
|
7
|
+
* without reading the full menu.
|
|
8
|
+
*
|
|
9
|
+
* - Append-only JSONL log: cheap, no DB.
|
|
10
|
+
* - HMAC-signed entries (composes with TRUST CAPSULE chain).
|
|
11
|
+
* - Exponential decay: weight(verb) = sum( e^(-Δt/τ) ) over all hits.
|
|
12
|
+
* τ default = 7 days. Recent use dominates ancient use.
|
|
13
|
+
* - Top-N selection: simple sort over decayed weights.
|
|
14
|
+
*
|
|
15
|
+
* Cross-repo aggregation is a v2.22+ idea — for now, per-repo only.
|
|
16
|
+
*/
|
|
17
|
+
export interface PheromoneHit {
|
|
18
|
+
v: 1;
|
|
19
|
+
ts: string;
|
|
20
|
+
verb: string;
|
|
21
|
+
/** Optional: actor (ai-agent / human / ci / daemon). */
|
|
22
|
+
actor?: string;
|
|
23
|
+
/** Optional: outcome (success / failure). Failures get half-weight. */
|
|
24
|
+
outcome?: "success" | "failure";
|
|
25
|
+
sig: string;
|
|
26
|
+
}
|
|
27
|
+
export interface DropPheromoneOptions {
|
|
28
|
+
verb: string;
|
|
29
|
+
actor?: string;
|
|
30
|
+
outcome?: "success" | "failure";
|
|
31
|
+
}
|
|
32
|
+
/** Drop one pheromone for a verb. Called by the CLI right after a
|
|
33
|
+
* successful action. */
|
|
34
|
+
export declare function dropPheromone(repoRoot: string, opts: DropPheromoneOptions): PheromoneHit;
|
|
35
|
+
export declare function listPheromones(repoRoot: string): PheromoneHit[];
|
|
36
|
+
export interface HotVerb {
|
|
37
|
+
verb: string;
|
|
38
|
+
/** Decayed weight: sum of e^(-Δt/τ) for every hit on this verb. */
|
|
39
|
+
weight: number;
|
|
40
|
+
/** Raw hit count. */
|
|
41
|
+
hits: number;
|
|
42
|
+
/** Last seen timestamp. */
|
|
43
|
+
lastSeen: string;
|
|
44
|
+
}
|
|
45
|
+
/** Compute hot verbs via exponential decay. Same verbs ranked top-N. */
|
|
46
|
+
export declare function computeHot(repoRoot: string, opts?: {
|
|
47
|
+
tauDays?: number;
|
|
48
|
+
topN?: number;
|
|
49
|
+
now?: number;
|
|
50
|
+
}): HotVerb[];
|
|
51
|
+
export declare function formatHot(hot: HotVerb[]): string;
|
|
52
|
+
//# sourceMappingURL=pheromone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pheromone.d.ts","sourceRoot":"","sources":["../../src/atlas/pheromone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAsBD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAED;yBACyB;AACzB,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,YAAY,CAYxF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAM/D;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,EAAE,CAsBpH;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAShD"}
|