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.
Files changed (37) hide show
  1. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/PKG-INFO +15 -1
  2. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/README.md +14 -0
  3. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/PKG-INFO +15 -1
  4. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/client.py +29 -7
  5. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/pyproject.toml +1 -1
  6. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/LICENSE +0 -0
  7. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/SOURCES.txt +0 -0
  8. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/dependency_links.txt +0 -0
  9. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/requires.txt +0 -0
  10. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/awareness_memory_cloud.egg-info/top_level.txt +0 -0
  11. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/__init__.py +0 -0
  12. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/errors.py +0 -0
  13. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/export_reader.py +0 -0
  14. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/__init__.py +0 -0
  15. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/_base.py +0 -0
  16. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/autogen.py +0 -0
  17. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/crewai.py +0 -0
  18. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/langchain.py +0 -0
  19. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/integrations/praisonai.py +0 -0
  20. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/interceptor.py +0 -0
  21. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/query_rewrite.py +0 -0
  22. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/quickstart.py +0 -0
  23. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/memory_cloud/types.py +0 -0
  24. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/setup.cfg +0 -0
  25. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_chat_and_record.py +0 -0
  26. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_crud.py +0 -0
  27. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_extraction_passthrough.py +0 -0
  28. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_recall_and_compaction.py +0 -0
  29. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_tasks_agents_users.py +0 -0
  30. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_client_upload_export_keys.py +0 -0
  31. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_ecosystem_smoke.py +0 -0
  32. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_export_reader.py +0 -0
  33. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_integrations.py +0 -0
  34. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_interceptor_response_format_fallback.py +0 -0
  35. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_interceptor_wrap.py +0 -0
  36. {awareness_memory_cloud-2.4.4 → awareness_memory_cloud-2.5.0}/tests/test_quickstart.py +0 -0
  37. {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.4.4
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.4.4
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
- "semantic_query": query,
431
+ "query": query,
427
432
  "limit": limit,
428
- "detail": detail or "summary",
429
433
  }
430
- if effective_keyword:
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 agent_role:
437
- daemon_args["agent_role"] = agent_role
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, resetting its decay timer.
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)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "awareness-memory-cloud"
7
- version = "2.4.4"
7
+ version = "2.5.0"
8
8
  description = "Python SDK for Awareness Memory Cloud"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }