cortexdbai 0.10.0__tar.gz → 0.10.2__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 (95) hide show
  1. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/.gitignore +12 -0
  2. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/PKG-INFO +2 -2
  3. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/README.md +1 -1
  4. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/__init__.py +1 -1
  5. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/v1/client.py +27 -3
  6. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/pyproject.toml +186 -186
  7. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/__init__.py +0 -0
  8. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ag2/__init__.py +0 -0
  9. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ag2/agent.py +0 -0
  10. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ag2/tools.py +0 -0
  11. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/agno/__init__.py +0 -0
  12. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/agno/memory.py +0 -0
  13. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/agno/tools.py +0 -0
  14. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/autogen/__init__.py +0 -0
  15. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/autogen/agent.py +0 -0
  16. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/autogen/tools.py +0 -0
  17. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/beeai/__init__.py +0 -0
  18. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/beeai/memory.py +0 -0
  19. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/beeai/tools.py +0 -0
  20. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/camel/__init__.py +0 -0
  21. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/camel/memory.py +0 -0
  22. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/camel/tools.py +0 -0
  23. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/controlflow/__init__.py +0 -0
  24. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/controlflow/memory.py +0 -0
  25. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/crewai/__init__.py +0 -0
  26. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/crewai/memory.py +0 -0
  27. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/crewai/tools.py +0 -0
  28. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/deepinfra/__init__.py +0 -0
  29. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/deepinfra/config.py +0 -0
  30. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/deepinfra/embeddings.py +0 -0
  31. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/deepinfra/openai_compat.py +0 -0
  32. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dify/__init__.py +0 -0
  33. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dify/manifest.yaml +0 -0
  34. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dify/tool.py +0 -0
  35. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dspy/__init__.py +0 -0
  36. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dspy/memory.py +0 -0
  37. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/dspy/retriever.py +0 -0
  38. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/fireworks/__init__.py +0 -0
  39. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/fireworks/config.py +0 -0
  40. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/fireworks/embeddings.py +0 -0
  41. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/fireworks/openai_compat.py +0 -0
  42. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/flowise/__init__.py +0 -0
  43. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/flowise/node.py +0 -0
  44. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/google_adk/__init__.py +0 -0
  45. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/google_adk/tools.py +0 -0
  46. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/groq/__init__.py +0 -0
  47. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/groq/config.py +0 -0
  48. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/groq/embeddings.py +0 -0
  49. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/groq/openai_compat.py +0 -0
  50. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/hermes/__init__.py +0 -0
  51. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/hermes/provider.py +0 -0
  52. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/instructor/__init__.py +0 -0
  53. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/instructor/memory.py +0 -0
  54. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langchain/__init__.py +0 -0
  55. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langchain/memory.py +0 -0
  56. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langchain/retriever.py +0 -0
  57. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langchain/tools.py +0 -0
  58. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langgraph/__init__.py +0 -0
  59. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/langgraph/memory.py +0 -0
  60. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/letta/__init__.py +0 -0
  61. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/letta/storage.py +0 -0
  62. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/llamaindex/__init__.py +0 -0
  63. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/llamaindex/memory.py +0 -0
  64. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/nemo_guardrails/__init__.py +0 -0
  65. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/nemo_guardrails/actions.py +0 -0
  66. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/nemo_guardrails/knowledge_base.py +0 -0
  67. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ollama/__init__.py +0 -0
  68. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ollama/config.py +0 -0
  69. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/ollama/embeddings.py +0 -0
  70. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/openai_agents/__init__.py +0 -0
  71. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/openai_agents/tools.py +0 -0
  72. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/prefect/__init__.py +0 -0
  73. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/prefect/blocks.py +0 -0
  74. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/prefect/tasks.py +0 -0
  75. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/pydanticai/__init__.py +0 -0
  76. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/pydanticai/dependencies.py +0 -0
  77. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/pydanticai/tools.py +0 -0
  78. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/smolagents/__init__.py +0 -0
  79. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/smolagents/tools.py +0 -0
  80. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/temporal/__init__.py +0 -0
  81. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/temporal/activities.py +0 -0
  82. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/temporal/interceptor.py +0 -0
  83. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/together/__init__.py +0 -0
  84. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/together/config.py +0 -0
  85. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/together/embeddings.py +0 -0
  86. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/together/openai_compat.py +0 -0
  87. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/vllm/__init__.py +0 -0
  88. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/vllm/config.py +0 -0
  89. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/vllm/embeddings.py +0 -0
  90. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/integrations/vllm/openai_compat.py +0 -0
  91. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/py.typed +0 -0
  92. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/v1/__init__.py +0 -0
  93. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/cortexdb/v1/exceptions.py +0 -0
  94. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/tests/__init__.py +0 -0
  95. {cortexdbai-0.10.0 → cortexdbai-0.10.2}/tests/test_conflicts.py +0 -0
