proxy-aiops 0.9.0__tar.gz → 0.9.2__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.
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/.claude-plugin/plugin.json +1 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/.mcp.json +1 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/CHANGELOG.md +23 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/PKG-INFO +16 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/README.md +15 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/openclaw.plugin.json +1 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/package.json +2 -2
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/pyproject.toml +1 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/server.json +2 -2
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/skills/proxy-aiops/SKILL.md +9 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/uv.lock +1 -1
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/.github/workflows/mcp-publish.yml +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/.github/workflows/publish.yml +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/.gitignore +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/Dockerfile +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/LICENSE +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/RELEASE_NOTES.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/SECURITY.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/docs/VERIFICATION.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/glama.json +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/_shared.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/server.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/analysis.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/certs.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/configread.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/routes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/services.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/status.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/traffic.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/undo.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/mcp_server/tools/writes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/_common.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/_root.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/analyze.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/certs.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/configcmd.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/doctor.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/init.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/overview.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/routes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/secret.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/server.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/services.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/cli/undo.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/config.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/connection.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/doctor.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/audit.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/budget.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/decorators.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/outcome.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/paths.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/patterns.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/policy.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/sanitize.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/governance/undo.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/__init__.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/_util.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/analysis.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/certs.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/configread.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/overview.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/routes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/services.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/status.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/traffic.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/ops/writes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/platform.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/proxy_aiops/secretstore.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/skills/proxy-aiops/references/agent-guardrails.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/skills/proxy-aiops/references/capabilities.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/skills/proxy-aiops/references/cli-reference.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/skills/proxy-aiops/references/setup-guide.md +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/smithery.yaml +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/conftest.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_analysis.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_cli_governed_exit.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_cli_reads.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_cli_secret.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_cli_writes.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_connection.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_doctor.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_dpapi_version.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_gov_audit.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_gov_decorators.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_gov_patterns.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_gov_policy.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_governance_persistence.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_init.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_int_fidelity.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_mcp_read_tools.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_ops_extra.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_optional_fields.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_platform.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_reads.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_secretstore.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_self_lockout.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_smoke.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_undo_executor.py +0 -0
- {proxy_aiops-0.9.0 → proxy_aiops-0.9.2}/tests/test_writes.py +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
3
|
"name": "proxy-aiops",
|
|
4
4
|
"displayName": "Proxy AIops",
|
|
5
|
-
"version": "0.9.
|
|
5
|
+
"version": "0.9.2",
|
|
6
6
|
"description": "Governed Traefik + Caddy + HAProxy ops: routes, upstreams, certs, 5xx RCA. 28 tools.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Wei Zhou",
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.9.2 — 2026-09-12
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- **The ClawHub bundle plugin moved from `@aiops-tools/proxy-aiops` to
|
|
7
|
+
`@zw008/proxy-aiops`**, matching the publisher the skill has always been under.
|
|
8
|
+
ClawHub cannot move a package between scopes — the scope is the publisher
|
|
9
|
+
identity — so this is a republish under the new name; the old name is
|
|
10
|
+
withdrawn. Install with:
|
|
11
|
+
`openclaw plugins install clawhub:@zw008/proxy-aiops`. Nothing about the Python
|
|
12
|
+
package, the CLI, the MCP server or the Claude Code plugin changes.
|
|
13
|
+
|
|
14
|
+
## v0.9.1 — 2026-09-12
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **The OpenClaw install path is documented.** The ClawHub bundle channel went
|
|
18
|
+
live but neither the README nor this skill said how to install from it:
|
|
19
|
+
`openclaw plugins install clawhub:@aiops-tools/proxy-aiops`. States the `uvx`
|
|
20
|
+
prerequisite (without it the skill installs but reports `Visible to model:
|
|
21
|
+
no`) and that the MCP server is pinned to this exact release.
|
|
22
|
+
- **Where an exported master password lives** is now stated next to the
|
|
23
|
+
instruction to export it: readable by every process the shell starts, and
|
|
24
|
+
kept in shell history.
|
|
25
|
+
|
|
3
26
|
## v0.9.0 — 2026-09-12
|
|
4
27
|
|
|
5
28
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: proxy-aiops
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: Governed AI-ops for Traefik + Caddy + HAProxy reverse proxies / load balancers: routes, services, upstream health, TLS cert expiry sweep, 5xx error-rate RCA, route conflict analysis, and governed writes (caddy config, haproxy server state/weight) with a built-in governance harness (audit, budget, undo, risk tiers)
|
|
5
5
|
Author-email: Wei Zhou <zhouwei008@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -139,6 +139,21 @@ The MCP server is fetched with [uv](https://docs.astral.sh/uv/) and pinned to th
|
|
|
139
139
|
package version this plugin declares, so an audit row can be traced back to the
|
|
140
140
|
code that wrote it. Credentials are still configured with `proxy-aiops init` — see below.
|
|
141
141
|
|
|
142
|
+
### As an OpenClaw plugin
|
|
143
|
+
|
|
144
|
+
The same bundle is published on [ClawHub](https://clawhub.ai/plugins), where one
|
|
145
|
+
install delivers the skill and its MCP server together:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
openclaw plugins install clawhub:@zw008/proxy-aiops
|
|
149
|
+
openclaw skills info proxy-aiops # expect: Visible to model: yes
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Restart the OpenClaw gateway afterwards so it loads the plugin. The MCP server is
|
|
153
|
+
fetched with [uv](https://docs.astral.sh/uv/), pinned to this exact release, so
|
|
154
|
+
`uvx` has to be on `PATH` — without it the skill still installs but reports
|
|
155
|
+
`Visible to model: no`. Credentials are configured exactly as below.
|
|
156
|
+
|
|
142
157
|
### As a CLI or standalone MCP server
|
|
143
158
|
|
|
144
159
|
```bash
|
|
@@ -123,6 +123,21 @@ The MCP server is fetched with [uv](https://docs.astral.sh/uv/) and pinned to th
|
|
|
123
123
|
package version this plugin declares, so an audit row can be traced back to the
|
|
124
124
|
code that wrote it. Credentials are still configured with `proxy-aiops init` — see below.
|
|
125
125
|
|
|
126
|
+
### As an OpenClaw plugin
|
|
127
|
+
|
|
128
|
+
The same bundle is published on [ClawHub](https://clawhub.ai/plugins), where one
|
|
129
|
+
install delivers the skill and its MCP server together:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
openclaw plugins install clawhub:@zw008/proxy-aiops
|
|
133
|
+
openclaw skills info proxy-aiops # expect: Visible to model: yes
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Restart the OpenClaw gateway afterwards so it loads the plugin. The MCP server is
|
|
137
|
+
fetched with [uv](https://docs.astral.sh/uv/), pinned to this exact release, so
|
|
138
|
+
`uvx` has to be on `PATH` — without it the skill still installs but reports
|
|
139
|
+
`Visible to model: no`. Credentials are configured exactly as below.
|
|
140
|
+
|
|
126
141
|
### As a CLI or standalone MCP server
|
|
127
142
|
|
|
128
143
|
```bash
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "proxy-aiops"
|
|
7
|
-
version = "0.9.
|
|
7
|
+
version = "0.9.2"
|
|
8
8
|
description = "Governed AI-ops for Traefik + Caddy + HAProxy reverse proxies / load balancers: routes, services, upstream health, TLS cert expiry sweep, 5xx error-rate RCA, route conflict analysis, and governed writes (caddy config, haproxy server state/weight) with a built-in governance harness (audit, budget, undo, risk tiers)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"url": "https://github.com/AIops-tools/Proxy-AIops",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.9.
|
|
10
|
+
"version": "0.9.2",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "proxy-aiops",
|
|
15
|
-
"version": "0.9.
|
|
15
|
+
"version": "0.9.2",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
}
|
|
@@ -81,6 +81,15 @@ proxy-aiops init # wizard: pick platform (traefik/caddy/haproxy) + optiona
|
|
|
81
81
|
proxy-aiops doctor
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
Or as an OpenClaw plugin, which installs this skill and its MCP server together:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
openclaw plugins install clawhub:@zw008/proxy-aiops
|
|
88
|
+
openclaw skills info proxy-aiops # expect: Visible to model: yes
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Needs `uvx` on `PATH`: the MCP server is fetched with uv, pinned to this release.
|
|
92
|
+
|
|
84
93
|
## When to Use This Skill
|
|
85
94
|
|
|
86
95
|
- Get a one-shot snapshot (`overview` / `version_info` / `list_entrypoints`)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|