opencode-semantic-memory 0.4.1__tar.gz → 0.5.0__tar.gz
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.
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/0/0/d/f/d/00dfda658f2fcde6926308004100798ad2247e2f45d1313ebfef973d +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/1/a/a/9/3/1aa93177f63584761c951c731336f631596e12d3b4e0b67c5c164470 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/0/0/d/f/d/00dfda658f2fcde6926308004100798ad2247e2f45d1313ebfef973d → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/1/f/d/9/a/1fd9ade2b751542e96db097082f121ecac23098b3cd95c8a877f0716 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/2/a/8/c/5/2a8c5a56aa7e75a42e474464b0e75e78380050445086fa2e6626b678 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/e/5/b/6/2e5b6ced06806dcc8a76919087cfc0d76c4240a8acb8d34511ad15d6 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/2/7/f/0/327f0380de23010729d12b6a8a48f24b952353d527064c8bf3cfd875 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/6/1/b/f/361bf053ab706a1212f013301d35a0c4b0af9cd8cc559d24c73d6a6f +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/8/4/d/c/384dc122488f965cecab29f1722d1db789313763e22373f38c7fbbef +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/9/f/9/3/7/9f937e100a133ace0f86a717e0ada066b9e9d82f4d2982affb4e0344 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/b/e/0/7/4be07d3ac353e38d2c9e3a257cad36ee2a758fc88b4cd5f0d479a5a9 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/3/8/4/d/c/384dc122488f965cecab29f1722d1db789313763e22373f38c7fbbef → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/5/b/5/7/6/5b576ddc69cb2cda42f61333b85f066e4990a5eab5c96e0670cbb445 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/5/b/d/8/9/5bd894eeb3dfe1c8aaee1daecdfb74bbb314293813a730238621f077 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/b/e/1/1/5be1135dcb7a68de4427c71119ff80f66b671ae16db019966320bd6b +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/c/3/7/f/6c37fbfdf697cce77ac3a3add5b61c639e47de9b9b9d1eb63cf429d5 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/6/e/b/6/c/6eb6c130f2e60d2739ddb376352e395a8d86e4f80b402f5f7854d07d +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/7/a/5/f/7/7a5f717e7b3fb99ec006f4d173aad55224eb063005c662c586ba0518 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/1/a/a/9/3/1aa93177f63584761c951c731336f631596e12d3b4e0b67c5c164470 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/8/b/2/4/2/8b24226e2da88df4abeee0d8ca6bce79b19ca2bcd5f94b543939c66c +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/2/a/8/c/5/2a8c5a56aa7e75a42e474464b0e75e78380050445086fa2e6626b678 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/8/d/0/e/1/8d0e104919449355aedb55b5b546bb9fd53f0e1a8ca1b082109464e9 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/8/8/9/3/98893f0b227721063df57aa66878132bb1592344007b1842b6681340 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/9/e/2/9/3/9e293f5a39d8466e2b362aa21216c5e4bc32898b0a39bfff792d145e → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/9/8/a/a/c/98aaccf247f7044601019ac72b3323db416a60a3b922e914db3b02bc +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/9/e/2/9/3/9e293f5a39d8466e2b362aa21216c5e4bc32898b0a39bfff792d145e +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/9/f/9/3/7/9f937e100a133ace0f86a717e0ada066b9e9d82f4d2982affb4e0344 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/a/4/6/b/7/a46b74c1407dd55ebf9eeb7eb2c73000028b7639a6ed9edc7981950c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/6/f/4/d/b6f4dcb64ca093b3c3ae363be21ccc40760e60e58f24e7541ab876c7 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/b/a/d/c/bbadc07fc383ff650474f2a8246a59ba64776ab6b35809d02400a398 +0 -0
- opencode_semantic_memory-0.5.0/.cache/pip/http-v2/c/6/3/0/6/c6306d205b48faecb62eb823053e850df036f38e59b11523829f5c31 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/7/a/5/f/7/7a5f717e7b3fb99ec006f4d173aad55224eb063005c662c586ba0518 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/a/4/6/b/7/a46b74c1407dd55ebf9eeb7eb2c73000028b7639a6ed9edc7981950c → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/d/c/b/6/1/dcb61fa48ca00e206822fed148e38d1d4494a0b43064c07dcadec607 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/8/d/0/e/1/8d0e104919449355aedb55b5b546bb9fd53f0e1a8ca1b082109464e9 → opencode_semantic_memory-0.5.0/.cache/pip/http-v2/e/a/c/6/1/eac61126daf80149d2a016f12a54eab5e3b5c1dbc77410ff1a97edc4 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/2/5/d/ed25d1bb38edf83d84e0a08c7e2111da8cb788eddb019df7a96d3213 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/6/5/9/f9659e50df363f8369e6abe4c4008418f9de6a660e264dbba624109f +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.gitignore +3 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/PKG-INFO +1 -1
- opencode_semantic_memory-0.5.0/flake.nix +93 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/package.nix +4 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/index.ts +20 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/memory-client.ts +46 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/pyproject.toml +1 -1
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/setup.sh +138 -2
- opencode_semantic_memory-0.5.0/slack-post-memory-effectiveness.md +23 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/background_worker.py +27 -5
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/config.py +46 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment_worker.py +69 -43
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/extraction.py +55 -32
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/http_server.py +112 -0
- opencode_semantic_memory-0.5.0/src/opencode_memory/llm.py +263 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/server.py +88 -13
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/sqlite.py +312 -0
- opencode_semantic_memory-0.5.0/tests/test_llm.py +384 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/1/f/d/9/a/1fd9ade2b751542e96db097082f121ecac23098b3cd95c8a877f0716 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/3/2/7/f/0/327f0380de23010729d12b6a8a48f24b952353d527064c8bf3cfd875 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/3/6/1/b/f/361bf053ab706a1212f013301d35a0c4b0af9cd8cc559d24c73d6a6f +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/5/b/5/7/6/5b576ddc69cb2cda42f61333b85f066e4990a5eab5c96e0670cbb445 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/5/b/d/8/9/5bd894eeb3dfe1c8aaee1daecdfb74bbb314293813a730238621f077 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/6/e/b/6/c/6eb6c130f2e60d2739ddb376352e395a8d86e4f80b402f5f7854d07d +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/8/b/2/4/2/8b24226e2da88df4abeee0d8ca6bce79b19ca2bcd5f94b543939c66c +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/9/8/a/a/c/98aaccf247f7044601019ac72b3323db416a60a3b922e914db3b02bc +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/c/6/3/0/6/c6306d205b48faecb62eb823053e850df036f38e59b11523829f5c31 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/d/c/b/6/1/dcb61fa48ca00e206822fed148e38d1d4494a0b43064c07dcadec607 +0 -0
- opencode_semantic_memory-0.4.1/.cache/pip/http-v2/e/a/c/6/1/eac61126daf80149d2a016f12a54eab5e3b5c1dbc77410ff1a97edc4 +0 -0
- opencode_semantic_memory-0.4.1/flake.nix +0 -41
- opencode_semantic_memory-0.4.1/slack-post-memory-effectiveness.md +0 -66
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/0/d/f/d/00dfda658f2fcde6926308004100798ad2247e2f45d1313ebfef973d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/2/1/0/5/02105206f60ee8a62c7d923e21bb4bd2d8f3db94c5bb87bd806d5e74 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/2/1/0/5/02105206f60ee8a62c7d923e21bb4bd2d8f3db94c5bb87bd806d5e74.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/4/3/c/5/043c5436ab58fe00f4947e073da46878751ec535f5fb37ee31d056d4 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/4/3/c/5/043c5436ab58fe00f4947e073da46878751ec535f5fb37ee31d056d4.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/a/6/b/7/0a6b76df38e61ac4e1f757a1132d2c6424dcb9c23751423afee448ac +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/a/6/b/7/0a6b76df38e61ac4e1f757a1132d2c6424dcb9c23751423afee448ac.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/0/5/5/0e055813e840b7b873253f9f5c1cd4a7b06e0256c8de713dec25b93d +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/0/5/5/0e055813e840b7b873253f9f5c1cd4a7b06e0256c8de713dec25b93d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/0/b/2/a/10b2a8b62ea67a4cd49d0d353a09c43832fb02ba7b3a804e29c73417 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/0/b/2/a/10b2a8b62ea67a4cd49d0d353a09c43832fb02ba7b3a804e29c73417.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/4/a/4/114a432b2bd8b6284c600aa9e3f2bd6b180cacf11a94027a1a3ebafd +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/4/a/4/114a432b2bd8b6284c600aa9e3f2bd6b180cacf11a94027a1a3ebafd.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/5/8/4/11584f31ec41215071940705e8c92c248476c2eb9f8321e581bc327d +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/5/8/4/11584f31ec41215071940705e8c92c248476c2eb9f8321e581bc327d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/2/1/8/1/121816d8cda4aebb8eef187064632e8ae9502de5f2c95b48f84a7404 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/2/1/8/1/121816d8cda4aebb8eef187064632e8ae9502de5f2c95b48f84a7404.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/5/9/c/5/159c56e4ec3c8e71dacef647c600365ad192876d095dd29b5b5c8ace +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/5/9/c/5/159c56e4ec3c8e71dacef647c600365ad192876d095dd29b5b5c8ace.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/7/1/4/7/1714748212f1de43b155667695179ce5864620d5dacb8cf4aed74142 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/7/1/4/7/1714748212f1de43b155667695179ce5864620d5dacb8cf4aed74142.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/a/a/9/3/1aa93177f63584761c951c731336f631596e12d3b4e0b67c5c164470.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/8/1/b/1c81b93817f31aa9418642808feaab487be448dbe0773e4bd01b9229 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/8/1/b/1c81b93817f31aa9418642808feaab487be448dbe0773e4bd01b9229.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/c/f/2/1ccf222879210db389c3a9cad286511f6d242e8f0f9678f4322d324c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/c/f/2/1ccf222879210db389c3a9cad286511f6d242e8f0f9678f4322d324c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/f/d/9/a/1fd9ade2b751542e96db097082f121ecac23098b3cd95c8a877f0716.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/9/c/6/289c6f7419360f0297e671f8a8d5f9af72c5243124e001a3663cac72 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/9/c/6/289c6f7419360f0297e671f8a8d5f9af72c5243124e001a3663cac72.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/a/8/c/5/2a8c5a56aa7e75a42e474464b0e75e78380050445086fa2e6626b678.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/0/a/4/2b0a4fda1a2c912a5a1c5245a8b34b5da87876e311f607befabc98ee +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/0/a/4/2b0a4fda1a2c912a5a1c5245a8b34b5da87876e311f607befabc98ee.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/4/a/8/2b4a8461b0c542cab777b0b365023942af997bbb25607ac8b3782391 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/4/a/8/2b4a8461b0c542cab777b0b365023942af997bbb25607ac8b3782391.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/e/5/b/6/2e5b6ced06806dcc8a76919087cfc0d76c4240a8acb8d34511ad15d6.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/2/7/f/0/327f0380de23010729d12b6a8a48f24b952353d527064c8bf3cfd875.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/5/e/4/335e4fae780121b49f966edba3e2b1f1f00b06637723db2e7e731f26 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/5/e/4/335e4fae780121b49f966edba3e2b1f1f00b06637723db2e7e731f26.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/4/f/3/5/34f35e68224a7918339af3f1e6f6dfcfd5192fd17c6ebb73cd6dd91a +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/4/f/3/5/34f35e68224a7918339af3f1e6f6dfcfd5192fd17c6ebb73cd6dd91a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/1/b/f/361bf053ab706a1212f013301d35a0c4b0af9cd8cc559d24c73d6a6f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/7/8/5/36785bb40858912d7449d47de604d597609db89b1962e5e1e238542b +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/7/8/5/36785bb40858912d7449d47de604d597609db89b1962e5e1e238542b.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/a/5/d/36a5d6132567ff173f730ddcc6ab65962d399aaa9f302927ca97b3eb +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/a/5/d/36a5d6132567ff173f730ddcc6ab65962d399aaa9f302927ca97b3eb.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/8/4/d/c/384dc122488f965cecab29f1722d1db789313763e22373f38c7fbbef.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/9/8/1/3/398134aaeacada9feb8b12654a25e878c4f41490786622fc606a7a1c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/9/8/1/3/398134aaeacada9feb8b12654a25e878c4f41490786622fc606a7a1c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/f/e/c/3/3fec34894257a80934e9246a0a3053a6a96740587f3ddbf5b4fa6f02 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/f/e/c/3/3fec34894257a80934e9246a0a3053a6a96740587f3ddbf5b4fa6f02.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/1/e/3/c/41e3c68bb5038e20a3418971e070f9076b9eaa6e2c345d3e7f55e6b3 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/1/e/3/c/41e3c68bb5038e20a3418971e070f9076b9eaa6e2c345d3e7f55e6b3.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/6/8/4/436846b847c9c90a13539a872e2084e3f9ca23eb93b4b1cc44b55964 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/6/8/4/436846b847c9c90a13539a872e2084e3f9ca23eb93b4b1cc44b55964.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/9/4/0/43940c1ffa291a23244e10de06849b33fae6638badc063f4ade3cc1a +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/9/4/0/43940c1ffa291a23244e10de06849b33fae6638badc063f4ade3cc1a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/5/8/c/7/458c7a7721c5d95619ebccea457715f5b1720258d02ce8362016a55c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/5/8/c/7/458c7a7721c5d95619ebccea457715f5b1720258d02ce8362016a55c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/7/7/4/2/47742615f5189ebbf61bb31c8c50f7f39cc38c5173f10ec7146e3989 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/7/7/4/2/47742615f5189ebbf61bb31c8c50f7f39cc38c5173f10ec7146e3989.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/8/3/8/e/4838e51432c6c88a78b5234e817caf0cf3bf1c3fc933f4861329b80f +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/8/3/8/e/4838e51432c6c88a78b5234e817caf0cf3bf1c3fc933f4861329b80f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/b/e/0/7/4be07d3ac353e38d2c9e3a257cad36ee2a758fc88b4cd5f0d479a5a9.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/c/7/5/1/4c751248c578c4b8d67722e607a019d0909438b8cbe82066c393dfde +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/c/7/5/1/4c751248c578c4b8d67722e607a019d0909438b8cbe82066c393dfde.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/e/7/a/c/4e7ac19406cd6f20bb5f8145cca2f74c5f704ef378b0f4334628b440 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/e/7/a/c/4e7ac19406cd6f20bb5f8145cca2f74c5f704ef378b0f4334628b440.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/5/9/a/2/559a28d2d50a6d0988e3c56e5d0d411789da84005e4420f1a26bb23e +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/5/9/a/2/559a28d2d50a6d0988e3c56e5d0d411789da84005e4420f1a26bb23e.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/b/5/7/6/5b576ddc69cb2cda42f61333b85f066e4990a5eab5c96e0670cbb445.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/b/d/8/9/5bd894eeb3dfe1c8aaee1daecdfb74bbb314293813a730238621f077.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/b/e/1/1/5be1135dcb7a68de4427c71119ff80f66b671ae16db019966320bd6b.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/d/5/7/5/5d575692ffb3194739604e9e1622e2fa8c882afc9517932bd2ce40df +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/d/5/7/5/5d575692ffb3194739604e9e1622e2fa8c882afc9517932bd2ce40df.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/c/3/7/f/6c37fbfdf697cce77ac3a3add5b61c639e47de9b9b9d1eb63cf429d5.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/e/b/6/c/6eb6c130f2e60d2739ddb376352e395a8d86e4f80b402f5f7854d07d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/e/f/c/7/6efc76a8ab292a15bc9bca02c950f72e1ce263d0a701323e9af5a358 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/e/f/c/7/6efc76a8ab292a15bc9bca02c950f72e1ce263d0a701323e9af5a358.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/0/b/9/c/70b9c022893d41f3d2b5cd47c3935b21f2c02945201dbf0acd4f302c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/0/b/9/c/70b9c022893d41f3d2b5cd47c3935b21f2c02945201dbf0acd4f302c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/2/f/6/0/72f60d542675f65a9677981499f07ae27fe97e3ac82f8e2224d72113 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/2/f/6/0/72f60d542675f65a9677981499f07ae27fe97e3ac82f8e2224d72113.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/6/f/a/7/76fa74418db194f57a03dff1a0900e3bb30fca5fcb07e76f411cd937 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/6/f/a/7/76fa74418db194f57a03dff1a0900e3bb30fca5fcb07e76f411cd937.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/7/4/6/9/77469a77c0c5007f8e0ef36b73b2bdb8cbe7d9c8be102fd7d4efaf35 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/7/4/6/9/77469a77c0c5007f8e0ef36b73b2bdb8cbe7d9c8be102fd7d4efaf35.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/a/5/f/7/7a5f717e7b3fb99ec006f4d173aad55224eb063005c662c586ba0518.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/2/6/f/6/826f657d92b77c09dc5003a2b07bdbf9bb82259638dc4579ee230b4d +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/2/6/f/6/826f657d92b77c09dc5003a2b07bdbf9bb82259638dc4579ee230b4d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/3/d/e/5/83de5cc65dfecf3a6e4c4c0025f0873b77d3c9243e6a038bd0ca39b9 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/3/d/e/5/83de5cc65dfecf3a6e4c4c0025f0873b77d3c9243e6a038bd0ca39b9.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/6/c/3/3/86c33a8b2bab9735c4478352d670d16d3abe4f1a006f7c8e395d413f +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/6/c/3/3/86c33a8b2bab9735c4478352d670d16d3abe4f1a006f7c8e395d413f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/8/f/0/6/88f06a944c734c3736badbb02d887cddfeb74de4f837c06db79e749c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/8/f/0/6/88f06a944c734c3736badbb02d887cddfeb74de4f837c06db79e749c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/9/6/5/1/896514be855e753c50f0e30b1a0e384a9a68b4db7b2ad62e28f4f6c0 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/9/6/5/1/896514be855e753c50f0e30b1a0e384a9a68b4db7b2ad62e28f4f6c0.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/a/9/8/c/8a98cf67dec8a2d33fd9e0b916651e7664ecf9dac97e99bcebb334f9 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/a/9/8/c/8a98cf67dec8a2d33fd9e0b916651e7664ecf9dac97e99bcebb334f9.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/b/2/4/2/8b24226e2da88df4abeee0d8ca6bce79b19ca2bcd5f94b543939c66c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/d/0/e/1/8d0e104919449355aedb55b5b546bb9fd53f0e1a8ca1b082109464e9.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/f/0/2/c/8f02ceda6b874413150afa5cd29cd5b10e2fcba552cc363083b9d073 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/f/0/2/c/8f02ceda6b874413150afa5cd29cd5b10e2fcba552cc363083b9d073.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/4/d/0/2/94d022fb6c12e6dc453f3090252f397a80e9c2dbb7341fb45c1b150f +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/4/d/0/2/94d022fb6c12e6dc453f3090252f397a80e9c2dbb7341fb45c1b150f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/8/8/9/3/98893f0b227721063df57aa66878132bb1592344007b1842b6681340.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/8/a/a/c/98aaccf247f7044601019ac72b3323db416a60a3b922e914db3b02bc.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/9/6/4/b/9964b58defdc05f741bfcb3abd6a4eebcb73af9497c5e6d1c828971c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/9/6/4/b/9964b58defdc05f741bfcb3abd6a4eebcb73af9497c5e6d1c828971c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/a/a/7/5/9aa7515b527eee59a0b02e85169b5a03e55bdc51dd9ff5255db0c90b +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/a/a/7/5/9aa7515b527eee59a0b02e85169b5a03e55bdc51dd9ff5255db0c90b.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/0/1/f/9d01f27365759b718ef77536f4a3d30fd989884b0e53418e1275a79d +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/0/1/f/9d01f27365759b718ef77536f4a3d30fd989884b0e53418e1275a79d.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/5/d/f/9d5dfb0dedf17094821c37079d37c9f4a1256a7dc457c1192cfa1573 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/5/d/f/9d5dfb0dedf17094821c37079d37c9f4a1256a7dc457c1192cfa1573.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/e/2/9/3/9e293f5a39d8466e2b362aa21216c5e4bc32898b0a39bfff792d145e.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/f/9/3/7/9f937e100a133ace0f86a717e0ada066b9e9d82f4d2982affb4e0344.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/4/6/b/7/a46b74c1407dd55ebf9eeb7eb2c73000028b7639a6ed9edc7981950c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/6/9/f/7/a69f7807d8670d33b4a34f2be06cdd5812c8d0da9ec20e9dea88a6b5 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/6/9/f/7/a69f7807d8670d33b4a34f2be06cdd5812c8d0da9ec20e9dea88a6b5.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/c/b/4/e/acb4e40f64eef2a73d680e437d7e413b10909b60941ff39f0528cce7 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/c/b/4/e/acb4e40f64eef2a73d680e437d7e413b10909b60941ff39f0528cce7.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/f/9/2/4/af924cace590eaa7f5a948286460f4a79ae9e083cd5843c70be7bcdc +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/f/9/2/4/af924cace590eaa7f5a948286460f4a79ae9e083cd5843c70be7bcdc.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/0/c/3/0/b0c304a2d0d2dd17cd2e818948220da223f52dfe26c6e170a35508ec +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/0/c/3/0/b0c304a2d0d2dd17cd2e818948220da223f52dfe26c6e170a35508ec.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/2/b/3/5/b2b35b24e6fe74c8ffc02d1a4a1ddbd75ba2a82f3623471ee047b2ed +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/2/b/3/5/b2b35b24e6fe74c8ffc02d1a4a1ddbd75ba2a82f3623471ee047b2ed.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/3/6/c/0/b36c03663a3f9be503a38ab3381e55a1c5e2392e9271c976f5e2b956 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/3/6/c/0/b36c03663a3f9be503a38ab3381e55a1c5e2392e9271c976f5e2b956.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/6/f/4/d/b6f4dcb64ca093b3c3ae363be21ccc40760e60e58f24e7541ab876c7.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/b/a/d/c/bbadc07fc383ff650474f2a8246a59ba64776ab6b35809d02400a398.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/c/5/b/a/bc5baf40560ff46e68ca4c99692ddaaf9ca29f999555e36e150ea6f1 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/c/5/b/a/bc5baf40560ff46e68ca4c99692ddaaf9ca29f999555e36e150ea6f1.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/e/d/4/e/bed4e7c2b407105e5c80f6f3c9c9ce06074cd1bc90409700e4489759 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/e/d/4/e/bed4e7c2b407105e5c80f6f3c9c9ce06074cd1bc90409700e4489759.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/4/1/9/b/c419b5211317322d2f929c4249b25fb3a2a5deaac5ca898ef2889e82 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/4/1/9/b/c419b5211317322d2f929c4249b25fb3a2a5deaac5ca898ef2889e82.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/5/5/1/6/c5516052911272854847b94d1c7e5dcdda18d04768795c313b9958bc +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/5/5/1/6/c5516052911272854847b94d1c7e5dcdda18d04768795c313b9958bc.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/6/3/0/6/c6306d205b48faecb62eb823053e850df036f38e59b11523829f5c31.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/6/e/e/4/c6ee4aaa63f8847bfbe25565d073b6c57d624c7f7c4708994746c09c +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/6/e/e/4/c6ee4aaa63f8847bfbe25565d073b6c57d624c7f7c4708994746c09c.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/0/c/6/c70c631b8d2fff6b4f7fd6ebc7fad8e500b50f8fa7da0af627bf1f0b +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/0/c/6/c70c631b8d2fff6b4f7fd6ebc7fad8e500b50f8fa7da0af627bf1f0b.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/7/1/f/c771f1dbbe2a60b07758757a5e715103105323f69596e50cebedebeb +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/7/1/f/c771f1dbbe2a60b07758757a5e715103105323f69596e50cebedebeb.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/9/4/a/e/c94ae1695304888e79191be0f465ad0b2a85880ee474d189ee9126ed +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/9/4/a/e/c94ae1695304888e79191be0f465ad0b2a85880ee474d189ee9126ed.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/d/e/c/3/cdec3d0140a615c153130a37691576ea1707e32a1ab5e60ae5a540f4 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/d/e/c/3/cdec3d0140a615c153130a37691576ea1707e32a1ab5e60ae5a540f4.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/6/7/6/ce6762d91f1e7c3c4bece64762122d18df14d8f8e7532d5f15dfdb37 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/6/7/6/ce6762d91f1e7c3c4bece64762122d18df14d8f8e7532d5f15dfdb37.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/8/f/d/ce8fd146fb2bb37feff63c8f224f1a8b178c26a332d13562e417fead +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/8/f/d/ce8fd146fb2bb37feff63c8f224f1a8b178c26a332d13562e417fead.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/f/e/5/3/cfe53db609feaba2efb2139916693c3ff859e7f1e6e6e557fbd82ae0 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/f/e/5/3/cfe53db609feaba2efb2139916693c3ff859e7f1e6e6e557fbd82ae0.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/3/7/f/1/d37f17c4b7b25f8b5df752972b9c2301f59d0c55586cac7f15268689 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/3/7/f/1/d37f17c4b7b25f8b5df752972b9c2301f59d0c55586cac7f15268689.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/4/b/b/d54bb21df9a8549867c7c0c30dcdda927be8994b07f4c933db9a04ab +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/4/b/b/d54bb21df9a8549867c7c0c30dcdda927be8994b07f4c933db9a04ab.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/9/0/b/d590bdf80aa5f6230e0e49a9f10b63aa0c44f77ccd99f25a6ad7841a +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/9/0/b/d590bdf80aa5f6230e0e49a9f10b63aa0c44f77ccd99f25a6ad7841a.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/6/b/d/f/d6bdf32d1c16362f083791f397046d0fa2aa6875fb754c605afbef26 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/6/b/d/f/d6bdf32d1c16362f083791f397046d0fa2aa6875fb754c605afbef26.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/8/f/6/6/d8f6658f33493176286485c04b4350d8cca524052cba0aea8d4cb82e +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/8/f/6/6/d8f6658f33493176286485c04b4350d8cca524052cba0aea8d4cb82e.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/a/4/3/1/da431bf4bec8d6d3c8eda94dac7a309e829b61d10ffd31c5d846f4d5 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/a/4/3/1/da431bf4bec8d6d3c8eda94dac7a309e829b61d10ffd31c5d846f4d5.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/c/b/6/1/dcb61fa48ca00e206822fed148e38d1d4494a0b43064c07dcadec607.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/f/1/1/f/df11f101ff0165c7df447aaf1ab175fcd1af98711e498eef0c3d0dfa +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/f/1/1/f/df11f101ff0165c7df447aaf1ab175fcd1af98711e498eef0c3d0dfa.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/1/6/2/5/e16255f8dfb39b0298f7cb7edd062dd0d3f7ae4c5014de5fc4e17070 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/1/6/2/5/e16255f8dfb39b0298f7cb7edd062dd0d3f7ae4c5014de5fc4e17070.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/a/c/6/1/eac61126daf80149d2a016f12a54eab5e3b5c1dbc77410ff1a97edc4.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/2/5/d/ed25d1bb38edf83d84e0a08c7e2111da8cb788eddb019df7a96d3213.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/3/a/c/ed3acad79bebd48e93f9254a4702825f833ffd8119c8d2cbff43abfc +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/3/a/c/ed3acad79bebd48e93f9254a4702825f833ffd8119c8d2cbff43abfc.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/6/5/9/f9659e50df363f8369e6abe4c4008418f9de6a660e264dbba624109f.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/c/c/6/f/fcc6fbc30e8c9f7e5cfd4f86edead21005705c18238a90d9673eeb47 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/c/c/6/f/fcc6fbc30e8c9f7e5cfd4f86edead21005705c18238a90d9673eeb47.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/d/b/e/3/fdbe380932457c2da0b68a223546fd0f6b84c31a8f4a6b63757becce +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/d/b/e/3/fdbe380932457c2da0b68a223546fd0f6b84c31a8f4a6b63757becce.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/f/6/3/f/ff63f8aee48f79bb6d2cdeff8f7863b5820a3c507a2623f007846bb0 +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/f/6/3/f/ff63f8aee48f79bb6d2cdeff8f7863b5820a3c507a2623f007846bb0.body +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/selfcheck/fe300af6f7d708c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.gitlab-ci.yml +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/AGENTS.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/ARCHITECTURE.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/BOOTSTRAP.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/CHANGELOG.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/README.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/backfill.log +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/com.opencode.memory.plist +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/BOOTSTRAP_MEMORIES.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/GITLAB_WORKFLOW_MEMORIES.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/TIPS_FOR_HUMANS.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/flake.lock +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/lefthook.yml +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/model.nix +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/module.nix +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-mcp-config.json +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-daemon.service +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-reload.path +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-worker.service +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory.service +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode.json +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/.gitignore +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/README.md +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/package-lock.json +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/package.json +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/context-formatter.ts +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/entity-extractor.ts +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/tsconfig.json +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/backfill_extraction.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/memory-mcp.sh +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/reingest_insights.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/activity_log.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/backfill_introspection.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/cache.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/cli.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/daemon.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/gitlab.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/orbit.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/historical_ingest.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/indexing/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/indexing/code_structure.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/embeddings.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/extractors.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/opencode_db.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/parser.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/watcher.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/linking/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/linking/linker.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/metrics.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/models.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/proactive_context.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/project.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/query/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/query/hybrid.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/session/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/session/registry.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/crawler.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/references.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/vectors.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/__init__.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_cache.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_config.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_daemon.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_extractors.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_http_server.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_linking.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_opencode_db.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_orbit.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_parser.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_proactive_context.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_server.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_storage.py +0 -0
- {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/uv.lock +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
description = "Persistent semantic memory system for OpenCode sessions";
|
|
3
|
+
|
|
4
|
+
inputs = {
|
|
5
|
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
outputs =
|
|
9
|
+
{ self, nixpkgs }:
|
|
10
|
+
let
|
|
11
|
+
eachSystem = nixpkgs.lib.genAttrs [
|
|
12
|
+
"aarch64-darwin"
|
|
13
|
+
"aarch64-linux"
|
|
14
|
+
"x86_64-darwin"
|
|
15
|
+
"x86_64-linux"
|
|
16
|
+
];
|
|
17
|
+
in
|
|
18
|
+
{
|
|
19
|
+
packages = eachSystem (
|
|
20
|
+
system:
|
|
21
|
+
let
|
|
22
|
+
pkgs = nixpkgs.legacyPackages.${system};
|
|
23
|
+
inherit (nixpkgs) lib;
|
|
24
|
+
|
|
25
|
+
# On Darwin, every tree-sitter-grammars.* python package ships a
|
|
26
|
+
# `parser` shared object whose install-name is the bare string
|
|
27
|
+
# "parser". When more than one is loaded into the same process
|
|
28
|
+
# (our code imports python+javascript+ruby grammars together),
|
|
29
|
+
# dyld treats them as the same library and the first-loaded one
|
|
30
|
+
# wins. The other grammars' _binding.so files then fail to find
|
|
31
|
+
# their language symbols against the wrong parser.
|
|
32
|
+
#
|
|
33
|
+
# Fix: rewrite each grammar's _binding.so to reference its own
|
|
34
|
+
# parser by absolute path instead of the bare "parser" install-
|
|
35
|
+
# name, so dyld looks up each one independently.
|
|
36
|
+
fixTreeSitterGrammar =
|
|
37
|
+
drv:
|
|
38
|
+
drv.overrideAttrs (old: {
|
|
39
|
+
postFixup =
|
|
40
|
+
(old.postFixup or "")
|
|
41
|
+
+ lib.optionalString pkgs.stdenv.hostPlatform.isDarwin ''
|
|
42
|
+
for binding in "$out"/lib/python*/site-packages/*/_binding.*.so; do
|
|
43
|
+
[ -e "$binding" ] || continue
|
|
44
|
+
pkgdir=$(dirname "$binding")
|
|
45
|
+
grammar_parser=$(sed -n 's/^parser = "\([^"]*\)".*/\1/p' "$pkgdir/__init__.py")
|
|
46
|
+
[ -n "$grammar_parser" ] || continue
|
|
47
|
+
chmod +w "$binding"
|
|
48
|
+
${pkgs.darwin.cctools}/bin/install_name_tool \
|
|
49
|
+
-change parser "$grammar_parser" "$binding"
|
|
50
|
+
done
|
|
51
|
+
'';
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
python3 = pkgs.python3.override {
|
|
55
|
+
self = python3;
|
|
56
|
+
packageOverrides = pyfinal: pyprev: {
|
|
57
|
+
pysnooper = pyprev.pysnooper.overridePythonAttrs (old: {
|
|
58
|
+
disabledTests =
|
|
59
|
+
(old.disabledTests or [ ])
|
|
60
|
+
++ lib.optionals pkgs.stdenv.hostPlatform.isDarwin [
|
|
61
|
+
"test_relative_time"
|
|
62
|
+
];
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
tree-sitter-grammars = pyprev.tree-sitter-grammars // {
|
|
66
|
+
tree-sitter-python = fixTreeSitterGrammar pyprev.tree-sitter-grammars.tree-sitter-python;
|
|
67
|
+
tree-sitter-javascript = fixTreeSitterGrammar pyprev.tree-sitter-grammars.tree-sitter-javascript;
|
|
68
|
+
tree-sitter-ruby = fixTreeSitterGrammar pyprev.tree-sitter-grammars.tree-sitter-ruby;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
in
|
|
73
|
+
{
|
|
74
|
+
default = pkgs.callPackage ./nix/package.nix {
|
|
75
|
+
src = self;
|
|
76
|
+
python3Packages = python3.pkgs;
|
|
77
|
+
};
|
|
78
|
+
model = pkgs.callPackage ./nix/model.nix { };
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
darwinModules = {
|
|
83
|
+
default = self.darwinModules.opencode-memory;
|
|
84
|
+
opencode-memory =
|
|
85
|
+
{ pkgs, ... }:
|
|
86
|
+
{
|
|
87
|
+
imports = [ ./nix/module.nix ];
|
|
88
|
+
services.opencode-memory.package = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
|
89
|
+
services.opencode-memory.model = self.packages.${pkgs.stdenv.hostPlatform.system}.model;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
}
|
|
@@ -23,6 +23,10 @@ python3Packages.buildPythonApplication {
|
|
|
23
23
|
starlette
|
|
24
24
|
uvicorn
|
|
25
25
|
pylance # for vector cleanup
|
|
26
|
+
tree-sitter
|
|
27
|
+
tree-sitter-grammars.tree-sitter-python
|
|
28
|
+
tree-sitter-grammars.tree-sitter-javascript
|
|
29
|
+
tree-sitter-grammars.tree-sitter-ruby
|
|
26
30
|
];
|
|
27
31
|
|
|
28
32
|
pythonImportsCheck = [ "opencode_memory" ];
|
|
@@ -33,6 +33,9 @@ const sessionContextCache = new Map<string, ProactiveContextResponse | null>();
|
|
|
33
33
|
// Track memory IDs already injected per session to avoid redundant injection
|
|
34
34
|
const injectedMemoryIds = new Map<string, Set<number>>();
|
|
35
35
|
|
|
36
|
+
// Track turn numbers per session for injection logging
|
|
37
|
+
const sessionTurnNumbers = new Map<string, number>();
|
|
38
|
+
|
|
36
39
|
// Memory client instance (lazy initialized)
|
|
37
40
|
let memoryClient: MemoryClient | null = null;
|
|
38
41
|
|
|
@@ -197,11 +200,28 @@ export const server: Plugin = async (input, _options) => {
|
|
|
197
200
|
return;
|
|
198
201
|
}
|
|
199
202
|
|
|
203
|
+
// Increment turn number for this session
|
|
204
|
+
const turnNumber = (sessionTurnNumbers.get(sessionID) ?? 0) + 1;
|
|
205
|
+
sessionTurnNumbers.set(sessionID, turnNumber);
|
|
206
|
+
|
|
200
207
|
// Format and append to system prompt
|
|
201
208
|
const contextSection = formatContextForSystem(context);
|
|
202
209
|
|
|
203
210
|
if (contextSection) {
|
|
204
211
|
output.system.push(contextSection);
|
|
212
|
+
|
|
213
|
+
// Log the injection for effectiveness tracking (fire and forget)
|
|
214
|
+
client.logInjection({
|
|
215
|
+
sessionId: sessionID,
|
|
216
|
+
turnNumber,
|
|
217
|
+
memoryIds: context.items.map(item => item.memory_id),
|
|
218
|
+
relevanceSummary: context.relevance_summary,
|
|
219
|
+
queryPreview: context.semantic_query,
|
|
220
|
+
totalTokens: context.total_tokens,
|
|
221
|
+
itemsCount: context.items_count,
|
|
222
|
+
}).catch(() => { /* silent */ });
|
|
223
|
+
|
|
224
|
+
debugLog(`[system.transform] logged injection: turn=${turnNumber} items=${context.items_count}`);
|
|
205
225
|
}
|
|
206
226
|
},
|
|
207
227
|
};
|
{opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/memory-client.ts
RENAMED
|
@@ -146,6 +146,42 @@ export class MemoryClient {
|
|
|
146
146
|
clearTimeout(timeoutId);
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
+
|
|
150
|
+
async logInjection(params: LogInjectionParams): Promise<void> {
|
|
151
|
+
// Fire and forget - don't block on logging
|
|
152
|
+
const controller = new AbortController();
|
|
153
|
+
const timeoutId = setTimeout(() => controller.abort(), 2000);
|
|
154
|
+
|
|
155
|
+
try {
|
|
156
|
+
const headers: Record<string, string> = {
|
|
157
|
+
'Content-Type': 'application/json',
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
if (this.apiKey) {
|
|
161
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
await fetch(`${this.baseUrl}/log-injection`, {
|
|
165
|
+
method: 'POST',
|
|
166
|
+
headers,
|
|
167
|
+
body: JSON.stringify({
|
|
168
|
+
session_id: params.sessionId,
|
|
169
|
+
turn_number: params.turnNumber,
|
|
170
|
+
memory_ids: params.memoryIds,
|
|
171
|
+
relevance_summary: params.relevanceSummary,
|
|
172
|
+
query_preview: params.queryPreview,
|
|
173
|
+
total_tokens: params.totalTokens,
|
|
174
|
+
items_count: params.itemsCount,
|
|
175
|
+
}),
|
|
176
|
+
signal: controller.signal,
|
|
177
|
+
});
|
|
178
|
+
// Ignore response - fire and forget
|
|
179
|
+
} catch {
|
|
180
|
+
// Silent failure - logging shouldn't break the plugin
|
|
181
|
+
} finally {
|
|
182
|
+
clearTimeout(timeoutId);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
149
185
|
}
|
|
150
186
|
|
|
151
187
|
export interface WorkspaceInitResponse {
|
|
@@ -162,3 +198,13 @@ export interface WorkspaceInitResponse {
|
|
|
162
198
|
total_facts_created?: number;
|
|
163
199
|
error?: string;
|
|
164
200
|
}
|
|
201
|
+
|
|
202
|
+
export interface LogInjectionParams {
|
|
203
|
+
sessionId: string;
|
|
204
|
+
turnNumber: number;
|
|
205
|
+
memoryIds: number[];
|
|
206
|
+
relevanceSummary?: string;
|
|
207
|
+
queryPreview?: string;
|
|
208
|
+
totalTokens?: number;
|
|
209
|
+
itemsCount?: number;
|
|
210
|
+
}
|
|
@@ -794,6 +794,99 @@ EOF
|
|
|
794
794
|
echo " tail -f $LOG_DIR/worker.log # View worker logs"
|
|
795
795
|
}
|
|
796
796
|
|
|
797
|
+
# Configure OpenCode permissions for memory tools
|
|
798
|
+
configure_opencode_permissions() {
|
|
799
|
+
local OPENCODE_CONFIG="$HOME/.config/opencode/opencode.json"
|
|
800
|
+
|
|
801
|
+
# Check if permissions are already set for memory tools
|
|
802
|
+
if [[ -f "$OPENCODE_CONFIG" ]]; then
|
|
803
|
+
if grep -q '"memory_\*"' "$OPENCODE_CONFIG" 2>/dev/null || \
|
|
804
|
+
grep -q '"memory_get_boot_context"' "$OPENCODE_CONFIG" 2>/dev/null; then
|
|
805
|
+
info "Memory tool permissions already configured"
|
|
806
|
+
return 0
|
|
807
|
+
fi
|
|
808
|
+
fi
|
|
809
|
+
|
|
810
|
+
echo ""
|
|
811
|
+
echo -e "${YELLOW}OpenCode Permission Setup${NC}"
|
|
812
|
+
echo ""
|
|
813
|
+
echo "The memory system requires permission to run memory_* tools."
|
|
814
|
+
echo "Without this, OpenCode will prompt for approval on each memory call."
|
|
815
|
+
echo ""
|
|
816
|
+
echo "Options:"
|
|
817
|
+
echo " 1. Allow all memory tools automatically (recommended)"
|
|
818
|
+
echo " 2. Allow only memory_get_boot_context (minimal)"
|
|
819
|
+
echo " 3. Skip - configure manually later"
|
|
820
|
+
echo ""
|
|
821
|
+
|
|
822
|
+
local choice
|
|
823
|
+
if [ -t 0 ]; then
|
|
824
|
+
read -p "Choice [1/2/3] (default: 1): " -n 1 -r choice
|
|
825
|
+
echo ""
|
|
826
|
+
else
|
|
827
|
+
# Non-interactive - skip permission changes (require explicit consent)
|
|
828
|
+
info "Non-interactive mode: skipping permission setup (requires explicit consent)"
|
|
829
|
+
info "Run interactively or add manually: \"permission\": { \"memory_*\": \"allow\" }"
|
|
830
|
+
return 0
|
|
831
|
+
fi
|
|
832
|
+
|
|
833
|
+
# Default to option 1 if empty
|
|
834
|
+
choice="${choice:-1}"
|
|
835
|
+
|
|
836
|
+
case "$choice" in
|
|
837
|
+
1)
|
|
838
|
+
local perm_pattern='"memory_*": "allow"'
|
|
839
|
+
info "Configuring: allow all memory_* tools"
|
|
840
|
+
;;
|
|
841
|
+
2)
|
|
842
|
+
local perm_pattern='"memory_get_boot_context": "allow"'
|
|
843
|
+
info "Configuring: allow memory_get_boot_context only"
|
|
844
|
+
;;
|
|
845
|
+
3|*)
|
|
846
|
+
info "Skipping permission setup"
|
|
847
|
+
echo "Add manually to ~/.config/opencode/opencode.json:"
|
|
848
|
+
echo ' "permission": { "memory_*": "allow" }'
|
|
849
|
+
return 0
|
|
850
|
+
;;
|
|
851
|
+
esac
|
|
852
|
+
|
|
853
|
+
mkdir -p "$(dirname "$OPENCODE_CONFIG")"
|
|
854
|
+
|
|
855
|
+
if [[ -f "$OPENCODE_CONFIG" ]]; then
|
|
856
|
+
# Config exists - try to add permission
|
|
857
|
+
if command -v jq >/dev/null 2>&1; then
|
|
858
|
+
local tmp_file=$(mktemp)
|
|
859
|
+
if [[ "$choice" == "1" ]]; then
|
|
860
|
+
if jq '.permission["memory_*"] = "allow"' "$OPENCODE_CONFIG" > "$tmp_file" 2>/dev/null; then
|
|
861
|
+
mv "$tmp_file" "$OPENCODE_CONFIG"
|
|
862
|
+
info "Memory tool permissions added"
|
|
863
|
+
else
|
|
864
|
+
rm -f "$tmp_file"
|
|
865
|
+
warn "Could not auto-update permissions. Add manually:"
|
|
866
|
+
echo ' "permission": { "memory_*": "allow" }'
|
|
867
|
+
fi
|
|
868
|
+
else
|
|
869
|
+
if jq '.permission["memory_get_boot_context"] = "allow"' "$OPENCODE_CONFIG" > "$tmp_file" 2>/dev/null; then
|
|
870
|
+
mv "$tmp_file" "$OPENCODE_CONFIG"
|
|
871
|
+
info "Memory tool permission added"
|
|
872
|
+
else
|
|
873
|
+
rm -f "$tmp_file"
|
|
874
|
+
warn "Could not auto-update permissions. Add manually:"
|
|
875
|
+
echo ' "permission": { "memory_get_boot_context": "allow" }'
|
|
876
|
+
fi
|
|
877
|
+
fi
|
|
878
|
+
else
|
|
879
|
+
warn "jq not installed - cannot auto-update config"
|
|
880
|
+
warn "Add manually to $OPENCODE_CONFIG:"
|
|
881
|
+
echo " \"permission\": { $perm_pattern }"
|
|
882
|
+
fi
|
|
883
|
+
else
|
|
884
|
+
# Will be created by configure_opencode() - just note we need to add permissions
|
|
885
|
+
# Store choice for configure_opencode to use
|
|
886
|
+
export MEMORY_PERMISSION_CHOICE="$choice"
|
|
887
|
+
fi
|
|
888
|
+
}
|
|
889
|
+
|
|
797
890
|
# Configure OpenCode
|
|
798
891
|
configure_opencode() {
|
|
799
892
|
local OPENCODE_CONFIG="$HOME/.config/opencode/opencode.json"
|
|
@@ -868,8 +961,33 @@ configure_opencode() {
|
|
|
868
961
|
fi
|
|
869
962
|
else
|
|
870
963
|
info "Creating OpenCode configuration..."
|
|
964
|
+
|
|
965
|
+
# Determine permission setting based on earlier choice
|
|
966
|
+
local perm_setting=""
|
|
967
|
+
case "${MEMORY_PERMISSION_CHOICE:-1}" in
|
|
968
|
+
1) perm_setting='"memory_*": "allow"' ;;
|
|
969
|
+
2) perm_setting='"memory_get_boot_context": "allow"' ;;
|
|
970
|
+
*) perm_setting="" ;;
|
|
971
|
+
esac
|
|
972
|
+
|
|
871
973
|
if [[ "$PLUGIN_BUILT" == true ]]; then
|
|
872
|
-
|
|
974
|
+
if [[ -n "$perm_setting" ]]; then
|
|
975
|
+
cat > "$OPENCODE_CONFIG" << EOF
|
|
976
|
+
{
|
|
977
|
+
"mcp": {
|
|
978
|
+
"memory": {
|
|
979
|
+
"type": "remote",
|
|
980
|
+
"url": "http://localhost:9824/mcp"
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
"permission": {
|
|
984
|
+
$perm_setting
|
|
985
|
+
},
|
|
986
|
+
"plugin": ["$INSTALL_DIR/plugin"]
|
|
987
|
+
}
|
|
988
|
+
EOF
|
|
989
|
+
else
|
|
990
|
+
cat > "$OPENCODE_CONFIG" << EOF
|
|
873
991
|
{
|
|
874
992
|
"mcp": {
|
|
875
993
|
"memory": {
|
|
@@ -880,8 +998,24 @@ configure_opencode() {
|
|
|
880
998
|
"plugin": ["$INSTALL_DIR/plugin"]
|
|
881
999
|
}
|
|
882
1000
|
EOF
|
|
1001
|
+
fi
|
|
883
1002
|
else
|
|
884
|
-
|
|
1003
|
+
if [[ -n "$perm_setting" ]]; then
|
|
1004
|
+
cat > "$OPENCODE_CONFIG" << EOF
|
|
1005
|
+
{
|
|
1006
|
+
"mcp": {
|
|
1007
|
+
"memory": {
|
|
1008
|
+
"type": "remote",
|
|
1009
|
+
"url": "http://localhost:9824/mcp"
|
|
1010
|
+
}
|
|
1011
|
+
},
|
|
1012
|
+
"permission": {
|
|
1013
|
+
$perm_setting
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
EOF
|
|
1017
|
+
else
|
|
1018
|
+
cat > "$OPENCODE_CONFIG" << 'EOF'
|
|
885
1019
|
{
|
|
886
1020
|
"mcp": {
|
|
887
1021
|
"memory": {
|
|
@@ -891,6 +1025,7 @@ EOF
|
|
|
891
1025
|
}
|
|
892
1026
|
}
|
|
893
1027
|
EOF
|
|
1028
|
+
fi
|
|
894
1029
|
fi
|
|
895
1030
|
fi
|
|
896
1031
|
}
|
|
@@ -1066,6 +1201,7 @@ elif [[ "$OS_TYPE" == "macos" ]]; then
|
|
|
1066
1201
|
setup_macos_service
|
|
1067
1202
|
fi
|
|
1068
1203
|
|
|
1204
|
+
configure_opencode_permissions
|
|
1069
1205
|
configure_opencode
|
|
1070
1206
|
setup_agents_md
|
|
1071
1207
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## Memory System Self-Analysis: Measuring AI Forgetfulness
|
|
2
|
+
|
|
3
|
+
Built an introspection system for my OpenCode memory module that analyzes past sessions to detect "missed opportunities" - moments where memory should have helped but didn't.
|
|
4
|
+
|
|
5
|
+
**How it works:** A background worker sends session conversations to an OpenCode subagent that looks for patterns like user corrections (*"I told you last week..."*), repeated explanations, and skipped startup rituals. It includes actual tool calls in the analysis so it can distinguish "AI said it would check memory" vs "AI actually did."
|
|
6
|
+
|
|
7
|
+
**What we found** (1,664 sessions, Jan-May):
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Week | Misses/Session
|
|
11
|
+
---------|---------------
|
|
12
|
+
Jan W03 | 1.13
|
|
13
|
+
Jan W04 | 1.14
|
|
14
|
+
Apr W16 | 1.27
|
|
15
|
+
May W18 | 0.06
|
|
16
|
+
May W19 | 0.01
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**100x improvement** from ~1 miss per session to nearly zero.
|
|
20
|
+
|
|
21
|
+
The data helped identify which interventions worked - boot gates, entity context checks, outcome storage directives. When a pattern stayed high, we added targeted fixes.
|
|
22
|
+
|
|
23
|
+
There's something satisfying about an AI system that can remember things, analyze its own past behavior, identify where it failed, and track improvement over time.
|
|
@@ -270,14 +270,17 @@ class BackgroundWorker:
|
|
|
270
270
|
# -------------------------------------------------------------------------
|
|
271
271
|
|
|
272
272
|
async def run_knowledge_extraction(self) -> int:
|
|
273
|
-
"""Extract knowledge from conversations using LLM. Returns count extracted.
|
|
273
|
+
"""Extract knowledge from conversations using LLM. Returns count extracted.
|
|
274
|
+
|
|
275
|
+
Requires an LLM provider to be available.
|
|
276
|
+
"""
|
|
274
277
|
from opencode_memory.extraction import (
|
|
275
|
-
_find_opencode,
|
|
276
278
|
extract_knowledge_from_conversation,
|
|
277
279
|
get_unprocessed_conversations,
|
|
278
280
|
)
|
|
281
|
+
from opencode_memory.llm import is_llm_available
|
|
279
282
|
|
|
280
|
-
if not
|
|
283
|
+
if not is_llm_available(self.config):
|
|
281
284
|
return 0
|
|
282
285
|
|
|
283
286
|
conversations = get_unprocessed_conversations(
|
|
@@ -320,8 +323,15 @@ class BackgroundWorker:
|
|
|
320
323
|
# -------------------------------------------------------------------------
|
|
321
324
|
|
|
322
325
|
async def run_concept_extraction(self) -> int:
|
|
323
|
-
"""Extract concepts from memories using LLM. Returns count of concepts created.
|
|
326
|
+
"""Extract concepts from memories using LLM. Returns count of concepts created.
|
|
327
|
+
|
|
328
|
+
Requires an LLM provider to be available.
|
|
329
|
+
"""
|
|
324
330
|
from opencode_memory.extraction import extract_concepts_batch
|
|
331
|
+
from opencode_memory.llm import is_llm_available
|
|
332
|
+
|
|
333
|
+
if not is_llm_available(self.config):
|
|
334
|
+
return 0
|
|
325
335
|
|
|
326
336
|
try:
|
|
327
337
|
stats = await extract_concepts_batch(
|
|
@@ -330,6 +340,7 @@ class BackgroundWorker:
|
|
|
330
340
|
embeddings=self.embeddings,
|
|
331
341
|
batch_size=CONCEPT_EXTRACTION_BATCH,
|
|
332
342
|
working_directory=self.config.ingestion.working_directory,
|
|
343
|
+
config=self.config,
|
|
333
344
|
)
|
|
334
345
|
|
|
335
346
|
if stats["processed"] > 0:
|
|
@@ -437,7 +448,18 @@ class BackgroundWorker:
|
|
|
437
448
|
|
|
438
449
|
llm_enabled = self.config.ingestion.llm_extraction
|
|
439
450
|
if llm_enabled:
|
|
440
|
-
|
|
451
|
+
from opencode_memory.llm import get_llm_status, is_llm_available
|
|
452
|
+
|
|
453
|
+
if is_llm_available(self.config):
|
|
454
|
+
status = get_llm_status(self.config)
|
|
455
|
+
provider = status["provider"]
|
|
456
|
+
model = status.get("model") or "default"
|
|
457
|
+
logger.info(f"LLM extraction enabled (provider: {provider}, model: {model})")
|
|
458
|
+
else:
|
|
459
|
+
logger.info(
|
|
460
|
+
f"LLM extraction configured but provider '{self.config.llm.provider}' not found - "
|
|
461
|
+
"LLM features disabled"
|
|
462
|
+
)
|
|
441
463
|
|
|
442
464
|
try:
|
|
443
465
|
while self._running:
|
{opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/config.py
RENAMED
|
@@ -60,6 +60,51 @@ class OrbitConfig(BaseModel):
|
|
|
60
60
|
fallback_on_error: bool = True # Fall back to REST if Orbit fails
|
|
61
61
|
|
|
62
62
|
|
|
63
|
+
class LLMConfig(BaseModel):
|
|
64
|
+
"""Configuration for LLM provider used in extraction and introspection.
|
|
65
|
+
|
|
66
|
+
Supported providers:
|
|
67
|
+
- opencode: OpenCode CLI (default) - uses your configured OpenCode LLM
|
|
68
|
+
- claude: Anthropic Claude CLI (claude-cli package)
|
|
69
|
+
- duo: GitLab Duo CLI (glab duo ask)
|
|
70
|
+
- ollama: Local Ollama instance
|
|
71
|
+
- custom: Custom command with args template
|
|
72
|
+
|
|
73
|
+
Example configurations:
|
|
74
|
+
|
|
75
|
+
# OpenCode (default)
|
|
76
|
+
[llm]
|
|
77
|
+
provider = "opencode"
|
|
78
|
+
|
|
79
|
+
# Claude CLI
|
|
80
|
+
[llm]
|
|
81
|
+
provider = "claude"
|
|
82
|
+
model = "claude-sonnet-4-20250514" # optional, uses CLI default
|
|
83
|
+
|
|
84
|
+
# GitLab Duo
|
|
85
|
+
[llm]
|
|
86
|
+
provider = "duo"
|
|
87
|
+
|
|
88
|
+
# Ollama with specific model
|
|
89
|
+
[llm]
|
|
90
|
+
provider = "ollama"
|
|
91
|
+
model = "qwen2.5:14b"
|
|
92
|
+
|
|
93
|
+
# Custom command
|
|
94
|
+
[llm]
|
|
95
|
+
provider = "custom"
|
|
96
|
+
command = "my-llm-cli"
|
|
97
|
+
args = ["--prompt"] # prompt is appended after these args
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
provider: str = "opencode" # opencode, claude, duo, ollama, custom
|
|
101
|
+
model: str | None = None # Model name (required for ollama, optional for others)
|
|
102
|
+
command: str | None = None # Override command path (auto-detected if not set)
|
|
103
|
+
args: list[str] = Field(default_factory=list) # Extra args for custom provider
|
|
104
|
+
timeout: int = 120 # Timeout in seconds for LLM calls
|
|
105
|
+
working_directory: str | None = None # Working directory for CLI calls
|
|
106
|
+
|
|
107
|
+
|
|
63
108
|
class Config(BaseModel):
|
|
64
109
|
"""Main configuration."""
|
|
65
110
|
|
|
@@ -68,6 +113,7 @@ class Config(BaseModel):
|
|
|
68
113
|
ingestion: IngestionConfig = Field(default_factory=IngestionConfig)
|
|
69
114
|
storage: StorageConfig = Field(default_factory=StorageConfig)
|
|
70
115
|
orbit: OrbitConfig = Field(default_factory=OrbitConfig)
|
|
116
|
+
llm: LLMConfig = Field(default_factory=LLMConfig)
|
|
71
117
|
|
|
72
118
|
@classmethod
|
|
73
119
|
def load(cls, config_path: Path | None = None) -> "Config":
|