memorylayer-server 0.0.3__tar.gz → 0.0.4__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 (141) hide show
  1. memorylayer_server-0.0.4/PKG-INFO +331 -0
  2. memorylayer_server-0.0.4/README.md +256 -0
  3. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/pyproject.toml +5 -2
  4. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/__init__.py +1 -1
  5. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/associations.py +4 -17
  6. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/context_environment.py +5 -19
  7. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/contradictions.py +4 -17
  8. memorylayer_server-0.0.4/src/memorylayer_server/api/v1/deps.py +61 -0
  9. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/memories.py +131 -260
  10. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/schemas.py +69 -0
  11. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/sessions.py +126 -46
  12. memorylayer_server-0.0.4/src/memorylayer_server/api/v1/workspaces.py +810 -0
  13. memorylayer_server-0.0.4/src/memorylayer_server/cli.py +226 -0
  14. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/config.py +11 -4
  15. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/dependencies.py +14 -5
  16. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/lifecycle/routes.py +1 -1
  17. memorylayer_server-0.0.4/src/memorylayer_server/services/_constants.py +108 -0
  18. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/association/base.py +1 -5
  19. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authentication/base.py +37 -3
  20. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authentication/default.py +70 -13
  21. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authorization/base.py +1 -1
  22. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/cache/base.py +1 -1
  23. memorylayer_server-0.0.4/src/memorylayer_server/services/cache/lru.py +123 -0
  24. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/cache/noop.py +1 -1
  25. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/base.py +1 -2
  26. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/contradiction/base.py +1 -3
  27. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/decay/base.py +6 -3
  28. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/decay/default.py +10 -4
  29. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/deduplication/base.py +1 -5
  30. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/base.py +1 -4
  31. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/extraction/base.py +7 -7
  32. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/base.py +1 -4
  33. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/memory/base.py +11 -11
  34. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/memory/default.py +62 -27
  35. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/ontology/base.py +1 -2
  36. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reflect/base.py +1 -5
  37. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/base.py +1 -3
  38. memorylayer_server-0.0.4/src/memorylayer_server/services/reranker/rrf/__init__.py +8 -0
  39. memorylayer_server-0.0.4/src/memorylayer_server/services/reranker/rrf/provider.py +295 -0
  40. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/semantic_tiering/base.py +14 -18
  41. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/session/base.py +62 -37
  42. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/session/in_memory.py +240 -43
  43. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/session/persistent.py +119 -190
  44. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/storage/base.py +53 -2
  45. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/storage/in_memory.py +88 -1
  46. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/storage/sqlite.py +416 -277
  47. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/tasks/asyncio_impl.py +5 -4
  48. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/tasks/base.py +21 -18
  49. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/tasks/handlers.py +5 -1
  50. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/workspace/base.py +1 -4
  51. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/workspace/default.py +10 -0
  52. memorylayer_server-0.0.4/src/memorylayer_server/tasks/__init__.py +0 -0
  53. {memorylayer_server-0.0.3/src/memorylayer_server/services/memory → memorylayer_server-0.0.4/src/memorylayer_server/tasks}/auto_enrich_handler.py +11 -15
  54. {memorylayer_server-0.0.3/src/memorylayer_server/services/session → memorylayer_server-0.0.4/src/memorylayer_server/tasks}/cleanup_task.py +4 -4
  55. memorylayer_server-0.0.3/src/memorylayer_server/services/contradiction/task_handler.py → memorylayer_server-0.0.4/src/memorylayer_server/tasks/contradiction_check_handler.py +5 -9
  56. memorylayer_server-0.0.3/src/memorylayer_server/services/decay/task_handler.py → memorylayer_server-0.0.4/src/memorylayer_server/tasks/decay_task_handler.py +6 -10
  57. {memorylayer_server-0.0.3/src/memorylayer_server/services/extraction → memorylayer_server-0.0.4/src/memorylayer_server/tasks}/fact_decomposition_handler.py +13 -17
  58. memorylayer_server-0.0.4/src/memorylayer_server/tasks/remember_working_memory_handler.py +79 -0
  59. memorylayer_server-0.0.3/src/memorylayer_server/services/semantic_tiering/task_handler.py → memorylayer_server-0.0.4/src/memorylayer_server/tasks/semantic_tiering_task_handler.py +6 -11
  60. memorylayer_server-0.0.4/src/memorylayer_server/tasks/session_touch_handler.py +45 -0
  61. memorylayer_server-0.0.3/PKG-INFO +0 -150
  62. memorylayer_server-0.0.3/README.md +0 -76
  63. memorylayer_server-0.0.3/src/memorylayer_server/api/v1/workspaces.py +0 -376
  64. memorylayer_server-0.0.3/src/memorylayer_server/cli.py +0 -98
  65. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/.gitignore +0 -0
  66. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/__init__.py +0 -0
  67. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/health.py +0 -0
  68. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/api/v1/__init__.py +0 -0
  69. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/lifecycle/__init__.py +0 -0
  70. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/lifecycle/cors.py +0 -0
  71. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/lifecycle/fastapi.py +0 -0
  72. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/main.py +0 -0
  73. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/__init__.py +0 -0
  74. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/association.py +0 -0
  75. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/auth.py +0 -0
  76. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/authz.py +0 -0
  77. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/llm.py +0 -0
  78. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/memory.py +0 -0
  79. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/session.py +0 -0
  80. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/models/workspace.py +0 -0
  81. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/__init__.py +0 -0
  82. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/association/__init__.py +0 -0
  83. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/association/default.py +0 -0
  84. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authentication/__init__.py +0 -0
  85. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authorization/__init__.py +0 -0
  86. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/authorization/default.py +0 -0
  87. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/cache/__init__.py +0 -0
  88. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/__init__.py +0 -0
  89. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/default.py +0 -0
  90. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/executors/__init__.py +0 -0
  91. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/executors/base.py +0 -0
  92. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/executors/restricted.py +0 -0
  93. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/executors/smolagents_executor.py +0 -0
  94. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/hooks.py +0 -0
  95. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/context_environment/rlm.py +0 -0
  96. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/contradiction/__init__.py +0 -0
  97. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/contradiction/default.py +0 -0
  98. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/decay/__init__.py +0 -0
  99. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/deduplication/__init__.py +0 -0
  100. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/deduplication/default.py +0 -0
  101. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/__init__.py +0 -0
  102. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/google.py +0 -0
  103. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/local.py +0 -0
  104. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/mock.py +0 -0
  105. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/openai.py +0 -0
  106. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/embedding/service_default.py +0 -0
  107. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/extraction/__init__.py +0 -0
  108. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/extraction/default.py +0 -0
  109. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/__init__.py +0 -0
  110. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/anthropic.py +0 -0
  111. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/google.py +0 -0
  112. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/noop.py +0 -0
  113. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/openai.py +0 -0
  114. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/registry.py +0 -0
  115. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/llm/service_default.py +0 -0
  116. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/memory/__init__.py +0 -0
  117. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/ontology/__init__.py +0 -0
  118. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/ontology/default.py +0 -0
  119. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reflect/__init__.py +0 -0
  120. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reflect/default.py +0 -0
  121. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/__init__.py +0 -0
  122. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/default.py +0 -0
  123. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/hyde/__init__.py +0 -0
  124. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/hyde/provider.py +0 -0
  125. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/llm/__init__.py +0 -0
  126. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/llm/provider.py +0 -0
  127. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/local/__init__.py +0 -0
  128. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/local/provider.py +0 -0
  129. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/none/__init__.py +0 -0
  130. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/reranker/none/provider.py +0 -0
  131. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/semantic_tiering/__init__.py +0 -0
  132. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/semantic_tiering/default.py +0 -0
  133. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/session/__init__.py +0 -0
  134. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/storage/__init__.py +0 -0
  135. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/tasks/__init__.py +0 -0
  136. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/services/workspace/__init__.py +0 -0
  137. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/utils/__init__.py +0 -0
  138. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/utils/datetime.py +0 -0
  139. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/utils/hashing.py +0 -0
  140. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/utils/id_generation.py +0 -0
  141. {memorylayer_server-0.0.3 → memorylayer_server-0.0.4}/src/memorylayer_server/utils/vector_math.py +0 -0
