alma-memory 0.5.1__py3-none-any.whl → 0.7.0__py3-none-any.whl
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.
- alma/__init__.py +296 -226
- alma/compression/__init__.py +33 -0
- alma/compression/pipeline.py +980 -0
- alma/confidence/__init__.py +47 -47
- alma/confidence/engine.py +540 -540
- alma/confidence/types.py +351 -351
- alma/config/loader.py +157 -157
- alma/consolidation/__init__.py +23 -23
- alma/consolidation/engine.py +678 -678
- alma/consolidation/prompts.py +84 -84
- alma/core.py +1189 -430
- alma/domains/__init__.py +30 -30
- alma/domains/factory.py +359 -359
- alma/domains/schemas.py +448 -448
- alma/domains/types.py +272 -272
- alma/events/__init__.py +75 -75
- alma/events/emitter.py +285 -284
- alma/events/storage_mixin.py +246 -246
- alma/events/types.py +126 -126
- alma/events/webhook.py +425 -425
- alma/exceptions.py +49 -49
- alma/extraction/__init__.py +31 -31
- alma/extraction/auto_learner.py +265 -265
- alma/extraction/extractor.py +420 -420
- alma/graph/__init__.py +106 -106
- alma/graph/backends/__init__.py +32 -32
- alma/graph/backends/kuzu.py +624 -624
- alma/graph/backends/memgraph.py +432 -432
- alma/graph/backends/memory.py +236 -236
- alma/graph/backends/neo4j.py +417 -417
- alma/graph/base.py +159 -159
- alma/graph/extraction.py +198 -198
- alma/graph/store.py +860 -860
- alma/harness/__init__.py +35 -35
- alma/harness/base.py +386 -386
- alma/harness/domains.py +705 -705
- alma/initializer/__init__.py +37 -37
- alma/initializer/initializer.py +418 -418
- alma/initializer/types.py +250 -250
- alma/integration/__init__.py +62 -62
- alma/integration/claude_agents.py +444 -444
- alma/integration/helena.py +423 -423
- alma/integration/victor.py +471 -471
- alma/learning/__init__.py +101 -86
- alma/learning/decay.py +878 -0
- alma/learning/forgetting.py +1446 -1446
- alma/learning/heuristic_extractor.py +390 -390
- alma/learning/protocols.py +374 -374
- alma/learning/validation.py +346 -346
- alma/mcp/__init__.py +123 -45
- alma/mcp/__main__.py +156 -156
- alma/mcp/resources.py +122 -122
- alma/mcp/server.py +955 -591
- alma/mcp/tools.py +3254 -509
- alma/observability/__init__.py +91 -84
- alma/observability/config.py +302 -302
- alma/observability/guidelines.py +170 -0
- alma/observability/logging.py +424 -424
- alma/observability/metrics.py +583 -583
- alma/observability/tracing.py +440 -440
- alma/progress/__init__.py +21 -21
- alma/progress/tracker.py +607 -607
- alma/progress/types.py +250 -250
- alma/retrieval/__init__.py +134 -53
- alma/retrieval/budget.py +525 -0
- alma/retrieval/cache.py +1304 -1061
- alma/retrieval/embeddings.py +202 -202
- alma/retrieval/engine.py +850 -427
- alma/retrieval/modes.py +365 -0
- alma/retrieval/progressive.py +560 -0
- alma/retrieval/scoring.py +344 -344
- alma/retrieval/trust_scoring.py +637 -0
- alma/retrieval/verification.py +797 -0
- alma/session/__init__.py +19 -19
- alma/session/manager.py +442 -399
- alma/session/types.py +288 -288
- alma/storage/__init__.py +101 -90
- alma/storage/archive.py +233 -0
- alma/storage/azure_cosmos.py +1259 -1259
- alma/storage/base.py +1083 -583
- alma/storage/chroma.py +1443 -1443
- alma/storage/constants.py +103 -103
- alma/storage/file_based.py +614 -614
- alma/storage/migrations/__init__.py +21 -21
- alma/storage/migrations/base.py +321 -321
- alma/storage/migrations/runner.py +323 -323
- alma/storage/migrations/version_stores.py +337 -337
- alma/storage/migrations/versions/__init__.py +11 -11
- alma/storage/migrations/versions/v1_0_0.py +373 -373
- alma/storage/migrations/versions/v1_1_0_workflow_context.py +551 -0
- alma/storage/pinecone.py +1080 -1080
- alma/storage/postgresql.py +1948 -1559
- alma/storage/qdrant.py +1306 -1306
- alma/storage/sqlite_local.py +3041 -1457
- alma/testing/__init__.py +46 -46
- alma/testing/factories.py +301 -301
- alma/testing/mocks.py +389 -389
- alma/types.py +292 -264
- alma/utils/__init__.py +19 -0
- alma/utils/tokenizer.py +521 -0
- alma/workflow/__init__.py +83 -0
- alma/workflow/artifacts.py +170 -0
- alma/workflow/checkpoint.py +311 -0
- alma/workflow/context.py +228 -0
- alma/workflow/outcomes.py +189 -0
- alma/workflow/reducers.py +393 -0
- {alma_memory-0.5.1.dist-info → alma_memory-0.7.0.dist-info}/METADATA +210 -72
- alma_memory-0.7.0.dist-info/RECORD +112 -0
- alma_memory-0.5.1.dist-info/RECORD +0 -93
- {alma_memory-0.5.1.dist-info → alma_memory-0.7.0.dist-info}/WHEEL +0 -0
- {alma_memory-0.5.1.dist-info → alma_memory-0.7.0.dist-info}/top_level.txt +0 -0
alma/storage/constants.py
CHANGED
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
"""
|
|
2
|
-
ALMA Storage Constants.
|
|
3
|
-
|
|
4
|
-
Canonical naming conventions for memory types across all storage backends.
|
|
5
|
-
This ensures consistency for:
|
|
6
|
-
- Data migration between backends
|
|
7
|
-
- Backend-agnostic code
|
|
8
|
-
- Documentation consistency
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
from typing import Dict
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class MemoryType:
|
|
15
|
-
"""
|
|
16
|
-
Canonical memory type identifiers.
|
|
17
|
-
|
|
18
|
-
These are the internal names used consistently across all backends.
|
|
19
|
-
Each backend may add a prefix or transform these for their specific
|
|
20
|
-
storage format, but the canonical names remain constant.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
HEURISTICS = "heuristics"
|
|
24
|
-
OUTCOMES = "outcomes"
|
|
25
|
-
PREFERENCES = "preferences"
|
|
26
|
-
DOMAIN_KNOWLEDGE = "domain_knowledge"
|
|
27
|
-
ANTI_PATTERNS = "anti_patterns"
|
|
28
|
-
|
|
29
|
-
# All memory types as a tuple for iteration
|
|
30
|
-
ALL = (
|
|
31
|
-
HEURISTICS,
|
|
32
|
-
OUTCOMES,
|
|
33
|
-
PREFERENCES,
|
|
34
|
-
DOMAIN_KNOWLEDGE,
|
|
35
|
-
ANTI_PATTERNS,
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
# Memory types that support embeddings/vector search
|
|
39
|
-
VECTOR_ENABLED = (
|
|
40
|
-
HEURISTICS,
|
|
41
|
-
OUTCOMES,
|
|
42
|
-
DOMAIN_KNOWLEDGE,
|
|
43
|
-
ANTI_PATTERNS,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def get_table_name(memory_type: str, prefix: str = "") -> str:
|
|
48
|
-
"""
|
|
49
|
-
Get the table/container name for a memory type.
|
|
50
|
-
|
|
51
|
-
Args:
|
|
52
|
-
memory_type: One of the MemoryType constants
|
|
53
|
-
prefix: Optional prefix to add (e.g., "alma_" for PostgreSQL)
|
|
54
|
-
|
|
55
|
-
Returns:
|
|
56
|
-
The formatted table/container name
|
|
57
|
-
|
|
58
|
-
Example:
|
|
59
|
-
>>> get_table_name(MemoryType.HEURISTICS, "alma_")
|
|
60
|
-
'alma_heuristics'
|
|
61
|
-
>>> get_table_name(MemoryType.DOMAIN_KNOWLEDGE)
|
|
62
|
-
'domain_knowledge'
|
|
63
|
-
"""
|
|
64
|
-
if memory_type not in MemoryType.ALL:
|
|
65
|
-
raise ValueError(f"Unknown memory type: {memory_type}")
|
|
66
|
-
return f"{prefix}{memory_type}"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def get_table_names(prefix: str = "") -> Dict[str, str]:
|
|
70
|
-
"""
|
|
71
|
-
Get all table/container names with an optional prefix.
|
|
72
|
-
|
|
73
|
-
Args:
|
|
74
|
-
prefix: Optional prefix to add (e.g., "alma_" for PostgreSQL)
|
|
75
|
-
|
|
76
|
-
Returns:
|
|
77
|
-
Dict mapping canonical memory type to table/container name
|
|
78
|
-
|
|
79
|
-
Example:
|
|
80
|
-
>>> get_table_names("alma_")
|
|
81
|
-
{
|
|
82
|
-
'heuristics': 'alma_heuristics',
|
|
83
|
-
'outcomes': 'alma_outcomes',
|
|
84
|
-
'preferences': 'alma_preferences',
|
|
85
|
-
'domain_knowledge': 'alma_domain_knowledge',
|
|
86
|
-
'anti_patterns': 'alma_anti_patterns',
|
|
87
|
-
}
|
|
88
|
-
"""
|
|
89
|
-
return {mt: get_table_name(mt, prefix) for mt in MemoryType.ALL}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# Pre-computed table name mappings for each backend
|
|
93
|
-
# These are the canonical mappings that should be used
|
|
94
|
-
|
|
95
|
-
# PostgreSQL uses alma_ prefix with underscores
|
|
96
|
-
POSTGRESQL_TABLE_NAMES = get_table_names("alma_")
|
|
97
|
-
|
|
98
|
-
# SQLite uses no prefix (local file-based, no collision risk)
|
|
99
|
-
SQLITE_TABLE_NAMES = get_table_names("")
|
|
100
|
-
|
|
101
|
-
# Azure Cosmos uses alma_ prefix with underscores (standardized)
|
|
102
|
-
# Note: Previously used hyphens, now standardized to underscores
|
|
103
|
-
AZURE_COSMOS_CONTAINER_NAMES = get_table_names("alma_")
|
|
1
|
+
"""
|
|
2
|
+
ALMA Storage Constants.
|
|
3
|
+
|
|
4
|
+
Canonical naming conventions for memory types across all storage backends.
|
|
5
|
+
This ensures consistency for:
|
|
6
|
+
- Data migration between backends
|
|
7
|
+
- Backend-agnostic code
|
|
8
|
+
- Documentation consistency
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from typing import Dict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class MemoryType:
|
|
15
|
+
"""
|
|
16
|
+
Canonical memory type identifiers.
|
|
17
|
+
|
|
18
|
+
These are the internal names used consistently across all backends.
|
|
19
|
+
Each backend may add a prefix or transform these for their specific
|
|
20
|
+
storage format, but the canonical names remain constant.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
HEURISTICS = "heuristics"
|
|
24
|
+
OUTCOMES = "outcomes"
|
|
25
|
+
PREFERENCES = "preferences"
|
|
26
|
+
DOMAIN_KNOWLEDGE = "domain_knowledge"
|
|
27
|
+
ANTI_PATTERNS = "anti_patterns"
|
|
28
|
+
|
|
29
|
+
# All memory types as a tuple for iteration
|
|
30
|
+
ALL = (
|
|
31
|
+
HEURISTICS,
|
|
32
|
+
OUTCOMES,
|
|
33
|
+
PREFERENCES,
|
|
34
|
+
DOMAIN_KNOWLEDGE,
|
|
35
|
+
ANTI_PATTERNS,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
# Memory types that support embeddings/vector search
|
|
39
|
+
VECTOR_ENABLED = (
|
|
40
|
+
HEURISTICS,
|
|
41
|
+
OUTCOMES,
|
|
42
|
+
DOMAIN_KNOWLEDGE,
|
|
43
|
+
ANTI_PATTERNS,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_table_name(memory_type: str, prefix: str = "") -> str:
|
|
48
|
+
"""
|
|
49
|
+
Get the table/container name for a memory type.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
memory_type: One of the MemoryType constants
|
|
53
|
+
prefix: Optional prefix to add (e.g., "alma_" for PostgreSQL)
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
The formatted table/container name
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
>>> get_table_name(MemoryType.HEURISTICS, "alma_")
|
|
60
|
+
'alma_heuristics'
|
|
61
|
+
>>> get_table_name(MemoryType.DOMAIN_KNOWLEDGE)
|
|
62
|
+
'domain_knowledge'
|
|
63
|
+
"""
|
|
64
|
+
if memory_type not in MemoryType.ALL:
|
|
65
|
+
raise ValueError(f"Unknown memory type: {memory_type}")
|
|
66
|
+
return f"{prefix}{memory_type}"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def get_table_names(prefix: str = "") -> Dict[str, str]:
|
|
70
|
+
"""
|
|
71
|
+
Get all table/container names with an optional prefix.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
prefix: Optional prefix to add (e.g., "alma_" for PostgreSQL)
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
Dict mapping canonical memory type to table/container name
|
|
78
|
+
|
|
79
|
+
Example:
|
|
80
|
+
>>> get_table_names("alma_")
|
|
81
|
+
{
|
|
82
|
+
'heuristics': 'alma_heuristics',
|
|
83
|
+
'outcomes': 'alma_outcomes',
|
|
84
|
+
'preferences': 'alma_preferences',
|
|
85
|
+
'domain_knowledge': 'alma_domain_knowledge',
|
|
86
|
+
'anti_patterns': 'alma_anti_patterns',
|
|
87
|
+
}
|
|
88
|
+
"""
|
|
89
|
+
return {mt: get_table_name(mt, prefix) for mt in MemoryType.ALL}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# Pre-computed table name mappings for each backend
|
|
93
|
+
# These are the canonical mappings that should be used
|
|
94
|
+
|
|
95
|
+
# PostgreSQL uses alma_ prefix with underscores
|
|
96
|
+
POSTGRESQL_TABLE_NAMES = get_table_names("alma_")
|
|
97
|
+
|
|
98
|
+
# SQLite uses no prefix (local file-based, no collision risk)
|
|
99
|
+
SQLITE_TABLE_NAMES = get_table_names("")
|
|
100
|
+
|
|
101
|
+
# Azure Cosmos uses alma_ prefix with underscores (standardized)
|
|
102
|
+
# Note: Previously used hyphens, now standardized to underscores
|
|
103
|
+
AZURE_COSMOS_CONTAINER_NAMES = get_table_names("alma_")
|