agent-readiness-insights-protocol 0.1.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.
@@ -0,0 +1,53 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ matrix:
17
+ python-version: ["3.11", "3.12", "3.13"]
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+ - name: Install
24
+ run: |
25
+ pip install --upgrade pip
26
+ pip install -e ".[dev]"
27
+ - name: Lint
28
+ run: ruff check src tests tools
29
+ - name: Test
30
+ run: pytest tests/ -v
31
+ - name: Verify schema export is up to date
32
+ run: |
33
+ python tools/export_schema.py
34
+ if ! git diff --quiet schemas/rule.schema.json; then
35
+ echo "schemas/rule.schema.json is stale. Run 'make schema' and commit."
36
+ git diff schemas/rule.schema.json
37
+ exit 1
38
+ fi
39
+
40
+ build:
41
+ runs-on: ubuntu-latest
42
+ needs: test
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+ - uses: actions/setup-python@v5
46
+ with:
47
+ python-version: "3.12"
48
+ - run: pip install --upgrade pip build
49
+ - run: python -m build
50
+ - uses: actions/upload-artifact@v4
51
+ with:
52
+ name: dist
53
+ path: dist/
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ .pytest_cache/
9
+ .ruff_cache/
10
+ .mypy_cache/
11
+ .venv/
12
+ venv/
13
+ .env
14
+ .env.local
15
+ .DS_Store
16
+ *.log
@@ -0,0 +1,15 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.6.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+ args: ["--maxkb=500"]
10
+ - id: detect-private-key
11
+ - repo: https://github.com/astral-sh/ruff-pre-commit
12
+ rev: v0.5.0
13
+ hooks:
14
+ - id: ruff
15
+ args: [--fix]
@@ -0,0 +1,48 @@
1
+ # Agent guide
2
+
3
+ Conventions for AI coding agents working in this repository.
4
+
5
+ ## Canonical commands
6
+
7
+ - Install dev deps: `make dev`
8
+ - Run tests: `make test`
9
+ - Lint: `make lint`
10
+ - Regenerate schema: `make schema`
11
+ - Build wheel: `make build`
12
+
13
+ The package is pure data + dataclasses. No CLI, no I/O, no network calls.
14
+ Everything is JSON-serialisable via pydantic.
15
+
16
+ ## Source of truth
17
+
18
+ - `src/agent_readiness_insights_protocol/version.py` — `PROTOCOL_VERSION`
19
+ and `RULES_VERSION`. These are the contract. Bump only on intentional
20
+ breaking changes; consumers will pin against them.
21
+ - `src/agent_readiness_insights_protocol/models.py` — pydantic dataclasses.
22
+ Adding optional fields is non-breaking. Renaming or removing fields is
23
+ breaking.
24
+ - `schemas/rule.schema.json` — generated from `models.Rule` via
25
+ `tools/export_schema.py`. Regenerate before commit if `Rule` changes.
26
+
27
+ ## Versioning rules (the only thing that really matters here)
28
+
29
+ | Change | Version bump |
30
+ |---|---|
31
+ | Add optional field to a model | none |
32
+ | Add new optional field to JSON response | none |
33
+ | Rename / remove field | major (1 → 2) |
34
+ | Change field type semantics | major |
35
+ | Add new model | none |
36
+ | Add new match type to `Rule.match.type` enum | minor at most; runtime should accept-and-skip-unknown |
37
+
38
+ ## Do-not-touch (without a clear reason)
39
+
40
+ - `version.py` integers — coordinated bump only.
41
+ - The `model_config` of `Rule` and friends — `extra="forbid"` keeps consumers
42
+ honest. Never relax to `"allow"` without a major version bump.
43
+
44
+ ## Style
45
+
46
+ - Pydantic v2 only. No dataclasses, no attrs, no manual `__init__`.
47
+ - Type-annotated, `from __future__ import annotations` at the top of modules.
48
+ - One model per concept. Compose with other models, don't subclass.
@@ -0,0 +1 @@
1
+ * @harrydaihaolin
@@ -0,0 +1,36 @@
1
+ # Contributing
2
+
3
+ Thanks for your interest. This is the protocol package — the smallest,
4
+ most-stable repo in the agent-readiness ecosystem. Most changes here are
5
+ deliberate and require coordination with downstream consumers.
6
+
7
+ ## Before opening a PR
8
+
9
+ 1. Read [`AGENTS.md`](./AGENTS.md) — especially the versioning rules table.
10
+ 2. Decide whether your change is breaking or non-breaking. If breaking,
11
+ we'll need to bump `PROTOCOL_VERSION` or `RULES_VERSION` and coordinate
12
+ with `agent-readiness`, `agent-readiness-rules`, and the engine.
13
+ 3. Run `make dev && make test && make lint`.
14
+ 4. If you touched `models.Rule`, run `make schema` and commit the regenerated
15
+ `schemas/rule.schema.json`.
16
+
17
+ ## What belongs here
18
+
19
+ - Pydantic dataclasses shared by client + engine + rules + scanner.
20
+ - Version constants.
21
+ - JSON Schema exports.
22
+
23
+ ## What does not belong here
24
+
25
+ - HTTP clients (live in `agent-readiness-pro`).
26
+ - Match-type implementations (live in `agent-readiness/rules_eval` and the
27
+ engine).
28
+ - Rule files (live in `agent-readiness-rules`).
29
+ - Tests of downstream behavior (live in their respective repos).
30
+
31
+ ## Releasing
32
+
33
+ 1. Bump `version` in `pyproject.toml`.
34
+ 2. `make build`.
35
+ 3. `twine upload dist/*` (or `uv publish`).
36
+ 4. Tag `git tag v$VERSION && git push --tags`.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 agent-readiness contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,23 @@
1
+ .PHONY: install dev test lint schema clean build
2
+
3
+ install:
4
+ pip install -e .
5
+
6
+ dev:
7
+ pip install -e ".[dev]"
8
+
9
+ test:
10
+ PYTHONPATH=src python3 -m pytest tests/ -v
11
+
12
+ lint:
13
+ ruff check src tests tools
14
+
15
+ schema:
16
+ PYTHONPATH=src python3 tools/export_schema.py
17
+
18
+ clean:
19
+ rm -rf build dist *.egg-info src/*.egg-info .pytest_cache .ruff_cache
20
+ find . -type d -name __pycache__ -exec rm -rf {} +
21
+
22
+ build: clean schema
23
+ python3 -m build
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-readiness-insights-protocol
3
+ Version: 0.1.0
4
+ Summary: Shared schema, dataclasses, and version constants for the agent-readiness insights ecosystem.
5
+ Project-URL: Homepage, https://github.com/harrydaihaolin/agent-readiness-insights-protocol
6
+ Project-URL: Repository, https://github.com/harrydaihaolin/agent-readiness-insights-protocol
7
+ Project-URL: Bug Tracker, https://github.com/harrydaihaolin/agent-readiness-insights-protocol/issues
8
+ Author: agent-readiness contributors
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: agent-readiness,agents,ai,rules,schema
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development :: Quality Assurance
20
+ Requires-Python: >=3.11
21
+ Requires-Dist: pydantic>=2.7
22
+ Provides-Extra: dev
23
+ Requires-Dist: build; extra == 'dev'
24
+ Requires-Dist: mypy>=1.10; extra == 'dev'
25
+ Requires-Dist: pytest>=8; extra == 'dev'
26
+ Requires-Dist: ruff>=0.4; extra == 'dev'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # agent-readiness-insights-protocol
30
+
31
+ **Shared schema, dataclasses, and version constants for the agent-readiness insights ecosystem.**
32
+
33
+ This is a tiny PyPI package that defines the contract between three independent
34
+ consumers of the insights system:
35
+
36
+ | Consumer | Repo |
37
+ |---|---|
38
+ | OSS rule pack | [`agent-readiness-rules`](https://github.com/harrydaihaolin/agent-readiness-rules) |
39
+ | Public scanner | [`agent-readiness`](https://github.com/harrydaihaolin/agent-readiness) |
40
+ | Closed insights engine | (private) |
41
+
42
+ Splitting the protocol out keeps each consumer honest about the contract,
43
+ lets either side iterate behind versioned interfaces, and means the engine
44
+ never has to install the full `agent-readiness` runtime to deserialize
45
+ a JSON response.
46
+
47
+ ## Install
48
+
49
+ ```bash
50
+ pip install agent-readiness-insights-protocol
51
+ ```
52
+
53
+ Pydantic is the only runtime dependency.
54
+
55
+ ## What's inside
56
+
57
+ - **Dataclasses** — `Rule`, `Insight`, `SearchHit`, `EvaluateRequest`,
58
+ `EvaluateResponse`, `HealthResponse`. All `pydantic.BaseModel` subclasses
59
+ with strict JSON serializers.
60
+ - **Version constants** — two independent integers:
61
+ - `PROTOCOL_VERSION` — JSON shapes for `/evaluate`, `/insights/search`, `/healthz`.
62
+ - `RULES_VERSION` — YAML rule schema (match types, required fields).
63
+ - **JSON Schema export** — `schemas/rule.schema.json` is generated by
64
+ `tools/export_schema.py` and committed so any consumer's CI can validate
65
+ YAML rule files without importing Python.
66
+
67
+ ## Versioning rules
68
+
69
+ Bump only on **breaking** changes. Adding optional fields is non-breaking
70
+ and does NOT bump either version (mirrors the existing convention in
71
+ [`agent-readiness/src/agent_readiness/models.py`](https://github.com/harrydaihaolin/agent-readiness/blob/main/src/agent_readiness/models.py)).
72
+
73
+ The engine's `/healthz` reports both versions:
74
+
75
+ ```json
76
+ {
77
+ "protocol_version": 1,
78
+ "rules_version_supported": [1],
79
+ "rules_pack_version_loaded": "1.0.0",
80
+ "engine_version": "0.1.0"
81
+ }
82
+ ```
83
+
84
+ A client refuses to call when `protocol_version` mismatches; logs a warning
85
+ when a rules version it doesn't recognise appears.
86
+
87
+ ## Usage
88
+
89
+ ```python
90
+ from agent_readiness_insights_protocol import (
91
+ PROTOCOL_VERSION,
92
+ RULES_VERSION,
93
+ Rule,
94
+ EvaluateRequest,
95
+ EvaluateResponse,
96
+ )
97
+
98
+ req = EvaluateRequest(repo_path="/path/to/repo", with_insights=True)
99
+ print(req.model_dump_json())
100
+ ```
101
+
102
+ ## Develop
103
+
104
+ ```bash
105
+ make dev # pip install -e ".[dev]"
106
+ make test # pytest
107
+ make lint # ruff check
108
+ make schema # regenerate schemas/rule.schema.json
109
+ make build # build wheel + sdist
110
+ ```
111
+
112
+ ## License
113
+
114
+ MIT
@@ -0,0 +1,86 @@
1
+ # agent-readiness-insights-protocol
2
+
3
+ **Shared schema, dataclasses, and version constants for the agent-readiness insights ecosystem.**
4
+
5
+ This is a tiny PyPI package that defines the contract between three independent
6
+ consumers of the insights system:
7
+
8
+ | Consumer | Repo |
9
+ |---|---|
10
+ | OSS rule pack | [`agent-readiness-rules`](https://github.com/harrydaihaolin/agent-readiness-rules) |
11
+ | Public scanner | [`agent-readiness`](https://github.com/harrydaihaolin/agent-readiness) |
12
+ | Closed insights engine | (private) |
13
+
14
+ Splitting the protocol out keeps each consumer honest about the contract,
15
+ lets either side iterate behind versioned interfaces, and means the engine
16
+ never has to install the full `agent-readiness` runtime to deserialize
17
+ a JSON response.
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ pip install agent-readiness-insights-protocol
23
+ ```
24
+
25
+ Pydantic is the only runtime dependency.
26
+
27
+ ## What's inside
28
+
29
+ - **Dataclasses** — `Rule`, `Insight`, `SearchHit`, `EvaluateRequest`,
30
+ `EvaluateResponse`, `HealthResponse`. All `pydantic.BaseModel` subclasses
31
+ with strict JSON serializers.
32
+ - **Version constants** — two independent integers:
33
+ - `PROTOCOL_VERSION` — JSON shapes for `/evaluate`, `/insights/search`, `/healthz`.
34
+ - `RULES_VERSION` — YAML rule schema (match types, required fields).
35
+ - **JSON Schema export** — `schemas/rule.schema.json` is generated by
36
+ `tools/export_schema.py` and committed so any consumer's CI can validate
37
+ YAML rule files without importing Python.
38
+
39
+ ## Versioning rules
40
+
41
+ Bump only on **breaking** changes. Adding optional fields is non-breaking
42
+ and does NOT bump either version (mirrors the existing convention in
43
+ [`agent-readiness/src/agent_readiness/models.py`](https://github.com/harrydaihaolin/agent-readiness/blob/main/src/agent_readiness/models.py)).
44
+
45
+ The engine's `/healthz` reports both versions:
46
+
47
+ ```json
48
+ {
49
+ "protocol_version": 1,
50
+ "rules_version_supported": [1],
51
+ "rules_pack_version_loaded": "1.0.0",
52
+ "engine_version": "0.1.0"
53
+ }
54
+ ```
55
+
56
+ A client refuses to call when `protocol_version` mismatches; logs a warning
57
+ when a rules version it doesn't recognise appears.
58
+
59
+ ## Usage
60
+
61
+ ```python
62
+ from agent_readiness_insights_protocol import (
63
+ PROTOCOL_VERSION,
64
+ RULES_VERSION,
65
+ Rule,
66
+ EvaluateRequest,
67
+ EvaluateResponse,
68
+ )
69
+
70
+ req = EvaluateRequest(repo_path="/path/to/repo", with_insights=True)
71
+ print(req.model_dump_json())
72
+ ```
73
+
74
+ ## Develop
75
+
76
+ ```bash
77
+ make dev # pip install -e ".[dev]"
78
+ make test # pytest
79
+ make lint # ruff check
80
+ make schema # regenerate schemas/rule.schema.json
81
+ make build # build wheel + sdist
82
+ ```
83
+
84
+ ## License
85
+
86
+ MIT
@@ -0,0 +1,16 @@
1
+ # Security policy
2
+
3
+ ## Supported versions
4
+
5
+ | Version | Supported |
6
+ |---------|-----------|
7
+ | 0.x | yes |
8
+
9
+ ## Reporting a vulnerability
10
+
11
+ Email security reports to the maintainers via GitHub Security Advisories
12
+ on this repository. Do not open public issues for security problems.
13
+
14
+ This package contains no I/O, no network calls, and no code execution —
15
+ the attack surface is limited to deserialization of untrusted JSON via
16
+ pydantic. We will respond to triaged reports within 7 days.
@@ -0,0 +1,58 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "agent-readiness-insights-protocol"
7
+ version = "0.1.0"
8
+ description = "Shared schema, dataclasses, and version constants for the agent-readiness insights ecosystem."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "agent-readiness contributors" }]
13
+ classifiers = [
14
+ "Development Status :: 4 - Beta",
15
+ "Intended Audience :: Developers",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Topic :: Software Development :: Quality Assurance",
22
+ ]
23
+ keywords = ["ai", "agents", "agent-readiness", "rules", "schema"]
24
+ dependencies = [
25
+ "pydantic>=2.7",
26
+ ]
27
+
28
+ [project.urls]
29
+ Homepage = "https://github.com/harrydaihaolin/agent-readiness-insights-protocol"
30
+ Repository = "https://github.com/harrydaihaolin/agent-readiness-insights-protocol"
31
+ "Bug Tracker" = "https://github.com/harrydaihaolin/agent-readiness-insights-protocol/issues"
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "pytest>=8",
36
+ "ruff>=0.4",
37
+ "build",
38
+ "mypy>=1.10",
39
+ ]
40
+
41
+ [tool.hatch.build.targets.wheel]
42
+ packages = ["src/agent_readiness_insights_protocol"]
43
+
44
+ [tool.hatch.build.targets.wheel.force-include]
45
+ "schemas/rule.schema.json" = "agent_readiness_insights_protocol/schemas/rule.schema.json"
46
+
47
+ [tool.ruff]
48
+ line-length = 100
49
+ target-version = "py311"
50
+
51
+ [tool.ruff.lint]
52
+ select = ["E", "F", "W", "I"]
53
+ ignore = ["E501"]
54
+
55
+ [tool.mypy]
56
+ python_version = "3.11"
57
+ strict = false
58
+ ignore_missing_imports = true