@@ -0,0 +1,331 @@
1
+ Metadata-Version: 2.4
2
+ Name: memorylayer-server
3
+ Version: 0.0.4
4
+ Summary: MemoryLayer.ai - API-first memory infrastructure for LLM-powered agents (open source core)
5
+ Project-URL: Homepage, https://memorylayer.ai
6
+ Project-URL: Documentation, https://docs.memorylayer.ai
7
+ Project-URL: Repository, https://github.com/scitrera/memorylayer
8
+ Project-URL: Issues, https://github.com/scitrera/memorylayer/issues
9
+ Author-email: Scitrera <open-source-team@scitrera.com>
10
+ License: Apache 2.0
11
+ Keywords: agents,ai,llm,memory,rag,vector-search
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
+ Requires-Python: >=3.12
19
+ Requires-Dist: aiosqlite>=0.22.1
20
+ Requires-Dist: click>=8.3.1
21
+ Requires-Dist: fastapi>=0.128.7
22
+ Requires-Dist: httpx>=0.28.1
23
+ Requires-Dist: numpy>2.0.0
24
+ Requires-Dist: pydantic-settings>=2.12.0
25
+ Requires-Dist: pydantic>=2.12.5
26
+ Requires-Dist: python-multipart>=0.0.22
27
+ Requires-Dist: scitrera-app-framework>=0.0.69
28
+ Requires-Dist: scitrera-ext-cachetools>=0.0.1
29
+ Requires-Dist: scitrera-rt-data>=0.0.7
30
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.46
31
+ Requires-Dist: sqlite-vec>=0.1.7a2
32
+ Requires-Dist: uvicorn[standard]>=0.30.0
33
+ Provides-Extra: all
34
+ Requires-Dist: anthropic>=0.79.0; extra == 'all'
35
+ Requires-Dist: google-genai>=1.62.0; extra == 'all'
36
+ Requires-Dist: mypy>=1.19.1; extra == 'all'
37
+ Requires-Dist: openai>=2.18.0; extra == 'all'
38
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'all'
39
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'all'
40
+ Requires-Dist: pytest>=9.0.2; extra == 'all'
41
+ Requires-Dist: respx>=0.22.0; extra == 'all'
42
+ Requires-Dist: ruff>=0.15.0; extra == 'all'
43
+ Requires-Dist: sentence-transformers>=5.2.2; extra == 'all'
44
+ Requires-Dist: smolagents<2.0,>=1.0; extra == 'all'
45
+ Requires-Dist: tiktoken>=0.12.0; extra == 'all'
46
+ Provides-Extra: anthropic
47
+ Requires-Dist: anthropic>=0.79.0; extra == 'anthropic'
48
+ Provides-Extra: context
49
+ Requires-Dist: smolagents<2.0,>=1.0; extra == 'context'
50
+ Provides-Extra: dev
51
+ Requires-Dist: mypy>=1.19.1; extra == 'dev'
52
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
53
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
54
+ Requires-Dist: pytest>=9.0.2; extra == 'dev'
55
+ Requires-Dist: respx>=0.22.0; extra == 'dev'
56
+ Requires-Dist: ruff>=0.15.0; extra == 'dev'
57
+ Provides-Extra: embeddings
58
+ Requires-Dist: google-genai>=1.62.0; extra == 'embeddings'
59
+ Requires-Dist: openai>=2.18.0; extra == 'embeddings'
60
+ Requires-Dist: sentence-transformers>=5.2.2; extra == 'embeddings'
61
+ Requires-Dist: tiktoken>=0.12.0; extra == 'embeddings'
62
+ Provides-Extra: google
63
+ Requires-Dist: google-genai>=1.62.0; extra == 'google'
64
+ Provides-Extra: llm
65
+ Requires-Dist: anthropic>=0.79.0; extra == 'llm'
66
+ Requires-Dist: google-genai>=1.62.0; extra == 'llm'
67
+ Requires-Dist: openai>=2.18.0; extra == 'llm'
68
+ Requires-Dist: tiktoken>=0.12.0; extra == 'llm'
69
+ Provides-Extra: local
70
+ Requires-Dist: sentence-transformers>=5.2.2; extra == 'local'
71
+ Provides-Extra: openai
72
+ Requires-Dist: openai>=2.18.0; extra == 'openai'
73
+ Requires-Dist: tiktoken>=0.12.0; extra == 'openai'
74
+ Description-Content-Type: text/markdown
75
+
76
+ # MemoryLayer.ai Server
77
+
78
+ **API-first memory infrastructure for LLM-powered agents.**
79
+
80
+ MemoryLayer provides cognitive memory capabilities for AI agents, including episodic, semantic, procedural, and working memory with vector-based retrieval, graph-based associations, and server-side computation sandboxes.
81
+
82
+ ## Features
83
+
84
+ - **Cognitive Memory Architecture** — Episodic, semantic, procedural, and working memory types
85
+ - **Vector Search** — SQLite with sqlite-vec for efficient similarity search
86
+ - **Knowledge Graph** — 60+ relationship types organized into 11 categories for memory associations
87
+ - **Context Environment** — Server-side Python sandboxes for memory analysis and computation
88
+ - **Session Management** — Working memory with TTL and commit to long-term storage
89
+ - **REST API** — Full-featured HTTP API for all memory operations
90
+ - **Multiple Embedding Providers** — OpenAI, Google GenAI, sentence-transformers (local), and mock (testing)
91
+ - **Health Endpoints** — `/health` and `/health/ready` for monitoring and readiness checks
92
+
93
+ ## Installation
94
+
95
+ ```bash
96
+ # Basic installation
97
+ pip install memorylayer-server
98
+
99
+ # With OpenAI embeddings
100
+ pip install memorylayer-server[openai]
101
+
102
+ # With Google GenAI embeddings
103
+ pip install memorylayer-server[google]
104
+
105
+ # With local embeddings (sentence-transformers)
106
+ pip install memorylayer-server[local]
107
+
108
+ # All embedding providers
109
+ pip install memorylayer-server[all]
110
+ ```
111
+
112
+ **Package name:** `memorylayer-server` (PyPI)
113
+ **Import name:** `memorylayer_server`
114
+
115
+ ## Quick Start
116
+
117
+ ### Start the HTTP Server
118
+
119
+ ```bash
120
+ # Start on default port (61001)
121
+ memorylayer serve
122
+
123
+ # Custom port
124
+ memorylayer serve --port 8080
125
+
126
+ # Bind to all interfaces
127
+ memorylayer serve --host 0.0.0.0
128
+
129
+ # Debug mode
130
+ memorylayer serve --verbose
131
+ ```
132
+
133
+ ### Docker
134
+
135
+ The official Docker image comes with all optional dependencies pre-installed and defaults to `local` embeddings (no API key required):
136
+
137
+ ```bash
138
+ docker run -d \
139
+ --name memorylayer \
140
+ -p 61001:61001 \
141
+ -v memorylayer-data:/data \
142
+ scitrera/memorylayer-server
143
+ ```
144
+
145
+ **With OpenAI embeddings:**
146
+
147
+ ```bash
148
+ docker run -d \
149
+ --name memorylayer \
150
+ -p 61001:61001 \
151
+ -v memorylayer-data:/data \
152
+ -e MEMORYLAYER_EMBEDDING_PROVIDER=openai \
153
+ -e MEMORYLAYER_EMBEDDING_OPENAI_API_KEY=sk-... \
154
+ scitrera/memorylayer-server
155
+ ```
156
+
157
+ ## API Usage
158
+
159
+ The server exposes a REST API. Use any HTTP client, or install the Python SDK (`pip install memorylayer-client`) for a typed client:
160
+
161
+ ```python
162
+ from memorylayer import MemoryLayerClient
163
+
164
+ async with MemoryLayerClient(base_url="http://localhost:61001") as client:
165
+ # Store a memory
166
+ memory = await client.remember(
167
+ content="User prefers Python for backend development",
168
+ type="semantic",
169
+ importance=0.8,
170
+ tags=["preferences", "programming"]
171
+ )
172
+
173
+ # Recall memories
174
+ results = await client.recall(
175
+ query="What programming languages does the user like?",
176
+ limit=5
177
+ )
178
+
179
+ # Create associations
180
+ await client.associate(
181
+ source_id=memory.id,
182
+ target_id=other_memory.id,
183
+ relationship="related_to",
184
+ strength=0.9
185
+ )
186
+ ```
187
+
188
+ ## Configuration
189
+
190
+ ### Environment Variables
191
+
192
+ | Variable | Default | Description |
193
+ |----------|---------|-------------|
194
+ | `MEMORYLAYER_SERVER_HOST` | `127.0.0.1` | Server bind address |
195
+ | `MEMORYLAYER_SERVER_PORT` | `61001` | Server port |
196
+ | `MEMORYLAYER_DATA_DIR` | `~/.config/memorylayer-server` | Data directory |
197
+ | `MEMORYLAYER_SQLITE_STORAGE_PATH` | `memorylayer.db` | SQLite database path (relative to data dir) |
198
+ | `MEMORYLAYER_EMBEDDING_PROVIDER` | `local` | Embedding provider (`openai`, `google`, `local`, `mock`) |
199
+ | `MEMORYLAYER_EMBEDDING_OPENAI_API_KEY` | — | OpenAI API key |
200
+ | `MEMORYLAYER_EMBEDDING_GOOGLE_API_KEY` | — | Google API key |
201
+
202
+ ### Embedding Providers
203
+
204
+ **Local (sentence-transformers)** — Default provider, no API key required:
205
+
206
+ ```bash
207
+ pip install memorylayer-server[local]
208
+ export MEMORYLAYER_EMBEDDING_PROVIDER=local
209
+ memorylayer serve
210
+ ```
211
+
212
+ **OpenAI:**
213
+
214
+ ```bash
215
+ pip install memorylayer-server[openai]
216
+ export MEMORYLAYER_EMBEDDING_PROVIDER=openai
217
+ export MEMORYLAYER_EMBEDDING_OPENAI_API_KEY=sk-...
218
+ memorylayer serve
219
+ ```
220
+
221
+ **Google GenAI:**
222
+
223
+ ```bash
224
+ pip install memorylayer-server[google]
225
+ export MEMORYLAYER_EMBEDDING_PROVIDER=google
226
+ export MEMORYLAYER_EMBEDDING_GOOGLE_API_KEY=...
227
+ memorylayer serve
228
+ ```
229
+
230
+ **Mock (testing only):**
231
+
232
+ ```bash
233
+ export MEMORYLAYER_EMBEDDING_PROVIDER=mock
234
+ memorylayer serve
235
+ ```
236
+
237
+ ### LLM Provider (Optional)
238
+
239
+ Some features (reflection, smart extraction, context environment queries) require an LLM provider configured via profiles:
240
+
241
+ ```bash
242
+ # OpenAI
243
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=openai
244
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=sk-...
245
+
246
+ # Anthropic Claude
247
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=anthropic
248
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=sk-ant-...
249
+
250
+ # Google Gemini
251
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=google
252
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=...
253
+ ```
254
+
255
+ **Profile configuration variables** (replace `DEFAULT` with any profile name):
256
+
257
+ | Variable | Description |
258
+ |----------|-------------|
259
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_PROVIDER` | Provider (`openai`, `anthropic`, `google`) |
260
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_API_KEY` | API key |
261
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_MODEL` | Model name override |
262
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_BASE_URL` | Custom API base URL |
263
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_MAX_TOKENS` | Max response tokens |
264
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_TEMPERATURE` | Sampling temperature |
265
+
266
+ Without an LLM provider, core memory operations (remember, recall, forget, associate) work normally, but synthesis features will be unavailable.
267
+
268
+ ### Context Environment
269
+
270
+ The Context Environment provides server-side Python sandboxes for memory analysis and computation. See [Context Environment documentation](https://docs.memorylayer.ai/guides/context-environment/) for details.
271
+
272
+ **Configuration:**
273
+
274
+ | Variable | Default | Description |
275
+ |----------|---------|-------------|
276
+ | `MEMORYLAYER_CONTEXT_EXECUTOR` | `smolagents` | Executor backend (`smolagents` or `restricted`) |
277
+ | `MEMORYLAYER_CONTEXT_MAX_EXEC_SECONDS` | `30` | Timeout per code execution |
278
+ | `MEMORYLAYER_CONTEXT_MAX_OUTPUT_CHARS` | `50000` | Max captured stdout characters |
279
+ | `MEMORYLAYER_CONTEXT_QUERY_MAX_TOKENS` | `4096` | Max tokens for server-side LLM queries |
280
+ | `MEMORYLAYER_CONTEXT_MAX_MEMORY_BYTES` | `268435456` | Memory limit per sandbox (256 MB) |
281
+ | `MEMORYLAYER_CONTEXT_RLM_MAX_ITERATIONS` | `10` | Max iterations for RLM loops |
282
+ | `MEMORYLAYER_CONTEXT_RLM_MAX_EXEC_SECONDS` | `120` | Total timeout for RLM loops |
283
+ | `MEMORYLAYER_CONTEXT_MAX_OPERATIONS` | `1000000` | Max operations per sandbox execution |
284
+
285
+ ## Storage
286
+
287
+ The default storage backend is **SQLite** with **sqlite-vec** for vector operations. The database file defaults to `~/.config/memorylayer-server/memorylayer.db` and contains all memories, embeddings, associations, and session data.
288
+
289
+ **Override the data directory:**
290
+
291
+ ```bash
292
+ export MEMORYLAYER_DATA_DIR=/var/lib/memorylayer
293
+ ```
294
+
295
+ **Override the database path:**
296
+
297
+ ```bash
298
+ export MEMORYLAYER_SQLITE_STORAGE_PATH=/var/lib/memorylayer/data.db
299
+ ```
300
+
301
+ ## Recall Modes
302
+
303
+ The active recall mode is **RAG** (vector similarity + graph traversal). LLM and Hybrid modes are deprecated.
304
+
305
+ ## MCP Integration
306
+
307
+ The Model Context Protocol (MCP) server is a **separate TypeScript package** (`@scitrera/memorylayer-mcp-server`), not part of this Python server CLI.
308
+
309
+ To use MemoryLayer with Claude Code or Claude Desktop:
310
+
311
+ 1. Start the HTTP server: `memorylayer serve`
312
+ 2. Install and configure the MCP server: `npm install -g @scitrera/memorylayer-mcp-server`
313
+
314
+ See the [MCP Server documentation](https://docs.memorylayer.ai/integrations/mcp-server/) for setup instructions.
315
+
316
+ ## Health Checks
317
+
318
+ - **`GET /health`** — Basic health check (returns immediately)
319
+ - **`GET /health/ready`** — Readiness check (verifies storage connectivity)
320
+
321
+ The Docker image includes a built-in health check at `/health` (every 30s, 10s startup grace period).
322
+
323
+ ## Documentation
324
+
325
+ - **Website:** [https://memorylayer.ai](https://memorylayer.ai)
326
+ - **Docs:** [https://docs.memorylayer.ai](https://docs.memorylayer.ai)
327
+ - **GitHub:** [https://github.com/scitrera/memorylayer](https://github.com/scitrera/memorylayer)
328
+
329
+ ## License
330
+
331
+ Apache 2.0 License -- see [LICENSE](../LICENSE) for details.
@@ -0,0 +1,256 @@
1
+ # MemoryLayer.ai Server
2
+
3
+ **API-first memory infrastructure for LLM-powered agents.**
4
+
5
+ MemoryLayer provides cognitive memory capabilities for AI agents, including episodic, semantic, procedural, and working memory with vector-based retrieval, graph-based associations, and server-side computation sandboxes.
6
+
7
+ ## Features
8
+
9
+ - **Cognitive Memory Architecture** — Episodic, semantic, procedural, and working memory types
10
+ - **Vector Search** — SQLite with sqlite-vec for efficient similarity search
11
+ - **Knowledge Graph** — 60+ relationship types organized into 11 categories for memory associations
12
+ - **Context Environment** — Server-side Python sandboxes for memory analysis and computation
13
+ - **Session Management** — Working memory with TTL and commit to long-term storage
14
+ - **REST API** — Full-featured HTTP API for all memory operations
15
+ - **Multiple Embedding Providers** — OpenAI, Google GenAI, sentence-transformers (local), and mock (testing)
16
+ - **Health Endpoints** — `/health` and `/health/ready` for monitoring and readiness checks
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ # Basic installation
22
+ pip install memorylayer-server
23
+
24
+ # With OpenAI embeddings
25
+ pip install memorylayer-server[openai]
26
+
27
+ # With Google GenAI embeddings
28
+ pip install memorylayer-server[google]
29
+
30
+ # With local embeddings (sentence-transformers)
31
+ pip install memorylayer-server[local]
32
+
33
+ # All embedding providers
34
+ pip install memorylayer-server[all]
35
+ ```
36
+
37
+ **Package name:** `memorylayer-server` (PyPI)
38
+ **Import name:** `memorylayer_server`
39
+
40
+ ## Quick Start
41
+
42
+ ### Start the HTTP Server
43
+
44
+ ```bash
45
+ # Start on default port (61001)
46
+ memorylayer serve
47
+
48
+ # Custom port
49
+ memorylayer serve --port 8080
50
+
51
+ # Bind to all interfaces
52
+ memorylayer serve --host 0.0.0.0
53
+
54
+ # Debug mode
55
+ memorylayer serve --verbose
56
+ ```
57
+
58
+ ### Docker
59
+
60
+ The official Docker image comes with all optional dependencies pre-installed and defaults to `local` embeddings (no API key required):
61
+
62
+ ```bash
63
+ docker run -d \
64
+ --name memorylayer \
65
+ -p 61001:61001 \
66
+ -v memorylayer-data:/data \
67
+ scitrera/memorylayer-server
68
+ ```
69
+
70
+ **With OpenAI embeddings:**
71
+
72
+ ```bash
73
+ docker run -d \
74
+ --name memorylayer \
75
+ -p 61001:61001 \
76
+ -v memorylayer-data:/data \
77
+ -e MEMORYLAYER_EMBEDDING_PROVIDER=openai \
78
+ -e MEMORYLAYER_EMBEDDING_OPENAI_API_KEY=sk-... \
79
+ scitrera/memorylayer-server
80
+ ```
81
+
82
+ ## API Usage
83
+
84
+ The server exposes a REST API. Use any HTTP client, or install the Python SDK (`pip install memorylayer-client`) for a typed client:
85
+
86
+ ```python
87
+ from memorylayer import MemoryLayerClient
88
+
89
+ async with MemoryLayerClient(base_url="http://localhost:61001") as client:
90
+ # Store a memory
91
+ memory = await client.remember(
92
+ content="User prefers Python for backend development",
93
+ type="semantic",
94
+ importance=0.8,
95
+ tags=["preferences", "programming"]
96
+ )
97
+
98
+ # Recall memories
99
+ results = await client.recall(
100
+ query="What programming languages does the user like?",
101
+ limit=5
102
+ )
103
+
104
+ # Create associations
105
+ await client.associate(
106
+ source_id=memory.id,
107
+ target_id=other_memory.id,
108
+ relationship="related_to",
109
+ strength=0.9
110
+ )
111
+ ```
112
+
113
+ ## Configuration
114
+
115
+ ### Environment Variables
116
+
117
+ | Variable | Default | Description |
118
+ |----------|---------|-------------|
119
+ | `MEMORYLAYER_SERVER_HOST` | `127.0.0.1` | Server bind address |
120
+ | `MEMORYLAYER_SERVER_PORT` | `61001` | Server port |
121
+ | `MEMORYLAYER_DATA_DIR` | `~/.config/memorylayer-server` | Data directory |
122
+ | `MEMORYLAYER_SQLITE_STORAGE_PATH` | `memorylayer.db` | SQLite database path (relative to data dir) |
123
+ | `MEMORYLAYER_EMBEDDING_PROVIDER` | `local` | Embedding provider (`openai`, `google`, `local`, `mock`) |
124
+ | `MEMORYLAYER_EMBEDDING_OPENAI_API_KEY` | — | OpenAI API key |
125
+ | `MEMORYLAYER_EMBEDDING_GOOGLE_API_KEY` | — | Google API key |
126
+
127
+ ### Embedding Providers
128
+
129
+ **Local (sentence-transformers)** — Default provider, no API key required:
130
+
131
+ ```bash
132
+ pip install memorylayer-server[local]
133
+ export MEMORYLAYER_EMBEDDING_PROVIDER=local
134
+ memorylayer serve
135
+ ```
136
+
137
+ **OpenAI:**
138
+
139
+ ```bash
140
+ pip install memorylayer-server[openai]
141
+ export MEMORYLAYER_EMBEDDING_PROVIDER=openai
142
+ export MEMORYLAYER_EMBEDDING_OPENAI_API_KEY=sk-...
143
+ memorylayer serve
144
+ ```
145
+
146
+ **Google GenAI:**
147
+
148
+ ```bash
149
+ pip install memorylayer-server[google]
150
+ export MEMORYLAYER_EMBEDDING_PROVIDER=google
151
+ export MEMORYLAYER_EMBEDDING_GOOGLE_API_KEY=...
152
+ memorylayer serve
153
+ ```
154
+
155
+ **Mock (testing only):**
156
+
157
+ ```bash
158
+ export MEMORYLAYER_EMBEDDING_PROVIDER=mock
159
+ memorylayer serve
160
+ ```
161
+
162
+ ### LLM Provider (Optional)
163
+
164
+ Some features (reflection, smart extraction, context environment queries) require an LLM provider configured via profiles:
165
+
166
+ ```bash
167
+ # OpenAI
168
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=openai
169
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=sk-...
170
+
171
+ # Anthropic Claude
172
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=anthropic
173
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=sk-ant-...
174
+
175
+ # Google Gemini
176
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_PROVIDER=google
177
+ export MEMORYLAYER_LLM_PROFILE_DEFAULT_API_KEY=...
178
+ ```
179
+
180
+ **Profile configuration variables** (replace `DEFAULT` with any profile name):
181
+
182
+ | Variable | Description |
183
+ |----------|-------------|
184
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_PROVIDER` | Provider (`openai`, `anthropic`, `google`) |
185
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_API_KEY` | API key |
186
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_MODEL` | Model name override |
187
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_BASE_URL` | Custom API base URL |
188
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_MAX_TOKENS` | Max response tokens |
189
+ | `MEMORYLAYER_LLM_PROFILE_<NAME>_TEMPERATURE` | Sampling temperature |
190
+
191
+ Without an LLM provider, core memory operations (remember, recall, forget, associate) work normally, but synthesis features will be unavailable.
192
+
193
+ ### Context Environment
194
+
195
+ The Context Environment provides server-side Python sandboxes for memory analysis and computation. See [Context Environment documentation](https://docs.memorylayer.ai/guides/context-environment/) for details.
196
+
197
+ **Configuration:**
198
+
199
+ | Variable | Default | Description |
200
+ |----------|---------|-------------|
201
+ | `MEMORYLAYER_CONTEXT_EXECUTOR` | `smolagents` | Executor backend (`smolagents` or `restricted`) |
202
+ | `MEMORYLAYER_CONTEXT_MAX_EXEC_SECONDS` | `30` | Timeout per code execution |
203
+ | `MEMORYLAYER_CONTEXT_MAX_OUTPUT_CHARS` | `50000` | Max captured stdout characters |
204
+ | `MEMORYLAYER_CONTEXT_QUERY_MAX_TOKENS` | `4096` | Max tokens for server-side LLM queries |
205
+ | `MEMORYLAYER_CONTEXT_MAX_MEMORY_BYTES` | `268435456` | Memory limit per sandbox (256 MB) |
206
+ | `MEMORYLAYER_CONTEXT_RLM_MAX_ITERATIONS` | `10` | Max iterations for RLM loops |
207
+ | `MEMORYLAYER_CONTEXT_RLM_MAX_EXEC_SECONDS` | `120` | Total timeout for RLM loops |
208
+ | `MEMORYLAYER_CONTEXT_MAX_OPERATIONS` | `1000000` | Max operations per sandbox execution |
209
+
210
+ ## Storage
211
+
212
+ The default storage backend is **SQLite** with **sqlite-vec** for vector operations. The database file defaults to `~/.config/memorylayer-server/memorylayer.db` and contains all memories, embeddings, associations, and session data.
213
+
214
+ **Override the data directory:**
215
+
216
+ ```bash
217
+ export MEMORYLAYER_DATA_DIR=/var/lib/memorylayer
218
+ ```
219
+
220
+ **Override the database path:**
221
+
222
+ ```bash
223
+ export MEMORYLAYER_SQLITE_STORAGE_PATH=/var/lib/memorylayer/data.db
224
+ ```
225
+
226
+ ## Recall Modes
227
+
228
+ The active recall mode is **RAG** (vector similarity + graph traversal). LLM and Hybrid modes are deprecated.
229
+
230
+ ## MCP Integration
231
+
232
+ The Model Context Protocol (MCP) server is a **separate TypeScript package** (`@scitrera/memorylayer-mcp-server`), not part of this Python server CLI.
233
+
234
+ To use MemoryLayer with Claude Code or Claude Desktop:
235
+
236
+ 1. Start the HTTP server: `memorylayer serve`
237
+ 2. Install and configure the MCP server: `npm install -g @scitrera/memorylayer-mcp-server`
238
+
239
+ See the [MCP Server documentation](https://docs.memorylayer.ai/integrations/mcp-server/) for setup instructions.
240
+
241
+ ## Health Checks
242
+
243
+ - **`GET /health`** — Basic health check (returns immediately)
244
+ - **`GET /health/ready`** — Readiness check (verifies storage connectivity)
245
+
246
+ The Docker image includes a built-in health check at `/health` (every 30s, 10s startup grace period).
247
+
248
+ ## Documentation
249
+
250
+ - **Website:** [https://memorylayer.ai](https://memorylayer.ai)
251
+ - **Docs:** [https://docs.memorylayer.ai](https://docs.memorylayer.ai)
252
+ - **GitHub:** [https://github.com/scitrera/memorylayer](https://github.com/scitrera/memorylayer)
253
+
254
+ ## License
255
+
256
+ Apache 2.0 License -- see [LICENSE](../LICENSE) for details.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "memorylayer-server"
3
- version = "0.0.3"
3
+ version = "0.0.4"
4
4
  description = "MemoryLayer.ai - API-first memory infrastructure for LLM-powered agents (open source core)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -19,8 +19,9 @@ classifiers = [
19
19
  ]
20
20
 
21
21
  dependencies = [
22
- "scitrera-app-framework>=0.0.67",
22
+ "scitrera-app-framework>=0.0.69",
23
23
  "scitrera-rt-data>=0.0.7",
24
+ "scitrera-ext-cachetools>=0.0.1",
24
25
  "fastapi>=0.128.7",
25
26
  "uvicorn[standard]>=0.30.0",
26
27
  "pydantic>=2.12.5",
@@ -118,6 +119,8 @@ testpaths = ["tests"]
118
119
  markers = [
119
120
  "slow: marks tests as slow (deselect with '-m \"not slow\"')",
120
121
  "integration: marks tests as integration tests (deselect with '-m \"not integration\"')",
122
+ "llm: marks tests requiring a live LLM provider (deselect with '-m \"not llm\"')",
123
+ "llm_quality: marks LLM output quality tests (deselect with '-m \"not llm_quality\"')",
121
124
  ]
122
125
 
123
126
  [tool.mypy]
@@ -1,3 +1,3 @@
1
1
  """MemoryLayer.ai - API-first memory infrastructure for LLM-powered agents."""
2
2
 
3
- __version__ = "0.0.3"
3
+ __version__ = "0.0.4"
@@ -9,19 +9,15 @@ Endpoints:
9
9
  import logging
10
10
 
11
11
  from fastapi import APIRouter, HTTPException, Depends, Request, status
12
- from scitrera_app_framework import Plugin, Variables, get_extension
12
+ from scitrera_app_framework import Plugin, Variables
13
13
 
14
14
  from .. import EXT_MULTI_API_ROUTERS
15
15
 
16
16
  from ...models.association import AssociateInput
17
17
  from memorylayer_server.lifecycle.fastapi import get_logger, get_variables_dep
18
18
  from ...services.association import AssociationService
19
- from ...services.authentication import (
20
- AuthenticationService,
21
- AuthenticationError,
22
- EXT_AUTHENTICATION_SERVICE,
23
- )
24
- from ...services.authorization import AuthorizationService, EXT_AUTHORIZATION_SERVICE
19
+ from ...services.authentication import AuthenticationService
20
+ from ...services.authorization import AuthorizationService
25
21
  from .schemas import (
26
22
  AssociationCreateRequest,
27
23
  MemoryTraverseRequest,
@@ -30,21 +26,12 @@ from .schemas import (
30
26
  GraphQueryResult,
31
27
  ErrorResponse,
32
28
  )
29
+ from .deps import get_auth_service, get_authz_service
33
30
 
34
31
  router = APIRouter(prefix='/v1', tags=["associations"])
35
32
 
36
33
 
37
34
  # Dependencies for services
38
- async def get_auth_service(v: Variables = Depends(get_variables_dep)) -> AuthenticationService:
39
- """Get authentication service instance."""
40
- return get_extension(EXT_AUTHENTICATION_SERVICE, v)
41
-
42
-
43
- async def get_authz_service(v: Variables = Depends(get_variables_dep)) -> AuthorizationService:
44
- """Get authorization service instance."""
45
- return get_extension(EXT_AUTHORIZATION_SERVICE, v)
46
-
47
-
48
35
  async def get_association_service(v: Variables = Depends(get_variables_dep)) -> AssociationService:
49
36
  """Get association service instance from dependency injection."""
50
37
  from ...services.association import get_association_service as _get_association_service