vmware-debug 1.8.7__tar.gz → 1.8.8__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.
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/PKG-INFO +2 -2
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/README.md +1 -1
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/RELEASE_NOTES.md +8 -2
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/SECURITY.md +1 -1
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/pyproject.toml +1 -1
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/server.json +4 -4
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/SKILL.md +1 -1
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/agent-guardrails.md +2 -2
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/setup-guide.md +1 -1
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/uv.lock +4 -4
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/__init__.py +1 -1
- vmware_debug-1.8.7/tests/eval/regression/test_declared_environment.py +0 -181
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/.gitignore +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/README-CN.md +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/capabilities.md +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/cli-reference.md +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/event-envelope.md +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/routing.md +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/_family.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/_scores.json +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/_scoring.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/_skill.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/conftest.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_entity_reachability.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_error_actionability.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_tool_description_quality.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_tool_manifest_budget.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/regression/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/regression/test_capability_grader.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/regression/test_debug_regressions.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/regression/test_result_envelope.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/regression/test_tool_annotations.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/test_safe_error_passthrough.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/test_timeline.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/cli.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/envelope.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/mcp/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/mcp/tools.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/mcp_server/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/mcp_server/server.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/ops/__init__.py +0 -0
- {vmware_debug-1.8.7 → vmware_debug-1.8.8}/vmware_debug/ops/timeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vmware-debug
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.8
|
|
4
4
|
Summary: VMware diagnostic brain — read-only incident triage, log/event correlation, and root-cause routing across the VMware skill family
|
|
5
5
|
Author-email: Wei Zhou <wei-wz.zhou@broadcom.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -16,7 +16,7 @@ Requires-Dist: typer<1.0,>=0.12
|
|
|
16
16
|
Requires-Dist: vmware-policy<2.0,>=1.8.5
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
|
|
19
|
-
<!-- mcp-name: io.github.
|
|
19
|
+
<!-- mcp-name: io.github.vmware-skills/vmware-debug -->
|
|
20
20
|
|
|
21
21
|
# VMware Debug
|
|
22
22
|
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## v1.8.8 — moved to vmware-skills org + MCP Registry namespace io.github.vmware-skills/vmware-debug
|
|
2
|
+
|
|
3
|
+
Repo transferred from github.com/zw008 to github.com/vmware-skills (redirects preserve old links).
|
|
4
|
+
MCP Registry server renamed to `io.github.vmware-skills/*`; the old `io.github.zw008/*` entry is deprecated.
|
|
5
|
+
All in-repo links updated. No functional code change on this line beyond the org move.
|
|
6
|
+
|
|
1
7
|
## v1.8.7 (2026-07-21) — the skill-level read-only switch is removed; read/write authorization is the vCenter account's job (RBAC)
|
|
2
8
|
|
|
3
9
|
### Removed: `VMWARE_READ_ONLY` / `read_only:` — give the agent a read-only service account instead
|
|
@@ -255,7 +261,7 @@ this package has no config file.
|
|
|
255
261
|
|
|
256
262
|
## v1.8.0 (2026-07-18) — read-only mode, working policy defaults, declared environments
|
|
257
263
|
|
|
258
|
-
Family release driven by [VMware-AIops#31](https://github.com/
|
|
264
|
+
Family release driven by [VMware-AIops#31](https://github.com/vmware-skills/VMware-AIops/issues/31),
|
|
259
265
|
where an operator running Llama 3.3 70B (Goose / OpenShift AI, on-prem H100) had to
|
|
260
266
|
hand-write 17 prompt guardrails to make tool calling reliable. A prompt is advisory — a
|
|
261
267
|
model can ignore it. Every guardrail that could move into the harness has.
|
|
@@ -342,4 +348,4 @@ executes fixes (advisor/executor split, mirroring vmware-harden → vmware-pilot
|
|
|
342
348
|
### Notes
|
|
343
349
|
- Read-only by construction; remediation is routed, never executed.
|
|
344
350
|
- `parse_timestamp` rejects implausible/garbage timestamps loudly rather than
|
|
345
|
-
silently landing at the epoch.
|
|
351
|
+
silently landing at the epoch.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
This is a community-maintained open-source project and is **not affiliated with,
|
|
6
6
|
endorsed by, or sponsored by VMware, Inc. or Broadcom Inc.** "VMware" and
|
|
7
7
|
"vSphere" are trademarks of Broadcom. Source code is publicly auditable at
|
|
8
|
-
[github.com/
|
|
8
|
+
[github.com/vmware-skills/VMware-Debug](https://github.com/vmware-skills/VMware-Debug) under the
|
|
9
9
|
MIT license.
|
|
10
10
|
|
|
11
11
|
## Reporting Vulnerabilities
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vmware-debug"
|
|
7
|
-
version = "1.8.
|
|
7
|
+
version = "1.8.8"
|
|
8
8
|
description = "VMware diagnostic brain — read-only incident triage, log/event correlation, and root-cause routing across the VMware skill family"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
-
"name": "io.github.
|
|
3
|
+
"name": "io.github.vmware-skills/vmware-debug",
|
|
4
4
|
"title": "VMware Debug",
|
|
5
5
|
"description": "Read-only VMware incident correlation: timeline, spikes, root-cause routing. 2 MCP tools.",
|
|
6
6
|
"repository": {
|
|
7
|
-
"url": "https://github.com/
|
|
7
|
+
"url": "https://github.com/vmware-skills/VMware-Debug",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "1.8.
|
|
10
|
+
"version": "1.8.8",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "vmware-debug",
|
|
15
|
-
"version": "1.8.
|
|
15
|
+
"version": "1.8.8",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
}
|
|
@@ -19,7 +19,7 @@ installer:
|
|
|
19
19
|
package: vmware-debug
|
|
20
20
|
allowed-tools:
|
|
21
21
|
- Bash
|
|
22
|
-
metadata: {"openclaw":{"requires":{"bins":["vmware-debug"]},"optional":{"env":["VMWARE_AUDIT_APPROVED_BY","VMWARE_AUDIT_RATIONALE"],"bins":["vmware-policy"]},"primaryEnv":"NONE","homepage":"https://github.com/
|
|
22
|
+
metadata: {"openclaw":{"requires":{"bins":["vmware-debug"]},"optional":{"env":["VMWARE_AUDIT_APPROVED_BY","VMWARE_AUDIT_RATIONALE"],"bins":["vmware-policy"]},"primaryEnv":"NONE","homepage":"https://github.com/vmware-skills/VMware-Debug","os":["macos","linux"]}}
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
# VMware Debug
|
{vmware_debug-1.8.7 → vmware_debug-1.8.8}/skills/vmware-debug/references/agent-guardrails.md
RENAMED
|
@@ -10,7 +10,7 @@ guardrails below are adapted, with thanks, from the working configuration
|
|
|
10
10
|
[@juanpf-ha](https://github.com/juanpf-ha) developed while running
|
|
11
11
|
vmware-monitor and vmware-aria against a production vSphere estate with Llama
|
|
12
12
|
3.3 70B FP8 on an on-prem H100
|
|
13
|
-
([VMware-AIops#31](https://github.com/
|
|
13
|
+
([VMware-AIops#31](https://github.com/vmware-skills/VMware-AIops/issues/31)). The
|
|
14
14
|
cross-skill rules are identical across this family; the parts below marked
|
|
15
15
|
vmware-debug are specific to this skill.
|
|
16
16
|
|
|
@@ -131,4 +131,4 @@ Local-model compatibility is an explicit design constraint for this family, and
|
|
|
131
131
|
the evidence base is small. If you evaluate a model against this skill —
|
|
132
132
|
Qwen, Mistral, Granite, or anything else — a report of what worked and what did
|
|
133
133
|
not is genuinely useful:
|
|
134
|
-
[github.com/
|
|
134
|
+
[github.com/vmware-skills/VMware-Debug/issues](https://github.com/vmware-skills/VMware-Debug/issues).
|
|
@@ -31,7 +31,7 @@ routes fixes to (vmware-aiops, vmware-pilot).
|
|
|
31
31
|
> **Disclaimer**: Community-maintained open-source project, **not affiliated with,
|
|
32
32
|
> endorsed by, or sponsored by VMware, Inc. or Broadcom Inc.**
|
|
33
33
|
|
|
34
|
-
1. **Source Code** — https://github.com/
|
|
34
|
+
1. **Source Code** — https://github.com/vmware-skills/VMware-Debug (MIT).
|
|
35
35
|
2. **Credentials** — none. debug holds no secrets and connects to nothing.
|
|
36
36
|
3. **Network** — none. All tools are local pure functions over event data the
|
|
37
37
|
agent supplies.
|
|
@@ -1293,7 +1293,7 @@ wheels = [
|
|
|
1293
1293
|
|
|
1294
1294
|
[[package]]
|
|
1295
1295
|
name = "vmware-debug"
|
|
1296
|
-
version = "1.8.
|
|
1296
|
+
version = "1.8.7"
|
|
1297
1297
|
source = { editable = "." }
|
|
1298
1298
|
dependencies = [
|
|
1299
1299
|
{ name = "mcp", extra = ["cli"] },
|
|
@@ -1326,14 +1326,14 @@ dev = [
|
|
|
1326
1326
|
|
|
1327
1327
|
[[package]]
|
|
1328
1328
|
name = "vmware-policy"
|
|
1329
|
-
version = "1.8.
|
|
1329
|
+
version = "1.8.8"
|
|
1330
1330
|
source = { registry = "https://pypi.org/simple" }
|
|
1331
1331
|
dependencies = [
|
|
1332
1332
|
{ name = "pyyaml" },
|
|
1333
1333
|
{ name = "rich" },
|
|
1334
1334
|
{ name = "typer" },
|
|
1335
1335
|
]
|
|
1336
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1336
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a4/30/c500004557ff80a7f70d1e3e1e2adb7c7ad8b74250d030d2e3f189a32d7a/vmware_policy-1.8.8.tar.gz", hash = "sha256:43ad7d00942b0d0c79be318037badfa7919a0476e11ad1efad0e9a1ffe7fa2da", size = 125590, upload-time = "2026-07-21T15:38:02.147Z" }
|
|
1337
1337
|
wheels = [
|
|
1338
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1338
|
+
{ url = "https://files.pythonhosted.org/packages/ae/93/b8c6d16f703c1c0c4bfcc82209ac5a6d3bce60dc54e5e487244e1fc851b1/vmware_policy-1.8.8-py3-none-any.whl", hash = "sha256:0d8556a848690a41863805b30d1bb25172d8d43f84bd5b17fd1fd5c3b30b1b11", size = 47621, upload-time = "2026-07-21T15:38:00.516Z" },
|
|
1339
1339
|
]
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"""vmware-debug declares a constant environment, and must keep doing so.
|
|
2
|
-
|
|
3
|
-
Policy rules scope by environment. The baseline treats a target that declares
|
|
4
|
-
none as unknown: today a state-changing operation against it runs but logs a
|
|
5
|
-
warning (``require_declared_environment: warn``), and the next major release
|
|
6
|
-
refuses it outright (``true``).
|
|
7
|
-
|
|
8
|
-
Every skill with a config answers this per target. vmware-debug has none and no
|
|
9
|
-
connection to declare one about — its tools are pure correlation over event
|
|
10
|
-
dicts the calling agent has already fetched with other skills' read tools. No
|
|
11
|
-
network, no writes, and no operation above read risk. So it registers a
|
|
12
|
-
constant ``local`` resolver: the claim "nothing here touches a remote VMware
|
|
13
|
-
estate" is simply true.
|
|
14
|
-
|
|
15
|
-
Nothing this skill ships is gated under either setting today, so this file is
|
|
16
|
-
about keeping that honest as the skill changes: if debug ever grows a tool that
|
|
17
|
-
writes to a local store, the declaration is already in place and correct, and a
|
|
18
|
-
refactor that drops the registration fails here rather than at the moment
|
|
19
|
-
enforcement lands.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
from __future__ import annotations
|
|
23
|
-
|
|
24
|
-
import importlib
|
|
25
|
-
|
|
26
|
-
import pytest
|
|
27
|
-
|
|
28
|
-
import vmware_policy.environment as env_mod
|
|
29
|
-
from vmware_debug.mcp_server import server
|
|
30
|
-
from vmware_policy.environment import resolve_environment, set_environment_resolver
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
@pytest.fixture()
|
|
34
|
-
def _policy():
|
|
35
|
-
"""The policy engine, or a skip.
|
|
36
|
-
|
|
37
|
-
``vmware_policy.policy._load_rules`` imports PyYAML, but vmware-policy
|
|
38
|
-
declares only typer + rich — so constructing a PolicyEngine raises
|
|
39
|
-
ModuleNotFoundError in this skill's environment. Every other skill happens
|
|
40
|
-
to pull PyYAML in for its own config; vmware-debug has no config and so
|
|
41
|
-
does not. It never calls @vmware_tool either, so this is latent here rather
|
|
42
|
-
than broken.
|
|
43
|
-
|
|
44
|
-
Skipping (not stubbing) keeps that honest: these assertions start running
|
|
45
|
-
for real the day vmware-policy declares the dependency.
|
|
46
|
-
"""
|
|
47
|
-
pytest.importorskip(
|
|
48
|
-
"yaml",
|
|
49
|
-
reason="vmware-policy imports PyYAML without declaring it; "
|
|
50
|
-
"vmware-debug has no YAML config so it is absent here",
|
|
51
|
-
)
|
|
52
|
-
from vmware_policy.policy import reset_policy_engine
|
|
53
|
-
|
|
54
|
-
reset_policy_engine()
|
|
55
|
-
yield
|
|
56
|
-
reset_policy_engine()
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
@pytest.fixture()
|
|
60
|
-
def baseline(_policy):
|
|
61
|
-
"""The shipped policy baseline — currently the warn-only migration setting."""
|
|
62
|
-
from vmware_policy.policy import get_policy_engine
|
|
63
|
-
|
|
64
|
-
get_policy_engine()
|
|
65
|
-
yield
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@pytest.fixture()
|
|
69
|
-
def enforcing(_policy, tmp_path):
|
|
70
|
-
"""The same rules with the requirement switched on, as the next major
|
|
71
|
-
release will ship it."""
|
|
72
|
-
from vmware_policy.policy import get_policy_engine
|
|
73
|
-
|
|
74
|
-
rules = tmp_path / "rules.yaml"
|
|
75
|
-
rules.write_text("require_declared_environment: true\n")
|
|
76
|
-
get_policy_engine(rules)
|
|
77
|
-
yield
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
@pytest.fixture(autouse=True)
|
|
81
|
-
def _restore_resolver():
|
|
82
|
-
"""Tests here clear/reload the global resolver; put it back afterwards."""
|
|
83
|
-
yield
|
|
84
|
-
importlib.reload(server)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
class TestConstantResolverIsRegistered:
|
|
88
|
-
def test_importing_the_server_registers_a_resolver(self) -> None:
|
|
89
|
-
set_environment_resolver(None)
|
|
90
|
-
importlib.reload(server)
|
|
91
|
-
|
|
92
|
-
assert env_mod._resolver is not None, (
|
|
93
|
-
"vmware_debug.mcp_server.server must call set_environment_resolver() at import."
|
|
94
|
-
)
|
|
95
|
-
assert env_mod._resolver is server._environment_for
|
|
96
|
-
|
|
97
|
-
def test_registration_is_at_module_level_not_inside_build_server(self) -> None:
|
|
98
|
-
"""Importing alone must be enough — no build_server() call required."""
|
|
99
|
-
set_environment_resolver(None)
|
|
100
|
-
importlib.reload(server) # import only — build_server() not called
|
|
101
|
-
|
|
102
|
-
assert env_mod._resolver is not None
|
|
103
|
-
assert resolve_environment("lab") == server.LOCAL_ENVIRONMENT
|
|
104
|
-
|
|
105
|
-
def test_resolver_reports_a_non_empty_environment(self) -> None:
|
|
106
|
-
importlib.reload(server)
|
|
107
|
-
|
|
108
|
-
# "" is the sentinel for *undeclared*. Anything else is a declaration.
|
|
109
|
-
assert resolve_environment("") != ""
|
|
110
|
-
assert resolve_environment("anything") == server.LOCAL_ENVIRONMENT
|
|
111
|
-
|
|
112
|
-
def test_declaration_is_constant_across_targets(self) -> None:
|
|
113
|
-
importlib.reload(server)
|
|
114
|
-
|
|
115
|
-
for target in ("", "prod-vc01", "vcenter-lab", "nonsense"):
|
|
116
|
-
assert resolve_environment(target) == server.LOCAL_ENVIRONMENT
|
|
117
|
-
|
|
118
|
-
def test_declared_environment_is_not_a_production_label(self) -> None:
|
|
119
|
-
"""`local` must not collide with the environments real rules scope to."""
|
|
120
|
-
assert server.LOCAL_ENVIRONMENT not in ("production", "prod", "staging", "")
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
class TestWriteGateInput:
|
|
124
|
-
"""Debug ships no write tools today. Pin that the value the gate keys on is
|
|
125
|
-
a declaration, so a future local-store write is scoped right on day one
|
|
126
|
-
rather than discovered at the enforcing release."""
|
|
127
|
-
|
|
128
|
-
def test_the_gate_sees_a_declaration_not_a_blank(self) -> None:
|
|
129
|
-
"""``env`` is what PolicyEngine.check_allowed receives; "" is what it
|
|
130
|
-
refuses. This holds regardless of whether PyYAML is installed."""
|
|
131
|
-
importlib.reload(server)
|
|
132
|
-
|
|
133
|
-
assert resolve_environment("") == server.LOCAL_ENVIRONMENT
|
|
134
|
-
|
|
135
|
-
@pytest.mark.parametrize("mode", ["baseline", "enforcing"])
|
|
136
|
-
@pytest.mark.parametrize("risk", ["medium", "high"])
|
|
137
|
-
def test_a_hypothetical_write_is_allowed(self, mode, request, risk) -> None:
|
|
138
|
-
from vmware_policy.policy import get_policy_engine
|
|
139
|
-
|
|
140
|
-
request.getfixturevalue(mode)
|
|
141
|
-
importlib.reload(server)
|
|
142
|
-
|
|
143
|
-
result = get_policy_engine().check_allowed(
|
|
144
|
-
"some_future_local_write", env=resolve_environment(""), risk_level=risk
|
|
145
|
-
)
|
|
146
|
-
assert result.allowed is True
|
|
147
|
-
assert result.rule != "undeclared_environment_warning"
|
|
148
|
-
|
|
149
|
-
def test_without_a_resolver_such_a_write_would_be_refused(self, enforcing) -> None:
|
|
150
|
-
"""Proves the pin above is load-bearing rather than decorative."""
|
|
151
|
-
from vmware_policy.policy import get_policy_engine
|
|
152
|
-
|
|
153
|
-
set_environment_resolver(None)
|
|
154
|
-
|
|
155
|
-
result = get_policy_engine().check_allowed(
|
|
156
|
-
"some_future_local_write", env=resolve_environment(""), risk_level="medium"
|
|
157
|
-
)
|
|
158
|
-
assert result.allowed is False
|
|
159
|
-
assert result.rule == "undeclared_environment"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
class TestReadsAreNeverGated:
|
|
163
|
-
def test_product_read_tools_work_with_no_resolver_at_all(self) -> None:
|
|
164
|
-
"""Every tool this skill ships is read-only, so the whole surface must
|
|
165
|
-
keep working regardless of any of this."""
|
|
166
|
-
set_environment_resolver(None)
|
|
167
|
-
|
|
168
|
-
from vmware_debug.mcp import tools as t
|
|
169
|
-
|
|
170
|
-
assert t.list_symptom_categories()
|
|
171
|
-
|
|
172
|
-
@pytest.mark.parametrize("mode", ["baseline", "enforcing"])
|
|
173
|
-
def test_reads_allowed_by_policy_under_both_settings(self, mode, request) -> None:
|
|
174
|
-
from vmware_policy.policy import get_policy_engine
|
|
175
|
-
|
|
176
|
-
request.getfixturevalue(mode)
|
|
177
|
-
set_environment_resolver(None)
|
|
178
|
-
|
|
179
|
-
assert get_policy_engine().check_allowed(
|
|
180
|
-
"incident_timeline", env="", risk_level="low"
|
|
181
|
-
).allowed
|
|
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
|
{vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_tool_description_quality.py
RENAMED
|
File without changes
|
{vmware_debug-1.8.7 → vmware_debug-1.8.8}/tests/eval/capability/test_tool_manifest_budget.py
RENAMED
|
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
|