Compare commits

...
Author SHA1 Message Date
alvinfeiandCursor 0490112e9d test(memhub): update SDK release documentation contract
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-17 19:15:26 +08:00
alvinfeiandCursor 2ee2371e0c release: publish Hy Memory 2.0.3 and update MemHub
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-17 19:08:58 +08:00
21 changed files with 56 additions and 46 deletions

No files matched your search

+10
View File
@@ -2,6 +2,16 @@
Hy Memory and MemHub are versioned and released independently. Hy Memory and MemHub are versioned and released independently.
## Hy Memory 2.0.3 — 2026-10-17
- Added an optional runtime HTTP transport factory so embedded products can
enforce request budgets without wrapping or restricting SDK local-store
access.
- Published
[`hy-memory==2.0.3`](https://pypi.org/project/hy-memory/2.0.3/) with
unchanged memory extraction, reconciliation, storage, and Coding/Working
behavior.
## Unreleased ## Unreleased
- Removed MemHub's task-scoped HyPermission store wrappers and global - Removed MemHub's task-scoped HyPermission store wrappers and global
+8 -8
View File
@@ -32,7 +32,7 @@ English | [中文](README.zh.md)
## Latest News ## Latest News
* *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **Released** **Hy Memory 2.0 (`hy-memory==2.0.2`)** on [PyPI](https://pypi.org/project/hy-memory/2.0.2/) and open-sourced the **Hy-Memory** monorepo together with **[MemHub](memhub/README.md)**! * *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **Released** **Hy Memory 2.0 (`hy-memory==2.0.3`)** on [PyPI](https://pypi.org/project/hy-memory/2.0.3/) and open-sourced the **Hy-Memory** monorepo together with **[MemHub](memhub/README.md)**!
* *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **Open-sourced** **[Hy-Memory-30B-A3B](https://huggingface.co/tencent/Hy-Memory-30B-A3B)** on Hugging Face along with its [technical report](https://arxiv.org/abs/2610.22196) on attributed reinforcement learning for long-term memory writing! * *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **Open-sourced** **[Hy-Memory-30B-A3B](https://huggingface.co/tencent/Hy-Memory-30B-A3B)** on Hugging Face along with its [technical report](https://arxiv.org/abs/2610.22196) on attributed reinforcement learning for long-term memory writing!
* *<mark>[new]</mark>* 🔥🔥 **[2026-09]**: 📊 **Released** **[CMB: A Coding Memory Benchmark for Long-Horizon and Interleaved Coding Agents](docs/papers/CMB_A_Coding_Memory_Benchmark_for_Long_Horizon_and_Interleaved_Coding_Agents.pdf)** (submitted to **ICLR 2027**). * *<mark>[new]</mark>* 🔥🔥 **[2026-09]**: 📊 **Released** **[CMB: A Coding Memory Benchmark for Long-Horizon and Interleaved Coding Agents](docs/papers/CMB_A_Coding_Memory_Benchmark_for_Long_Horizon_and_Interleaved_Coding_Agents.pdf)** (submitted to **ICLR 2027**).
* *<mark>[new]</mark>* 🔥🔥 **[2026-08]**: 🎉 **Accepted** at **EMNLP 2026**: **[Memory Beyond Recall: A Dual-Process Cognitive Memory System for Self-Evolving LLM Agents](https://arxiv.org/abs/2606.09483)**! * *<mark>[new]</mark>* 🔥🔥 **[2026-08]**: 🎉 **Accepted** at **EMNLP 2026**: **[Memory Beyond Recall: A Dual-Process Cognitive Memory System for Self-Evolving LLM Agents](https://arxiv.org/abs/2606.09483)**!
@@ -63,13 +63,13 @@ Welcome to the **Hy Memory Research Family**, covering cognitive chat memory, lo
### 1. Installation ### 1. Installation
```bash ```bash
pip install hy-memory==2.0.2 # core (includes ChromaDB and Kuzu) pip install hy-memory==2.0.3 # core (includes ChromaDB and Kuzu)
pip install "hy-memory[qdrant]==2.0.2" # + Qdrant pip install "hy-memory[qdrant]==2.0.3" # + Qdrant
pip install "hy-memory[faiss]==2.0.2" # + FAISS pip install "hy-memory[faiss]==2.0.3" # + FAISS
pip install "hy-memory[graph]==2.0.2" # + Neo4j pip install "hy-memory[graph]==2.0.3" # + Neo4j
pip install "hy-memory[mysql]==2.0.2" # + MySQL cache pip install "hy-memory[mysql]==2.0.3" # + MySQL cache
pip install "hy-memory[rerank]==2.0.2" # + local multilingual cross-encoder rerank pip install "hy-memory[rerank]==2.0.3" # + local multilingual cross-encoder rerank
pip install "hy-memory[all]==2.0.2" # everything pip install "hy-memory[all]==2.0.3" # everything
``` ```
### 2. Configuration ### 2. Configuration
+8 -8
View File
@@ -32,7 +32,7 @@
## 最新动态 ## 最新动态
* *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **正式发布** **Hy Memory 2.0 (`hy-memory==2.0.2`)**(已上线 [PyPI](https://pypi.org/project/hy-memory/2.0.2/)),并开源 **Hy-Memory** monorepo 与 **[MemHub](memhub/README.md)**! * *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **正式发布** **Hy Memory 2.0 (`hy-memory==2.0.3`)**(已上线 [PyPI](https://pypi.org/project/hy-memory/2.0.3/)),并开源 **Hy-Memory** monorepo 与 **[MemHub](memhub/README.md)**!
* *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **模型开源** 在 Hugging Face 发布 **[Hy-Memory-30B-A3B](https://huggingface.co/tencent/Hy-Memory-30B-A3B)** 长期记忆写入模型及[技术报告](https://arxiv.org/abs/2610.22196)! * *<mark>[new]</mark>* 🔥🔥🔥 **[2026-10]**: 🚀 **模型开源** 在 Hugging Face 发布 **[Hy-Memory-30B-A3B](https://huggingface.co/tencent/Hy-Memory-30B-A3B)** 长期记忆写入模型及[技术报告](https://arxiv.org/abs/2610.22196)!
* *<mark>[new]</mark>* 🔥🔥 **[2026-09]**: 📊 **基准与方法发布** 推出长周期与交错式编程记忆评测基准 **[CMB: A Coding Memory Benchmark for Long-Horizon and Interleaved Coding Agents](docs/papers/CMB_A_Coding_Memory_Benchmark_for_Long_Horizon_and_Interleaved_Coding_Agents.pdf)**(已投稿 **ICLR 2027**)。 * *<mark>[new]</mark>* 🔥🔥 **[2026-09]**: 📊 **基准与方法发布** 推出长周期与交错式编程记忆评测基准 **[CMB: A Coding Memory Benchmark for Long-Horizon and Interleaved Coding Agents](docs/papers/CMB_A_Coding_Memory_Benchmark_for_Long_Horizon_and_Interleaved_Coding_Agents.pdf)**(已投稿 **ICLR 2027**)。
* *<mark>[new]</mark>* 🔥🔥 **[2026-08]**: 🎉 **论文录用** 双系统认知记忆架构论文 **[Memory Beyond Recall: A Dual-Process Cognitive Memory System for Self-Evolving LLM Agents](https://arxiv.org/abs/2606.09483)** 被 **EMNLP 2026** 接收! * *<mark>[new]</mark>* 🔥🔥 **[2026-08]**: 🎉 **论文录用** 双系统认知记忆架构论文 **[Memory Beyond Recall: A Dual-Process Cognitive Memory System for Self-Evolving LLM Agents](https://arxiv.org/abs/2606.09483)** 被 **EMNLP 2026** 接收!
@@ -63,13 +63,13 @@
### 1. 安装 ### 1. 安装
```bash ```bash
pip install hy-memory==2.0.2 # 核心(含 ChromaDB 与 Kuzu) pip install hy-memory==2.0.3 # 核心(含 ChromaDB 与 Kuzu)
pip install "hy-memory[qdrant]==2.0.2" # + Qdrant pip install "hy-memory[qdrant]==2.0.3" # + Qdrant
pip install "hy-memory[faiss]==2.0.2" # + FAISS pip install "hy-memory[faiss]==2.0.3" # + FAISS
pip install "hy-memory[graph]==2.0.2" # + Neo4j pip install "hy-memory[graph]==2.0.3" # + Neo4j
pip install "hy-memory[mysql]==2.0.2" # + MySQL 缓存 pip install "hy-memory[mysql]==2.0.3" # + MySQL 缓存
pip install "hy-memory[rerank]==2.0.2" # + 本地多语言 cross-encoder rerank pip install "hy-memory[rerank]==2.0.3" # + 本地多语言 cross-encoder rerank
pip install "hy-memory[all]==2.0.2" # 全部 pip install "hy-memory[all]==2.0.3" # 全部
``` ```
### 2. 配置 ### 2. 配置
+1 -1
View File
@@ -37,7 +37,7 @@ do not belong in the public source tree.
- Root GitHub workflows run SDK and MemHub checks from their respective working - Root GitHub workflows run SDK and MemHub checks from their respective working
directories. Native lifecycle workflows produce reviewable Actions artifacts; directories. Native lifecycle workflows produce reviewable Actions artifacts;
tag releases remain fail-closed on public identity, signing and notarization. tag releases remain fail-closed on public identity, signing and notarization.
- Hy Memory is published as `hy-memory==2.0.2`. MemHub pins that public - Hy Memory is published as `hy-memory==2.0.3`. MemHub pins that public
distribution; its selected npm package is `memhub-cli`, which is not yet distribution; its selected npm package is `memhub-cli`, which is not yet
published. published.
- Hy-Memory source uses Apache-2.0 at the repository root. Third-party - Hy-Memory source uses Apache-2.0 at the repository root. Third-party
+1 -1
View File
@@ -5,7 +5,7 @@
## 安装与快速开始 ## 安装与快速开始
```bash ```bash
pip install hy-memory==2.0.2 pip install hy-memory==2.0.3
# 可选后端 # 可选后端
pip install 'hy-memory[qdrant]==2.0.1' pip install 'hy-memory[qdrant]==2.0.1'
+2 -2
View File
@@ -15,12 +15,12 @@ write、search,并把搜索结果格式化为可交给模型的 memory text ch
```text ```text
distribution: hy-memory distribution: hy-memory
version: 2.0.2 version: 2.0.3
mode: 按运行时配置选择 mode: 按运行时配置选择
reader: hybrid reader: hybrid
``` ```
仓库 pin、lockfile 和运行时版本守卫均固定到公开的 `hy-memory==2.0.2`。 仓库 pin、lockfile 和运行时版本守卫均固定到公开的 `hy-memory==2.0.3`。
MemHub 在本地 Runtime 内嵌入 SDK,但不绕过自身的来源授权、模型授权、Evidence、 MemHub 在本地 Runtime 内嵌入 SDK,但不绕过自身的来源授权、模型授权、Evidence、
Governance 和撤权边界。 Governance 和撤权边界。
+2 -2
View File
@@ -6,7 +6,7 @@ SDK 和记忆引擎。One Memory / `one-memory` 是历史模块、数据目录
## 发行与平台合同 ## 发行与平台合同
公共 Python SDK 为 `hy-memory==2.0.2`。MemHub 源码版本为 `1.0.2` 公共 Python SDK 为 `hy-memory==2.0.3`。MemHub 源码版本为 `1.0.2`
(build 6),GitHub 仓库为 (build 6),GitHub 仓库为
[`Tencent-Hunyuan/Hy-Memory`](https://github.com/Tencent-Hunyuan/Hy-Memory),npm 包名为 [`Tencent-Hunyuan/Hy-Memory`](https://github.com/Tencent-Hunyuan/Hy-Memory),npm 包名为
`memhub-cli`。当前代码架构见 `memhub-cli`。当前代码架构见
@@ -101,7 +101,7 @@ MemHub 的 SQLite 数据默认位于 `~/.one-memory`,不在 npm 包或 Runtime
## Hy Memory ## Hy Memory
当前开发依赖固定为公开 PyPI 包 `hy-memory==2.0.2`。SDK 配置、权限边界及 search 当前开发依赖固定为公开 PyPI 包 `hy-memory==2.0.3`。SDK 配置、权限边界及 search
返回格式见 [`MEMORY.md`](MEMORY.md)。HY search 返回的 `content` 已包含 SDK 统一生成的 返回格式见 [`MEMORY.md`](MEMORY.md)。HY search 返回的 `content` 已包含 SDK 统一生成的
逻辑时间和演化上下文;调用方不应再次转换时间戳或重复拼接 `When`。 逻辑时间和演化上下文;调用方不应再次转换时间戳或重复拼接 `When`。
+3 -3
View File
@@ -3,9 +3,9 @@
"dataLicense": "CC0-1.0", "dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT", "SPDXID": "SPDXRef-DOCUMENT",
"name": "one-memory", "name": "one-memory",
"documentNamespace": "https://one-memory.local/spdx/2026-10-15T17:26:47Z", "documentNamespace": "https://one-memory.local/spdx/2026-10-17T11:07:57Z",
"creationInfo": { "creationInfo": {
"created": "2026-10-15T17:26:47Z", "created": "2026-10-17T11:07:57Z",
"creators": [ "creators": [
"Tool: one-memory-generate-sbom" "Tool: one-memory-generate-sbom"
] ]
@@ -2335,7 +2335,7 @@
{ {
"SPDXID": "SPDXRef-Package-hy-memory", "SPDXID": "SPDXRef-Package-hy-memory",
"name": "hy-memory", "name": "hy-memory",
"versionInfo": "2.0.2", "versionInfo": "2.0.3",
"downloadLocation": "NOASSERTION", "downloadLocation": "NOASSERTION",
"filesAnalyzed": false, "filesAnalyzed": false,
"licenseConcluded": "Apache-2.0", "licenseConcluded": "Apache-2.0",
+2 -2
View File
@@ -2,14 +2,14 @@
MemHub itself is licensed under Apache-2.0 (see `LICENSE`). MemHub itself is licensed under Apache-2.0 (see `LICENSE`).
It bundles the runtime dependencies listed below. It bundles the runtime dependencies listed below.
Generated from the installed dependency tree on 2026-10-15T17:26:47Z Generated from the installed dependency tree on 2026-10-17T11:07:57Z
by `python3 scripts/generate_sbom.py`. Do not edit by hand. by `python3 scripts/generate_sbom.py`. Do not edit by hand.
Per-package license texts are not reproduced here yet; the license Per-package license texts are not reproduced here yet; the license
column is filled in as part of release review, and the SBOM records column is filled in as part of release review, and the SBOM records
`NOASSERTION` until then rather than guessing. `NOASSERTION` until then rather than guessing.
## hy-memory 2.0.2 ## hy-memory 2.0.3
License: Apache-2.0 License: Apache-2.0
+1 -1
View File
@@ -12,7 +12,7 @@ dependencies = [
"fastapi>=0.141.1", "fastapi>=0.141.1",
"filelock>=3.32.4", "filelock>=3.32.4",
# Public SDK version validated against MemHub's permission and recall contracts. # Public SDK version validated against MemHub's permission and recall contracts.
"hy-memory==2.0.2", "hy-memory==2.0.3",
# Retrieval's derived vector index directly consumes these locked versions. # Retrieval's derived vector index directly consumes these locked versions.
"chromadb==1.5.9", "chromadb==1.5.9",
"numpy==2.5.2", "numpy==2.5.2",
@@ -14,7 +14,7 @@ from pathlib import Path
from typing import Literal, cast from typing import Literal, cast
HY_MEMORY_DISTRIBUTION = "hy-memory" HY_MEMORY_DISTRIBUTION = "hy-memory"
HY_MEMORY_VERSION = "2.0.2" HY_MEMORY_VERSION = "2.0.3"
HY_MEMORY_NAMESPACE = "governed-v2" HY_MEMORY_NAMESPACE = "governed-v2"
DiagnosticLogLevel = Literal["error", "warning", "info", "debug"] DiagnosticLogLevel = Literal["error", "warning", "info", "debug"]
@@ -35,7 +35,7 @@ _COLLECTION_LOGGERS = (
# One Memory deliberately stays on ultra because its existing, user-visible # One Memory deliberately stays on ultra because its existing, user-visible
# profile/graph flow calls digest(), which the pinned public SDK exposes only # profile/graph flow calls digest(), which the pinned public SDK exposes only
# for ultra clients. Reader and non-reranker behavior remain pinned for # for ultra clients. Reader and non-reranker behavior remain pinned for
# compatibility with public SDK 2.0.2. # compatibility with public SDK 2.0.3.
HY_MEMORY_MODE = "ultra" HY_MEMORY_MODE = "ultra"
# The SDK only recognises `legacy` and `hybrid` (see # The SDK only recognises `legacy` and `hybrid` (see
# hy_memory/pipelines/_retrieval/config.py: `ALL_READERS = (READER_LEGACY, # hy_memory/pipelines/_retrieval/config.py: `ALL_READERS = (READER_LEGACY,
@@ -3,7 +3,7 @@
The result decides whether the `unknown` job state can ever be retired, so it The result decides whether the `unknown` job state can ever be retired, so it
is probed against the installed SDK rather than written down from memory. is probed against the installed SDK rather than written down from memory.
What was verified against `hy-memory==2.0.2`: What was verified against `hy-memory==2.0.3`:
- `HyMemoryClient.add(..., request_id=...)` accepts a caller-supplied id and - `HyMemoryClient.add(..., request_id=...)` accepts a caller-supplied id and
echoes it back. It is described as a request/receipt handle, and the SDK echoes it back. It is described as a request/receipt handle, and the SDK
@@ -1326,7 +1326,7 @@ def test_hy_runtime_matches_public_sdk_without_reranker_or_service_backends(
config = build_hy_memory_config(profile, api_key=None, data_dir=tmp_path) config = build_hy_memory_config(profile, api_key=None, data_dir=tmp_path)
assert HY_MEMORY_DISTRIBUTION == "hy-memory" assert HY_MEMORY_DISTRIBUTION == "hy-memory"
assert HY_MEMORY_VERSION == "2.0.2" assert HY_MEMORY_VERSION == "2.0.3"
assert HY_MEMORY_MODE == "ultra" assert HY_MEMORY_MODE == "ultra"
assert HY_MEMORY_READER == "hybrid" assert HY_MEMORY_READER == "hybrid"
assert os.environ["MEMORY_MODE"] == "ultra" assert os.environ["MEMORY_MODE"] == "ultra"
@@ -69,7 +69,7 @@ def test_no_idempotency_key_means_unknown_must_remain() -> None:
def test_measured_sdk_verdict_is_recorded() -> None: def test_measured_sdk_verdict_is_recorded() -> None:
"""Pin the measured answer for `hy-memory==2.0.2`. """Pin the measured answer for `hy-memory==2.0.3`.
The finding: `add()` takes a `request_id` but nothing de-duplicates on it, The finding: `add()` takes a `request_id` but nothing de-duplicates on it,
while `MemoryInspector.get_pipeline_logs(request_id=...)` can look the while `MemoryInspector.get_pipeline_logs(request_id=...)` can look the
@@ -4,7 +4,7 @@ Dev history: when the model extracted no fact, the coding extractor stored the
raw dialogue as a working fact, and with no words of the person's it took the raw dialogue as a working fact, and with no words of the person's it took the
first 600 characters of the rendered trace. MemHub showed that as the memory first 600 characters of the rendered trace. MemHub showed that as the memory
content, which is where `[0] assistant: ... [1] tool(?): ...` came from content, which is where `[0] assistant: ... [1] tool(?): ...` came from
(D87). The SDK fix is present in 2.0.2: it does not store that fallback by (D87). The SDK fix remains present in 2.0.3: it does not store that fallback by
default. default.
This pins the default here, so a future bump that turns it back on, or our own This pins the default here, so a future bump that turns it back on, or our own
+4 -4
View File
@@ -991,7 +991,7 @@ wheels = [
[[package]] [[package]]
name = "hy-memory" name = "hy-memory"
version = "2.0.2" version = "2.0.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "chromadb" }, { name = "chromadb" },
@@ -1008,9 +1008,9 @@ dependencies = [
{ name = "scikit-learn" }, { name = "scikit-learn" },
{ name = "tiktoken" }, { name = "tiktoken" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/b4/45/367b6d319f8f6c4fb99ee84d440e19616e64096fa50c3cc7672f7ef98653/hy_memory-2.0.2.tar.gz", hash = "sha256:1ba3b0d0bb1eb15ce9bf9b055190449614f93b550d02fb1646469dd01162c77e", size = 823220, upload-time = "2026-10-16T16:01:48.002Z" } sdist = { url = "https://files.pythonhosted.org/packages/e0/12/10e91468d1331eff8380e6b32c1e8784413660a299005ce07ac3e60e90bd/hy_memory-2.0.3.tar.gz", hash = "sha256:cdebd46b16ebe3cb04c89475f9044d30c6cc9065796be369f5d9607410a5c96b", size = 823596, upload-time = "2026-10-17T11:06:23.093Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/1f/0e/2a95b967ec29165fe36e3f6d7da3e07baeb6d7404a023d4b816223c8af60/hy_memory-2.0.2-py3-none-any.whl", hash = "sha256:e76419c3313db4fd4850249ec833ce7f98d17049a3e346b06bb1461038021384", size = 886789, upload-time = "2026-10-16T16:01:45.899Z" }, { url = "https://files.pythonhosted.org/packages/af/ed/bac8c15eb91baeaeb15a9061d7937ffd02ebe3384757addf0ca09660e592/hy_memory-2.0.3-py3-none-any.whl", hash = "sha256:763d6388ea83762e06c51aecd8e5d8e76211000f67355f65a760eb0a17ede4c5", size = 887157, upload-time = "2026-10-17T11:06:20.994Z" },
] ]
[[package]] [[package]]
@@ -1837,7 +1837,7 @@ requires-dist = [
{ name = "fastapi", specifier = ">=0.141.1" }, { name = "fastapi", specifier = ">=0.141.1" },
{ name = "filelock", specifier = ">=3.32.4" }, { name = "filelock", specifier = ">=3.32.4" },
{ name = "httpx", specifier = ">=0.28.1" }, { name = "httpx", specifier = ">=0.28.1" },
{ name = "hy-memory", specifier = "==2.0.2" }, { name = "hy-memory", specifier = "==2.0.3" },
{ name = "keyring", specifier = ">=25.7.0" }, { name = "keyring", specifier = ">=25.7.0" },
{ name = "numpy", specifier = "==2.5.2" }, { name = "numpy", specifier = "==2.5.2" },
{ name = "onnxruntime", specifier = "==1.23.2" }, { name = "onnxruntime", specifier = "==1.23.2" },
+2 -2
View File
@@ -155,7 +155,7 @@ write. Retrieval results are checked against current Governance and access
scope before being returned to the UI or an authorized host. scope before being returned to the UI or an authorized host.
The currently pinned SDK is the public PyPI distribution The currently pinned SDK is the public PyPI distribution
`hy-memory==2.0.2`. Runtime configuration and permission boundaries are `hy-memory==2.0.3`. Runtime configuration and permission boundaries are
documented in [`../MEMORY.md`](../MEMORY.md). documented in [`../MEMORY.md`](../MEMORY.md).
## Permission Boundaries ## Permission Boundaries
@@ -355,7 +355,7 @@ Support is declared per immutable GitHub Release manifest:
- macOS arm64 and x64 App/Runtime artifacts must carry Developer ID signatures, - macOS arm64 and x64 App/Runtime artifacts must carry Developer ID signatures,
notarization tickets, and native-platform acceptance receipts. notarization tickets, and native-platform acceptance receipts.
- Windows is not supported. - Windows is not supported.
- `hy-memory==2.0.2` is the public Python SDK dependency. - `hy-memory==2.0.3` is the public Python SDK dependency.
See [`INSTALLATION.md`](INSTALLATION.md) for the release matrix. A source test, See [`INSTALLATION.md`](INSTALLATION.md) for the release matrix. A source test,
fake hosting test, or cross-build does not substitute for a native-platform fake hosting test, or cross-build does not substitute for a native-platform
+1 -1
View File
@@ -36,7 +36,7 @@ MEMMY_LICENSE = (
MEMMY_PROVENANCE = MEMMY_LICENSE.with_name("PROVENANCE.md") MEMMY_PROVENANCE = MEMMY_LICENSE.with_name("PROVENANCE.md")
MEMMY_PIN = "25acd5f29fc7df73b943713abe61f1b2f9839887" MEMMY_PIN = "25acd5f29fc7df73b943713abe61f1b2f9839887"
HY_MEMORY_NAME = "hy-memory" HY_MEMORY_NAME = "hy-memory"
HY_MEMORY_VERSION = "2.0.2" HY_MEMORY_VERSION = "2.0.3"
class SbomError(RuntimeError): class SbomError(RuntimeError):
+1 -1
View File
@@ -12,7 +12,7 @@ test("installation docs disclose publication and lifecycle boundaries", async ()
"utf8", "utf8",
); );
assert.match(readme, /公共 Python SDK 为 `hy-memory==2\.0\.2`/); assert.match(readme, /公共 Python SDK 为 `hy-memory==2\.0\.3`/);
assert.match(readme, /`v1\.0\.2` 的发行目标是 Linux x64\/arm64 Runtime/); assert.match(readme, /`v1\.0\.2` 的发行目标是 Linux x64\/arm64 Runtime/);
assert.match(readme, /Linux 制品由 GitHub Actions/); assert.match(readme, /Linux 制品由 GitHub Actions/);
assert.match(readme, /macOS.*Developer ID 签名、公证/s); assert.match(readme, /macOS.*Developer ID 签名、公证/s);
+3 -3
View File
@@ -13,7 +13,7 @@ spec.loader.exec_module(module)
def test_hy_memory_notice_comes_from_the_installed_dist_info(tmp_path: Path) -> None: def test_hy_memory_notice_comes_from_the_installed_dist_info(tmp_path: Path) -> None:
dist_info = tmp_path / "hy_memory-2.0.2.dist-info" dist_info = tmp_path / "hy_memory-2.0.3.dist-info"
licenses = dist_info / "licenses" licenses = dist_info / "licenses"
licenses.mkdir(parents=True) licenses.mkdir(parents=True)
(dist_info / "METADATA").write_text( (dist_info / "METADATA").write_text(
@@ -21,7 +21,7 @@ def test_hy_memory_notice_comes_from_the_installed_dist_info(tmp_path: Path) ->
( (
"Metadata-Version: 2.4", "Metadata-Version: 2.4",
"Name: hy-memory", "Name: hy-memory",
"Version: 2.0.2", "Version: 2.0.3",
"License-Expression: Apache-2.0", "License-Expression: Apache-2.0",
"", "",
) )
@@ -38,7 +38,7 @@ def test_hy_memory_notice_comes_from_the_installed_dist_info(tmp_path: Path) ->
notice = module.hy_memory_notice(dist_info) notice = module.hy_memory_notice(dist_info)
assert notice["name"] == "hy-memory" assert notice["name"] == "hy-memory"
assert notice["version"] == "2.0.2" assert notice["version"] == "2.0.3"
assert notice["license"] == "Apache-2.0" assert notice["license"] == "Apache-2.0"
assert notice["copyright"] == "Copyright (C) 2026 Tencent. All rights reserved." assert notice["copyright"] == "Copyright (C) 2026 Tencent. All rights reserved."
assert "Licensed under the Apache License" in notice["text"] assert "Licensed under the Apache License" in notice["text"]
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "hy-memory" name = "hy-memory"
version = "2.0.2" version = "2.0.3"
description = "HY Memory - Industrial-grade dual-system cognitive memory framework" description = "HY Memory - Industrial-grade dual-system cognitive memory framework"
readme = "README.md" readme = "README.md"
requires-python = ">=3.9" requires-python = ">=3.9"