55import logging
66from collections .abc import Mapping , Sequence
77from types import TracebackType
8- from typing import TYPE_CHECKING , Any , NoReturn , TypedDict
8+ from typing import TYPE_CHECKING , Any , Literal , NoReturn , TypedDict
99
1010import requests
1111from memmachine_common .api .spec import (
@@ -186,6 +186,11 @@ def create_project(
186186 description : str = "" ,
187187 embedder : str = "" ,
188188 reranker : str = "" ,
189+ backend : Literal ["declarative" , "event" ] | None = None ,
190+ vector_graph_store : str = "" ,
191+ vector_store : str = "" ,
192+ segment_store : str = "" ,
193+ properties_schema : dict [str , str ] | None = None ,
189194 timeout : int | None = None ,
190195 ) -> Project :
191196 """
@@ -199,6 +204,19 @@ def create_project(
199204 Use "" to let server use its configured defaults, or specify a model name like "default".
200205 reranker: Reranker model name to use (default: "").
201206 Use "" to let server use its configured defaults, or specify a model name like "default".
207+ backend: Long-term-memory backend selector. ``None`` (default)
208+ lets the server pick its configured default. Set to ``"event"``
209+ for the VectorStore + SegmentStore event backend or
210+ ``"declarative"`` for the legacy VectorGraphStore backend.
211+ vector_graph_store: VectorGraphStore resource id (declarative
212+ backend only). Use ``""`` to let the server pick its default.
213+ vector_store: VectorStore resource id (event backend only). Use
214+ ``""`` to let the server pick its default.
215+ segment_store: SQL engine resource id backing the segment store
216+ (event backend only). Use ``""`` for the server default.
217+ properties_schema: User-defined filterable property names mapped
218+ to type strings ("bool", "int", "float", "str", "datetime").
219+ Event backend only. Defaults to no user-defined properties.
202220 timeout: Request timeout in seconds (uses client default if not provided)
203221
204222 Returns:
@@ -218,7 +236,15 @@ def create_project(
218236 org_id = org_id ,
219237 project_id = project_id ,
220238 description = description ,
221- config = ProjectConfig (embedder = embedder , reranker = reranker ),
239+ config = ProjectConfig (
240+ backend = backend ,
241+ embedder = embedder ,
242+ reranker = reranker ,
243+ vector_graph_store = vector_graph_store ,
244+ vector_store = vector_store ,
245+ segment_store = segment_store ,
246+ properties_schema = properties_schema or {},
247+ ),
222248 )
223249 data = spec .model_dump (exclude_none = True )
224250
@@ -337,6 +363,11 @@ def _create_project_with_retry(
337363 description : str ,
338364 embedder : str ,
339365 reranker : str ,
366+ backend : Literal ["declarative" , "event" ] | None ,
367+ vector_graph_store : str ,
368+ vector_store : str ,
369+ segment_store : str ,
370+ properties_schema : dict [str , str ] | None ,
340371 timeout : int | None ,
341372 ) -> Project :
342373 """Create project, handling concurrent creation (409) by fetching existing."""
@@ -347,6 +378,11 @@ def _create_project_with_retry(
347378 description = description ,
348379 embedder = embedder ,
349380 reranker = reranker ,
381+ backend = backend ,
382+ vector_graph_store = vector_graph_store ,
383+ vector_store = vector_store ,
384+ segment_store = segment_store ,
385+ properties_schema = properties_schema ,
350386 timeout = timeout ,
351387 )
352388 except requests .HTTPError as create_error :
@@ -371,6 +407,11 @@ def get_or_create_project(
371407 description : str = "" ,
372408 embedder : str = "" ,
373409 reranker : str = "" ,
410+ backend : Literal ["declarative" , "event" ] | None = None ,
411+ vector_graph_store : str = "" ,
412+ vector_store : str = "" ,
413+ segment_store : str = "" ,
414+ properties_schema : dict [str , str ] | None = None ,
374415 timeout : int | None = None ,
375416 ) -> Project :
376417 """
@@ -391,6 +432,18 @@ def get_or_create_project(
391432 reranker: Reranker model name to use (default: "").
392433 Only used if project needs to be created.
393434 Use "" to let server use its configured defaults, or specify a model name like "default".
435+ backend: Long-term-memory backend selector for the project being
436+ created. Ignored if the project already exists. See
437+ :py:meth:`create_project` for accepted values.
438+ vector_graph_store: VectorGraphStore resource id (declarative
439+ backend only). Only used if project needs to be created.
440+ vector_store: VectorStore resource id (event backend only).
441+ Only used if project needs to be created.
442+ segment_store: SQL engine resource id for the segment store
443+ (event backend only). Only used if project needs to be created.
444+ properties_schema: User-defined filterable property names mapped
445+ to type strings (event backend only). Only used if project
446+ needs to be created.
394447 timeout: Request timeout in seconds (uses client default if not provided)
395448
396449 Returns:
@@ -416,7 +469,17 @@ def get_or_create_project(
416469 # If project doesn't exist (404), create it
417470 if e .response .status_code == 404 :
418471 return self ._create_project_with_retry (
419- org_id , project_id , description , embedder , reranker , timeout
472+ org_id ,
473+ project_id ,
474+ description ,
475+ embedder ,
476+ reranker ,
477+ backend ,
478+ vector_graph_store ,
479+ vector_store ,
480+ segment_store ,
481+ properties_schema ,
482+ timeout ,
420483 )
421484 # Re-raise other HTTP errors
422485 raise
0 commit comments