@@ -80,3 +80,15 @@ local-instance/
80
80
 
81
81
  # doc-claims verifier scratch output
82
82
  tools/verifier_out*/
83
+
84
+ # Generated benchmark / runtime data (audit M-10: hundreds of untracked
85
+ # data dirs at the workspace root slow every git status/search and risk
86
+ # being packaged; results JSONs are artifacts, never source)
87
+ benchmarks/data_*/
88
+ benchmarks/**/fast_results/
89
+ data_*/
90
+ *_data/
91
+ cortexdb_data*/
92
+ server_results/
93
+ *.log
94
+ docker_build.log
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cortexdbai
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: The Long-Term Memory Layer for AI Systems
5
5
  Project-URL: Homepage, https://cortexdb.ai
6
6
  Project-URL: Documentation, https://docs.cortexdb.ai
@@ -187,7 +187,7 @@ ans = c.answer("ws:demo", "What changed in payments recently?")
187
187
 
188
188
  # Forget — GDPR erasure. confirm_all wipes the whole scope.
189
189
  c.forget("ws:demo", confirm_all=True, cascade="redact_events",
190
- audit_note="GDPR Article 17 request")
190
+ reason="GDPR Article 17 request")
191
191
 
192
192
  # Layer reads (paginated { items, has_more }).
193
193
  c.events("ws:demo")
@@ -74,7 +74,7 @@ ans = c.answer("ws:demo", "What changed in payments recently?")
74
74
 
75
75
  # Forget — GDPR erasure. confirm_all wipes the whole scope.
76
76
  c.forget("ws:demo", confirm_all=True, cascade="redact_events",
77
- audit_note="GDPR Article 17 request")
77
+ reason="GDPR Article 17 request")
78
78
 
79
79
  # Layer reads (paginated { items, has_more }).
80
80
  c.events("ws:demo")
@@ -49,7 +49,7 @@ from cortexdb import v1 # the explicit submodule namespace
49
49
  Cortex = V1Client
50
50
  AsyncCortex = AsyncV1Client
51
51
 
