visp-memory 0.3.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.

Potentially problematic release.


This version of visp-memory might be problematic. Click here for more details.

Files changed (350) hide show
  1. visp_memory-0.3.0/.gitignore +92 -0
  2. visp_memory-0.3.0/CLA.md +121 -0
  3. visp_memory-0.3.0/CONTRIBUTING.md +124 -0
  4. visp_memory-0.3.0/LICENSE +202 -0
  5. visp_memory-0.3.0/NOTICE +15 -0
  6. visp_memory-0.3.0/PKG-INFO +818 -0
  7. visp_memory-0.3.0/README.md +728 -0
  8. visp_memory-0.3.0/build_frontend.py +94 -0
  9. visp_memory-0.3.0/plugins/visp-memory/README.md +17 -0
  10. visp_memory-0.3.0/pyproject.toml +135 -0
  11. visp_memory-0.3.0/src/visp_memory/__init__.py +35 -0
  12. visp_memory-0.3.0/src/visp_memory/capture/__init__.py +12 -0
  13. visp_memory-0.3.0/src/visp_memory/capture/bootstrap.py +366 -0
  14. visp_memory-0.3.0/src/visp_memory/capture/conversation.py +185 -0
  15. visp_memory-0.3.0/src/visp_memory/capture/git.py +620 -0
  16. visp_memory-0.3.0/src/visp_memory/capture/instructions.py +181 -0
  17. visp_memory-0.3.0/src/visp_memory/capture/tests.py +113 -0
  18. visp_memory-0.3.0/src/visp_memory/config.py +421 -0
  19. visp_memory-0.3.0/src/visp_memory/core/__init__.py +15 -0
  20. visp_memory-0.3.0/src/visp_memory/core/anchors.py +216 -0
  21. visp_memory-0.3.0/src/visp_memory/core/arcadedb_storage.py +1355 -0
  22. visp_memory-0.3.0/src/visp_memory/core/clock.py +58 -0
  23. visp_memory-0.3.0/src/visp_memory/core/compression.py +574 -0
  24. visp_memory-0.3.0/src/visp_memory/core/context_compiler.py +156 -0
  25. visp_memory-0.3.0/src/visp_memory/core/cross_repo.py +131 -0
  26. visp_memory-0.3.0/src/visp_memory/core/embeddings.py +388 -0
  27. visp_memory-0.3.0/src/visp_memory/core/hybrid_retrieval.py +351 -0
  28. visp_memory-0.3.0/src/visp_memory/core/indexing.py +121 -0
  29. visp_memory-0.3.0/src/visp_memory/core/injection.py +649 -0
  30. visp_memory-0.3.0/src/visp_memory/core/intent_evaluator.py +187 -0
  31. visp_memory-0.3.0/src/visp_memory/core/lifecycle.py +530 -0
  32. visp_memory-0.3.0/src/visp_memory/core/llm.py +96 -0
  33. visp_memory-0.3.0/src/visp_memory/core/memory.py +1096 -0
  34. visp_memory-0.3.0/src/visp_memory/core/memory_context.py +121 -0
  35. visp_memory-0.3.0/src/visp_memory/core/memory_import_export.py +180 -0
  36. visp_memory-0.3.0/src/visp_memory/core/model_router.py +126 -0
  37. visp_memory-0.3.0/src/visp_memory/core/neo4j_storage.py +1648 -0
  38. visp_memory-0.3.0/src/visp_memory/core/ranking.py +344 -0
  39. visp_memory-0.3.0/src/visp_memory/core/reflection.py +130 -0
  40. visp_memory-0.3.0/src/visp_memory/core/remote_storage.py +559 -0
  41. visp_memory-0.3.0/src/visp_memory/core/reporting.py +428 -0
  42. visp_memory-0.3.0/src/visp_memory/core/repository.py +148 -0
  43. visp_memory-0.3.0/src/visp_memory/core/storage.py +2605 -0
  44. visp_memory-0.3.0/src/visp_memory/core/task_brief.py +542 -0
  45. visp_memory-0.3.0/src/visp_memory/core/team.py +115 -0
  46. visp_memory-0.3.0/src/visp_memory/core/tokens.py +138 -0
  47. visp_memory-0.3.0/src/visp_memory/core/trust.py +231 -0
  48. visp_memory-0.3.0/src/visp_memory/hooks/__init__.py +52 -0
  49. visp_memory-0.3.0/src/visp_memory/hooks/aider.py +112 -0
  50. visp_memory-0.3.0/src/visp_memory/hooks/base.py +172 -0
  51. visp_memory-0.3.0/src/visp_memory/hooks/claude_code.py +140 -0
  52. visp_memory-0.3.0/src/visp_memory/hooks/claude_code_auto.py +277 -0
  53. visp_memory-0.3.0/src/visp_memory/hooks/codex.py +247 -0
  54. visp_memory-0.3.0/src/visp_memory/hooks/cursor.py +113 -0
  55. visp_memory-0.3.0/src/visp_memory/hooks/generic.py +208 -0
  56. visp_memory-0.3.0/src/visp_memory/interfaces/__init__.py +5 -0
  57. visp_memory-0.3.0/src/visp_memory/interfaces/cli.py +2693 -0
  58. visp_memory-0.3.0/src/visp_memory/interfaces/mcp.py +2104 -0
  59. visp_memory-0.3.0/src/visp_memory/layers/__init__.py +13 -0
  60. visp_memory-0.3.0/src/visp_memory/layers/base.py +71 -0
  61. visp_memory-0.3.0/src/visp_memory/layers/episodic.py +272 -0
  62. visp_memory-0.3.0/src/visp_memory/layers/intent.py +302 -0
  63. visp_memory-0.3.0/src/visp_memory/layers/semantic.py +327 -0
  64. visp_memory-0.3.0/src/visp_memory/quality/__init__.py +3 -0
  65. visp_memory-0.3.0/src/visp_memory/quality/conflict.py +104 -0
  66. visp_memory-0.3.0/src/visp_memory/quality/dedup.py +341 -0
  67. visp_memory-0.3.0/src/visp_memory/quality/reconcile.py +160 -0
  68. visp_memory-0.3.0/src/visp_memory/quality/secrets.py +230 -0
  69. visp_memory-0.3.0/src/visp_memory/recall/__init__.py +13 -0
  70. visp_memory-0.3.0/src/visp_memory/recall/graph.py +623 -0
  71. visp_memory-0.3.0/src/visp_memory/recall/proactive.py +450 -0
  72. visp_memory-0.3.0/src/visp_memory/server/__init__.py +3 -0
  73. visp_memory-0.3.0/src/visp_memory/server/app.py +685 -0
  74. visp_memory-0.3.0/src/visp_memory/server/auth.py +207 -0
  75. visp_memory-0.3.0/src/visp_memory/server/auth_store.py +426 -0
  76. visp_memory-0.3.0/src/visp_memory/server/authorization.py +92 -0
  77. visp_memory-0.3.0/src/visp_memory/server/routers/__init__.py +8 -0
  78. visp_memory-0.3.0/src/visp_memory/server/routers/ai.py +205 -0
  79. visp_memory-0.3.0/src/visp_memory/server/routers/authentication.py +302 -0
  80. visp_memory-0.3.0/src/visp_memory/server/routers/context.py +66 -0
  81. visp_memory-0.3.0/src/visp_memory/server/routers/diagnostics.py +385 -0
  82. visp_memory-0.3.0/src/visp_memory/server/routers/intents.py +286 -0
  83. visp_memory-0.3.0/src/visp_memory/server/routers/memories.py +693 -0
  84. visp_memory-0.3.0/src/visp_memory/server/routers/platform.py +88 -0
  85. visp_memory-0.3.0/src/visp_memory/server/routers/quality.py +201 -0
  86. visp_memory-0.3.0/src/visp_memory/server/routers/relationships.py +120 -0
  87. visp_memory-0.3.0/src/visp_memory/server/routers/repositories.py +389 -0
  88. visp_memory-0.3.0/src/visp_memory/server/routers/sessions.py +75 -0
  89. visp_memory-0.3.0/src/visp_memory/server/routers/teams.py +191 -0
  90. visp_memory-0.3.0/src/visp_memory/server/schemas.py +539 -0
  91. visp_memory-0.3.0/src/visp_memory/server/static/404.html +1 -0
  92. visp_memory-0.3.0/src/visp_memory/server/static/__next.__PAGE__.txt +9 -0
  93. visp_memory-0.3.0/src/visp_memory/server/static/__next._full.txt +19 -0
  94. visp_memory-0.3.0/src/visp_memory/server/static/__next._head.txt +5 -0
  95. visp_memory-0.3.0/src/visp_memory/server/static/__next._index.txt +7 -0
  96. visp_memory-0.3.0/src/visp_memory/server/static/__next._tree.txt +2 -0
  97. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/OGSfUhHWJoUMwAXowgbph/_buildManifest.js +11 -0
  98. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/OGSfUhHWJoUMwAXowgbph/_clientMiddlewareManifest.js +1 -0
  99. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/OGSfUhHWJoUMwAXowgbph/_ssgManifest.js +1 -0
  100. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/008yi10v1q4dx.js +2 -0
  101. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  102. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/07-r-9f0qrcuh.js +1 -0
  103. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/0_8y92xg60ach.js +31 -0
  104. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  105. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/0ha5sx_ga-3xm.css +1 -0
  106. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/0ihy_oxbd_ql7.js +1 -0
  107. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/0sbgmos1me2w7.js +1 -0
  108. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/10mw-ef74o_0e.js +1 -0
  109. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/16wtvn_4n5ryb.js +1 -0
  110. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/181fjtiwe9leb.js +1 -0
  111. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/1os6n3cys6qq2.js +1 -0
  112. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/229t_xxklg5dq.js +1 -0
  113. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/23x4zp3dciho5.js +1 -0
  114. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/25o46h8mdjlrg.js +1 -0
  115. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  116. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/28beg3dm4qs6d.js +9 -0
  117. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/2hkl13_hoi6rf.js +1 -0
  118. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/2otspn0_vpeiy.js +1 -0
  119. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/2xzui1nn6_dgk.js +1 -0
  120. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/3924qjq6v2pkr.js +5 -0
  121. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/3q-_2alq3i82j.js +1 -0
  122. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/3sdblimdmjxu9.js +1 -0
  123. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/3xdh3y-yb-_j8.js +1 -0
  124. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/44rth4b4ij8_e.js +1 -0
  125. visp_memory-0.3.0/src/visp_memory/server/static/_next/static/chunks/turbopack-37zifqtg7l6ev.js +1 -0
  126. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._full.txt +17 -0
  127. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._head.txt +5 -0
  128. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._index.txt +7 -0
  129. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  130. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._not-found.txt +5 -0
  131. visp_memory-0.3.0/src/visp_memory/server/static/_not-found/__next._tree.txt +2 -0
  132. visp_memory-0.3.0/src/visp_memory/server/static/_not-found.html +1 -0
  133. visp_memory-0.3.0/src/visp_memory/server/static/_not-found.txt +17 -0
  134. visp_memory-0.3.0/src/visp_memory/server/static/apple-icon.png +0 -0
  135. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next._full.txt +21 -0
  136. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next._head.txt +5 -0
  137. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next._index.txt +7 -0
  138. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next._tree.txt +2 -0
  139. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next.auth.__PAGE__.txt +9 -0
  140. visp_memory-0.3.0/src/visp_memory/server/static/auth/__next.auth.txt +5 -0
  141. visp_memory-0.3.0/src/visp_memory/server/static/auth.html +1 -0
  142. visp_memory-0.3.0/src/visp_memory/server/static/auth.txt +21 -0
  143. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next._full.txt +21 -0
  144. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next._head.txt +5 -0
  145. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next._index.txt +7 -0
  146. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next._tree.txt +2 -0
  147. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next.brief.__PAGE__.txt +9 -0
  148. visp_memory-0.3.0/src/visp_memory/server/static/brief/__next.brief.txt +5 -0
  149. visp_memory-0.3.0/src/visp_memory/server/static/brief.html +1 -0
  150. visp_memory-0.3.0/src/visp_memory/server/static/brief.txt +21 -0
  151. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next._full.txt +21 -0
  152. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next._head.txt +5 -0
  153. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next._index.txt +7 -0
  154. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next._tree.txt +2 -0
  155. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next.graph.__PAGE__.txt +9 -0
  156. visp_memory-0.3.0/src/visp_memory/server/static/graph/__next.graph.txt +5 -0
  157. visp_memory-0.3.0/src/visp_memory/server/static/graph.html +1 -0
  158. visp_memory-0.3.0/src/visp_memory/server/static/graph.txt +21 -0
  159. visp_memory-0.3.0/src/visp_memory/server/static/health/__next._full.txt +21 -0
  160. visp_memory-0.3.0/src/visp_memory/server/static/health/__next._head.txt +5 -0
  161. visp_memory-0.3.0/src/visp_memory/server/static/health/__next._index.txt +7 -0
  162. visp_memory-0.3.0/src/visp_memory/server/static/health/__next._tree.txt +2 -0
  163. visp_memory-0.3.0/src/visp_memory/server/static/health/__next.health.__PAGE__.txt +9 -0
  164. visp_memory-0.3.0/src/visp_memory/server/static/health/__next.health.txt +5 -0
  165. visp_memory-0.3.0/src/visp_memory/server/static/health.html +1 -0
  166. visp_memory-0.3.0/src/visp_memory/server/static/health.txt +21 -0
  167. visp_memory-0.3.0/src/visp_memory/server/static/icon-dark-32x32.png +0 -0
  168. visp_memory-0.3.0/src/visp_memory/server/static/icon-light-32x32.png +0 -0
  169. visp_memory-0.3.0/src/visp_memory/server/static/icon.svg +26 -0
  170. visp_memory-0.3.0/src/visp_memory/server/static/index.html +1 -0
  171. visp_memory-0.3.0/src/visp_memory/server/static/index.txt +19 -0
  172. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next._full.txt +21 -0
  173. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next._head.txt +5 -0
  174. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next._index.txt +7 -0
  175. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next._tree.txt +2 -0
  176. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next.integrations.__PAGE__.txt +9 -0
  177. visp_memory-0.3.0/src/visp_memory/server/static/integrations/__next.integrations.txt +5 -0
  178. visp_memory-0.3.0/src/visp_memory/server/static/integrations.html +1 -0
  179. visp_memory-0.3.0/src/visp_memory/server/static/integrations.txt +21 -0
  180. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next._full.txt +21 -0
  181. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next._head.txt +5 -0
  182. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next._index.txt +7 -0
  183. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next._tree.txt +2 -0
  184. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next.intelligence.__PAGE__.txt +9 -0
  185. visp_memory-0.3.0/src/visp_memory/server/static/intelligence/__next.intelligence.txt +5 -0
  186. visp_memory-0.3.0/src/visp_memory/server/static/intelligence.html +1 -0
  187. visp_memory-0.3.0/src/visp_memory/server/static/intelligence.txt +21 -0
  188. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next._full.txt +21 -0
  189. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next._head.txt +5 -0
  190. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next._index.txt +7 -0
  191. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next._tree.txt +2 -0
  192. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next.intents.__PAGE__.txt +9 -0
  193. visp_memory-0.3.0/src/visp_memory/server/static/intents/__next.intents.txt +5 -0
  194. visp_memory-0.3.0/src/visp_memory/server/static/intents.html +1 -0
  195. visp_memory-0.3.0/src/visp_memory/server/static/intents.txt +21 -0
  196. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next._full.txt +21 -0
  197. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next._head.txt +5 -0
  198. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next._index.txt +7 -0
  199. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next._tree.txt +2 -0
  200. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next.memories.__PAGE__.txt +9 -0
  201. visp_memory-0.3.0/src/visp_memory/server/static/memories/__next.memories.txt +5 -0
  202. visp_memory-0.3.0/src/visp_memory/server/static/memories.html +1 -0
  203. visp_memory-0.3.0/src/visp_memory/server/static/memories.txt +21 -0
  204. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next._full.txt +21 -0
  205. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next._head.txt +5 -0
  206. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next._index.txt +7 -0
  207. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next._tree.txt +2 -0
  208. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next.projects.__PAGE__.txt +9 -0
  209. visp_memory-0.3.0/src/visp_memory/server/static/projects/__next.projects.txt +5 -0
  210. visp_memory-0.3.0/src/visp_memory/server/static/projects.html +1 -0
  211. visp_memory-0.3.0/src/visp_memory/server/static/projects.txt +21 -0
  212. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next._full.txt +22 -0
  213. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next._head.txt +5 -0
  214. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next._index.txt +7 -0
  215. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next._tree.txt +2 -0
  216. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next.recall.__PAGE__.txt +9 -0
  217. visp_memory-0.3.0/src/visp_memory/server/static/recall/__next.recall.txt +6 -0
  218. visp_memory-0.3.0/src/visp_memory/server/static/recall.html +1 -0
  219. visp_memory-0.3.0/src/visp_memory/server/static/recall.txt +22 -0
  220. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next._full.txt +21 -0
  221. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next._head.txt +5 -0
  222. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next._index.txt +7 -0
  223. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next._tree.txt +2 -0
  224. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next.settings.__PAGE__.txt +9 -0
  225. visp_memory-0.3.0/src/visp_memory/server/static/settings/__next.settings.txt +5 -0
  226. visp_memory-0.3.0/src/visp_memory/server/static/settings.html +1 -0
  227. visp_memory-0.3.0/src/visp_memory/server/static/settings.txt +21 -0
  228. visp_memory-0.3.0/src/visp_memory/server/static/users/__next._full.txt +21 -0
  229. visp_memory-0.3.0/src/visp_memory/server/static/users/__next._head.txt +5 -0
  230. visp_memory-0.3.0/src/visp_memory/server/static/users/__next._index.txt +7 -0
  231. visp_memory-0.3.0/src/visp_memory/server/static/users/__next._tree.txt +2 -0
  232. visp_memory-0.3.0/src/visp_memory/server/static/users/__next.users.__PAGE__.txt +9 -0
  233. visp_memory-0.3.0/src/visp_memory/server/static/users/__next.users.txt +5 -0
  234. visp_memory-0.3.0/src/visp_memory/server/static/users.html +1 -0
  235. visp_memory-0.3.0/src/visp_memory/server/static/users.txt +21 -0
  236. visp_memory-0.3.0/tests/__init__.py +1 -0
  237. visp_memory-0.3.0/tests/capture/test_bootstrap.py +174 -0
  238. visp_memory-0.3.0/tests/capture/test_conversation_capture.py +121 -0
  239. visp_memory-0.3.0/tests/capture/test_git_capture.py +63 -0
  240. visp_memory-0.3.0/tests/capture/test_instruction_ingest.py +133 -0
  241. visp_memory-0.3.0/tests/cli/test_cli_integration.py +943 -0
  242. visp_memory-0.3.0/tests/conftest.py +57 -0
  243. visp_memory-0.3.0/tests/core/test_anchors.py +199 -0
  244. visp_memory-0.3.0/tests/core/test_arcadedb_storage.py +738 -0
  245. visp_memory-0.3.0/tests/core/test_clock.py +87 -0
  246. visp_memory-0.3.0/tests/core/test_compression.py +138 -0
  247. visp_memory-0.3.0/tests/core/test_conflict_resolution.py +85 -0
  248. visp_memory-0.3.0/tests/core/test_context_compiler.py +57 -0
  249. visp_memory-0.3.0/tests/core/test_cross_repo.py +97 -0
  250. visp_memory-0.3.0/tests/core/test_dedup.py +236 -0
  251. visp_memory-0.3.0/tests/core/test_embeddings.py +235 -0
  252. visp_memory-0.3.0/tests/core/test_hardening.py +97 -0
  253. visp_memory-0.3.0/tests/core/test_hybrid_retrieval.py +116 -0
  254. visp_memory-0.3.0/tests/core/test_injection.py +257 -0
  255. visp_memory-0.3.0/tests/core/test_intent_evaluator.py +57 -0
  256. visp_memory-0.3.0/tests/core/test_lifecycle.py +85 -0
  257. visp_memory-0.3.0/tests/core/test_llm_core.py +66 -0
  258. visp_memory-0.3.0/tests/core/test_memory.py +1353 -0
  259. visp_memory-0.3.0/tests/core/test_neo4j_storage.py +540 -0
  260. visp_memory-0.3.0/tests/core/test_ranking.py +298 -0
  261. visp_memory-0.3.0/tests/core/test_reflection.py +33 -0
  262. visp_memory-0.3.0/tests/core/test_reinforcement.py +103 -0
  263. visp_memory-0.3.0/tests/core/test_remote_storage.py +239 -0
  264. visp_memory-0.3.0/tests/core/test_repository.py +53 -0
  265. visp_memory-0.3.0/tests/core/test_task_brief.py +139 -0
  266. visp_memory-0.3.0/tests/core/test_token_efficiency.py +126 -0
  267. visp_memory-0.3.0/tests/core/test_tokens.py +77 -0
  268. visp_memory-0.3.0/tests/core/test_trust.py +136 -0
  269. visp_memory-0.3.0/tests/interfaces/test_mcp.py +672 -0
  270. visp_memory-0.3.0/tests/quality/__init__.py +0 -0
  271. visp_memory-0.3.0/tests/quality/test_reconcile.py +161 -0
  272. visp_memory-0.3.0/tests/quality/test_secrets.py +204 -0
  273. visp_memory-0.3.0/tests/recall/__init__.py +0 -0
  274. visp_memory-0.3.0/tests/recall/test_spreading_activation.py +125 -0
  275. visp_memory-0.3.0/tests/scripts/test_benchmark_script.py +50 -0
  276. visp_memory-0.3.0/tests/scripts/test_build_frontend.py +39 -0
  277. visp_memory-0.3.0/tests/scripts/test_evaluate_agent_ab.py +32 -0
  278. visp_memory-0.3.0/tests/scripts/test_evaluate_context_compiler.py +9 -0
  279. visp_memory-0.3.0/tests/scripts/test_evaluate_hallucination.py +29 -0
  280. visp_memory-0.3.0/tests/scripts/test_evaluate_hybrid_retrieval.py +10 -0
  281. visp_memory-0.3.0/tests/scripts/test_evaluate_memory_intelligence.py +32 -0
  282. visp_memory-0.3.0/tests/scripts/test_evaluate_oracle_gap.py +94 -0
  283. visp_memory-0.3.0/tests/scripts/test_evaluate_poisoning.py +72 -0
  284. visp_memory-0.3.0/tests/scripts/test_evaluate_task_brief.py +11 -0
  285. visp_memory-0.3.0/tests/server/test_auth.py +195 -0
  286. visp_memory-0.3.0/tests/server/test_auth_store.py +29 -0
  287. visp_memory-0.3.0/tests/server/test_collaboration.py +635 -0
  288. visp_memory-0.3.0/tests/server/test_diagnostics.py +259 -0
  289. visp_memory-0.3.0/tests/server/test_multi_repo.py +164 -0
  290. visp_memory-0.3.0/tests/server/test_server_api.py +1230 -0
  291. visp_memory-0.3.0/tests/server/test_server_config.py +213 -0
  292. visp_memory-0.3.0/tests/test_claude_code_auto_hooks.py +208 -0
  293. visp_memory-0.3.0/tests/test_codex_plugin.py +93 -0
  294. visp_memory-0.3.0/tests/test_hooks_adapters.py +240 -0
  295. visp_memory-0.3.0/tests/test_version.py +42 -0
  296. visp_memory-0.3.0/visp-memory-dashboard/.gitignore +27 -0
  297. visp_memory-0.3.0/visp-memory-dashboard/app/auth/page.tsx +132 -0
  298. visp_memory-0.3.0/visp-memory-dashboard/app/brief/page.tsx +411 -0
  299. visp_memory-0.3.0/visp-memory-dashboard/app/globals.css +161 -0
  300. visp_memory-0.3.0/visp-memory-dashboard/app/graph/page.tsx +60 -0
  301. visp_memory-0.3.0/visp-memory-dashboard/app/health/page.tsx +236 -0
  302. visp_memory-0.3.0/visp-memory-dashboard/app/integrations/page.tsx +210 -0
  303. visp_memory-0.3.0/visp-memory-dashboard/app/intelligence/page.tsx +441 -0
  304. visp_memory-0.3.0/visp-memory-dashboard/app/intents/page.tsx +209 -0
  305. visp_memory-0.3.0/visp-memory-dashboard/app/layout.tsx +27 -0
  306. visp_memory-0.3.0/visp-memory-dashboard/app/memories/page.tsx +171 -0
  307. visp_memory-0.3.0/visp-memory-dashboard/app/page.tsx +135 -0
  308. visp_memory-0.3.0/visp-memory-dashboard/app/projects/page.tsx +170 -0
  309. visp_memory-0.3.0/visp-memory-dashboard/app/recall/loading.tsx +3 -0
  310. visp_memory-0.3.0/visp-memory-dashboard/app/recall/page.tsx +82 -0
  311. visp_memory-0.3.0/visp-memory-dashboard/app/settings/page.tsx +425 -0
  312. visp_memory-0.3.0/visp-memory-dashboard/app/users/page.tsx +136 -0
  313. visp_memory-0.3.0/visp-memory-dashboard/components/dashboard/animated-stats-card.tsx +73 -0
  314. visp_memory-0.3.0/visp-memory-dashboard/components/dashboard/quick-actions.tsx +128 -0
  315. visp_memory-0.3.0/visp-memory-dashboard/components/dashboard/recent-activity.tsx +88 -0
  316. visp_memory-0.3.0/visp-memory-dashboard/components/dashboard/system-status.tsx +110 -0
  317. visp_memory-0.3.0/visp-memory-dashboard/components/graph/memory-graph.tsx +813 -0
  318. visp_memory-0.3.0/visp-memory-dashboard/components/intents/intent-card.tsx +144 -0
  319. visp_memory-0.3.0/visp-memory-dashboard/components/intents/intents-column.tsx +71 -0
  320. visp_memory-0.3.0/visp-memory-dashboard/components/layout/app-layout.tsx +31 -0
  321. visp_memory-0.3.0/visp-memory-dashboard/components/layout/sidebar.tsx +297 -0
  322. visp_memory-0.3.0/visp-memory-dashboard/components/projects/project-selector.tsx +37 -0
  323. visp_memory-0.3.0/visp-memory-dashboard/components/providers/theme-provider.tsx +8 -0
  324. visp_memory-0.3.0/visp-memory-dashboard/components/recall/search-bar.tsx +48 -0
  325. visp_memory-0.3.0/visp-memory-dashboard/components/recall/search-results.tsx +95 -0
  326. visp_memory-0.3.0/visp-memory-dashboard/components/recall/search-suggestions.tsx +30 -0
  327. visp_memory-0.3.0/visp-memory-dashboard/components/ui/button.tsx +60 -0
  328. visp_memory-0.3.0/visp-memory-dashboard/components/ui/dialog.tsx +143 -0
  329. visp_memory-0.3.0/visp-memory-dashboard/components/ui/input.tsx +21 -0
  330. visp_memory-0.3.0/visp-memory-dashboard/components/ui/label.tsx +24 -0
  331. visp_memory-0.3.0/visp-memory-dashboard/components/ui/slider.tsx +63 -0
  332. visp_memory-0.3.0/visp-memory-dashboard/components/ui/textarea.tsx +18 -0
  333. visp_memory-0.3.0/visp-memory-dashboard/components/ui/theme-toggle.tsx +39 -0
  334. visp_memory-0.3.0/visp-memory-dashboard/components.json +21 -0
  335. visp_memory-0.3.0/visp-memory-dashboard/lib/animations.ts +17 -0
  336. visp_memory-0.3.0/visp-memory-dashboard/lib/api.ts +1304 -0
  337. visp_memory-0.3.0/visp-memory-dashboard/lib/project-selection.tsx +253 -0
  338. visp_memory-0.3.0/visp-memory-dashboard/lib/types.ts +414 -0
  339. visp_memory-0.3.0/visp-memory-dashboard/lib/utils.ts +6 -0
  340. visp_memory-0.3.0/visp-memory-dashboard/next-env.d.ts +6 -0
  341. visp_memory-0.3.0/visp-memory-dashboard/next.config.mjs +14 -0
  342. visp_memory-0.3.0/visp-memory-dashboard/package-lock.json +2500 -0
  343. visp_memory-0.3.0/visp-memory-dashboard/package.json +45 -0
  344. visp_memory-0.3.0/visp-memory-dashboard/postcss.config.mjs +8 -0
  345. visp_memory-0.3.0/visp-memory-dashboard/public/apple-icon.png +0 -0
  346. visp_memory-0.3.0/visp-memory-dashboard/public/icon-dark-32x32.png +0 -0
  347. visp_memory-0.3.0/visp-memory-dashboard/public/icon-light-32x32.png +0 -0
  348. visp_memory-0.3.0/visp-memory-dashboard/public/icon.svg +26 -0
  349. visp_memory-0.3.0/visp-memory-dashboard/styles/globals.css +125 -0
  350. visp_memory-0.3.0/visp-memory-dashboard/tsconfig.json +41 -0
