Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .contextplus/hubs/tools.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
IyBDb250ZXh0KyBUb29scyBHcmFwaAoKVGhlIGNvbXBsZXRlIHNlbWFudGljIGdyYXBoIG9mIGFsbCBDb250ZXh0KyBNQ1AgdG9vbHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMg4oCUIG1hcHBpbmcgZXZlcnkgdG9vbCB0byBpdHMgc291cmNlIGZpbGUsIGNvcmUgZGVwZW5kZW5jeSwgYW5kIHdvcmtmbG93IHBvc2l0aW9uLgoKLS0tCgojIyBEaXNjb3ZlcnkgTGF5ZXIKClRoZXNlIHRvb2xzIG1hcCB0aGUgc3RydWN0dXJlIGFuZCBtZWFuaW5nIG9mIGEgY29kZWJhc2UuCgpbW2dldF9jb250ZXh0X3RyZWVdXShzcmMvdG9vbHMvY29udGV4dC10cmVlLnRzKSAtIFN0cnVjdHVyYWwgQVNUIHRyZWUgd2l0aCBmaWxlIGhlYWRlcnMgYW5kIHN5bWJvbCBsaW5lIHJhbmdlcy4gVGhlIHJvb3QgZW50cnkgcG9pbnQ6IHN0YXJ0IGV2ZXJ5IHRhc2sgaGVyZS4KCi0gcmVsaWVzIG9uIOKGkiBbW3BhcnNlcl1dIFtbd2Fsa2VyXV0KLSBmZWVkcyBpbnRvIOKGkiBbW3NlbWFudGljX2NvZGVfc2VhcmNoXV0gW1tnZXRfZmlsZV9za2VsZXRvbl1dCi0gcmVuYW1lIHRhcmdldDogYHRyZWVgIChUT0RPIHYxKQoKW1tnZXRfZmlsZV9za2VsZXRvbl1dKHNyYy90b29scy9maWxlLXNrZWxldG9uLnRzKSAtIEZ1bmN0aW9uIHNpZ25hdHVyZXMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgd2l0aG91dCBib2RpZXMuIFVzZSBiZWZvcmUgYSBmdWxsIGZpbGUgcmVhZC4KCi0gcmVsaWVzIG9uIOKGkiBbW3BhcnNlcl1dCi0gZmVlZHMgaW50byDihpIgW1tnZXRfYmxhc3RfcmFkaXVzXV0gW1twcm9wb3NlX2NvbW1pdF1dCi0gcmVuYW1lIHRhcmdldDogYHNrZWxldG9uYCAoVE9ETyB2MSkKCltbc2VtYW50aWNfY29kZV9zZWFyY2hdXShzcmMvdG9vbHMvc2VtYW50aWMtc2VhcmNoLnRzKSAtIEVtYmVkZGluZy1iYXNlZCBzZWFyY2ggYnkgbWVhbmluZyBvdmVyIGZpbGUgaGVhZGVycyBhbmQgc3ltYm9scy4KCi0gcmVsaWVzIG9uIOKGkiBbW2VtYmVkZGluZ3NdXQotIHNpc3RlciB0b29sIG9mIOKGkiBbW3NlbWFudGljX2lkZW50aWZpZXJfc2VhcmNoXV0KLSBtZXJnZSB0YXJnZXQ6IGBzZWFyY2hgIHdpdGggdHlwZSBgZmlsZSB8IGlkZW50aWZpZXIgfCBoeWJyaWRgIChUT0RPIHYxKQoKW1tzZW1hbnRpY19pZGVudGlmaWVyX3NlYXJjaF1dKHNyYy90b29scy9zZW1hbnRpYy1pZGVudGlmaWVycy50cykgLSBJZGVudGlmaWVyLWxldmVsIHJldHJpZXZhbCDigJQgZnVuY3Rpb25zLCBjbGFzc2VzLCB2YXJpYWJsZXMg4oCUIHdpdGggcmFua2VkIGNhbGwgc2l0ZXMuCgotIHJlbGllcyBvbiDihpIgW1tlbWJlZGRpbmdzXV0gW1twYXJzZXJdXQotIG1lcmdlIHRhcmdldDogYHNlYXJjaGAgKFRPRE8gdjEpCgpbW3NlbWFudGljX25hdmlnYXRlXV0oc3JjL3Rvb2xzL3NlbWFudGljLW5hdmlnYXRlLnRzKSAtIFNwZWN0cmFsIGNsdXN0ZXJpbmcgb3ZlciBmaWxlIGVtYmVkZGluZ3MgdG8gZ3JvdXAgc2VtYW50aWNhbGx5IHJlbGF0ZWQgZmlsZXMuCgotIHJlbGllcyBvbiDihpIgW1tjbHVzdGVyaW5nXV0gW1tlbWJlZGRpbmdzXV0KLSByZW5hbWUgdGFyZ2V0OiBgY2x1c3RlcmAgKFRPRE8gdjEpCgotLS0KCiMjIEFuYWx5c2lzIExheWVyCgpbW2dldF9ibGFzdF9yYWRpdXNdXShzcmMvdG9vbHMvYmxhc3QtcmFkaXVzLnRzKSAtIFRyYWNlcyBldmVyeSBmaWxlIGFuZCBsaW5lIHdoZXJlIGEgc3ltYm9sIGlzIGltcG9ydGVkIG9yIGNhbGxlZC4KCi0gcmVsaWVzIG9uIOKGkiBbW3dhbGtlcl1dIFtbcGFyc2VyXV0KLSBtdXN0IHJ1biBiZWZvcmUgW1twcm9wb3NlX2NvbW1pdF1dIG9uIGFueSBkZWxldGlvbiBvciByZW5hbWUKLSByZW5hbWUgdGFyZ2V0OiBgYmxhc3RfcmFkaXVzYCAoVE9ETyB2MSkKCltbcnVuX3N0YXRpY19hbmFseXNpc11dKHNyYy90b29scy9zdGF0aWMtYW5hbHlzaXMudHMpIC0gUnVucyBuYXRpdmUgbGludGVycyBhbmQgY29tcGlsZXJzOiBUeXBlU2NyaXB0LCBQeXRob24sIFJ1c3QsIEdvLgoKLSBydW4gYWZ0ZXIgZXZlcnkgW1twcm9wb3NlX2NvbW1pdF1dCi0gcmVuYW1lIHRhcmdldDogYGxpbnRgIChUT0RPIHYxKQotIFRPRE8gdjE6IGFkZCBwZXItZmlsZSBza2lsbCBzY29yZSAoY29tbWVudCBkZW5zaXR5LCBzdHlsZSBydWxlcykKCi0tLQoKIyMgQ29kZSBPcHMgTGF5ZXIKCltbcHJvcG9zZV9jb21taXRdXShzcmMvdG9vbHMvcHJvcG9zZS1jb21taXQudHMpIC0gVGhlIG9ubHkgY29ycmVjdCB3YXkgdG8gd3JpdGUgY29kZS4gVmFsaWRhdGVzLCBzYXZlcywgY3JlYXRlcyBhIHNoYWRvdyByZXN0b3JlIHBvaW50LgoKLSBkZXBlbmRzIG9uIOKGkiBbW2dpdF1dCi0gbXVzdCBiZSBwcmVjZWRlZCBieSBbW2dldF9ibGFzdF9yYWRpdXNdXSBmb3Igc3ltYm9sIHJlbW92YWwKLSBtdXN0IGJlIGZvbGxvd2VkIGJ5IFtbcnVuX3N0YXRpY19hbmFseXNpc11dCi0gcmVuYW1lIHRhcmdldDogYGNoZWNrcG9pbnRgIChUT0RPIHYxKQoKW1tnZXRfZmVhdHVyZV9odWJdXShzcmMvdG9vbHMvZmVhdHVyZS1odWIudHMpIC0gT2JzaWRpYW4tc3R5bGUgaHViIG5hdmlnYXRvci4gUmVhZHMgYC5tZGAgZmlsZXMgd2l0aCBgW1t3aWtpbGlua3NdXWAgbWFwcGluZyBmZWF0dXJlcyB0byBjb2RlLgoKLSByZWxpZXMgb24g4oaSIFtbaHViXV0KLSB0aGlzIGZpbGUgSVMgYSBmZWF0dXJlIGh1YiAoc2VsZi1yZWZlcmVudGlhbCkKLSByZW5hbWUgdGFyZ2V0OiBgZmluZF9odWJgIHdpdGggc2VtYW50aWMva2V5d29yZCBzZWFyY2ggKFRPRE8gdjEpCgotLS0KCiMjIFZlcnNpb24gQ29udHJvbCBMYXllcgoKW1tsaXN0X3Jlc3RvcmVfcG9pbnRzXV0oc3JjL2dpdC8pIC0gTGlzdHMgYWxsIHNoYWRvdyByZXN0b3JlIHBvaW50cyBjcmVhdGVkIGJ5IGBwcm9wb3NlX2NvbW1pdGAuCgotIGZlZWRzIGludG8g4oaSIFtbdW5kb19jaGFuZ2VdXQotIHJlbmFtZSB0YXJnZXQ6IGByZXN0b3JlX3BvaW50c2AgKFRPRE8gdjEpCgpbW3VuZG9fY2hhbmdlXV0oc3JjL2dpdC8pIC0gUmVzdG9yZXMgZmlsZXMgdG8gcHJlLUFJLWNoYW5nZSBzdGF0ZSB3aXRob3V0IHRvdWNoaW5nIGdpdCBoaXN0b3J5LgoKLSBkZXBlbmRzIG9uIOKGkiBbW2xpc3RfcmVzdG9yZV9wb2ludHNdXQotIHJlbmFtZSB0YXJnZXQ6IGByZXN0b3JlYCAoVE9ETyB2MSkKCi0tLQoKIyMgTWVtb3J5ICYgUkFHIExheWVyCgpbW3Vwc2VydF9tZW1vcnlfbm9kZV1dKHNyYy90b29scy9tZW1vcnktdG9vbHMudHMpIC0gQ3JlYXRlIG9yIHVwZGF0ZSBhIG1lbW9yeSBub2RlIHdpdGggYXV0by1nZW5lcmF0ZWQgZW1iZWRkaW5ncy4KCi0gcmVsaWVzIG9uIOKGkiBbW21lbW9yeS1ncmFwaF1dIFtbZW1iZWRkaW5nc11dCi0gY2FsbCBhdCB0YXNrIGVuZCB0byByZWNvcmQgd2hhdCB3YXMgbGVhcm5lZAotIHJlbmFtZSB0YXJnZXQ6IGBjcmVhdGVfbWVtb3J5YCAoVE9ETyB2MSkKCltbY3JlYXRlX3JlbGF0aW9uXV0oc3JjL3Rvb2xzL21lbW9yeS10b29scy50cykgLSBDcmVhdGUgdHlwZWQgZWRnZXM6IGByZWxhdGVzX3RvIHwgZGVwZW5kc19vbiB8IGltcGxlbWVudHMgfCByZWZlcmVuY2VzIHwgc2ltaWxhcl90byB8IGNvbnRhaW5zYC4KCi0gcmVsaWVzIG9uIOKGkiBbW21lbW9yeS1ncmFwaF1dCgpbW3NlYXJjaF9tZW1vcnlfZ3JhcGhdXShzcmMvdG9vbHMvbWVtb3J5LXRvb2xzLnRzKSAtIFNlbWFudGljIHNlYXJjaCArIDFzdC8ybmQtZGVncmVlIGdyYXBoIHRyYXZlcnNhbC4KCi0gcmVsaWVzIG9uIOKGkiBbW21lbW9yeS1ncmFwaF1dIFtbZW1iZWRkaW5nc11dCi0gcHJlZmVyIGByZXNvbHZlX2NvbnRleHRgIChwbWxsLW1lbW9yeS1tY3ApIHRvIGNoZWNrIHNob3J0LXRlcm0gS1YgZmlyc3QKLSByZW5hbWUgdGFyZ2V0OiBgc2VhcmNoX21lbW9yeWAgKFRPRE8gdjEpCgpbW2FkZF9pbnRlcmxpbmtlZF9jb250ZXh0XV0oc3JjL3Rvb2xzL21lbW9yeS10b29scy50cykgLSBCdWxrLWFkZCBub2RlcyB3aXRoIGF1dG8tc2ltaWxhcml0eSBsaW5raW5nIChjb3NpbmUg4omlIDAuNzIpLgoKLSByZWxpZXMgb24g4oaSIFtbbWVtb3J5LWdyYXBoXV0gW1tlbWJlZGRpbmdzXV0KLSByZW5hbWUgdGFyZ2V0OiBgYnVsa19tZW1vcnlgIChUT0RPIHYxKQoKW1tyZXRyaWV2ZV93aXRoX3RyYXZlcnNhbF1dKHNyYy90b29scy9tZW1vcnktdG9vbHMudHMpIC0gV2FsayBvdXR3YXJkIGZyb20gYSBub2RlLCByZXR1cm4gYWxsIG5laWdoYm9ycyBzY29yZWQgYnkgZGVjYXkgYW5kIGRlcHRoLgoKLSByZWxpZXMgb24g4oaSIFtbbWVtb3J5LWdyYXBoXV0KLSBwcmVmZXIgYHJlc29sdmVfY29udGV4dGAgKHBtbGwtbWVtb3J5LW1jcCkgdG8gY2hlY2sgc2hvcnQtdGVybSBLViBmaXJzdAotIHJlbmFtZSB0YXJnZXQ6IGBleHBsb3JlX21lbW9yeWAgKFRPRE8gdjEpCgpbW3BydW5lX3N0YWxlX2xpbmtzXV0oc3JjL3Rvb2xzL21lbW9yeS10b29scy50cykgLSBSZW1vdmUgZGVjYXllZCBlZGdlcyAoZV4o4oiSzrt0KSBiZWxvdyB0aHJlc2hvbGQpIGFuZCBvcnBoYW4gbm9kZXMuCgotIFRPRE8gdjE6IGF1dG8tdHJpZ2dlciBvbiBhbnkgbWVtb3J5IGdyYXBoIGFjY2VzczsgcmVtb3ZlIGFzIGV4cGxpY2l0IHRvb2wKCi0tLQoKIyMgQ29yZSBFbmdpbmUgKEludGVybmFsIE5vZGVzKQoKW1twYXJzZXJdXShzcmMvY29yZS9wYXJzZXIudHMpIC0gTXVsdGktbGFuZ3VhZ2UgQVNUIHBhcnNpbmcgdmlhIHRyZWUtc2l0dGVyICg0MyBleHRlbnNpb25zKS4gUG93ZXJzIGFsbCBzdHJ1Y3R1cmFsIHRvb2xzLgoKW1t3YWxrZXJdXShzcmMvY29yZS93YWxrZXIudHMpIC0gR2l0aWdub3JlLWF3YXJlIGZpbGVzeXN0ZW0gdHJhdmVyc2FsLiBFbnRyeSBwb2ludCBmb3IgYWxsIGZpbGUgc2NhbnMuCgpbW2VtYmVkZGluZ3NdXShzcmMvY29yZS9lbWJlZGRpbmdzLnRzKSAtIE9sbGFtYSAvIE9wZW5BSS1jb21wYXRpYmxlIHZlY3RvciBlbWJlZGRpbmdzIHdpdGggZGlzayBjYWNoZS4gUG93ZXJzIGFsbCBzZW1hbnRpYyB0b29scy4KCltbZW1iZWRkaW5nLXRyYWNrZXJdXShzcmMvY29yZS9lbWJlZGRpbmctdHJhY2tlci50cykgLSBSZWFsdGltZSBpbmNyZW1lbnRhbCB3YXRjaGVyIHRoYXQgcmVmcmVzaGVzIGVtYmVkZGluZ3Mgb24gZmlsZSBjaGFuZ2VzLgoKW1tjbHVzdGVyaW5nXV0oc3JjL2NvcmUvY2x1c3RlcmluZy50cykgLSBTcGVjdHJhbCBjbHVzdGVyaW5nIGFsZ29yaXRobSBwb3dlcmluZyBgc2VtYW50aWNfbmF2aWdhdGVgLgoKW1ttZW1vcnktZ3JhcGhdXShzcmMvY29yZS9tZW1vcnktZ3JhcGgudHMpIC0gSW4tbWVtb3J5IHByb3BlcnR5IGdyYXBoIHdpdGggSlNPTiBwZXJzaXN0ZW5jZSwgZGVjYXkgc2NvcmluZywgY29zaW5lIGF1dG8tbGlua2luZy4KCltbaHViXV0oc3JjL2NvcmUvaHViLnRzKSAtIFdpa2lsaW5rIHBhcnNlciBhbmQgaHViIG5hdmlnYXRvciBjb3JlLiBQb3dlcnMgYGdldF9mZWF0dXJlX2h1YmAuCgpbW2dpdF1dKHNyYy9naXQvKSAtIFNoYWRvdyByZXN0b3JlIHBvaW50IHN5c3RlbS4gUG93ZXJzIGBwcm9wb3NlX2NvbW1pdGAsIGBsaXN0X3Jlc3RvcmVfcG9pbnRzYCwgYHVuZG9fY2hhbmdlYC4KCi0tLQoKIyMgU29sdXRpb24gR3JhcGgg4oCUIEZ1bGwgRGVwZW5kZW5jeSBNYXAKCmBgYArilIDilIAgQ29yZSBkZXBlbmRlbmNpZXMg4pSA4pSACmdldF9jb250ZXh0X3RyZWUgICAgICAgIOKGkiBwYXJzZXIsIHdhbGtlcgpnZXRfZmlsZV9za2VsZXRvbiAgICAgICDihpIgcGFyc2VyCnNlbWFudGljX2NvZGVfc2VhcmNoICAgIOKGkiBlbWJlZGRpbmdzCnNlbWFudGljX2lkZW50aWZpZXIgICAgIOKGkiBlbWJlZGRpbmdzLCBwYXJzZXIKc2VtYW50aWNfbmF2aWdhdGUgICAgICAg4oaSIGVtYmVkZGluZ3MsIGNsdXN0ZXJpbmcKZ2V0X2JsYXN0X3JhZGl1cyAgICAgICAg4oaSIHdhbGtlciwgcGFyc2VyCnByb3Bvc2VfY29tbWl0ICAgICAgICAgIOKGkiBnaXQKZ2V0X2ZlYXR1cmVfaHViICAgICAgICAg4oaSIGh1Ygp1cHNlcnRfbWVtb3J5X25vZGUgICAgIOKGkiBtZW1vcnktZ3JhcGgsIGVtYmVkZGluZ3MKY3JlYXRlX3JlbGF0aW9uICAgICAgICAg4oaSIG1lbW9yeS1ncmFwaApzZWFyY2hfbWVtb3J5X2dyYXBoICAgICDihpIgbWVtb3J5LWdyYXBoLCBlbWJlZGRpbmdzCmFkZF9pbnRlcmxpbmtlZF9jb250ZXh0IOKGkiBtZW1vcnktZ3JhcGgsIGVtYmVkZGluZ3MKcmV0cmlldmVfd2l0aF90cmF2ZXJzYWwg4oaSIG1lbW9yeS1ncmFwaApwcnVuZV9zdGFsZV9saW5rcyAgICAgICDihpIgbWVtb3J5LWdyYXBoCgrilIDilIAgV29ya2Zsb3cgY2hhaW5zIOKUgOKUgApnZXRfY29udGV4dF90cmVlICAgICDilIDilIBmZWVkc19pbnRv4pSA4pSA4pa6IGdldF9maWxlX3NrZWxldG9uCmdldF9jb250ZXh0X3RyZWUgICAgIOKUgOKUgGZlZWRzX2ludG/ilIDilIDilrogc2VtYW50aWNfY29kZV9zZWFyY2gKZ2V0X2ZpbGVfc2tlbGV0b24gICAg4pSA4pSAZmVlZHNfaW50b+KUgOKUgOKWuiBnZXRfYmxhc3RfcmFkaXVzCmdldF9ibGFzdF9yYWRpdXMgICAgIOKUgOKUgGd1YXJkc+KUgOKUgOKUgOKUgOKUgOKUgOKWuiBwcm9wb3NlX2NvbW1pdApwcm9wb3NlX2NvbW1pdCAgICAgICDilIDilIB0cmlnZ2Vyc+KUgOKUgOKUgOKUgOKWuiBydW5fc3RhdGljX2FuYWx5c2lzCnByb3Bvc2VfY29tbWl0ICAgICAgIOKUgOKUgGNyZWF0ZXPilIDilIDilIDilIDilIDilrogbGlzdF9yZXN0b3JlX3BvaW50cwpsaXN0X3Jlc3RvcmVfcG9pbnRzICDilIDilIBlbmFibGVz4pSA4pSA4pSA4pSA4pSA4pa6IHVuZG9fY2hhbmdlCgrilIDilIAgTWVtb3J5IHdvcmtmbG93IOKUgOKUgAp0YXNrX3N0YXJ0ICAg4oaSIHNlYXJjaF9tZW1vcnlfZ3JhcGggKHJldHJpZXZlIHByaW9yIGNvbnRleHQpCnRhc2tfd29yayAgICDihpIgdXBzZXJ0X21lbW9yeV9ub2RlICsgY3JlYXRlX3JlbGF0aW9uIChidWlsZCBncmFwaCkKdGFza19lbmQgICAgIOKGkiB1cHNlcnRfbWVtb3J5X25vZGUgKHJlY29yZCBzb2x1dGlvbikKYXV0byAgICAgICAgIOKGkiBwcnVuZV9zdGFsZV9saW5rcyAoZGVjYXkgY2xlYW51cCkKYGBgCgotLS0KCiMjIHYxIFJlbmFtZSBNYXAKCnwgQ3VycmVudCBOYW1lIHwgdjEgTmFtZSB8IFN0YXR1cyB8CnwtLS18LS0tfC0tLXwKfCBgZ2V0X2NvbnRleHRfdHJlZWAgfCBgdHJlZWAgfCBbIF0gfAp8IGBnZXRfZmlsZV9za2VsZXRvbmAgfCBgc2tlbGV0b25gIHwgWyBdIHwKfCBgc2VtYW50aWNfY29kZV9zZWFyY2hgICsgYHNlbWFudGljX2lkZW50aWZpZXJfc2VhcmNoYCB8IGBzZWFyY2hgIChtZXJnZWQpIHwgWyBdIHwKfCBgc2VtYW50aWNfbmF2aWdhdGVgIHwgYGNsdXN0ZXJgIHwgWyBdIHwKfCBgZ2V0X2JsYXN0X3JhZGl1c2AgfCBgYmxhc3RfcmFkaXVzYCB8IFsgXSB8CnwgYHJ1bl9zdGF0aWNfYW5hbHlzaXNgIHwgYGxpbnRgIHwgWyBdIHwKfCBgcHJvcG9zZV9jb21taXRgIHwgYGNoZWNrcG9pbnRgIHwgWyBdIHwKfCBgZ2V0X2ZlYXR1cmVfaHViYCB8IGBmaW5kX2h1YmAgfCBbIF0gfAp8IGBsaXN0X3Jlc3RvcmVfcG9pbnRzYCB8IGByZXN0b3JlX3BvaW50c2AgfCBbIF0gfAp8IGB1bmRvX2NoYW5nZWAgfCBgcmVzdG9yZWAgfCBbIF0gfAp8IGB1cHNlcnRfbWVtb3J5X25vZGVgIHwgYGNyZWF0ZV9tZW1vcnlgIHwgWyBdIHwKfCBgc2VhcmNoX21lbW9yeV9ncmFwaGAgfCBgc2VhcmNoX21lbW9yeWAgfCBbIF0gfAp8IGByZXRyaWV2ZV93aXRoX3RyYXZlcnNhbGAgfCBgZXhwbG9yZV9tZW1vcnlgIHwgWyBdIHwKfCBgYWRkX2ludGVybGlua2VkX2NvbnRleHRgIHwgYGJ1bGtfbWVtb3J5YCB8IFsgXSB8CnwgYHBydW5lX3N0YWxlX2xpbmtzYCB8IF8oYXV0bywgcmVtb3ZlZCBhcyBleHBsaWNpdCB0b29sKV8gfCBbIF0gfAo=
7 changes: 7 additions & 0 deletions FUNDING.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"drips": {
"ethereum": {
"ownedBy": "0x64291eebc576C331ED6e8890Af176C079B9F5C7e"
}
}
}
10 changes: 6 additions & 4 deletions INSTRUCTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,22 @@ The MCP server is built with TypeScript and communicates over stdio using the Mo
- `static-analysis.ts` - Native linter runner (tsc, eslint, py_compile, cargo check, go vet).
- `propose-commit.ts` - Code gatekeeper validating headers, FEATURE tag, no inline comments, nesting, file length.
- `feature-hub.ts` - Obsidian-style feature hub navigator with bundled skeleton views.
- `memory-tools.ts` - Memory graph MCP wrappers (upsert, relate, search, prune, interlink, traverse). The long-term memory graph architecture is also adapted by the complementary [pmll-memory-mcp](https://www.npmjs.com/package/pmll-memory-mcp) server (`npx pmll-memory-mcp`), which adds short-term KV memory and a solution engine — see [drQedwards/PPM](https://github.com/drQedwards/PPM).
- `memory-tools.ts` - Memory graph + short-term KV / solution-engine MCP wrappers (`init`/`peek`/`set`/`resolve`/`flush`, `resolve_context`, `promote_to_long_term`, `memory_status`).

The memory graph is a **Retrieval-Augmented Generation (RAG)** system. Agents MUST use `search_memory_graph` at the start of every task to retrieve prior context, and persist learnings with `upsert_memory_node` and `create_relation` after completing work. This prevents redundant exploration and builds cumulative knowledge across sessions.
The memory graph is a **Retrieval-Augmented Generation (RAG)** system. Prefer `resolve_context` (KV then graph) and `peek` before expensive calls; persist learnings with `upsert_memory_node` / `promote_to_long_term`. Token burn reference (PPM three-way only): baseline ~302ms / peek-only ~26ms / combined ~36ms avg test exec; peek hits ~0ms — [three-way-speed-comparison.md](https://github.com/drQedwards/PPM/blob/main/mcp/benchmarks/three-way-speed-comparison.md). Optional complementary [pmll-memory-mcp](https://www.npmjs.com/package/pmll-memory-mcp) for Q-promise / Python SQLite P0; retrieval harness is labeled P@k/R@k/MRR only (not agent accuracy).

**Core Layer** (continued):

- `hub.ts` - Wikilink parser for `[[path]]` links, cross-link tags, hub discovery, orphan detection.
- `memory-graph.ts` - In-memory property graph with JSON persistence, decay scoring, and auto-similarity edges.
- `memory-graph.ts` - In-memory property graph with JSON persistence, decay scoring, auto-similarity edges, and `mergeRankHits` for dual-layer resolve ranking.
- `short-term-kv.ts` - Session silo Map with `silo_size` LRU eviction; init/peek/set/flush + simple pending map.
- `solution-engine.ts` - `resolve_context` (KV then graph), `promote_to_long_term`, `memory_status`.

**Git Layer** (`src/git/`):

- `shadow.ts` - Shadow restore point system for undo without touching git history.

**Entry Point**: `src/index.ts` registers 17 MCP tools and starts the stdio transport. Accepts an optional CLI argument for the target project root directory (defaults to `process.cwd()`).
**Entry Point**: `src/index.ts` registers the structural + memory MCP tools (including native short-term KV / solution engine) and starts the stdio transport. Accepts an optional CLI argument for the target project root directory (defaults to `process.cwd()`).

## Environment Variables

Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,22 @@ https://github.com/user-attachments/assets/a97a451f-c9b4-468d-b036-15b65fc13e79

| Tool | Description |
| ------------------------- | -------------------------------------------------------------------------------------------------------- |
| `init` / `peek` / `set` / `resolve` / `flush` | Native short-term KV silo (`src/core/short-term-kv.ts`) with `silo_size` LRU eviction. |
| `resolve_context` | Dual-layer lookup: KV first, then memory graph via `mergeRankHits` unified ranking. |
| `promote_to_long_term` | Promote a KV entry into the persistent memory graph. |
| `memory_status` | Unified short-term + long-term status. |
| `upsert_memory_node` | Create or update a memory node (concept, file, symbol, note) with auto-generated embeddings. |
| `create_relation` | Create typed edges between nodes (relates_to, depends_on, implements, references, similar_to, contains). |
| `search_memory_graph` | Semantic search with graph traversal — finds direct matches then walks 1st/2nd-degree neighbors. |
| `prune_stale_links` | Remove decayed edges (e^(-λt) below threshold) and orphan nodes with low access counts. |
| `add_interlinked_context` | Bulk-add nodes with auto-similarity linking (cosine ≥ 0.72 creates edges automatically). |
| `retrieve_with_traversal` | Start from a node and walk outward — returns all reachable neighbors scored by decay and depth. |

> **Complementary server:** [pmll-memory-mcp](https://www.npmjs.com/package/pmll-memory-mcp) (`npx pmll-memory-mcp`) is a separate MCP server by [@drQedwards](https://github.com/drQedwards) that adapts Context+'s long-term memory graph and adds short-term KV context memory, Q-promise deduplication, and a solution engine on top. See [drQedwards/PPM](https://github.com/drQedwards/PPM) for details.
> **Core upgrade:** short-term KV + solution engine are now native (`short-term-kv.ts`, `solution-engine.ts`, `memory-tools.ts`). `mergeRankHits` supports unified ranking for dual-layer `resolve_context` (direct+neighbor by relevance) — separate from the pmll retrieval-stub harness ranking fix.
>
> **Token burn (PPM three-way, existing numbers):** [three-way-speed-comparison.md](https://github.com/drQedwards/PPM/blob/main/mcp/benchmarks/three-way-speed-comparison.md) — TS avg test exec baseline **~302ms**, Context+-only **~63ms**, peek-only **~26ms**, combined **~36ms**; peek hits **~0ms**.
>
> **Optional complementary:** [pmll-memory-mcp](https://www.npmjs.com/package/pmll-memory-mcp) for full Q-promise / Python SQLite P0 — [PPM](https://github.com/drQedwards/PPM) / [pmll](https://github.com/drQedwards/pmll). Retrieval harness measures labeled **P@k / R@k / MRR** only — **not** agent task accuracy; no 99% claims.

## Setup

Expand Down
Loading