52
- __version__ = "0.10.0"
52
+ __version__ = "0.10.1"
53
53
  __all__ = [
54
54
  # Clients (preferred top-level names)
55
55
  "Cortex",
@@ -33,7 +33,7 @@ from cortexdb.v1.exceptions import (
33
33
 
34
34
 
35
35
  DEFAULT_TIMEOUT_SECONDS = 60.0
36
- DEFAULT_API_URL = "http://localhost:3142"
36
+ DEFAULT_API_URL = "http://localhost:3141"
37
37
 
38
38
 
39
39
  # ── Internal helpers ────────────────────────────────────────────────────────
@@ -384,7 +384,9 @@ class V1Client:
384
384
  processor. A ``triple`` (subject/predicate/object dict, see
385
385
  :func:`_envelope`) writes a fact deterministically — no LLM extractor
386
386
  in the loop (server >= v0.7.0). ``wait`` selects sync semantics:
387
- ``captured``, ``indexed``, ``consolidated``."""
387
+ ``captured``, ``indexed``, ``consolidated`` (``accepted`` is a valid
388
+ alias for the omitted default on server >= v0.8.7; anything else
389
+ 422s listing the valid values)."""
388
390
  env = _envelope(
389
391
  scope,
390
392
  role=role,
@@ -458,7 +460,10 @@ class V1Client:
458
460
  ``wait`` turns the batch into a barrier: pass ``"indexed"`` (or
459
461
  ``"consolidated"`` etc.) to block until every accepted event reaches
460
462
  that stage before returning — the batch analogue of
461
- :meth:`experience`'s ``wait``, ideal for bulk-ingest-then-recall."""
463
+ :meth:`experience`'s ``wait``, ideal for bulk-ingest-then-recall.
464
+ Items whose envelope carries a ``triple`` write their facts
465
+ deterministically in bulk too (server >= v0.8.7; older servers only
466
+ did this on the single-write endpoint)."""
462
467
  envelopes = [
463
468
  _envelope(
464
469
  scope=str(item.get("scope", scope)),
@@ -900,6 +905,25 @@ class V1Client:
900
905
  Requires ``diagnostics.read``. Stability: ``experimental``."""
901
906
  return self._get("/v1/admin/layers/stats")
902
907
 
908
+ def index_audit(
909
+ self,
910
+ *,
911
+ repair: bool = False,
912
+ scope: Optional[str] = None,
913
+ ) -> dict:
914
+ """``POST /v1/admin/index-audit`` — WAL↔search-index self-audit.
915
+ Reports events whose search-index entries are missing; with
916
+ ``repair=True`` re-indexes them from stored state (server >= v0.8.7
917
+ also rebuilds missing content rows from the WAL event content).
918
+ ``scope`` restricts the audit and repair to one scope subtree
919
+ (honored on server >= v0.8.7; silently ignored before). Requires
920
+ ``diagnostics.read``. Synchronous full-WAL walk — can take seconds
921
+ to minutes on a large store. Stability: ``experimental``."""
922
+ body: dict = {"repair": repair}
923
+ if scope is not None:
924
+ body["scope"] = scope
925
+ return self._post("/v1/admin/index-audit", body)
926
+
903
927
  # ── low-level transport ──────────────────────────────────────────
904
928
 
905
929
  def _get(
@@ -1,186 +1,186 @@
1
- [build-system]
2
- requires = ["hatchling"]
3
- build-backend = "hatchling.build"
4
-
5
- [project]
6
- name = "cortexdbai"
7
- version = "0.10.0"
8
- description = "The Long-Term Memory Layer for AI Systems"
9
- readme = "README.md"
10
- license = "Apache-2.0"
11
- # 3.10+: the v1 module uses PEP 604 unions (`str | None`) in TypedDict
12
- # field annotations, which Python 3.9 cannot evaluate at class-definition
13
- # time even with `from __future__ import annotations`. Python 3.9 hit
14
- # end-of-life on 2025-10-31. Declaring >=3.10 means `pip install
15
- # cortexdbai` on 3.9 fails immediately with a clear "requires Python
16
- # 3.10+" error from pip — not a silent install followed by an obscure
17
- # `TypeError: Unable to evaluate type annotation 'str | None'` on the
18
- # first import.
19
- requires-python = ">=3.10"
20
- authors = [
21
- { name = "Prashant Malik", email = "prashant@cortexdb.ai" },
22
- ]
23
- keywords = ["ai", "memory", "llm", "knowledge-graph", "event-sourcing", "cortexdb"]
24
- classifiers = [
25
- "Development Status :: 4 - Beta",
26
- "Intended Audience :: Developers",
27
- "Programming Language :: Python :: 3",
28
- "Programming Language :: Python :: 3.10",
29
- "Programming Language :: Python :: 3.11",
30
- "Programming Language :: Python :: 3.12",
31
- "Programming Language :: Python :: 3.13",
32
- "Topic :: Scientific/Engineering :: Artificial Intelligence",
33
- "Topic :: Database",
34
- "Typing :: Typed",
35
- ]
36
- dependencies = [
37
- "requests>=2.31",
38
- "httpx>=0.24",
39
- "pydantic>=2.0",
40
- "tenacity>=8.0",
41
- ]
42
-
43
- [project.optional-dependencies]
44
- async = [
45
- "httpx[http2]",
46
- ]
47
- dev = [
48
- "pytest>=8.0",
49
- "pytest-asyncio>=0.23",
50
- "ruff>=0.4",
51
- ]
52
-
53
- # --- Framework / provider integrations -------------------------------------
54
- # Each extra pulls in only the third-party framework needed by the matching
55
- # submodule under `cortexdb.integrations.<name>`. The CortexDB client itself
56
- # is always the base package, so it is never listed here. Nothing under
57
- # `cortexdb.integrations` is imported at `import cortexdb` time — importing a
58
- # submodule without its extra raises a clean ModuleNotFoundError.
59
- autogen = [
60
- "ag2>=0.4",
61
- ]
62
- ag2 = [
63
- "ag2>=0.4",
64
- ]
65
- agno = [
66
- "agno>=1.0",
67
- ]
68
- langchain = [
69
- "langchain-core>=0.3",
70
- ]
71
- beeai = [
72
- "beeai-framework>=0.1",
73
- ]
74
- camel = [
75
- "camel-ai>=0.2",
76
- ]
77
- controlflow = [
78
- "controlflow>=0.11",
79
- ]
80
- crewai = [
81
- "crewai>=0.80",
82
- ]
83
- dify = []
84
- dspy = [
85
- "dspy>=2.0",
86
- ]
87
- flowise = []
88
- google-adk = [
89
- "google-adk>=0.1",
90
- ]
91
- hermes = []
92
- instructor = [
93
- "instructor>=1.0",
94
- "pydantic>=2.0",
95
- ]
96
- langgraph = [
97
- "langchain-core>=0.3",
98
- "langgraph-checkpoint>=2.0",
99
- ]
100
- letta = [
101
- "letta>=0.1",
102
- ]
103
- llamaindex = [
104
- "llama-index-core>=0.11",
105
- ]
106
- nemo-guardrails = [
107
- "nemoguardrails>=0.9",
108
- ]
109
- openai-agents = [
110
- "openai-agents>=0.1",
111
- ]
112
- prefect = [
113
- "prefect>=3.0",
114
- ]
115
- pydanticai = [
116
- "pydantic-ai>=0.1",
117
- ]
118
- smolagents = [
119
- "smolagents>=1.0",
120
- ]
121
- temporal = [
122
- "temporalio>=1.7",
123
- ]
124
- groq = [
125
- "httpx>=0.27",
126
- ]
127
- fireworks = [
128
- "httpx>=0.27",
129
- ]
130
- together = [
131
- "httpx>=0.27",
132
- ]
133
- deepinfra = [
134
- "httpx>=0.27",
135
- ]
136
- ollama = [
137
- "httpx>=0.27",
138
- ]
139
- vllm = [
140
- "httpx>=0.27",
141
- ]
142
- # Convenience: every framework/provider integration at once.
143
- all-integrations = [
144
- "ag2>=0.4",
145
- "agno>=1.0",
146
- "langchain-core>=0.3",
147
- "beeai-framework>=0.1",
148
- "camel-ai>=0.2",
149
- "controlflow>=0.11",
150
- "crewai>=0.80",
151
- "dspy>=2.0",
152
- "google-adk>=0.1",
153
- "instructor>=1.0",
154
- "langchain-core>=0.3",
155
- "langgraph-checkpoint>=2.0",
156
- "letta>=0.1",
157
- "llama-index-core>=0.11",
158
- "nemoguardrails>=0.9",
159
- "openai-agents>=0.1",
160
- "prefect>=3.0",
161
- "pydantic-ai>=0.1",
162
- "smolagents>=1.0",
163
- "temporalio>=1.7",
164
- "httpx>=0.27",
165
- ]
166
-
167
- [project.urls]
168
- Homepage = "https://cortexdb.ai"
169
- Documentation = "https://docs.cortexdb.ai"
170
- Repository = "https://github.com/cortexdb/cortexdb"
171
- Issues = "https://github.com/cortexdb/cortexdb/issues"
172
- Changelog = "https://github.com/cortexdb/cortexdb/blob/main/CHANGELOG.md"
173
-
174
- [tool.hatch.build.targets.wheel]
175
- packages = ["cortexdb"]
176
-
177
- [tool.ruff]
178
- target-version = "py310"
179
- line-length = 100
180
-
181
- [tool.ruff.lint]
182
- select = ["E", "F", "W", "I", "N", "UP", "B", "A", "SIM", "TCH"]
183
-
184
- [tool.pytest.ini_options]
185
- asyncio_mode = "auto"
186
- testpaths = ["tests"]
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "cortexdbai"
7
+ version = "0.10.2"
8
+ description = "The Long-Term Memory Layer for AI Systems"
9
+ readme = "README.md"
10
+ license = "Apache-2.0"
11
+ # 3.10+: the v1 module uses PEP 604 unions (`str | None`) in TypedDict
12
+ # field annotations, which Python 3.9 cannot evaluate at class-definition
13
+ # time even with `from __future__ import annotations`. Python 3.9 hit
14
+ # end-of-life on 2025-10-31. Declaring >=3.10 means `pip install
15
+ # cortexdbai` on 3.9 fails immediately with a clear "requires Python
16
+ # 3.10+" error from pip — not a silent install followed by an obscure
17
+ # `TypeError: Unable to evaluate type annotation 'str | None'` on the
18
+ # first import.
19
+ requires-python = ">=3.10"
20
+ authors = [
21
+ { name = "Prashant Malik", email = "prashant@cortexdb.ai" },
22
+ ]
23
+ keywords = ["ai", "memory", "llm", "knowledge-graph", "event-sourcing", "cortexdb"]
24
+ classifiers = [
25
+ "Development Status :: 4 - Beta",
26
+ "Intended Audience :: Developers",
27
+ "Programming Language :: Python :: 3",
28
+ "Programming Language :: Python :: 3.10",
29
+ "Programming Language :: Python :: 3.11",
30
+ "Programming Language :: Python :: 3.12",
31
+ "Programming Language :: Python :: 3.13",
32
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
33
+ "Topic :: Database",
34
+ "Typing :: Typed",
35
+ ]
36
+ dependencies = [
37
+ "requests>=2.31",
38
+ "httpx>=0.24",
39
+ "pydantic>=2.0",
40
+ "tenacity>=8.0",
41
+ ]
42
+
43
+ [project.optional-dependencies]
44
+ async = [
45
+ "httpx[http2]",
46
+ ]
47
+ dev = [
48
+ "pytest>=8.0",
49
+ "pytest-asyncio>=0.23",
50
+ "ruff>=0.4",
51
+ ]
52
+
53
+ # --- Framework / provider integrations -------------------------------------
54
+ # Each extra pulls in only the third-party framework needed by the matching
55
+ # submodule under `cortexdb.integrations.<name>`. The CortexDB client itself
56
+ # is always the base package, so it is never listed here. Nothing under
57
+ # `cortexdb.integrations` is imported at `import cortexdb` time — importing a
58
+ # submodule without its extra raises a clean ModuleNotFoundError.
59
+ autogen = [
60
+ "ag2>=0.4",
61
+ ]
62
+ ag2 = [
63
+ "ag2>=0.4",
64
+ ]
65
+ agno = [
66
+ "agno>=1.0",
67
+ ]
68
+ langchain = [
69
+ "langchain-core>=0.3",
70
+ ]
71
+ beeai = [
72
+ "beeai-framework>=0.1",
73
+ ]
74
+ camel = [
75
+ "camel-ai>=0.2",
76
+ ]
77
+ controlflow = [
78
+ "controlflow>=0.11",
79
+ ]
80
+ crewai = [
81
+ "crewai>=0.80",
82
+ ]
83
+ dify = []
84
+ dspy = [
85
+ "dspy>=2.0",
86
+ ]
87
+ flowise = []
88
+ google-adk = [
89
+ "google-adk>=0.1",
90
+ ]
91
+ hermes = []
92
+ instructor = [
93
+ "instructor>=1.0",
94
+ "pydantic>=2.0",
95
+ ]
96
+ langgraph = [
97
+ "langchain-core>=0.3",
98
+ "langgraph-checkpoint>=2.0",
99
+ ]
100
+ letta = [
101
+ "letta>=0.1",
102
+ ]
103
+ llamaindex = [
104
+ "llama-index-core>=0.11",
105
+ ]
106
+ nemo-guardrails = [
107
+ "nemoguardrails>=0.9",
108
+ ]
109
+ openai-agents = [
110
+ "openai-agents>=0.1",
111
+ ]
112
+ prefect = [
113
+ "prefect>=3.0",
114
+ ]
115
+ pydanticai = [
116
+ "pydantic-ai>=0.1",
117
+ ]
118
+ smolagents = [
119
+ "smolagents>=1.0",
120
+ ]
121
+ temporal = [
122
+ "temporalio>=1.7",
123
+ ]
124
+ groq = [
125
+ "httpx>=0.27",
126
+ ]
127
+ fireworks = [
128
+ "httpx>=0.27",
129
+ ]
130
+ together = [
131
+ "httpx>=0.27",
132
+ ]
133
+ deepinfra = [
134
+ "httpx>=0.27",
135
+ ]
136
+ ollama = [
137
+ "httpx>=0.27",
138
+ ]
139
+ vllm = [
140
+ "httpx>=0.27",
141
+ ]
142
+ # Convenience: every framework/provider integration at once.
143
+ all-integrations = [
144
+ "ag2>=0.4",
145
+ "agno>=1.0",
146
+ "langchain-core>=0.3",
147
+ "beeai-framework>=0.1",
148
+ "camel-ai>=0.2",
149
+ "controlflow>=0.11",
150
+ "crewai>=0.80",
151
+ "dspy>=2.0",
152
+ "google-adk>=0.1",
153
+ "instructor>=1.0",
154
+ "langchain-core>=0.3",
155
+ "langgraph-checkpoint>=2.0",
156
+ "letta>=0.1",
157
+ "llama-index-core>=0.11",
158
+ "nemoguardrails>=0.9",
159
+ "openai-agents>=0.1",
160
+ "prefect>=3.0",
161
+ "pydantic-ai>=0.1",
162
+ "smolagents>=1.0",
163
+ "temporalio>=1.7",
164
+ "httpx>=0.27",
165
+ ]
166
+
167
+ [project.urls]
168
+ Homepage = "https://cortexdb.ai"
169
+ Documentation = "https://docs.cortexdb.ai"
170
+ Repository = "https://github.com/cortexdb/cortexdb"
171
+ Issues = "https://github.com/cortexdb/cortexdb/issues"
172
+ Changelog = "https://github.com/cortexdb/cortexdb/blob/main/CHANGELOG.md"
173
+
174
+ [tool.hatch.build.targets.wheel]
175
+ packages = ["cortexdb"]
176
+
177
+ [tool.ruff]
178
+ target-version = "py310"
179
+ line-length = 100
180
+
181
+ [tool.ruff.lint]
182
+ select = ["E", "F", "W", "I", "N", "UP", "B", "A", "SIM", "TCH"]
183
+
184
+ [tool.pytest.ini_options]
185
+ asyncio_mode = "auto"
186
+ testpaths = ["tests"]