Skip to content

Commit db0a064

Browse files
authored
chore(seo): retarget PyPI metadata for category-search discovery (#56)
* chore(seo): retarget PyPI metadata for category-search discovery The Python adoption side has been lagging TypeScript materially (PyPI flat for ~6 weeks pre-source-change; cycles-client-python at 157 unique GitHub cloners vs cycles-client-typescript at 288). Diagnostic showed the biggest sub-gap is discovery: Cycles doesn't rank for natural Python search queries while named competitors (AgentBudget, AgentGuard, agent-cost-guardrails) do. The brand-led PyPI description was a contributor. Three changes: 1. Description rewritten to lead with the literal category-search phrase "Python AI agent budget control" instead of the brand-led "Python client for the Cycles budget-management protocol." 2. Keywords expanded from 12 to 21, organized into three groups: category-search keywords (ai-agent, agent-budget, budget-control, cost-control, cost-enforcement, spending-limit, llm-cost, runtime-authority, action-control, multi-tenant), framework targeting (langchain, langgraph, crewai, autogen, openai-agents, mcp, openai, anthropic), and brand (cycles, runcycles). Drops `metering` (low search volume) and adds the missing framework tags. 3. Classifier added: Topic :: Scientific/Engineering :: Artificial Intelligence — standard PyPI classifier for AI/ML packages, materially improves browse-by-category discovery. Takes effect on next PyPI publish (version bump required). Suggest 0.4.0 → 0.4.1 since this is metadata-only. Companion change: GitHub topics already updated separately (governance dropped, mcp added) to mirror cycles-client-typescript's topic set. * chore: bump version to 0.4.1 + CHANGELOG / AUDIT entries Metadata-only release. Bumps pyproject.toml version 0.4.0 → 0.4.1 and adds the corresponding CHANGELOG and AUDIT.md entries for the PyPI discovery-metadata refresh shipped earlier in this branch. No code, no test, no protocol changes — wire format and public API are identical to 0.4.0. Ready for `python -m build` + `twine upload` on merge.
1 parent 434d1d3 commit db0a064

3 files changed

Lines changed: 47 additions & 10 deletions

File tree

AUDIT.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,18 @@ Widened the `@cycles` decorator to accept callables — in addition to constants
224224
- **Signature change:** `_build_reservation_body` now takes `args` and `kwargs` parameters; both `CyclesLifecycle.execute` and `AsyncCyclesLifecycle.execute` thread them through.
225225

226226
Protocol conformance: No protocol or wire-format changes. The reservation request body shape is unchanged — only the source of each field's value is widened. Verified by new unit tests in `TestCallableSubjectFields`, `TestCallableActionFields`, `TestCallableDimensions` plus an end-to-end decorator test asserting the captured request body.
227+
228+
## PyPI Metadata Refresh (added 2026-05-08)
229+
230+
**Files:** `pyproject.toml`
231+
**Version:** 0.4.1
232+
233+
Metadata-only release retargeting the package for category-search discovery on PyPI. No code, no test, no protocol changes — wire format and API are identical to 0.4.0.
234+
235+
- **Description rewritten** to lead with the literal category-search phrase: `"Python AI agent budget control — enforce LLM cost limits, tool permissions, and multi-tenant policies before agent actions execute."`
236+
- **Keywords expanded 12 → 21**, organized into category-search terms (`ai-agent`, `agent-budget`, `budget-control`, `cost-control`, `cost-enforcement`, `spending-limit`, `llm-cost`, `runtime-authority`, `action-control`, `multi-tenant`), framework targeting (`langchain`, `langgraph`, `crewai`, `autogen`, `openai-agents`, `mcp`, `openai`, `anthropic`), and brand (`cycles`, `runcycles`).
237+
- **Classifier added:** `Topic :: Scientific/Engineering :: Artificial Intelligence`.
238+
239+
Driven by Python-side adoption diagnostic finding the biggest sub-gap was discovery, not SDK feature parity. Companion changes: GitHub topics on this repo (`governance` dropped, `mcp` added) and Python framework integration guide retitling on `runcycles/docs` (PR #568).
240+
241+
Protocol conformance: No protocol or wire-format changes. Existing test suite at 100% coverage; no test additions.

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.4.1] - 2026-05-08
9+
10+
PyPI metadata refresh for category-search discovery. No code changes; package wire format and API are identical to 0.4.0.
11+
12+
### Changed
13+
14+
- `pyproject.toml`: rewrote `description` to lead with the literal category-search phrase ("Python AI agent budget control — enforce LLM cost limits, tool permissions, and multi-tenant policies before agent actions execute"). Expanded `keywords` from 12 to 21, organized into category-search terms, framework targeting (`langgraph`, `crewai`, `autogen`, `openai-agents`, `mcp`, etc.), and brand. Added `Topic :: Scientific/Engineering :: Artificial Intelligence` classifier for PyPI browse-by-category surfacing.
15+
816
## [0.4.0] - 2026-04-27
917

1018
Dynamic subject and action fields on the `@cycles` decorator.
@@ -120,6 +128,7 @@ Initial public release.
120128

121129
- Comprehensive error handling and improved API model validation (#1)
122130

131+
[0.4.1]: https://github.com/runcycles/cycles-client-python/compare/v0.4.0...v0.4.1
123132
[0.4.0]: https://github.com/runcycles/cycles-client-python/compare/v0.3.0...v0.4.0
124133
[0.3.0]: https://github.com/runcycles/cycles-client-python/compare/v0.2.0...v0.3.0
125134
[0.2.0]: https://github.com/runcycles/cycles-client-python/compare/v0.1.3...v0.2.0

pyproject.toml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,35 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "runcycles"
7-
version = "0.4.0"
8-
description = "Python client for the Cycles budget-management protocol"
7+
version = "0.4.1"
8+
description = "Python AI agent budget control — enforce LLM cost limits, tool permissions, and multi-tenant policies before agent actions execute."
99
readme = "README.md"
1010
license = "Apache-2.0"
1111
requires-python = ">=3.10"
1212
keywords = [
13-
"cycles",
14-
"budget",
13+
# Category-search keywords (lead with these — what people actually type)
14+
"ai-agent",
15+
"agent-budget",
16+
"agent-governance",
17+
"budget-control",
1518
"cost-control",
16-
"metering",
17-
"ai",
18-
"llm",
19-
"agents",
20-
"governance",
19+
"cost-enforcement",
20+
"spending-limit",
21+
"llm-cost",
22+
"runtime-authority",
23+
"action-control",
24+
"multi-tenant",
25+
# Framework-specific (the integrations we want to surface for)
26+
"langchain",
27+
"langgraph",
28+
"crewai",
29+
"autogen",
30+
"openai-agents",
31+
"mcp",
2132
"openai",
2233
"anthropic",
23-
"langchain",
34+
# Brand
35+
"cycles",
2436
"runcycles",
2537
]
2638
classifiers = [
@@ -32,6 +44,7 @@ classifiers = [
3244
"Programming Language :: Python :: 3.11",
3345
"Programming Language :: Python :: 3.12",
3446
"Topic :: Software Development :: Libraries",
47+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
3548
"Framework :: AsyncIO",
3649
"Typing :: Typed",
3750
]

0 commit comments

Comments
 (0)