@pentatonic-ai/ai-agent-sdk 0.9.6 → 0.10.0
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.
- package/README.md +3 -3
- package/bin/cli.js +1 -1
- package/bin/commands/config.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/packages/doctor/src/checks/local-memory.js +2 -2
- package/packages/memory/README.md +2 -2
- package/packages/memory/openclaw-plugin/README.md +2 -2
- package/packages/memory/openclaw-plugin/openclaw.plugin.json +1 -1
- package/packages/memory/src/server.js +2 -2
- package/packages/memory-engine-v2/.env.example +30 -0
- package/packages/memory-engine-v2/README.md +125 -0
- package/packages/memory-engine-v2/compat/Dockerfile +11 -0
- package/packages/memory-engine-v2/compat/requirements.txt +6 -0
- package/packages/memory-engine-v2/compat/server.py +1047 -0
- package/packages/memory-engine-v2/docker-compose.aws.yml +78 -0
- package/packages/memory-engine-v2/docker-compose.yml +206 -0
- package/packages/memory-engine-v2/extractor-async/Dockerfile +14 -0
- package/packages/memory-engine-v2/extractor-async/confidence.py +62 -0
- package/packages/memory-engine-v2/extractor-async/noise_filter.py +144 -0
- package/packages/memory-engine-v2/extractor-async/requirements.txt +2 -0
- package/packages/memory-engine-v2/extractor-async/test_confidence.py +76 -0
- package/packages/memory-engine-v2/extractor-async/test_noise_filter.py +177 -0
- package/packages/memory-engine-v2/extractor-async/worker.py +797 -0
- package/packages/memory-engine-v2/extractor-sync/Dockerfile +11 -0
- package/packages/memory-engine-v2/extractor-sync/requirements.txt +4 -0
- package/packages/memory-engine-v2/extractor-sync/server.py +424 -0
- package/packages/memory-engine-v2/org-model/migrations/001_init.sql +390 -0
- package/packages/memory-engine-v2/tests/e2e_smoke.py +356 -0
- package/packages/memory-engine-v2/tests/fixtures/generate_synthetic_corpus.py +758 -0
- package/packages/memory-engine/.env.example +0 -13
- package/packages/memory-engine/MIGRATION.md +0 -219
- package/packages/memory-engine/README.md +0 -145
- package/packages/memory-engine/bench/README.md +0 -99
- package/packages/memory-engine/bench/scorecards-engine/agent-coding__pentatonic-baseline__20260427-142523.json +0 -1115
- package/packages/memory-engine/bench/scorecards-engine/chat-recall__pentatonic-baseline__20260427-142648.json +0 -819
- package/packages/memory-engine/bench/scorecards-engine/circular-economy__pentatonic-baseline__20260427-142757.json +0 -1278
- package/packages/memory-engine/bench/scorecards-engine/customer-support__pentatonic-baseline__20260427-142900.json +0 -1018
- package/packages/memory-engine/bench/scorecards-engine/marketplace-ops__pentatonic-baseline__20260427-142957.json +0 -1038
- package/packages/memory-engine/bench/scorecards-engine/product-catalogue__pentatonic-baseline__20260427-143122.json +0 -961
- package/packages/memory-engine/bench/scorecards-engine-via-docker/agent-coding__pentatonic-memory__20260427-161812.json +0 -1115
- package/packages/memory-engine/bench/scorecards-engine-via-docker/chat-recall__pentatonic-memory__20260427-161701.json +0 -819
- package/packages/memory-engine/bench/scorecards-engine-via-docker/circular-economy__pentatonic-memory__20260427-161713.json +0 -1278
- package/packages/memory-engine/bench/scorecards-engine-via-docker/customer-support__pentatonic-memory__20260427-161723.json +0 -1018
- package/packages/memory-engine/bench/scorecards-engine-via-docker/marketplace-ops__pentatonic-memory__20260427-161732.json +0 -1038
- package/packages/memory-engine/bench/scorecards-engine-via-docker/product-catalogue__pentatonic-memory__20260427-161741.json +0 -937
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/agent-coding__pentatonic-memory__20260427-184718.json +0 -1115
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/chat-recall__pentatonic-memory__20260427-184614.json +0 -819
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/circular-economy__pentatonic-memory__20260427-184809.json +0 -1278
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/customer-support__pentatonic-memory__20260427-184854.json +0 -1018
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/marketplace-ops__pentatonic-memory__20260427-184929.json +0 -1038
- package/packages/memory-engine/bench/scorecards-engine-via-l2-7-layer-populated/product-catalogue__pentatonic-memory__20260427-185015.json +0 -961
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/agent-coding__pentatonic-memory__20260427-175252.json +0 -1115
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/chat-recall__pentatonic-memory__20260427-175312.json +0 -819
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/circular-economy__pentatonic-memory__20260427-175335.json +0 -1278
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/customer-support__pentatonic-memory__20260427-175355.json +0 -1018
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/marketplace-ops__pentatonic-memory__20260427-175413.json +0 -1038
- package/packages/memory-engine/bench/scorecards-engine-via-l2-empty-layers/product-catalogue__pentatonic-memory__20260427-175430.json +0 -883
- package/packages/memory-engine/bench/scorecards-engine-via-shim/agent-coding__pentatonic-memory__20260427-155409.json +0 -1115
- package/packages/memory-engine/bench/scorecards-engine-via-shim/chat-recall__pentatonic-memory__20260427-155421.json +0 -819
- package/packages/memory-engine/bench/scorecards-engine-via-shim/circular-economy__pentatonic-memory__20260427-155433.json +0 -1278
- package/packages/memory-engine/bench/scorecards-engine-via-shim/customer-support__pentatonic-memory__20260427-155443.json +0 -1018
- package/packages/memory-engine/bench/scorecards-engine-via-shim/marketplace-ops__pentatonic-memory__20260427-155453.json +0 -1038
- package/packages/memory-engine/bench/scorecards-engine-via-shim/product-catalogue__pentatonic-memory__20260427-155503.json +0 -937
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/agent-coding__pentatonic-memory-latest__20260427-145103.json +0 -1115
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/agent-coding__pentatonic-memory__20260427-144909.json +0 -1115
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/chat-recall__pentatonic-memory-latest__20260427-145153.json +0 -819
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/chat-recall__pentatonic-memory__20260427-145120.json +0 -542
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/circular-economy__pentatonic-memory-latest__20260427-145313.json +0 -1278
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/circular-economy__pentatonic-memory__20260427-145207.json +0 -894
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/customer-support__pentatonic-memory-latest__20260427-145412.json +0 -1018
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/customer-support__pentatonic-memory__20260427-145327.json +0 -680
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/marketplace-ops__pentatonic-memory-latest__20260427-145517.json +0 -1038
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/marketplace-ops__pentatonic-memory__20260427-145422.json +0 -693
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/product-catalogue__pentatonic-memory-latest__20260427-145616.json +0 -961
- package/packages/memory-engine/bench/scorecards-pentatonic-baseline/product-catalogue__pentatonic-memory__20260427-145528.json +0 -727
- package/packages/memory-engine/compat/Dockerfile +0 -22
- package/packages/memory-engine/compat/server.py +0 -1255
- package/packages/memory-engine/docker-compose.test.yml +0 -59
- package/packages/memory-engine/docker-compose.yml +0 -255
- package/packages/memory-engine/engine/README.md +0 -52
- package/packages/memory-engine/engine/l2-hybridrag-proxy.py +0 -1543
- package/packages/memory-engine/engine/l5-comms-layer.py +0 -663
- package/packages/memory-engine/engine/l6-document-store.py +0 -1018
- package/packages/memory-engine/engine/services/_shared/__init__.py +0 -1
- package/packages/memory-engine/engine/services/_shared/embed_provider.py +0 -562
- package/packages/memory-engine/engine/services/l2/Dockerfile +0 -50
- package/packages/memory-engine/engine/services/l2/init_databases.py +0 -81
- package/packages/memory-engine/engine/services/l2/l2-hybridrag-proxy.py +0 -2721
- package/packages/memory-engine/engine/services/l5/Dockerfile +0 -11
- package/packages/memory-engine/engine/services/l5/l5-comms-layer.py +0 -808
- package/packages/memory-engine/engine/services/l6/Dockerfile +0 -30
- package/packages/memory-engine/engine/services/l6/l6-document-store.py +0 -1221
- package/packages/memory-engine/engine/services/nv-embed/Dockerfile +0 -28
- package/packages/memory-engine/engine/services/nv-embed/server.py +0 -152
- package/packages/memory-engine/pme_memory/__init__.py +0 -0
- package/packages/memory-engine/pme_memory/__main__.py +0 -129
- package/packages/memory-engine/pme_memory/artifacts.py +0 -95
- package/packages/memory-engine/pme_memory/embed.py +0 -74
- package/packages/memory-engine/pme_memory/health.py +0 -36
- package/packages/memory-engine/pme_memory/hygiene.py +0 -159
- package/packages/memory-engine/pme_memory/indexer.py +0 -200
- package/packages/memory-engine/pme_memory/needs.py +0 -55
- package/packages/memory-engine/pme_memory/provenance.py +0 -80
- package/packages/memory-engine/pme_memory/scoring.py +0 -168
- package/packages/memory-engine/pme_memory/search.py +0 -52
- package/packages/memory-engine/pme_memory/store.py +0 -86
- package/packages/memory-engine/pme_memory/synthesis.py +0 -114
- package/packages/memory-engine/pyproject.toml +0 -65
- package/packages/memory-engine/scripts/kg-extractor.py +0 -557
- package/packages/memory-engine/scripts/kg-preflexor-v2.py +0 -738
- package/packages/memory-engine/scripts/wipe-legacy-l3-entities.py +0 -128
- package/packages/memory-engine/tests/e2e_arena.sh +0 -259
- package/packages/memory-engine/tests/embed_stub/Dockerfile +0 -13
- package/packages/memory-engine/tests/embed_stub/server.py +0 -80
- package/packages/memory-engine/tests/test_aggregate.py +0 -333
- package/packages/memory-engine/tests/test_api_contract.sh +0 -57
- package/packages/memory-engine/tests/test_arena_safety.py +0 -232
- package/packages/memory-engine/tests/test_channel_stat_reader.py +0 -437
- package/packages/memory-engine/tests/test_channel_stat_rollups.py +0 -308
- package/packages/memory-engine/tests/test_compat_nv_embed_probe.py +0 -48
- package/packages/memory-engine/tests/test_embed_provider.py +0 -693
- package/packages/memory-engine/tests/test_l2_qmd_vec_search.py +0 -280
- package/packages/memory-engine/tests/test_l3_arena_isolation.py +0 -412
- package/packages/memory-engine/tests/test_l6_module_load.py +0 -84
- package/packages/memory-engine/tests/test_people_list_reader.py +0 -432
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
pme_memory.synthesis — Synthesis Operator
|
|
3
|
-
|
|
4
|
-
Deterministic multi-parent merge for compatible artifacts.
|
|
5
|
-
When two or more artifacts share overlapping schema fields,
|
|
6
|
-
the operator produces a new synthesis artifact that:
|
|
7
|
-
- references all parents
|
|
8
|
-
- merges payloads (union of keys, conflict detection)
|
|
9
|
-
- inherits combined needs (minus fulfilled ones)
|
|
10
|
-
- gets its own content_hash for integrity
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
from __future__ import annotations
|
|
14
|
-
|
|
15
|
-
from typing import Any, Dict, List, Optional, Set
|
|
16
|
-
|
|
17
|
-
from .artifacts import ArtifactEnvelope, ArtifactStore
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def find_compatible_pairs(
|
|
21
|
-
artifacts: List[Dict[str, Any]],
|
|
22
|
-
min_overlap: int = 2,
|
|
23
|
-
) -> List[tuple[Dict[str, Any], Dict[str, Any], Set[str]]]:
|
|
24
|
-
"""Find artifact pairs with overlapping payload keys.
|
|
25
|
-
|
|
26
|
-
Returns list of (art_a, art_b, shared_keys) tuples.
|
|
27
|
-
"""
|
|
28
|
-
pairs = []
|
|
29
|
-
for i, a in enumerate(artifacts):
|
|
30
|
-
a_keys = set(a.get("payload", {}).keys())
|
|
31
|
-
for b in artifacts[i + 1:]:
|
|
32
|
-
b_keys = set(b.get("payload", {}).keys())
|
|
33
|
-
shared = a_keys & b_keys
|
|
34
|
-
if len(shared) >= min_overlap:
|
|
35
|
-
pairs.append((a, b, shared))
|
|
36
|
-
return pairs
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def merge_payloads(
|
|
40
|
-
payloads: List[Dict[str, Any]],
|
|
41
|
-
) -> tuple[Dict[str, Any], List[str]]:
|
|
42
|
-
"""Merge multiple payloads. Returns (merged_payload, conflict_keys).
|
|
43
|
-
|
|
44
|
-
For conflicting keys, keeps all values as a list under the key.
|
|
45
|
-
"""
|
|
46
|
-
merged: Dict[str, Any] = {}
|
|
47
|
-
conflicts: List[str] = []
|
|
48
|
-
|
|
49
|
-
for payload in payloads:
|
|
50
|
-
for k, v in payload.items():
|
|
51
|
-
if k not in merged:
|
|
52
|
-
merged[k] = v
|
|
53
|
-
elif merged[k] != v:
|
|
54
|
-
if k not in conflicts:
|
|
55
|
-
conflicts.append(k)
|
|
56
|
-
# Store as list of divergent values
|
|
57
|
-
existing = merged[k]
|
|
58
|
-
if isinstance(existing, list) and k in conflicts:
|
|
59
|
-
existing.append(v)
|
|
60
|
-
else:
|
|
61
|
-
merged[k] = [existing, v]
|
|
62
|
-
|
|
63
|
-
return merged, conflicts
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def synthesise(
|
|
67
|
-
parents: List[Dict[str, Any]],
|
|
68
|
-
producer: str,
|
|
69
|
-
topic: Optional[str] = None,
|
|
70
|
-
store: Optional[ArtifactStore] = None,
|
|
71
|
-
) -> ArtifactEnvelope:
|
|
72
|
-
"""Create a synthesis artifact from multiple parent artifacts.
|
|
73
|
-
|
|
74
|
-
Args:
|
|
75
|
-
parents: list of artifact dicts (must have artifact_id, payload, needs)
|
|
76
|
-
producer: who is producing the synthesis
|
|
77
|
-
topic: optional topic label
|
|
78
|
-
store: if provided, appends the new artifact automatically
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
The new synthesis ArtifactEnvelope
|
|
82
|
-
"""
|
|
83
|
-
parent_ids = [p["artifact_id"] for p in parents]
|
|
84
|
-
payloads = [p.get("payload", {}) for p in parents]
|
|
85
|
-
|
|
86
|
-
merged_payload, conflicts = merge_payloads(payloads)
|
|
87
|
-
|
|
88
|
-
# Combine unresolved needs, deduplicated
|
|
89
|
-
all_needs: List[str] = []
|
|
90
|
-
seen: set = set()
|
|
91
|
-
for p in parents:
|
|
92
|
-
for n in p.get("needs", []):
|
|
93
|
-
if n not in seen:
|
|
94
|
-
all_needs.append(n)
|
|
95
|
-
seen.add(n)
|
|
96
|
-
|
|
97
|
-
synthesis = ArtifactEnvelope.create(
|
|
98
|
-
artifact_type="synthesis",
|
|
99
|
-
producer=producer,
|
|
100
|
-
payload={
|
|
101
|
-
"merged": merged_payload,
|
|
102
|
-
"conflicts": conflicts,
|
|
103
|
-
"parent_count": len(parents),
|
|
104
|
-
},
|
|
105
|
-
parents=parent_ids,
|
|
106
|
-
needs=all_needs,
|
|
107
|
-
source_tool="synthesis_operator",
|
|
108
|
-
topic=topic,
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
if store:
|
|
112
|
-
store.append(synthesis)
|
|
113
|
-
|
|
114
|
-
return synthesis
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=68", "wheel"]
|
|
3
|
-
build-backend = "setuptools.backends.legacy:build"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "pme-memory"
|
|
7
|
-
version = "1.7.0"
|
|
8
|
-
description = "Milvus-backed L5 vector store layer for Pentatonic Memory Engine"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = { text = "Pentatonic Ltd — Internal" }
|
|
11
|
-
requires-python = ">=3.11"
|
|
12
|
-
|
|
13
|
-
dependencies = [
|
|
14
|
-
"requests>=2.28.0",
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
[project.optional-dependencies]
|
|
18
|
-
# Full L5 stack with Milvus Lite (no Docker required)
|
|
19
|
-
milvus = [
|
|
20
|
-
"pymilvus>=2.4.0",
|
|
21
|
-
]
|
|
22
|
-
# Milvus with integrated model support (larger download)
|
|
23
|
-
milvus-model = [
|
|
24
|
-
"pymilvus[model]>=2.4.0",
|
|
25
|
-
]
|
|
26
|
-
# Full 5-layer memory stack (L2 proxy + L3 graph + L5 comms)
|
|
27
|
-
full = [
|
|
28
|
-
"fastapi>=0.100.0",
|
|
29
|
-
"uvicorn>=0.23.0",
|
|
30
|
-
"neo4j>=5.0.0",
|
|
31
|
-
"pymilvus>=2.4.0",
|
|
32
|
-
"httpx>=0.24.0",
|
|
33
|
-
"pydantic>=2.0.0",
|
|
34
|
-
]
|
|
35
|
-
# NV-Embed-v2 embedding service
|
|
36
|
-
# transformers must stay <4.50 — newer versions break NV-Embed-v2 (removed all_tied_weights_keys)
|
|
37
|
-
# Install CUDA torch separately: pip install torch>=2.0 --index-url https://download.pytorch.org/whl/cu130
|
|
38
|
-
nv-embed = [
|
|
39
|
-
"torch>=2.0",
|
|
40
|
-
"transformers>=4.42,<4.50",
|
|
41
|
-
"datasets>=2.14.0",
|
|
42
|
-
"einops>=0.7.0",
|
|
43
|
-
"fastapi>=0.100.0",
|
|
44
|
-
"uvicorn>=0.23.0",
|
|
45
|
-
]
|
|
46
|
-
# All extras for development
|
|
47
|
-
dev = [
|
|
48
|
-
"pymilvus>=2.4.0",
|
|
49
|
-
"fastapi>=0.100.0",
|
|
50
|
-
"uvicorn>=0.23.0",
|
|
51
|
-
"neo4j>=5.0.0",
|
|
52
|
-
"httpx>=0.24.0",
|
|
53
|
-
"pydantic>=2.0.0",
|
|
54
|
-
"pytest>=8.0",
|
|
55
|
-
"pytest-mock>=3.12",
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
[project.scripts]
|
|
59
|
-
pme-memory = "pme_memory.__main__:main"
|
|
60
|
-
|
|
61
|
-
[tool.setuptools.packages.find]
|
|
62
|
-
include = ["pme_memory*"]
|
|
63
|
-
|
|
64
|
-
[tool.setuptools.package-data]
|
|
65
|
-
pme_memory = ["py.typed"]
|