@@ -0,0 +1,92 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ # lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ venv/
25
+ ENV/
26
+ .venv/
27
+
28
+ # IDE
29
+ .idea/
30
+ .vscode/
31
+ *.swp
32
+ *.swo
33
+
34
+ # Testing
35
+ .pytest_cache/
36
+ .pytest-tmp*/
37
+ .test-tmp/
38
+ .coverage
39
+ htmlcov/
40
+ .uv-cache/
41
+ .pip-audit-cache/
42
+
43
+ # Project specific
44
+ .visp-memory/data/
45
+ *.db
46
+ chroma_db/
47
+ # Local docker-compose secrets (use .env.example as the template)
48
+ .env
49
+
50
+ # OS
51
+ .DS_Store
52
+ Thumbs.db
53
+
54
+ # Node.js / Next.js
55
+ node_modules/
56
+ .npm-cache/
57
+ .next/
58
+ out/
59
+ build/
60
+ .env.local
61
+ .env.development.local
62
+ .env.test.local
63
+ .env.production.local
64
+
65
+ # Agent Artifacts
66
+ .gemini/
67
+ qa-docs/
68
+ .codex-local/
69
+ plan/
70
+
71
+ # Build artifacts
72
+ src/visp_memory/server/static/
73
+ *.spec.log
74
+ # ArcadeDB embedded driver writes rotating logs here at runtime
75
+ log/
76
+ *.tar.gz
77
+ *.whl
78
+ dist-standalone/
79
+ .ruff_cache/
80
+ .playwright-cache/
81
+
82
+ # Agent tooling scratch space. Worktrees contain full repository copies and must
83
+ # never be committed.
84
+ .claude/worktrees/
85
+ .agents/
86
+ .codex/
87
+
88
+ # Per-project memory config, generated by `visp-memory init`. Tracking it pins one
89
+ # user's embedding/vector choices onto everyone who clones -- a committed
90
+ # `provider: sentence-transformers` reintroduced the missing-provider warning for
91
+ # anyone on the lean install.
92
+ visp-memory.yaml
@@ -0,0 +1,121 @@
1
+ # Contributor License Agreement
2
+
3
+ **Visp Memory — Individual Contributor License Agreement ("Agreement")**
4
+
5
+ Thank you for your interest in Visp Memory (the "Project"). This Agreement is adapted
6
+ from the Apache Software Foundation's Individual Contributor License Agreement v2.0,
7
+ which is the widely used template for this purpose.
8
+
9
+ **Why this exists.** The Project is released under the Apache License 2.0. When you
10
+ contribute code, you keep your copyright — this Agreement does not transfer ownership.
11
+ It grants the Project maintainer the rights needed to distribute your contribution, and
12
+ it records that you had the right to submit it in the first place. Without it, the
13
+ Project cannot cleanly relicense or dual-license in future, because every contributor
14
+ would have to be tracked down and asked individually. Projects that failed to do this
15
+ have found the option closed permanently.
16
+
17
+ You accept and agree to the following terms for your present and future Contributions
18
+ to the Project. Except for the licences granted here to the maintainer and to recipients
19
+ of software distributed by the maintainer, **you reserve all right, title, and interest
20
+ in and to your Contributions.**
21
+
22
+ ## 1. Definitions
23
+
24
+ **"You"** (or **"Your"**) means the copyright owner, or the legal entity authorised by
25
+ the copyright owner, that is entering into this Agreement with the Project maintainer.
26
+
27
+ **"Maintainer"** means Dineth Jayakody, the copyright holder of the Project.
28
+
29
+ **"Contribution"** means any original work of authorship, including any modifications or
30
+ additions to an existing work, that is intentionally submitted by You to the Project for
31
+ inclusion in, or documentation of, any of the products owned or managed by the Project.
32
+ "Submitted" means any form of electronic, verbal, or written communication sent to the
33
+ Maintainer or its representatives, including but not limited to communication on
34
+ electronic mailing lists, source code control systems, and issue tracking systems that
35
+ are managed by, or on behalf of, the Project for the purpose of discussing and improving
36
+ the Project — excluding communication that is conspicuously marked or otherwise
37
+ designated in writing by You as "Not a Contribution."
38
+
39
+ ## 2. Grant of Copyright Licence
40
+
41
+ Subject to the terms and conditions of this Agreement, You hereby grant to the
42
+ Maintainer and to recipients of software distributed by the Maintainer a perpetual,
43
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright licence to
44
+ reproduce, prepare derivative works of, publicly display, publicly perform, sublicense,
45
+ and distribute Your Contributions and such derivative works.
46
+
47
+ This grant includes the right for the Maintainer to license the Project, including Your
48
+ Contributions, under the Apache License 2.0 or any other licence terms the Maintainer
49
+ selects, including proprietary terms. Your Contributions will remain available under the
50
+ Apache License 2.0 as distributed at the time of Your Contribution; relicensing applies
51
+ to future distributions and does not retroactively withdraw versions already released.
52
+
53
+ ## 3. Grant of Patent Licence
54
+
55
+ Subject to the terms and conditions of this Agreement, You hereby grant to the
56
+ Maintainer and to recipients of software distributed by the Maintainer a perpetual,
57
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
58
+ section) patent licence to make, have made, use, offer to sell, sell, import, and
59
+ otherwise transfer the Work.
60
+
61
+ This licence applies only to those patent claims licensable by You that are necessarily
62
+ infringed by Your Contribution alone or by combination of Your Contribution with the
63
+ Project to which the Contribution was submitted.
64
+
65
+ If any entity institutes patent litigation against You or any other entity (including a
66
+ cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the Project
67
+ to which You have contributed, constitutes direct or contributory patent infringement,
68
+ then any patent licences granted to that entity under this Agreement for that
69
+ Contribution or Project shall terminate as of the date such litigation is filed.
70
+
71
+ ## 4. Your Representations
72
+
73
+ You represent that:
74
+
75
+ 1. You are legally entitled to grant the above licences.
76
+ 2. Each of Your Contributions is Your original creation, or You have the right to submit
77
+ it under the terms of this Agreement.
78
+ 3. **If your employer has rights to intellectual property that you create**, you have
79
+ received permission to make Contributions on behalf of that employer, that your
80
+ employer has waived such rights for your Contributions to the Project, or that your
81
+ employer has executed a separate Corporate CLA with the Maintainer. This is the clause
82
+ contributors most often overlook — employment agreements commonly assign IP created
83
+ during employment, including work done on personal time.
84
+ 4. Your Contributions include complete details of any third-party licence or other
85
+ restriction (including related patents and trademarks) of which You are personally
86
+ aware and which are associated with any part of Your Contributions.
87
+
88
+ ## 5. Support and Warranty Disclaimer
89
+
90
+ You are not expected to provide support for Your Contributions, except to the extent You
91
+ desire to provide support. You may provide support for free, for a fee, or not at all.
92
+
93
+ Unless required by applicable law or agreed to in writing, You provide Your Contributions
94
+ on an **"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND**, either express or
95
+ implied, including, without limitation, any warranties or conditions of TITLE,
96
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
97
+
98
+ ## 6. Notification
99
+
100
+ You agree to notify the Maintainer of any facts or circumstances of which you become
101
+ aware that would make these representations inaccurate in any respect.
102
+
103
+ ## How to sign
104
+
105
+ Comment the following on your pull request:
106
+
107
+ ```
108
+ I have read the CLA document and I hereby sign the CLA.
109
+ ```
110
+
111
+ Include your full name and the GitHub account you are contributing from. Signatures are
112
+ recorded against the pull request and retained for the life of the Project.
113
+
114
+ For contributions made on behalf of a company, contact the Maintainer to arrange a
115
+ Corporate CLA before submitting.
116
+
117
+ ---
118
+
119
+ *This document is adapted from the Apache Software Foundation ICLA v2.0. It is provided
120
+ as-is and is not legal advice; if you are contributing on behalf of an organisation,
121
+ have your own counsel review it.*
@@ -0,0 +1,124 @@
1
+ # Contributing
2
+
3
+ Thanks for considering a contribution. This project is early, so the most valuable
4
+ contributions right now are bug reports from real repositories and evidence that the
5
+ injection policy is wrong.
6
+
7
+ ## Before you start
8
+
9
+ - **Small fixes**: open a pull request directly.
10
+ - **Anything that changes behaviour**: open an issue first. The injection thresholds in
11
+ particular are calibrated against measurements, not preference — see
12
+ [docs/development/INJECTION_POLICY.md](docs/development/INJECTION_POLICY.md).
13
+ - **A feature that would widen scope**: check
14
+ [docs/FEATURE_STATUS.md](docs/FEATURE_STATUS.md) first. Several areas are deliberately
15
+ frozen, and a PR reviving one is likely to be declined on maintenance grounds rather
16
+ than merit.
17
+
18
+ ## Legal bits, done once
19
+
20
+ Two things are required before a pull request can be merged.
21
+
22
+ ### 1. Sign off each commit (DCO)
23
+
24
+ Certify that you wrote the change, or have the right to submit it, by adding a
25
+ `Signed-off-by` line:
26
+
27
+ ```bash
28
+ git commit -s -m "fix: handle empty anchor set"
29
+ ```
30
+
31
+ That appends `Signed-off-by: Your Name <your@email.com>` using your git config. It
32
+ certifies the [Developer Certificate of Origin 1.1](https://developercertificate.org/),
33
+ reproduced in full below.
34
+
35
+ ### 2. Sign the CLA (once, ever)
36
+
37
+ Comment on your first pull request:
38
+
39
+ ```
40
+ I have read the CLA document and I hereby sign the CLA.
41
+ ```
42
+
43
+ The [Contributor License Agreement](CLA.md) does **not** take your copyright — you keep
44
+ it. It grants the rights needed to distribute your work and keeps future relicensing
45
+ possible. Projects that skipped this step found the option closed permanently, because
46
+ every past contributor would have had to individually agree.
47
+
48
+ If you are contributing as part of your job, read §4.3 of the CLA carefully: employment
49
+ agreements commonly assign IP created during employment, including work done on personal
50
+ time.
51
+
52
+ ## Development setup
53
+
54
+ ```bash
55
+ git clone https://github.com/djkeshawa/visp-memory.git
56
+ cd visp-memory
57
+ pip install -e ".[api,mcp,capture,dev]"
58
+ ```
59
+
60
+ ## Before you open a pull request
61
+
62
+ ```bash
63
+ pytest # 637 tests, ~50s
64
+ ruff check .
65
+ python3 scripts/evaluate_oracle_gap.py # must match docs/BENCHMARK.md
66
+ python3 scripts/evaluate_poisoning.py # must match docs/TRUST.md
67
+ ```
68
+
69
+ Both evaluation scripts run in CI. If your change moves those numbers, that is not
70
+ automatically a failure — but **update the published numbers in the docs in the same
71
+ pull request.** A stale benchmark claim is the one bug this project cannot afford, since
72
+ its whole position rests on numbers that hold up under checking.
73
+
74
+ If a change lowers injection precision to raise recall, say so explicitly in the PR
75
+ description and explain why the trade is worth it. On the current evidence it usually
76
+ is not.
77
+
78
+ ## Style
79
+
80
+ Match the surrounding code. Comments should explain *why*, especially for anything
81
+ non-obvious — thresholds, ordering constraints, and guards against failure modes that
82
+ are not visible from the code alone. Several existing comments record bugs that were
83
+ found the hard way; that is deliberate.
84
+
85
+ ---
86
+
87
+ ## Developer Certificate of Origin 1.1
88
+
89
+ ```
90
+ Developer Certificate of Origin
91
+ Version 1.1
92
+
93
+ Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
94
+
95
+ Everyone is permitted to copy and distribute verbatim copies of this
96
+ license document, but changing it is not allowed.
97
+
98
+
99
+ Developer's Certificate of Origin 1.1
100
+
101
+ By making a contribution to this project, I certify that:
102
+
103
+ (a) The contribution was created in whole or in part by me and I
104
+ have the right to submit it under the open source license
105
+ indicated in the file; or
106
+
107
+ (b) The contribution is based upon previous work that, to the best
108
+ of my knowledge, is covered under an appropriate open source
109
+ license and I have the right under that license to submit that
110
+ work with modifications, whether created in whole or in part
111
+ by me, under the same open source license (unless I am
112
+ permitted to submit under a different license), as indicated
113
+ in the file; or
114
+
115
+ (c) The contribution was provided directly to me by some other
116
+ person who certified (a), (b) or (c) and I have not modified
117
+ it.
118
+
119
+ (d) I understand and agree that this project and the contribution
120
+ are public and that a record of the contribution (including all
121
+ personal information I submit with it, including my sign-off) is
122
+ maintained indefinitely and may be redistributed consistent with
123
+ this project or the open source license(s) involved.
124
+ ```
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright 2026 Dineth Jayakody
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,15 @@
1
+ Visp Memory
2
+ Copyright 2026 Dineth Jayakody
3
+
4
+ This product includes software developed by Dineth Jayakody and contributors.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
7
+ this file except in compliance with the License. You may obtain a copy of the
8
+ License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software distributed
13
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
14
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations under the License.