diff --git a/MCP_SERVER.md b/MCP_SERVER.md index 675defb..4b1f468 100644 --- a/MCP_SERVER.md +++ b/MCP_SERVER.md @@ -2,7 +2,7 @@ [English overview](README.md) · [中文说明](README_zh-CN.md) · [SOC guide](docs/integrations/soc-reference.md) · [Guard guide](docs/integrations/agent-guard-onboarding.en.md) -OpenWorkProof exposes **32 local MCP tools in version 1.6.0**. Connect them to an existing Agent when you want to inspect signed work records, review supplied security alerts, or check an exported evidence bundle. +OpenWorkProof exposes **32 local MCP tools in version 1.6.1**. Connect them to an existing Agent when you want to inspect signed work records, review supplied security alerts, or check an exported evidence bundle. You can start with the synthetic alert example below without creating signing keys or connecting a production system. Developers integrating a work-contract workflow can then use the schema, signing, execution and verification tools. @@ -27,7 +27,7 @@ For a client that accepts an `mcpServers` configuration, add: "mcpServers": { "openworkproof": { "command": "uvx", - "args": ["--from", "openworkproof==1.6.0", "owp-mcp"] + "args": ["--from", "openworkproof==1.6.1", "owp-mcp"] } } } @@ -42,7 +42,7 @@ The configuration location and JSON shape depend on the host. For example, VS Co If you prefer to install the command first: ```sh -uv tool install 'openworkproof==1.6.0' +uv tool install 'openworkproof==1.6.1' ``` Then configure the MCP client to launch `owp-mcp`, using its absolute executable path if the client's environment cannot find it. An equivalent entry point in an environment where the package is installed is: @@ -51,7 +51,7 @@ Then configure the MCP client to launch `owp-mcp`, using its absolute executable python -m openworkproof.mcp_transport ``` -`uvx openworkproof==1.6.0` also starts the MCP server. The explicit `owp-mcp` entry point avoids confusing it with `owp`, which is the separate CLI. A manually started stdio server waits for MCP messages; it does not open a web page or a network port. +`uvx openworkproof==1.6.1` also starts the MCP server. The explicit `owp-mcp` entry point avoids confusing it with `owp`, which is the separate CLI. A manually started stdio server waits for MCP messages; it does not open a web page or a network port. ## 2. Try one complete alert-review example diff --git a/README.md b/README.md index ccf640d..c28e77c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ -**English** · [简体中文](README_zh-CN.md) +**English** · [简体中文](https://github.com/dengyier/OpenWorkProof/blob/main/README_zh-CN.md) **Check what an AI agent was allowed to do, what it recorded, and whether its evidence holds up.** @@ -12,16 +12,16 @@ You keep the final decision to accept or reject the result. Connecting OWP to an [Get started](#get-started-with-mcp) · [Codex Guard](#try-codex-preview-protection) · [Docs](#documentation) · [Community](#community-and-contributing) -Current release: **1.6.0** · [PyPI](https://pypi.org/project/openworkproof/1.6.0/) · [Release notes](https://github.com/dengyier/OpenWorkProof/releases/tag/v1.6.0) · [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.dengyier%2FOpenWorkProof/versions/1.6.0) +Current release: **1.6.1** · [PyPI](https://pypi.org/project/openworkproof/1.6.1/) · [Release notes](https://github.com/dengyier/OpenWorkProof/releases/tag/v1.6.1) · [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.dengyier%2FOpenWorkProof/versions/1.6.1) ## What can you do with it? | Your task | What OWP helps you do | Start here | | --- | --- | --- | -| Review an agent's work records | Check signed task scope, recorded actions and evidence; export a bundle another reviewer can inspect. Your integration must supply the records. | [MCP tools](MCP_SERVER.md), [offline verification](docs/offline-verification.md) | -| Let Codex edit a preview copy | Explicitly allow supported text edits inside one preview directory and reject out-of-scope requests in the guarded launch path. | [Guard setup](docs/integrations/agent-guard-onboarding.en.md) — experimental | -| Review Slips alert data | Group supplied JSONL alerts into review cases, inspect simulated decisions and export a signed evidence bundle. | [SOC walkthrough](docs/integrations/soc-reference.md) — reference implementation | -| Add evidence review to a delivery workflow | Integrate verification into a GitHub Action or your own agent workflow, then keep human acceptance as a separate step. | [GitHub Action example](examples/github-action/README.md), [integration details](docs/reference/project-overview-en.md#integration-paths) | +| Review an agent's work records | Check signed task scope, recorded actions and evidence; export a bundle another reviewer can inspect. Your integration must supply the records. | [MCP tools](https://github.com/dengyier/OpenWorkProof/blob/main/MCP_SERVER.md), [offline verification](https://github.com/dengyier/OpenWorkProof/blob/main/docs/offline-verification.md) | +| Let Codex edit a preview copy | Explicitly allow supported text edits inside one preview directory and reject out-of-scope requests in the guarded launch path. | [Guard setup](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/agent-guard-onboarding.en.md) — experimental | +| Review Slips alert data | Group supplied JSONL alerts into review cases, inspect simulated decisions and export a signed evidence bundle. | [SOC walkthrough](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/soc-reference.md) — reference implementation | +| Add evidence review to a delivery workflow | Integrate verification into a GitHub Action or your own agent workflow, then keep human acceptance as a separate step. | [GitHub Action example](https://github.com/dengyier/OpenWorkProof/blob/main/examples/github-action/README.md), [integration details](https://github.com/dengyier/OpenWorkProof/blob/main/docs/reference/project-overview-en.md#integration-paths) | OWP does not automatically watch every agent or tool on your computer. Fleet permissions, WorkBuddy integration and live SOC remediation are not part of the verified release paths above. @@ -34,13 +34,13 @@ You need Python **3.10+**, [uv](https://docs.astral.sh/uv/getting-started/instal "mcpServers": { "openworkproof": { "command": "uvx", - "args": ["openworkproof==1.6.0"] + "args": ["openworkproof==1.6.1"] } } } ``` -This is the common `mcpServers` configuration shape. Some clients use a different file or top-level key; see the [client-specific setup](MCP_SERVER.md). `uvx` downloads the package and dependencies when needed. OWP does not require an OWP cloud account or API key. +This is the common `mcpServers` configuration shape. Some clients use a different file or top-level key; see the [client-specific setup](https://github.com/dengyier/OpenWorkProof/blob/main/MCP_SERVER.md). `uvx` downloads the package and dependencies when needed. OWP does not require an OWP cloud account or API key. After the client connects, it should discover **32 tools**. Try this first with the included synthetic data: @@ -48,7 +48,7 @@ After the client connects, it should discover **32 tools**. Try this first with You should receive a case summary and evidence bundle. **`UNKNOWN` is expected without independent trust information**; it does not mean installation failed. This sample uses a deterministic investigation stub and simulated actions. It does not test detection accuracy or remediate a host. -To use your own alerts, follow the [SOC guide](docs/integrations/soc-reference.md). Alert content is returned to your MCP client and can enter its model conversation, so use data you are authorized to share with that client. +To use your own alerts, follow the [SOC guide](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/soc-reference.md). Alert content is returned to your MCP client and can enter its model conversation, so use data you are authorized to share with that client. ### Optional: install the SOC Review Skill @@ -58,7 +58,7 @@ The Skill gives your agent a repeatable procedure for using those tools. With No npx skills add dengyier/OpenWorkProof --skill openworkproof-soc-review ``` -Choose your agent and install scope in the installer. [Read the instructions first](skills/openworkproof-soc-review/SKILL.md), or use the [release ZIP](https://github.com/dengyier/OpenWorkProof/releases/download/v1.6.0/openworkproof-soc-review-1.6.0.zip). +Choose your agent and install scope in the installer. [Read the instructions first](https://github.com/dengyier/OpenWorkProof/blob/main/skills/openworkproof-soc-review/SKILL.md), or use the [release ZIP](https://github.com/dengyier/OpenWorkProof/releases/download/v1.6.0/openworkproof-soc-review-1.6.0.zip). The Skill does not configure MCP or enable Guard. Configure the MCP server above separately. Your client's usual model charges still apply. @@ -66,16 +66,16 @@ The Skill does not configure MCP or enable Guard. Configure the MCP server above **Experimental, separately enabled.** Guard is for supported local text-editing tasks in a designated preview directory. Use a new test project or a copy you own first. -Read the [English first-run guide](docs/integrations/agent-guard-onboarding.en.md) before enabling. It includes a complete test project, scope review, expected checks and uninstall steps. The approval prompts are currently in Chinese, while the default output is JSON. Review the scope yourself and enter `yes` only when you understand it; do not use a trust shortcut to skip that review. +Read the [English first-run guide](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/agent-guard-onboarding.en.md) before enabling. It includes a complete test project, scope review, expected checks and uninstall steps. The approval prompts are currently in Chinese, while the default output is JSON. Review the scope yourself and enter `yes` only when you understand it; do not use a trust shortcut to skip that review. `enable` runs a live probe and `run` uses your existing Codex login and model allowance. Continue only after `doctor` confirms the required setup, current review and live probe. Ordinary Codex launches are not automatically protected. -The recorded live-host baseline covers **macOS, Python 3.12 and Codex CLI 0.147.0**, from the Guard implementation introduced in 1.5.0. Check compatibility and rerun the probe in your own environment. Builds, deployment, online search, personal MCP/plugins and whole-computer isolation are outside this launch path. See [scope and limitations](docs/integrations/agent-guard-codex.md). +The recorded live-host baseline covers **macOS, Python 3.12 and Codex CLI 0.147.0**, from the Guard implementation introduced in 1.5.0. Check compatibility and rerun the probe in your own environment. Builds, deployment, online search, personal MCP/plugins and whole-computer isolation are outside this launch path. See [scope and limitations](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/agent-guard-codex.md). Install the CLI package, then run these commands from your target Git project after creating a `preview` directory and a text file such as `preview/index.html`: ```sh -uv tool install --python 3.12 'openworkproof==1.6.0' +uv tool install --python 3.12 'openworkproof==1.6.1' owp-guard install --project "$(pwd -P)" --allow-dir preview owp-guard enable --project "$(pwd -P)" owp-guard doctor --project "$(pwd -P)" @@ -97,12 +97,12 @@ owp acceptance-bundle-verify /path/to/acceptance-bundle owp-aisoc verify /path/to/soc-review ``` -These formats and their trust requirements differ. Follow the [Core verification guide](docs/offline-verification.md) or [SOC trust guide](docs/integrations/soc-reference.md#cli-and-independent-verification). Obtain expected public keys and checkpoints through a separate trusted route; copying them from an untrusted bundle does not establish who you are trusting. +These formats and their trust requirements differ. Follow the [Core verification guide](https://github.com/dengyier/OpenWorkProof/blob/main/docs/offline-verification.md) or [SOC trust guide](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/soc-reference.md#cli-and-independent-verification). Obtain expected public keys and checkpoints through a separate trusted route; copying them from an untrusted bundle does not establish who you are trusting. ## What a result means - **Verification checks evidence under the stated scope and trust inputs.** It does not establish that a business outcome is correct. Core `VERIFIED` and binding `BOUND` do not mean customer acceptance or payment. -- **Human acceptance is separate.** The intended reviewer keeps the decision to accept or reject a delivery. See the [acceptance workflow](docs/reference/project-overview-en.md#verification-and-acceptance-are-separate-decisions). +- **Human acceptance is separate.** The intended reviewer keeps the decision to accept or reject a delivery. See the [acceptance workflow](https://github.com/dengyier/OpenWorkProof/blob/main/docs/reference/project-overview-en.md#verification-and-acceptance-are-separate-decisions). - **SOC results are reference results.** Investigation is a deterministic stub; actions and acceptance statuses are simulated. There is no live SOC deployment, production detection benchmark, OS isolation or HSM in this integration. - **Signing tools can handle sensitive keys.** Generic key-generation/signing tools can return or accept private-key material. Keep production signing keys out of model conversations and use an externally controlled signing workflow. @@ -112,12 +112,12 @@ OWP is open source. The current package and Skill are free to use under their li | Need | Documentation | | --- | --- | -| Connect MCP and understand the 32 tools | [MCP setup and tool reference](MCP_SERVER.md) | -| Review Slips alerts and install the Skill | [SOC walkthrough](docs/integrations/soc-reference.md) | -| Set up a guarded Codex task | [English guide](docs/integrations/agent-guard-onboarding.en.md) · [中文指南](docs/integrations/agent-guard-onboarding.md) | -| Build an integration with signed task scope and human authority | [Human Agency protocol](docs/protocol/human-agency-profile-v0.1.md) · [runnable example](examples/human_agency_profile_v01.py) | -| Understand protocol mechanics and historical validation | [English reference](docs/reference/project-overview-en.md) · [中文参考](docs/reference/project-overview-zh-CN.md) · [status](docs/status.md) | -| Report a reproducible problem or contribute | [Contributing](CONTRIBUTING.md) · [Issues](https://github.com/dengyier/OpenWorkProof/issues) | +| Connect MCP and understand the 32 tools | [MCP setup and tool reference](https://github.com/dengyier/OpenWorkProof/blob/main/MCP_SERVER.md) | +| Review Slips alerts and install the Skill | [SOC walkthrough](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/soc-reference.md) | +| Set up a guarded Codex task | [English guide](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/agent-guard-onboarding.en.md) · [中文指南](https://github.com/dengyier/OpenWorkProof/blob/main/docs/integrations/agent-guard-onboarding.md) | +| Build an integration with signed task scope and human authority | [Human Agency protocol](https://github.com/dengyier/OpenWorkProof/blob/main/docs/protocol/human-agency-profile-v0.1.md) · [runnable example](https://github.com/dengyier/OpenWorkProof/blob/main/examples/human_agency_profile_v01.py) | +| Understand protocol mechanics and historical validation | [English reference](https://github.com/dengyier/OpenWorkProof/blob/main/docs/reference/project-overview-en.md) · [中文参考](https://github.com/dengyier/OpenWorkProof/blob/main/docs/reference/project-overview-zh-CN.md) · [status](https://github.com/dengyier/OpenWorkProof/blob/main/docs/status.md) | +| Report a reproducible problem or contribute | [Contributing](https://github.com/dengyier/OpenWorkProof/blob/main/CONTRIBUTING.md) · [Issues](https://github.com/dengyier/OpenWorkProof/issues) | ## Community and contributing @@ -125,10 +125,10 @@ OWP is open source. The current package and Skill are free to use under their li The card is a live directory badge; follow it for the scanned version and scope. Find OWP on [MCPRush](https://mcprush.com/dengyier/openworkproof-mcp), [Glama](https://glama.ai/mcp/servers/dengyier/OpenWorkProof), and [AgentSkills.in](https://www.agentskills.in/marketplace/@dengyier/openworkproof-soc-review). -The [community record](docs/reference/project-overview-en.md#community-contributions-and-external-records) preserves directory contributions, external research, integration experiments and technical writing, with their original links and checked dates. These records have different scopes and do not imply endorsement or production adoption. +The [community record](https://github.com/dengyier/OpenWorkProof/blob/main/docs/reference/project-overview-en.md#community-contributions-and-external-records) preserves directory contributions, external research, integration experiments and technical writing, with their original links and checked dates. These records have different scopes and do not imply endorsement or production adoption. Contribute a reproducible bug report, an integration, or a documentation improvement. Please report security issues privately through [GitHub Security Advisories](https://github.com/dengyier/OpenWorkProof/security/advisories/new). ## License -OWP Core: [Apache-2.0](LICENSE). Tim / alphatin123's contributed `aisoc` component: [MIT](LICENSES/MIT-aisoc.txt). The combined package metadata uses `Apache-2.0 AND MIT`. +OWP Core: [Apache-2.0](https://github.com/dengyier/OpenWorkProof/blob/main/LICENSE). Tim / alphatin123's contributed `aisoc` component: [MIT](https://github.com/dengyier/OpenWorkProof/blob/main/LICENSES/MIT-aisoc.txt). The combined package metadata uses `Apache-2.0 AND MIT`. diff --git a/README_zh-CN.md b/README_zh-CN.md index 04e30f2..8ead063 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -10,7 +10,7 @@ OpenWorkProof(OWP)是一套面向 Agent 开发者和团队的开源工具。 [开始使用](#通过-mcp-开始使用) · [Codex 目录保护](#试用-codex-预览目录保护) · [文档](#文档入口) · [社区](#社区与参与) -当前版本:**1.6.0** · [PyPI](https://pypi.org/project/openworkproof/1.6.0/) · [发行说明](https://github.com/dengyier/OpenWorkProof/releases/tag/v1.6.0) · [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.dengyier%2FOpenWorkProof/versions/1.6.0) +当前版本:**1.6.1** · [PyPI](https://pypi.org/project/openworkproof/1.6.1/) · [发行说明](https://github.com/dengyier/OpenWorkProof/releases/tag/v1.6.1) · [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.dengyier%2FOpenWorkProof/versions/1.6.1) ## 能帮你完成哪些事? @@ -32,7 +32,7 @@ OWP 不会自动监控电脑上所有 Agent 和工具。多个 Agent 的统一 "mcpServers": { "openworkproof": { "command": "uvx", - "args": ["openworkproof==1.6.0"] + "args": ["openworkproof==1.6.1"] } } } @@ -73,7 +73,7 @@ Skill 不会自动配置 MCP 或开启 Guard,仍需单独完成前面的 MCP 安装 CLI 后,在目标 Git 项目里创建 `preview` 目录和 `preview/index.html` 这样的文本文件,再运行: ```sh -uv tool install --python 3.12 'openworkproof==1.6.0' +uv tool install --python 3.12 'openworkproof==1.6.1' owp-guard install --project "$(pwd -P)" --allow-dir preview owp-guard enable --project "$(pwd -P)" owp-guard doctor --project "$(pwd -P)" diff --git a/docs/integrations/agent-guard-onboarding.en.md b/docs/integrations/agent-guard-onboarding.en.md index 60f64db..8076580 100644 --- a/docs/integrations/agent-guard-onboarding.en.md +++ b/docs/integrations/agent-guard-onboarding.en.md @@ -16,8 +16,8 @@ ordinary Codex window is not automatically protected. - Use a local POSIX environment, a working Git installation and Python 3.12. The recorded real-host baseline is **macOS, Python 3.12 and Codex CLI 0.147.0**. That live record was obtained for the 1.5.0 Guard implementation; the current - installation example uses package 1.6.0. It is not a new live acceptance claim - for every 1.6.0 environment. Check compatibility before using another host or + installation example uses package 1.6.1. It is not a new live acceptance claim + for every 1.6.1 environment. Check compatibility before using another host or version. Windows and WorkBuddy are not verified for this Guard workflow. - Have Codex CLI installed and signed in with your own account. `enable` runs a real Codex probe, and `run` executes a real Agent task. Both use your existing @@ -41,13 +41,15 @@ git init mkdir preview printf '\nOWP preview\n

Original heading

\n' > preview/index.html printf '.venv/\n' > .gitignore -python3.12 -m venv --copies .venv +OWP_TRIAL_PYTHON="$(python3.12 -c 'import pathlib,sys; print(pathlib.Path(sys.executable).resolve())')" +"$OWP_TRIAL_PYTHON" -m venv --copies .venv . .venv/bin/activate -python -m pip install 'openworkproof==1.6.0' +python -m pip install 'openworkproof==1.6.1' ``` -The virtual environment keeps this trial's package installation separate from -other projects. `pwd -P` gives a physical path; Guard rejects symbolic-link paths. +Resolving the real Python executable avoids a broken copied environment when +`python3.12` is a symbolic link. The virtual environment keeps this trial's +package installation separate from other projects. `pwd -P` gives a physical path; Guard rejects symbolic-link paths. The allowed `preview` directory must already exist and be a proper subdirectory of the project, not the project root or a hidden directory. diff --git a/docs/integrations/agent-guard-onboarding.md b/docs/integrations/agent-guard-onboarding.md index 5f2a9f2..cf5388b 100644 --- a/docs/integrations/agent-guard-onboarding.md +++ b/docs/integrations/agent-guard-onboarding.md @@ -2,7 +2,7 @@ 中文 | [English](agent-guard-onboarding.en.md) -自 1.5.0 起提供的实验性命令:承接 Codex 预览目录保护,完成安装后的启用与确认生效;当前安装示例为 1.6.0,以下 1.5.0 实现实机记录来自 2026-10-26,不代表所有 1.6.0 环境重新完成实机验收。 +自 1.5.0 起提供的实验性命令:承接 Codex 预览目录保护,完成安装后的启用与确认生效;当前安装示例为 1.6.1,以下 1.5.0 实现实机记录来自 2026-10-26,不代表所有 1.6.1 环境重新完成实机验收。 不改现有运行时策略,不重写用户的 Codex 配置,不使用跳过 Hook 信任检查的参数。 ## 用户流程 @@ -36,7 +36,7 @@ ## 使用方法 -使用当前 1.6.0 包中的独立命令;该入口始于 1.5.0。安装或连接 MCP 不会自动启用 Guard。 +使用当前 1.6.1 包中的独立命令;该入口始于 1.5.0。安装或连接 MCP 不会自动启用 Guard。 先准备已登录的 Codex CLI、Git 和 Python 3.12。已记录的实机基线为 macOS、Python 3.12、 Codex CLI 0.147.0,其他 POSIX 环境需先核查兼容性。软件包的一般要求是 Python 3.10+, 不能把它等同于 Guard 的实机验证范围。 @@ -56,11 +56,13 @@ git init mkdir preview printf '\nOWP preview\n

Original heading

\n' > preview/index.html printf '.venv/\n' > .gitignore -python3.12 -m venv --copies .venv +OWP_TRIAL_PYTHON="$(python3.12 -c 'import pathlib,sys; print(pathlib.Path(sys.executable).resolve())')" +"$OWP_TRIAL_PYTHON" -m venv --copies .venv . .venv/bin/activate -python -m pip install 'openworkproof==1.6.0' +python -m pip install 'openworkproof==1.6.1' ``` +先解析 Python 的真实位置,避免 `python3.12` 是符号链接时复制出的环境无法启动。 这个虚拟环境将本次安装与其他项目隔开。`preview` 必须是已存在的项目子目录,不能直接 授权整个项目、隐藏目录或 `.codex`。这里的 HTML 文件只是预览副本,不会构建、部署或发布。 @@ -90,7 +92,7 @@ owp-guard doctor --project "$OWP_TRIAL_PROJECT" } ``` -这是当前程序的预期结果形状,不是一次新的 1.6.0 实机验收回执。若 `ready_for_guarded_run` +这是当前程序的预期结果形状,不是一次新的 1.6.1 实机验收回执。若 `ready_for_guarded_run` 为 false,先查看实际原因,不能绕过信任或改用普通 Codex 启动后仍称为已保护。升级、重装、 范围、配置或宿主变化后,需要重新启用并完成检查。 diff --git a/docs/integrations/soc-reference.md b/docs/integrations/soc-reference.md index 44403c5..da73e50 100644 --- a/docs/integrations/soc-reference.md +++ b/docs/integrations/soc-reference.md @@ -1,4 +1,4 @@ -# AI-SOC reference integration (OpenWorkProof 1.6.0) +# AI-SOC reference integration (OpenWorkProof 1.6.1) This is an experimental reference workflow for **reviewing supplied Slips alerts and checking exported evidence**. It uses a synthetic-trained model release gate, deterministic investigation stub and simulated in-memory execution. It does not install an IDS, protect the whole computer, connect to a real AiSOC service, provide OS isolation/HSM, or perform real host remediation. Installing MCP or this Skill does not activate OWP Guard. @@ -7,7 +7,7 @@ The `aisoc` package originates from Tim / alphatin123's MIT-licensed contributio ## Install and connect ```sh -uv tool install 'openworkproof==1.6.0' +uv tool install 'openworkproof==1.6.1' ``` An MCP client can start the existing stdio server with: @@ -17,13 +17,13 @@ An MCP client can start the existing stdio server with: "mcpServers": { "openworkproof": { "command": "uvx", - "args": ["openworkproof==1.6.0"] + "args": ["openworkproof==1.6.1"] } } } ``` -The original 29 MCP tools remain; this release adds three reference tools: +Introduced in 1.6.0, the three reference tools below remain available alongside the original 29 MCP tools: | Tool | Input and result | | --- | --- | diff --git a/llms.txt b/llms.txt index e86ac89..9a7fe12 100644 --- a/llms.txt +++ b/llms.txt @@ -4,7 +4,7 @@ ## Current release -OpenWorkProof 1.6.0 exposes 32 local stdio MCP tools. The Python package requires Python 3.10 or newer. The package also includes a separately enabled experimental Codex Guard and an experimental SOC reference CLI. Publication, installation, protection, verification and human acceptance are separate facts. +OpenWorkProof 1.6.1 exposes 32 local stdio MCP tools. The Python package requires Python 3.10 or newer. The package also includes a separately enabled experimental Codex Guard and an experimental SOC reference CLI. Publication, installation, protection, verification and human acceptance are separate facts. ## Start with a concrete task @@ -15,7 +15,7 @@ OpenWorkProof 1.6.0 exposes 32 local stdio MCP tools. The Python package require ## Connect MCP -Use a stdio-capable local MCP client to launch `uvx --from openworkproof==1.6.0 owp-mcp`. The MCP client manages this process. There is no hosted remote endpoint or API key in this setup. `owp` is the separate CLI, not the stdio server. +Use a stdio-capable local MCP client to launch `uvx --from openworkproof==1.6.1 owp-mcp`. The MCP client manages this process. There is no hosted remote endpoint or API key in this setup. `owp` is the separate CLI, not the stdio server. The optional `openworkproof-soc-review` Agent Skill is installable with `npx skills add dengyier/OpenWorkProof --skill openworkproof-soc-review`. The Skill supplies instructions; it does not configure MCP or grant host permissions. diff --git a/mcp.json b/mcp.json index e153270..24d5cf3 100644 --- a/mcp.json +++ b/mcp.json @@ -11,12 +11,12 @@ "name": "dengyier" }, "license": "Apache-2.0 AND MIT", - "version": "1.6.0", + "version": "1.6.1", "packages": [ { "registryType": "pypi", "identifier": "openworkproof", - "version": "1.6.0", + "version": "1.6.1", "transport": { "type": "stdio" } diff --git a/pyproject.toml b/pyproject.toml index 4458d89..13fe8ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "openworkproof" -version = "1.6.0" +version = "1.6.1" description = "Agent work contracts and verifiable execution protocol — Ed25519-signed, offline-verifiable proof-carrying work for AI agents." readme = "README.md" license = "Apache-2.0 AND MIT" diff --git a/server.json b/server.json index ec46f72..3f4701c 100644 --- a/server.json +++ b/server.json @@ -8,12 +8,12 @@ }, "title": "OpenWorkProof", "websiteUrl": "https://github.com/dengyier/OpenWorkProof", - "version": "1.6.0", + "version": "1.6.1", "packages": [ { "registryType": "pypi", "identifier": "openworkproof", - "version": "1.6.0", + "version": "1.6.1", "transport": { "type": "stdio" } diff --git a/src/openworkproof/__init__.py b/src/openworkproof/__init__.py index 1b19f24..a3de10a 100644 --- a/src/openworkproof/__init__.py +++ b/src/openworkproof/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.6.0" +__version__ = "1.6.1" from importlib import import_module diff --git a/supply-chain/images/candidates/8ade6b95c0ef41534e2f68831bff8d30a14e0162.json b/supply-chain/images/candidates/8ade6b95c0ef41534e2f68831bff8d30a14e0162.json new file mode 100644 index 0000000..0286f64 --- /dev/null +++ b/supply-chain/images/candidates/8ade6b95c0ef41534e2f68831bff8d30a14e0162.json @@ -0,0 +1,132 @@ +{ + "schema_version": "openworkproof-image-candidate-inventory/0.2", + "source_revision": "8ade6b95c0ef41534e2f68831bff8d30a14e0162", + "base_image": { + "reference": "docker.io/library/python@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de", + "platform": "linux/arm64", + "python_version": "3.12.13" + }, + "build_inputs": { + "global": { + "project_requirements_lock_sha256": "be6f8e10d7a82b978913eb2b6a73ee11efc5a9af623e5a783163e3cb78179f8c", + "full_wheelhouse_sha256sums_sha256": "e8d3ccaaa1cf735113e7bd533637cef028d710725981fbe20968179c70ea3a72" + }, + "execution": { + "dockerfile_sha256": "ed415c1e0f6dd54e94aca73a860af3259fab44fafc542e507a2508dfda07d0eb", + "requirements_lock_sha256": "f60a9bd1cc239a5c2eab11e92665d1af10f457ee06381398350d9ddf0b8d4c70", + "runner_sha256": "a9eb1afc84ced1b573473d64d0e2fb9d7f05dfb9ead057b978720721bbb828d4", + "fixed_test_source_sha256": "79b8f001ae89c394901d5ba618e79821dd6d78dd6194de3023a28fcac6f130a6", + "wheel_sha256sums_sha256": "d34350069473b90a356fc24f41362bd457c87112ac82ad5f3468ebc97b5df5b2" + }, + "trusted_helper": { + "dockerfile_sha256": "e30ddb6023c1f19ca05c3e62b213e42a07743f7560d8aa3f36e805e61d4f6b75", + "requirements_lock_sha256": "a6fc946cbfb709962f85a38d5c3c5d605dc0885a363bf25045a9e5c4dd783435", + "debian_packages_lock_sha256": "d19818e666e1e62644a264d5ef28a8779e04b549e402351f9b1c1cbd90a470b1", + "source_allowlist_sha256": "4933cb72b5f2b476c8d46a91eced70b511aca3601ebbcfffc7c5d7de68c995f7", + "wheel_sha256sums_sha256": "1e75f54377e6fe7e303b60c6ad3c07bbaa886986a938b2b4f00ff5cf76e45dcf", + "deb_sha256sums_sha256": "79095383da9e8413666d9d8e78c04b57197adcd616358fdea87e5d0a98c8460e", + "helper_src_sha256sums_sha256": "29f9436f1b6619f9db592e0f63c2b6caa76622c00bf42f09113b1c288b3fe7ee" + } + }, + "images": { + "execution": { + "candidate_name": "openworkproof/execution-test:8ade6b95c0ef41534e2f68831bff8d30a14e0162", + "local_image_id": "sha256:174371a93063071c686f6cb95b46746c38a18fef540ea1d437b0c07560fc9077", + "local_repo_digests": [ + "openworkproof/execution-test@sha256:174371a93063071c686f6cb95b46746c38a18fef540ea1d437b0c07560fc9077" + ], + "platform": "linux/arm64", + "user": "65532:65532", + "entrypoint": [ + "/opt/venv/bin/python", + "-I", + "/opt/openworkproof/run_tests_runner.py" + ], + "cmd": [ + "execute" + ], + "labels": { + "org.opencontainers.image.description": "Offline Python 3.12 pytest runtime for the fixed Rich 15 source test", + "org.opencontainers.image.revision": "8ade6b95c0ef41534e2f68831bff8d30a14e0162", + "org.opencontainers.image.source": "https://github.com/dengyier/OpenWorkProof", + "org.opencontainers.image.title": "OpenWorkProof Rich execution/test candidate", + "org.openworkproof.base.digest": "sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de", + "org.openworkproof.image.role": "execution-test" + }, + "oci_manifest_digest": "sha256:8baedaacddbf9e1ea09856b54c7bebce70c42d936267b6206e56de10f7139212", + "archives": { + "docker": { + "format": "docker-archive", + "filename": "openworkproof-execution-test-candidate.docker-archive.tar", + "sha256": "b56e2a875a4755bc75ce94e9b5b39150736d86dcbc9345582d8fc7435f9ffca5" + }, + "oci": { + "format": "oci-image-layout-archive", + "filename": "openworkproof-execution-test-candidate.oci-archive.tar", + "sha256": "e5620b7f9bd96fe8f3e18499131e4d1defac050b5721017f68d6ea6cdd1b2058" + } + } + }, + "trusted_helper": { + "candidate_name": "openworkproof/trusted-helper-candidate:8ade6b95c0ef41534e2f68831bff8d30a14e0162", + "local_image_id": "sha256:cc9da4aaf9cb13fee24038da82235aaa65cc18252d390524b500b42a270da5f2", + "local_repo_digests": [ + "openworkproof/trusted-helper-candidate@sha256:cc9da4aaf9cb13fee24038da82235aaa65cc18252d390524b500b42a270da5f2" + ], + "platform": "linux/arm64", + "user": "65532:65532", + "entrypoint": [ + "/opt/venv/bin/python", + "-I", + "-m", + "openworkproof.trusted_helper" + ], + "cmd": null, + "labels": { + "org.opencontainers.image.description": "Offline candidate containing Git and the frozen OpenWorkProof helper subset", + "org.opencontainers.image.revision": "8ade6b95c0ef41534e2f68831bff8d30a14e0162", + "org.opencontainers.image.source": "https://github.com/dengyier/OpenWorkProof", + "org.opencontainers.image.title": "OpenWorkProof trusted-helper candidate", + "org.openworkproof.base.digest": "sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de", + "org.openworkproof.image.role": "trusted-helper-candidate" + }, + "oci_manifest_digest": "sha256:2ffc340155bd9652387d223eb9fd6571aeb08c1843c0f0ed292f0a3b1e9aedef", + "archives": { + "docker": { + "format": "docker-archive", + "filename": "openworkproof-trusted-helper-candidate.docker-archive.tar", + "sha256": "a921050511ee65214aa299cb5a32c873e4a5dd01df03618fd4b8cdef159abee9" + }, + "oci": { + "format": "oci-image-layout-archive", + "filename": "openworkproof-trusted-helper-candidate.oci-archive.tar", + "sha256": "33c0fafce83e003f2d831b8a08dc7df179f4fac7b70e83efd7ecd0cabdb1c094" + } + } + } + }, + "external_layout": { + "local_root": "/Users/molin/Project/openWorkProof-delivery", + "path_rule": "join-local-root-with-relative-path-no-parent-traversal", + "relative_paths": { + "wheelhouse": "wheelhouse/linux-arm64-cp312-full", + "git_deb_closure": "debs/linux-arm64-trixie-git", + "execution_build_context": "build-contexts/8ade6b95c0ef41534e2f68831bff8d30a14e0162/execution", + "trusted_helper_build_context": "build-contexts/8ade6b95c0ef41534e2f68831bff8d30a14e0162/trusted-helper", + "archives": "oci/8ade6b95c0ef41534e2f68831bff8d30a14e0162" + } + }, + "license": { + "status": "PENDING", + "spdx": "NOASSERTION", + "oci_label_present": false + }, + "claims": { + "registry_pushed": false, + "acceptor_access": false, + "clean_cache_reacquisition": false, + "final_trusted_helper": false, + "delivery_signoff_pass": false, + "acceptor_acquisition_path": null + } +} diff --git a/tests/test_documentation_boundaries.py b/tests/test_documentation_boundaries.py index 34e8232..6ce444a 100644 --- a/tests/test_documentation_boundaries.py +++ b/tests/test_documentation_boundaries.py @@ -482,6 +482,7 @@ def test_human_agency_example_describes_application_side_effects_precisely() -> def test_readmes_provide_current_install_configuration_and_language_navigation() -> None: import json + from urllib.parse import urljoin, urlsplit from openworkproof import __version__ @@ -494,8 +495,17 @@ def test_readmes_provide_current_install_configuration_and_language_navigation() assert configs, f"{relative} must provide an MCP configuration" server = json.loads(configs[0])["mcpServers"]["openworkproof"] assert server == {"command": "uvx", "args": [f"openworkproof=={__version__}"]} - assert f"]({other_language})" in text - assert "](MCP_SERVER.md)" in text + repository_docs = "https://github.com/dengyier/OpenWorkProof/blob/main/" + links = re.findall(r"\]\(([^)]+)\)", text) + resolved_links = {urljoin(repository_docs, link) for link in links} + assert repository_docs + other_language in resolved_links + assert repository_docs + "MCP_SERVER.md" in resolved_links + if relative == ENGLISH_README: + # PyPI renders this file at a package URL, so relative file links break. + assert all( + link.startswith("#") or urlsplit(link).scheme in {"https", "http"} + for link in links + ) assert "owp_soc_sample_alerts" in text assert "owp_soc_analyze_slips" in text assert "owp_soc_verify_bundle" in text diff --git a/tests/test_package.py b/tests/test_package.py index 4e2687c..b98f8d1 100644 --- a/tests/test_package.py +++ b/tests/test_package.py @@ -42,7 +42,7 @@ def test_package_version_is_protocol_version() -> None: def test_release_metadata_is_synchronized() -> None: - expected_version = "1.6.0" + expected_version = "1.6.1" pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text()) server = json.loads((ROOT / "server.json").read_text()) legacy_mcp = json.loads((ROOT / "mcp.json").read_text())