awareness-memory-cloud 2.4.4__tar.gz → 2.5.0__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.
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/PKG-INFO +15 -1
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/README.md +14 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/PKG-INFO +15 -1
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/client.py +29 -7
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/pyproject.toml +1 -1
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/LICENSE +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/SOURCES.txt +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/dependency_links.txt +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/requires.txt +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/top_level.txt +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/__init__.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/errors.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/export_reader.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/__init__.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/_base.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/autogen.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/crewai.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/langchain.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/praisonai.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/interceptor.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/query_rewrite.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/quickstart.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/types.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/setup.cfg +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_chat_and_record.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_crud.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_extraction_passthrough.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_recall_and_compaction.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_tasks_agents_users.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_upload_export_keys.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_ecosystem_smoke.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_export_reader.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_integrations.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_interceptor_response_format_fallback.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_interceptor_wrap.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_quickstart.py +0 -0
- {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_sdk_functional.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: awareness-memory-cloud
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0
|
|
4
4
|
Summary: Python SDK for Awareness Memory Cloud
|
|
5
5
|
Author: Awareness Team
|
|
6
6
|
License: Apache License
|
|
@@ -638,3 +638,17 @@ export AWARENESS_OWNER_ID="your-owner-id"
|
|
|
638
638
|
|
|
639
639
|
python examples/e2e_langchain_cloud.py
|
|
640
640
|
```
|
|
641
|
+
|
|
642
|
+
---
|
|
643
|
+
|
|
644
|
+
## What makes Awareness different
|
|
645
|
+
|
|
646
|
+
Most memory systems pick one extraction strategy. Awareness combines them:
|
|
647
|
+
|
|
648
|
+
- **Hybrid retrieval by default** — BM25 full-text + vector cosine + knowledge-graph 1-hop expansion, fused with Reciprocal Rank Fusion. 95.6% R@5 on LongMemEval, zero LLM calls on the retrieval side.
|
|
649
|
+
- **Salience-aware extraction** — the client's own LLM self-scores every card on `novelty` / `durability` / `specificity`; cards below 0.4 on novelty or durability are dropped server-side. Framework metadata (`Sender (untrusted metadata)`, `turn_brief`) is filtered before extraction runs.
|
|
650
|
+
- **Project isolation** — `X-Awareness-Project-Dir` header scopes memory per project.
|
|
651
|
+
- **Zero-LLM backend** — all extraction runs on your LLM (Claude, GPT-4, Gemini, local Llama). The backend is a coordinator + storage layer; no inference costs pass through to you.
|
|
652
|
+
- **One memory, many clients** — same data reachable via Claude Code, OpenClaw, npm / pip / ClawHub, MCP server.
|
|
653
|
+
|
|
654
|
+
See [`docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md`](https://github.com/edwin-hao-ai/Awareness/blob/main/docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md) for the honest side-by-side against MemPalace.
|
|
@@ -389,3 +389,17 @@ export AWARENESS_OWNER_ID="your-owner-id"
|
|
|
389
389
|
|
|
390
390
|
python examples/e2e_langchain_cloud.py
|
|
391
391
|
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## What makes Awareness different
|
|
396
|
+
|
|
397
|
+
Most memory systems pick one extraction strategy. Awareness combines them:
|
|
398
|
+
|
|
399
|
+
- **Hybrid retrieval by default** — BM25 full-text + vector cosine + knowledge-graph 1-hop expansion, fused with Reciprocal Rank Fusion. 95.6% R@5 on LongMemEval, zero LLM calls on the retrieval side.
|
|
400
|
+
- **Salience-aware extraction** — the client's own LLM self-scores every card on `novelty` / `durability` / `specificity`; cards below 0.4 on novelty or durability are dropped server-side. Framework metadata (`Sender (untrusted metadata)`, `turn_brief`) is filtered before extraction runs.
|
|
401
|
+
- **Project isolation** — `X-Awareness-Project-Dir` header scopes memory per project.
|
|
402
|
+
- **Zero-LLM backend** — all extraction runs on your LLM (Claude, GPT-4, Gemini, local Llama). The backend is a coordinator + storage layer; no inference costs pass through to you.
|
|
403
|
+
- **One memory, many clients** — same data reachable via Claude Code, OpenClaw, npm / pip / ClawHub, MCP server.
|
|
404
|
+
|
|
405
|
+
See [`docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md`](https://github.com/edwin-hao-ai/Awareness/blob/main/docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md) for the honest side-by-side against MemPalace.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: awareness-memory-cloud
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0
|
|
4
4
|
Summary: Python SDK for Awareness Memory Cloud
|
|
5
5
|
Author: Awareness Team
|
|
6
6
|
License: Apache License
|
|
@@ -638,3 +638,17 @@ export AWARENESS_OWNER_ID="your-owner-id"
|
|
|
638
638
|
|
|
639
639
|
python examples/e2e_langchain_cloud.py
|
|
640
640
|
```
|
|
641
|
+
|
|
642
|
+
---
|
|
643
|
+
|
|
644
|
+
## What makes Awareness different
|
|
645
|
+
|
|
646
|
+
Most memory systems pick one extraction strategy. Awareness combines them:
|
|
647
|
+
|
|
648
|
+
- **Hybrid retrieval by default** — BM25 full-text + vector cosine + knowledge-graph 1-hop expansion, fused with Reciprocal Rank Fusion. 95.6% R@5 on LongMemEval, zero LLM calls on the retrieval side.
|
|
649
|
+
- **Salience-aware extraction** — the client's own LLM self-scores every card on `novelty` / `durability` / `specificity`; cards below 0.4 on novelty or durability are dropped server-side. Framework metadata (`Sender (untrusted metadata)`, `turn_brief`) is filtered before extraction runs.
|
|
650
|
+
- **Project isolation** — `X-Awareness-Project-Dir` header scopes memory per project.
|
|
651
|
+
- **Zero-LLM backend** — all extraction runs on your LLM (Claude, GPT-4, Gemini, local Llama). The backend is a coordinator + storage layer; no inference costs pass through to you.
|
|
652
|
+
- **One memory, many clients** — same data reachable via Claude Code, OpenClaw, npm / pip / ClawHub, MCP server.
|
|
653
|
+
|
|
654
|
+
See [`docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md`](https://github.com/edwin-hao-ai/Awareness/blob/main/docs/analysis/MEMPALACE_COMPARISON_2026-04-17.md) for the honest side-by-side against MemPalace.
|
|
@@ -421,20 +421,34 @@ class MemoryCloudClient:
|
|
|
421
421
|
body["ids"] = ids
|
|
422
422
|
|
|
423
423
|
# Local daemon bridge: route through awareness_recall MCP tool.
|
|
424
|
+
# F-053 single-parameter surface — pass only `query` and let the daemon
|
|
425
|
+
# auto-route (query-type classifier + recency channel + budget-tier
|
|
426
|
+
# shaping). Legacy fields are still forwarded for backwards-compat with
|
|
427
|
+
# pre-F-053 daemons but marked explicitly so server-side deprecation
|
|
428
|
+
# logging can trace who's still sending them.
|
|
424
429
|
if self._should_use_daemon():
|
|
425
430
|
daemon_args: Dict[str, Any] = {
|
|
426
|
-
"
|
|
431
|
+
"query": query,
|
|
427
432
|
"limit": limit,
|
|
428
|
-
"detail": detail or "summary",
|
|
429
433
|
}
|
|
430
|
-
|
|
434
|
+
# Token budget drives bucket shaping (raw-heavy / mixed / card-only).
|
|
435
|
+
# Callers can override via custom_kwargs["token_budget"].
|
|
436
|
+
token_budget = (custom_kwargs or {}).get("token_budget")
|
|
437
|
+
if token_budget is not None:
|
|
438
|
+
daemon_args["token_budget"] = int(token_budget)
|
|
439
|
+
if agent_role:
|
|
440
|
+
daemon_args["agent_role"] = agent_role
|
|
441
|
+
# Legacy fields — only forwarded if caller explicitly passed them.
|
|
442
|
+
# Daemon will log [deprecated param used] for these.
|
|
443
|
+
if effective_keyword and keyword_query is not None:
|
|
431
444
|
daemon_args["keyword_query"] = effective_keyword
|
|
432
445
|
if scope:
|
|
433
446
|
daemon_args["scope"] = scope
|
|
434
|
-
if recall_mode:
|
|
447
|
+
if recall_mode and recall_mode != "precise":
|
|
448
|
+
# "precise" is the SDK default — don't forward it as legacy.
|
|
435
449
|
daemon_args["recall_mode"] = recall_mode
|
|
436
|
-
if
|
|
437
|
-
daemon_args["
|
|
450
|
+
if detail is not None:
|
|
451
|
+
daemon_args["detail"] = detail
|
|
438
452
|
if ids:
|
|
439
453
|
daemon_args["ids"] = ids
|
|
440
454
|
daemon_result = self.call_local_daemon("awareness_recall", daemon_args)
|
|
@@ -1521,22 +1535,30 @@ class MemoryCloudClient:
|
|
|
1521
1535
|
self,
|
|
1522
1536
|
memory_id: str,
|
|
1523
1537
|
skill_id: str,
|
|
1538
|
+
outcome: Optional[str] = "success",
|
|
1524
1539
|
trace_id: Optional[str] = None,
|
|
1525
1540
|
) -> Dict[str, Any]:
|
|
1526
1541
|
"""
|
|
1527
|
-
Mark a skill as used
|
|
1542
|
+
Mark a skill as used with outcome feedback.
|
|
1528
1543
|
|
|
1529
1544
|
Args:
|
|
1530
1545
|
memory_id: Target memory id.
|
|
1531
1546
|
skill_id: The skill to mark as used.
|
|
1547
|
+
outcome: "success" (default), "partial", or "failed".
|
|
1548
|
+
Failed outcomes decrease confidence; 3+ consecutive
|
|
1549
|
+
failures auto-flag the skill for review.
|
|
1532
1550
|
trace_id: Optional trace id.
|
|
1533
1551
|
|
|
1534
1552
|
Returns:
|
|
1535
1553
|
Updated skill data.
|
|
1536
1554
|
"""
|
|
1555
|
+
body = None
|
|
1556
|
+
if outcome and outcome != "success":
|
|
1557
|
+
body = {"outcome": outcome}
|
|
1537
1558
|
data, resolved_trace = self._request(
|
|
1538
1559
|
method="POST",
|
|
1539
1560
|
path=f"/memories/{memory_id}/skills/{skill_id}/use",
|
|
1561
|
+
json_payload=body,
|
|
1540
1562
|
trace_id=trace_id,
|
|
1541
1563
|
)
|
|
1542
1564
|
return self._attach_trace(data, resolved_trace)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/__init__.py
RENAMED
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/_base.py
RENAMED
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/autogen.py
RENAMED
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/crewai.py
RENAMED
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/langchain.py
RENAMED
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/praisonai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_chat_and_record.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_interceptor_wrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|