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.
Files changed (353) hide show
  1. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/0/0/d/f/d/00dfda658f2fcde6926308004100798ad2247e2f45d1313ebfef973d +0 -0
  2. 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
  3. 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
  4. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/2/a/8/c/5/2a8c5a56aa7e75a42e474464b0e75e78380050445086fa2e6626b678 +0 -0
  5. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/e/5/b/6/2e5b6ced06806dcc8a76919087cfc0d76c4240a8acb8d34511ad15d6 +0 -0
  6. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/2/7/f/0/327f0380de23010729d12b6a8a48f24b952353d527064c8bf3cfd875 +0 -0
  7. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f +0 -0
  8. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/6/1/b/f/361bf053ab706a1212f013301d35a0c4b0af9cd8cc559d24c73d6a6f +0 -0
  9. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/3/8/4/d/c/384dc122488f965cecab29f1722d1db789313763e22373f38c7fbbef +0 -0
  10. 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
  11. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/b/e/0/7/4be07d3ac353e38d2c9e3a257cad36ee2a758fc88b4cd5f0d479a5a9 +0 -0
  12. 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
  13. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/5/b/d/8/9/5bd894eeb3dfe1c8aaee1daecdfb74bbb314293813a730238621f077 +0 -0
  14. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/b/e/1/1/5be1135dcb7a68de4427c71119ff80f66b671ae16db019966320bd6b +0 -0
  15. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 +0 -0
  16. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/c/3/7/f/6c37fbfdf697cce77ac3a3add5b61c639e47de9b9b9d1eb63cf429d5 +0 -0
  17. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/6/e/b/6/c/6eb6c130f2e60d2739ddb376352e395a8d86e4f80b402f5f7854d07d +0 -0
  18. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/7/a/5/f/7/7a5f717e7b3fb99ec006f4d173aad55224eb063005c662c586ba0518 +0 -0
  19. 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
  20. 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
  21. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/8/d/0/e/1/8d0e104919449355aedb55b5b546bb9fd53f0e1a8ca1b082109464e9 +0 -0
  22. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/8/8/9/3/98893f0b227721063df57aa66878132bb1592344007b1842b6681340 +0 -0
  23. 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
  24. 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
  25. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140 +0 -0
  26. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/9/f/9/3/7/9f937e100a133ace0f86a717e0ada066b9e9d82f4d2982affb4e0344 +0 -0
  27. 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
  28. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/6/f/4/d/b6f4dcb64ca093b3c3ae363be21ccc40760e60e58f24e7541ab876c7 +0 -0
  29. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/b/a/d/c/bbadc07fc383ff650474f2a8246a59ba64776ab6b35809d02400a398 +0 -0
  30. opencode_semantic_memory-0.5.0/.cache/pip/http-v2/c/6/3/0/6/c6306d205b48faecb62eb823053e850df036f38e59b11523829f5c31 +0 -0
  31. 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
  32. 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
  33. 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
  34. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/2/5/d/ed25d1bb38edf83d84e0a08c7e2111da8cb788eddb019df7a96d3213 +0 -0
  35. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2 +0 -0
  36. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/6/5/9/f9659e50df363f8369e6abe4c4008418f9de6a660e264dbba624109f +0 -0
  37. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.gitignore +3 -0
  38. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/PKG-INFO +1 -1
  39. opencode_semantic_memory-0.5.0/flake.nix +93 -0
  40. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/package.nix +4 -0
  41. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/index.ts +20 -0
  42. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/memory-client.ts +46 -0
  43. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/pyproject.toml +1 -1
  44. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/setup.sh +138 -2
  45. opencode_semantic_memory-0.5.0/slack-post-memory-effectiveness.md +23 -0
  46. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/background_worker.py +27 -5
  47. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/config.py +46 -0
  48. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment_worker.py +69 -43
  49. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/extraction.py +55 -32
  50. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/http_server.py +112 -0
  51. opencode_semantic_memory-0.5.0/src/opencode_memory/llm.py +263 -0
  52. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/server.py +88 -13
  53. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/sqlite.py +312 -0
  54. opencode_semantic_memory-0.5.0/tests/test_llm.py +384 -0
  55. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/1/f/d/9/a/1fd9ade2b751542e96db097082f121ecac23098b3cd95c8a877f0716 +0 -0
  56. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/3/2/7/f/0/327f0380de23010729d12b6a8a48f24b952353d527064c8bf3cfd875 +0 -0
  57. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/3/6/1/b/f/361bf053ab706a1212f013301d35a0c4b0af9cd8cc559d24c73d6a6f +0 -0
  58. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/5/b/5/7/6/5b576ddc69cb2cda42f61333b85f066e4990a5eab5c96e0670cbb445 +0 -0
  59. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/5/b/d/8/9/5bd894eeb3dfe1c8aaee1daecdfb74bbb314293813a730238621f077 +0 -0
  60. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/6/e/b/6/c/6eb6c130f2e60d2739ddb376352e395a8d86e4f80b402f5f7854d07d +0 -0
  61. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/8/b/2/4/2/8b24226e2da88df4abeee0d8ca6bce79b19ca2bcd5f94b543939c66c +0 -0
  62. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/9/8/a/a/c/98aaccf247f7044601019ac72b3323db416a60a3b922e914db3b02bc +0 -0
  63. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/c/6/3/0/6/c6306d205b48faecb62eb823053e850df036f38e59b11523829f5c31 +0 -0
  64. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a +0 -0
  65. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/d/c/b/6/1/dcb61fa48ca00e206822fed148e38d1d4494a0b43064c07dcadec607 +0 -0
  66. opencode_semantic_memory-0.4.1/.cache/pip/http-v2/e/a/c/6/1/eac61126daf80149d2a016f12a54eab5e3b5c1dbc77410ff1a97edc4 +0 -0
  67. opencode_semantic_memory-0.4.1/flake.nix +0 -41
  68. opencode_semantic_memory-0.4.1/slack-post-memory-effectiveness.md +0 -66
  69. {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
  70. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/2/1/0/5/02105206f60ee8a62c7d923e21bb4bd2d8f3db94c5bb87bd806d5e74 +0 -0
  71. {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
  72. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/4/3/c/5/043c5436ab58fe00f4947e073da46878751ec535f5fb37ee31d056d4 +0 -0
  73. {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
  74. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/a/6/b/7/0a6b76df38e61ac4e1f757a1132d2c6424dcb9c23751423afee448ac +0 -0
  75. {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
  76. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/0/5/5/0e055813e840b7b873253f9f5c1cd4a7b06e0256c8de713dec25b93d +0 -0
  77. {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
  78. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a +0 -0
  79. {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
  80. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/0/b/2/a/10b2a8b62ea67a4cd49d0d353a09c43832fb02ba7b3a804e29c73417 +0 -0
  81. {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
  82. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/4/a/4/114a432b2bd8b6284c600aa9e3f2bd6b180cacf11a94027a1a3ebafd +0 -0
  83. {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
  84. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/1/5/8/4/11584f31ec41215071940705e8c92c248476c2eb9f8321e581bc327d +0 -0
  85. {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
  86. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/2/1/8/1/121816d8cda4aebb8eef187064632e8ae9502de5f2c95b48f84a7404 +0 -0
  87. {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
  88. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/5/9/c/5/159c56e4ec3c8e71dacef647c600365ad192876d095dd29b5b5c8ace +0 -0
  89. {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
  90. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/7/1/4/7/1714748212f1de43b155667695179ce5864620d5dacb8cf4aed74142 +0 -0
  91. {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
  92. {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
  93. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/8/1/b/1c81b93817f31aa9418642808feaab487be448dbe0773e4bd01b9229 +0 -0
  94. {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
  95. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/1/c/c/f/2/1ccf222879210db389c3a9cad286511f6d242e8f0f9678f4322d324c +0 -0
  96. {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
  97. {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
  98. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029 +0 -0
  99. {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
  100. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/8/9/c/6/289c6f7419360f0297e671f8a8d5f9af72c5243124e001a3663cac72 +0 -0
  101. {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
  102. {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
  103. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/0/a/4/2b0a4fda1a2c912a5a1c5245a8b34b5da87876e311f607befabc98ee +0 -0
  104. {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
  105. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/2/b/4/a/8/2b4a8461b0c542cab777b0b365023942af997bbb25607ac8b3782391 +0 -0
  106. {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
  107. {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
  108. {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
  109. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/3/5/e/4/335e4fae780121b49f966edba3e2b1f1f00b06637723db2e7e731f26 +0 -0
  110. {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
  111. {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
  112. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/4/f/3/5/34f35e68224a7918339af3f1e6f6dfcfd5192fd17c6ebb73cd6dd91a +0 -0
  113. {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
  114. {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
  115. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/7/8/5/36785bb40858912d7449d47de604d597609db89b1962e5e1e238542b +0 -0
  116. {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
  117. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/6/a/5/d/36a5d6132567ff173f730ddcc6ab65962d399aaa9f302927ca97b3eb +0 -0
  118. {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
  119. {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
  120. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/9/8/1/3/398134aaeacada9feb8b12654a25e878c4f41490786622fc606a7a1c +0 -0
  121. {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
  122. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/3/f/e/c/3/3fec34894257a80934e9246a0a3053a6a96740587f3ddbf5b4fa6f02 +0 -0
  123. {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
  124. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/1/e/3/c/41e3c68bb5038e20a3418971e070f9076b9eaa6e2c345d3e7f55e6b3 +0 -0
  125. {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
  126. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/6/8/4/436846b847c9c90a13539a872e2084e3f9ca23eb93b4b1cc44b55964 +0 -0
  127. {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
  128. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/3/9/4/0/43940c1ffa291a23244e10de06849b33fae6638badc063f4ade3cc1a +0 -0
  129. {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
  130. {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
  131. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/5/8/c/7/458c7a7721c5d95619ebccea457715f5b1720258d02ce8362016a55c +0 -0
  132. {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
  133. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/7/7/4/2/47742615f5189ebbf61bb31c8c50f7f39cc38c5173f10ec7146e3989 +0 -0
  134. {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
  135. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/8/3/8/e/4838e51432c6c88a78b5234e817caf0cf3bf1c3fc933f4861329b80f +0 -0
  136. {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
  137. {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
  138. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/c/7/5/1/4c751248c578c4b8d67722e607a019d0909438b8cbe82066c393dfde +0 -0
  139. {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
  140. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/4/e/7/a/c/4e7ac19406cd6f20bb5f8145cca2f74c5f704ef378b0f4334628b440 +0 -0
  141. {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
  142. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/5/9/a/2/559a28d2d50a6d0988e3c56e5d0d411789da84005e4420f1a26bb23e +0 -0
  143. {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
  144. {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
  145. {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
  146. {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
  147. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/5/d/5/7/5/5d575692ffb3194739604e9e1622e2fa8c882afc9517932bd2ce40df +0 -0
  148. {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
  149. {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
  150. {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
  151. {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
  152. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/6/e/f/c/7/6efc76a8ab292a15bc9bca02c950f72e1ce263d0a701323e9af5a358 +0 -0
  153. {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
  154. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/0/b/9/c/70b9c022893d41f3d2b5cd47c3935b21f2c02945201dbf0acd4f302c +0 -0
  155. {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
  156. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/2/f/6/0/72f60d542675f65a9677981499f07ae27fe97e3ac82f8e2224d72113 +0 -0
  157. {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
  158. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/6/f/a/7/76fa74418db194f57a03dff1a0900e3bb30fca5fcb07e76f411cd937 +0 -0
  159. {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
  160. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/7/7/4/6/9/77469a77c0c5007f8e0ef36b73b2bdb8cbe7d9c8be102fd7d4efaf35 +0 -0
  161. {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
  162. {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
  163. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/2/6/f/6/826f657d92b77c09dc5003a2b07bdbf9bb82259638dc4579ee230b4d +0 -0
  164. {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
  165. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/3/d/e/5/83de5cc65dfecf3a6e4c4c0025f0873b77d3c9243e6a038bd0ca39b9 +0 -0
  166. {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
  167. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/6/c/3/3/86c33a8b2bab9735c4478352d670d16d3abe4f1a006f7c8e395d413f +0 -0
  168. {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
  169. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/8/f/0/6/88f06a944c734c3736badbb02d887cddfeb74de4f837c06db79e749c +0 -0
  170. {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
  171. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/9/6/5/1/896514be855e753c50f0e30b1a0e384a9a68b4db7b2ad62e28f4f6c0 +0 -0
  172. {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
  173. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/a/9/8/c/8a98cf67dec8a2d33fd9e0b916651e7664ecf9dac97e99bcebb334f9 +0 -0
  174. {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
  175. {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
  176. {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
  177. {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
  178. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/8/f/0/2/c/8f02ceda6b874413150afa5cd29cd5b10e2fcba552cc363083b9d073 +0 -0
  179. {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
  180. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75 +0 -0
  181. {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
  182. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/4/d/0/2/94d022fb6c12e6dc453f3090252f397a80e9c2dbb7341fb45c1b150f +0 -0
  183. {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
  184. {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
  185. {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
  186. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/9/6/4/b/9964b58defdc05f741bfcb3abd6a4eebcb73af9497c5e6d1c828971c +0 -0
  187. {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
  188. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/a/a/7/5/9aa7515b527eee59a0b02e85169b5a03e55bdc51dd9ff5255db0c90b +0 -0
  189. {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
  190. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/0/1/f/9d01f27365759b718ef77536f4a3d30fd989884b0e53418e1275a79d +0 -0
  191. {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
  192. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/9/d/5/d/f/9d5dfb0dedf17094821c37079d37c9f4a1256a7dc457c1192cfa1573 +0 -0
  193. {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
  194. {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
  195. {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
  196. {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
  197. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a +0 -0
  198. {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
  199. {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
  200. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/6/9/f/7/a69f7807d8670d33b4a34f2be06cdd5812c8d0da9ec20e9dea88a6b5 +0 -0
  201. {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
  202. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/c/b/4/e/acb4e40f64eef2a73d680e437d7e413b10909b60941ff39f0528cce7 +0 -0
  203. {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
  204. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03 +0 -0
  205. {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
  206. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/a/f/9/2/4/af924cace590eaa7f5a948286460f4a79ae9e083cd5843c70be7bcdc +0 -0
  207. {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
  208. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/0/c/3/0/b0c304a2d0d2dd17cd2e818948220da223f52dfe26c6e170a35508ec +0 -0
  209. {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
  210. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/2/b/3/5/b2b35b24e6fe74c8ffc02d1a4a1ddbd75ba2a82f3623471ee047b2ed +0 -0
  211. {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
  212. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/3/6/c/0/b36c03663a3f9be503a38ab3381e55a1c5e2392e9271c976f5e2b956 +0 -0
  213. {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
  214. {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
  215. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4 +0 -0
  216. {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
  217. {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
  218. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/c/5/b/a/bc5baf40560ff46e68ca4c99692ddaaf9ca29f999555e36e150ea6f1 +0 -0
  219. {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
  220. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/b/e/d/4/e/bed4e7c2b407105e5c80f6f3c9c9ce06074cd1bc90409700e4489759 +0 -0
  221. {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
  222. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/4/1/9/b/c419b5211317322d2f929c4249b25fb3a2a5deaac5ca898ef2889e82 +0 -0
  223. {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
  224. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/5/5/1/6/c5516052911272854847b94d1c7e5dcdda18d04768795c313b9958bc +0 -0
  225. {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
  226. {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
  227. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/6/e/e/4/c6ee4aaa63f8847bfbe25565d073b6c57d624c7f7c4708994746c09c +0 -0
  228. {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
  229. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/0/c/6/c70c631b8d2fff6b4f7fd6ebc7fad8e500b50f8fa7da0af627bf1f0b +0 -0
  230. {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
  231. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/7/7/1/f/c771f1dbbe2a60b07758757a5e715103105323f69596e50cebedebeb +0 -0
  232. {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
  233. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/9/4/a/e/c94ae1695304888e79191be0f465ad0b2a85880ee474d189ee9126ed +0 -0
  234. {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
  235. {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
  236. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/d/e/c/3/cdec3d0140a615c153130a37691576ea1707e32a1ab5e60ae5a540f4 +0 -0
  237. {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
  238. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/6/7/6/ce6762d91f1e7c3c4bece64762122d18df14d8f8e7532d5f15dfdb37 +0 -0
  239. {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
  240. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/e/8/f/d/ce8fd146fb2bb37feff63c8f224f1a8b178c26a332d13562e417fead +0 -0
  241. {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
  242. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/c/f/e/5/3/cfe53db609feaba2efb2139916693c3ff859e7f1e6e6e557fbd82ae0 +0 -0
  243. {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
  244. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/3/7/f/1/d37f17c4b7b25f8b5df752972b9c2301f59d0c55586cac7f15268689 +0 -0
  245. {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
  246. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/4/b/b/d54bb21df9a8549867c7c0c30dcdda927be8994b07f4c933db9a04ab +0 -0
  247. {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
  248. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/5/9/0/b/d590bdf80aa5f6230e0e49a9f10b63aa0c44f77ccd99f25a6ad7841a +0 -0
  249. {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
  250. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/6/b/d/f/d6bdf32d1c16362f083791f397046d0fa2aa6875fb754c605afbef26 +0 -0
  251. {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
  252. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/8/f/6/6/d8f6658f33493176286485c04b4350d8cca524052cba0aea8d4cb82e +0 -0
  253. {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
  254. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/a/4/3/1/da431bf4bec8d6d3c8eda94dac7a309e829b61d10ffd31c5d846f4d5 +0 -0
  255. {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
  256. {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
  257. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/d/f/1/1/f/df11f101ff0165c7df447aaf1ab175fcd1af98711e498eef0c3d0dfa +0 -0
  258. {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
  259. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/1/6/2/5/e16255f8dfb39b0298f7cb7edd062dd0d3f7ae4c5014de5fc4e17070 +0 -0
  260. {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
  261. {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
  262. {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
  263. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/e/d/3/a/c/ed3acad79bebd48e93f9254a4702825f833ffd8119c8d2cbff43abfc +0 -0
  264. {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
  265. {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
  266. {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
  267. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5 +0 -0
  268. {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
  269. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/c/c/6/f/fcc6fbc30e8c9f7e5cfd4f86edead21005705c18238a90d9673eeb47 +0 -0
  270. {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
  271. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/d/b/e/3/fdbe380932457c2da0b68a223546fd0f6b84c31a8f4a6b63757becce +0 -0
  272. {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
  273. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/http-v2/f/f/6/3/f/ff63f8aee48f79bb6d2cdeff8f7863b5820a3c507a2623f007846bb0 +0 -0
  274. {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
  275. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.cache/pip/selfcheck/fe300af6f7d708c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b +0 -0
  276. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/.gitlab-ci.yml +0 -0
  277. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/AGENTS.md +0 -0
  278. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/ARCHITECTURE.md +0 -0
  279. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/BOOTSTRAP.md +0 -0
  280. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/CHANGELOG.md +0 -0
  281. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/README.md +0 -0
  282. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/backfill.log +0 -0
  283. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/com.opencode.memory.plist +0 -0
  284. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/BOOTSTRAP_MEMORIES.md +0 -0
  285. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/GITLAB_WORKFLOW_MEMORIES.md +0 -0
  286. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/docs/TIPS_FOR_HUMANS.md +0 -0
  287. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/flake.lock +0 -0
  288. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/lefthook.yml +0 -0
  289. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/model.nix +0 -0
  290. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/nix/module.nix +0 -0
  291. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-mcp-config.json +0 -0
  292. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-daemon.service +0 -0
  293. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-reload.path +0 -0
  294. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory-worker.service +0 -0
  295. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode-memory.service +0 -0
  296. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/opencode.json +0 -0
  297. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/.gitignore +0 -0
  298. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/README.md +0 -0
  299. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/package-lock.json +0 -0
  300. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/package.json +0 -0
  301. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/context-formatter.ts +0 -0
  302. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/src/entity-extractor.ts +0 -0
  303. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/plugin/tsconfig.json +0 -0
  304. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/backfill_extraction.py +0 -0
  305. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/memory-mcp.sh +0 -0
  306. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/scripts/reingest_insights.py +0 -0
  307. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/__init__.py +0 -0
  308. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/activity_log.py +0 -0
  309. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/backfill_introspection.py +0 -0
  310. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/cache.py +0 -0
  311. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/cli.py +0 -0
  312. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/daemon.py +0 -0
  313. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/__init__.py +0 -0
  314. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/gitlab.py +0 -0
  315. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/enrichment/orbit.py +0 -0
  316. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/historical_ingest.py +0 -0
  317. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/indexing/__init__.py +0 -0
  318. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/indexing/code_structure.py +0 -0
  319. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/__init__.py +0 -0
  320. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/embeddings.py +0 -0
  321. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/extractors.py +0 -0
  322. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/opencode_db.py +0 -0
  323. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/parser.py +0 -0
  324. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/ingestion/watcher.py +0 -0
  325. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/linking/__init__.py +0 -0
  326. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/linking/linker.py +0 -0
  327. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/metrics.py +0 -0
  328. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/models.py +0 -0
  329. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/proactive_context.py +0 -0
  330. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/project.py +0 -0
  331. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/query/__init__.py +0 -0
  332. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/query/hybrid.py +0 -0
  333. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/session/__init__.py +0 -0
  334. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/session/registry.py +0 -0
  335. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/__init__.py +0 -0
  336. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/crawler.py +0 -0
  337. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/spider/references.py +0 -0
  338. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/__init__.py +0 -0
  339. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/src/opencode_memory/storage/vectors.py +0 -0
  340. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/__init__.py +0 -0
  341. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_cache.py +0 -0
  342. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_config.py +0 -0
  343. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_daemon.py +0 -0
  344. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_extractors.py +0 -0
  345. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_http_server.py +0 -0
  346. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_linking.py +0 -0
  347. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_opencode_db.py +0 -0
  348. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_orbit.py +0 -0
  349. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_parser.py +0 -0
  350. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_proactive_context.py +0 -0
  351. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_server.py +0 -0
  352. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/tests/test_storage.py +0 -0
  353. {opencode_semantic_memory-0.4.1 → opencode_semantic_memory-0.5.0}/uv.lock +0 -0
@@ -48,3 +48,6 @@ data/
48
48
  # OS
49
49
  .DS_Store
50
50
  Thumbs.db
51
+
52
+ # Nix
53
+ /result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opencode-semantic-memory
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Persistent semantic memory system for OpenCode sessions
5
5
  Author-email: Gregory Havenga <ghavenga@gitlab.com>
6
6
  License-Expression: MIT
@@ -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
  };
@@ -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
+ }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "opencode-semantic-memory"
7
- version = "0.4.1"
7
+ version = "0.5.0"
8
8
  description = "Persistent semantic memory system for OpenCode sessions"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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
- cat > "$OPENCODE_CONFIG" << EOF
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
- cat > "$OPENCODE_CONFIG" << 'EOF'
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 _find_opencode():
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
- logger.info("LLM extraction enabled")
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:
@@ -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":