plugin-scanner 2.0.159__tar.gz → 2.0.160__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.
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/PKG-INFO +1 -1
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/styles.css +0 -27
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/release-notes.md +25 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/pyproject.toml +1 -1
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/pyproject.toml.bak +1 -1
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/commands.py +6 -5
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/render.py +3 -2
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/insights.py +2 -2
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/models.py +2 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/cisco_preflight.py +0 -1
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/version.py +1 -1
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.clusterfuzzlite/Dockerfile +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.clusterfuzzlite/build.sh +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.clusterfuzzlite/project.yaml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.clusterfuzzlite/requirements-atheris.txt +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.dockerignore +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/CODEOWNERS +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/dependabot.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/ci.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/codeql.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/dependabot-uv-lock.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/fuzz.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/harness-smoke.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/publish.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/workflows/scorecard.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.gitignore +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.pre-commit-hooks.yaml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/CONTRIBUTING.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/Dockerfile +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/index.html +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/package.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/pnpm-lock.yaml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/public/favicon.ico +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/app.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-layout.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-layout.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-mobile.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-primitives.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-review-cards.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-utils.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/data-flow-evidence-card.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/fleet-workspace.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/guard-api.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/guard-api.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/guard-demo.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/guard-types.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/home-dashboard.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/home-dashboard.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/main.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/queue-chip-filter.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/queue-state.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/queue-state.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/receipts-workspace.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/receipts-workspace.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/risk-signal-cards.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/risk-signal-cards.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/runtime-overview.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/runtime-overview.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/scanner-evidence-badge.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/settings-workspace.test.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/settings-workspace.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/vite-env.d.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/watched-app-card.tsx +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/tsconfig.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/vite.config.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docker-requirements.txt +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/approval-audit.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/architecture.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/get-started.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/harness-support.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/local-vs-cloud.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/release-checklist.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/smoke-tests.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/guard/testing-matrix.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/trust/mcp-trust-draft.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/trust/plugin-trust-draft.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/docs/trust/skill-trust-local.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/fuzzers/manifest_fuzzer.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/requirements.txt +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/schemas/plugin-quality.v1.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/schemas/scan-result.v1.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/schemas/verify-result.v1.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/action_runner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/argparse_utils.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/best_practices.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/claude.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/code_quality.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/ecosystem_common.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/gemini.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/manifest.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/manifest_support.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/marketplace.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/mcp_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/opencode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/operational_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/skill_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/cli.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/cli_ui.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/config.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/base.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/claude.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/codex.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/detect.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/gemini.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/opencode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/registry.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/types.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/github_reporting.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/access_graph_events.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/antigravity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/base.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/claude_code.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/cloud_identity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/codex.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/contracts.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/copilot.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/cursor.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/gemini.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/hermes.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/mcp_servers.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/openclaw.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/openclaw_config.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/openclaw_support.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/opencode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/opencode_artifacts.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/advisory_model.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/approvals.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/bridge/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/capabilities.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/approval_commands.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/bootstrap.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/connect_flow.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/install_commands.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/product.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/prompt.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/update_commands.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/codex_config.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/config.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/consumer/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/consumer/service.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/client.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/manager.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/server.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/assets/index.css +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/favicon.ico +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/static/index.html +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/edge_events.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/incident.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/launcher.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/mcp_tool_calls.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/policy/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/policy/engine.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/protect.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/proxy/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/proxy/remote.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/proxy/stdio.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/receipts/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/receipts/manager.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/redaction.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/risk.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/action_identity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/actions.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/advisory_escalation.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/advisory_matchers.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/cisco_evidence.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/composition_rules.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/data_flow.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/data_flow_rules.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/data_flow_variables.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/decisions.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/detectors.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/false_positive_rules.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/mcp_protection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/persistence_rules.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/prompt_injection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/runner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/safe_decode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/sandbox.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/scanner_cache.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/secret_file_requests.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/secret_sensitivity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/secret_sources.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/shell_commands.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/signals.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/skill_protection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/supply_chain.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/surface_server.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/temp_files.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/runtime/threat_intel.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/schemas/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/schemas/consumer_mode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/schemas/guard_event_v1.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/schemas/surface_server.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/shims.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/store.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/store_approvals.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/store_connect.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/store_evidence.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/store_threat_intel.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/types.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/integrations/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/integrations/cisco_mcp_scanner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/integrations/cisco_skill_scanner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/lint_fixes.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/marketplace_support.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/models.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/path_support.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/policy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/quality_artifact.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/repo_detect.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/reporting.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/rules/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/rules/registry.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/rules/specs.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/scanner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/submission.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/suppressions.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_domain_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_helpers.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_mcp_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_models.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_plugin_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_skill_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/trust_specs.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/verification.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/conftest.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/__init__.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/bad-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/bad-plugin/.mcp.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/bad-plugin/secrets.js +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/.claude-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/hooks/hooks.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/claude-plugin-good/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/code-quality-bad/evil.js +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/code-quality-bad/inject.js +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/GEMINI.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/commands/hello.toml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/gemini-extension-good/gemini-extension.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/assets/icon.svg +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/assets/logo.svg +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/assets/screenshot.svg +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/good-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-codex-malicious-mcp/.codex/config.toml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/benign-docs-fake-token.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/benign-health-endpoint.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/benign-nvmrc-fake-creds.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/benign-source-search.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/canary-exfil-encoded.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/canary-exfil.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/expected-decisions.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-dockerfile.txt +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-encoded-shell-exfil.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-github-action.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-mcp-delete.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-mcp-secret-read.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-mcp-skill-exfil.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-npm-postinstall.js +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-prompt-env-read.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-prompt-guard-bypass.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-prompt-npmrc-read.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/malicious-python-setup.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/guard-red-team/smoke-evidence-template.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/config.yaml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/mcp_servers.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/skills/security/malicious/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/references/api-setup.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/hermes-plugin-evil/skills/utils/benign/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malformed-json/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/malicious-skill-plugin/skills/leaky-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/mcp-canary-server.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/minimal-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/missing-fields/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/mit-license/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/codex-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/codex-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/codex-plugin/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/codex-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/gemini-ext/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-ecosystem-repo/gemini-ext/gemini-extension.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/.agents/plugins/marketplace.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/no-version/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/.opencode/commands/hello.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/.opencode/plugins/example.ts +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/LICENSE +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/README.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/opencode-good/opencode.jsonc +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/skills-missing-dir/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/skills-no-frontmatter/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/skills-no-frontmatter/skills/bad-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/benign-npm-package.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/benign-pnpm-package.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/benign-pyproject.toml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/malicious-Dockerfile +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/malicious-action.yml +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/malicious-npm-package.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/supply-chain/malicious-setup.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/with-marketplace/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/with-marketplace/marketplace-broken.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/fixtures/with-marketplace/marketplace.json +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test-trust-scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test-trust-specs.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_action_runner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_best_practices.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_cisco_install_surfaces.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_cli.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_code_quality.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_config.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_coverage_remaining.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_ecosystems.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_edge_cases.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_final_coverage.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_access_graph.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_action_identity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_advisory_escalation.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_approval_continuity.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_approval_copy_commands.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_approval_store_dedup.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_approval_store_scale.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_approvals.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_bootstrap.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_bypass_detector.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_canary_fixtures.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_capabilities.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_cisco_evidence.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_cisco_runtime_cli.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_claude_adapter.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_cli.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_cloud_local_sync.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_codex_e2e.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_codex_install.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_codex_proxy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_config_paths.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_connect_flow.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_consumer_mode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_copilot_adapter.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_copilot_proxy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_cli.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_manager.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_perf.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_registry.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_repair_perf.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_daemon_wake.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_data_flow.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_decision_propagation.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_detector_fp.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_event_schema_v1.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_events.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_evidence_store.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_harness_contracts.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_harness_setup.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_harness_smoke.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_insights.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_launch_env.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_mcp_detectors.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_mcp_protection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_opencode_proxy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_policy_dedup.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_product_flow.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_prompt_injection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_protect.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_queue_api_contract.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_queue_contract.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_red_team.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_redaction.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_render.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_resolution_copy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_risk.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime_action_harnesses.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime_actions.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime_decisions.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime_detectors.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_runtime_signals.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_safe_decode.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_sandbox.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_skill_protection.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_store_migrations.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_supply_chain.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_surface_server.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_threat_intel.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_verdicts.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_guard_web_recovery.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_hermes_adapter.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_integration.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_lint_fixes.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_live_cisco_smoke.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_manifest.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_marketplace.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_mcp_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_openclaw_adapter.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_operational_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_policy.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_quality_artifact.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_rule_registry.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_scanner.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_schema_contracts.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_security_ops.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_skill_security.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_submission.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_trust_scoring.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_trust_specs.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_verification.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/tests/test_versioning.py +0 -0
- {plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plugin-scanner
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.160
|
|
4
4
|
Summary: Lint, verify, and gate plugin ecosystems for maintainers, CI, and publish workflows.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hashgraph-online/ai-plugin-scanner
|
|
6
6
|
Project-URL: Repository, https://github.com/hashgraph-online/ai-plugin-scanner
|
|
@@ -104,11 +104,6 @@ body {
|
|
|
104
104
|
50% { opacity: 1; }
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
@keyframes guard-checkmark-draw {
|
|
108
|
-
from { stroke-dashoffset: 24; }
|
|
109
|
-
to { stroke-dashoffset: 0; }
|
|
110
|
-
}
|
|
111
|
-
|
|
112
107
|
@keyframes guard-fade-scale {
|
|
113
108
|
from {
|
|
114
109
|
opacity: 0;
|
|
@@ -124,18 +119,6 @@ body {
|
|
|
124
119
|
animation: guard-enter 320ms var(--ease-out-quint) both;
|
|
125
120
|
}
|
|
126
121
|
|
|
127
|
-
.guard-delay-1 {
|
|
128
|
-
animation-delay: 60ms;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.guard-delay-2 {
|
|
132
|
-
animation-delay: 120ms;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.guard-delay-3 {
|
|
136
|
-
animation-delay: 180ms;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
122
|
.guard-skeleton {
|
|
140
123
|
background: linear-gradient(90deg, var(--surface-1) 25%, var(--surface-2) 50%, var(--surface-1) 75%);
|
|
141
124
|
background-size: 200% 100%;
|
|
@@ -143,12 +126,6 @@ body {
|
|
|
143
126
|
border-radius: 8px;
|
|
144
127
|
}
|
|
145
128
|
|
|
146
|
-
.guard-success-check {
|
|
147
|
-
stroke-dasharray: 24;
|
|
148
|
-
stroke-dashoffset: 24;
|
|
149
|
-
animation: guard-checkmark-draw 400ms var(--ease-out-quart) 150ms forwards;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
129
|
.guard-fade-in {
|
|
153
130
|
animation: guard-fade-scale 250ms var(--ease-out-quart) both;
|
|
154
131
|
}
|
|
@@ -174,10 +151,6 @@ a:focus-visible {
|
|
|
174
151
|
|
|
175
152
|
@media (prefers-reduced-motion: reduce) {
|
|
176
153
|
.guard-surface-in,
|
|
177
|
-
.guard-delay-1,
|
|
178
|
-
.guard-delay-2,
|
|
179
|
-
.guard-delay-3,
|
|
180
|
-
.guard-success-check,
|
|
181
154
|
.guard-fade-in {
|
|
182
155
|
animation: none !important;
|
|
183
156
|
}
|
|
@@ -7,6 +7,31 @@ Update this file for every release that touches a Guard integration path.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
### Legacy code cleanup
|
|
11
|
+
|
|
12
|
+
- **Removed unused CSS classes** — `guard-delay-1`, `guard-delay-2`, `guard-delay-3`, and
|
|
13
|
+
`guard-success-check` were defined in `styles.css` but had zero usages across all dashboard
|
|
14
|
+
components. They have been removed together with the `@keyframes guard-checkmark-draw`
|
|
15
|
+
animation that was their sole dependency. The `@media (prefers-reduced-motion)` block has
|
|
16
|
+
been narrowed to match. No visual change for end users.
|
|
17
|
+
|
|
18
|
+
- **Unified severity rank constant** — Three inline severity-rank dictionaries scattered
|
|
19
|
+
across `cisco_preflight.py`, `insights.py`, and `cli/commands.py` have been consolidated
|
|
20
|
+
into a single `SEVERITY_RANK` constant exported from `guard/models.py`. All callers now
|
|
21
|
+
import and reference the shared constant. Behaviour is identical; the constant adds `"info"`
|
|
22
|
+
coverage uniformly (previously absent from the advisory-filter code path).
|
|
23
|
+
|
|
24
|
+
- **Unified severity colour constant** — Two identical severity-to-Rich-colour maps inside
|
|
25
|
+
`cli/render.py` (one in `_render_supply_chain_risk_results`, one in
|
|
26
|
+
`_render_safe_decode_results`) have been collapsed into a single module-level
|
|
27
|
+
`_SEVERITY_COLORS` dict. No output change.
|
|
28
|
+
|
|
29
|
+
**Rollback notes for removed paths:**
|
|
30
|
+
- `guard-delay-1/2/3` and `guard-success-check` CSS classes: these were never applied at
|
|
31
|
+
runtime. Adding them back requires a one-line addition to `styles.css` and no Python changes.
|
|
32
|
+
- `_SEVERITY_RANK` in `cisco_preflight.py`: restore by adding the local dict and removing the
|
|
33
|
+
`SEVERITY_RANK` import from `models`. The shared constant in `models.py` can remain.
|
|
34
|
+
|
|
10
35
|
### False-positive improvements (T647)
|
|
11
36
|
|
|
12
37
|
- **Supply-chain artifact fallback** — `SupplyChainRiskCard` now matches `package_request`
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plugin-scanner"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.160"
|
|
8
8
|
description = "Lint, verify, and gate plugin ecosystems for maintainers, CI, and publish workflows."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hol-guard"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.160"
|
|
8
8
|
description = "Protect local AI harnesses with HOL Guard and run scanner checks for Codex, Claude, Cursor, Gemini, and OpenCode."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/commands.py
RENAMED
|
@@ -80,7 +80,7 @@ from ..mcp_tool_calls import (
|
|
|
80
80
|
build_tool_call_hash,
|
|
81
81
|
evaluate_tool_call,
|
|
82
82
|
)
|
|
83
|
-
from ..models import GuardArtifact, HarnessDetection, PolicyDecision
|
|
83
|
+
from ..models import SEVERITY_RANK, GuardArtifact, HarnessDetection, PolicyDecision
|
|
84
84
|
from ..policy.engine import SAFE_CHANGED_HASH_ACTION, VALID_GUARD_ACTIONS, build_decision_v2
|
|
85
85
|
from ..protect import build_protect_payload
|
|
86
86
|
from ..proxy import (
|
|
@@ -1292,10 +1292,11 @@ def run_guard_command(
|
|
|
1292
1292
|
else:
|
|
1293
1293
|
all_advs = store.list_cached_advisories()
|
|
1294
1294
|
sev_filter = getattr(args, "severity", None)
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1295
|
+
if sev_filter and sev_filter in SEVERITY_RANK:
|
|
1296
|
+
min_rank = SEVERITY_RANK[sev_filter]
|
|
1297
|
+
all_advs = [
|
|
1298
|
+
a for a in all_advs if SEVERITY_RANK.get(str(a.get("severity", "")).lower(), -1) >= min_rank
|
|
1299
|
+
]
|
|
1299
1300
|
_emit(
|
|
1300
1301
|
"advisories",
|
|
1301
1302
|
{"generated_at": _now(), "items": all_advs},
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/render.py
RENAMED
|
@@ -33,6 +33,7 @@ except ModuleNotFoundError:
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
_MODE_ACRONYMS = frozenset({"mcp", "api", "cli"})
|
|
36
|
+
_SEVERITY_COLORS: dict[str, str] = {"critical": "red", "high": "yellow", "medium": "cyan", "low": "dim"}
|
|
36
37
|
_KNOWN_MANAGED_INSTALL_MODES = {
|
|
37
38
|
"codex-mcp-proxy": "Codex MCP proxy",
|
|
38
39
|
}
|
|
@@ -669,7 +670,7 @@ def _render_supply_chain_risk_results(console: Console, supply_chain_risks: list
|
|
|
669
670
|
table.add_column("Explanation", overflow="fold")
|
|
670
671
|
for entry in supply_chain_risks:
|
|
671
672
|
severity = str(entry.get("severity", "medium"))
|
|
672
|
-
severity_color =
|
|
673
|
+
severity_color = _SEVERITY_COLORS.get(severity, "white")
|
|
673
674
|
table.add_row(
|
|
674
675
|
str(entry.get("signal_id", "?")),
|
|
675
676
|
f"[{severity_color}]{severity}[/{severity_color}]",
|
|
@@ -693,7 +694,7 @@ def _render_safe_decode_results(console: Console, safe_decode_risks: list[dict[s
|
|
|
693
694
|
table.add_column("Explanation", overflow="fold")
|
|
694
695
|
for entry in safe_decode_risks:
|
|
695
696
|
severity = str(entry.get("severity", "medium"))
|
|
696
|
-
severity_color =
|
|
697
|
+
severity_color = _SEVERITY_COLORS.get(severity, "white")
|
|
697
698
|
layers = entry.get("technical_detail") or ""
|
|
698
699
|
table.add_row(
|
|
699
700
|
str(entry.get("signal_id", "?")),
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/insights.py
RENAMED
|
@@ -6,6 +6,7 @@ import uuid
|
|
|
6
6
|
from dataclasses import dataclass, field
|
|
7
7
|
from datetime import datetime, timezone
|
|
8
8
|
|
|
9
|
+
from .models import SEVERITY_RANK
|
|
9
10
|
from .runtime.actions import GuardActionEnvelope
|
|
10
11
|
from .runtime.signals import RiskSignalV2
|
|
11
12
|
|
|
@@ -15,10 +16,9 @@ def _now_iso() -> str:
|
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def _max_severity(signals: tuple[RiskSignalV2, ...]) -> str:
|
|
18
|
-
order = {"critical": 4, "high": 3, "medium": 2, "low": 1, "info": 0}
|
|
19
19
|
best = "info"
|
|
20
20
|
for sig in signals:
|
|
21
|
-
if
|
|
21
|
+
if SEVERITY_RANK.get(sig.severity, 0) > SEVERITY_RANK.get(best, 0):
|
|
22
22
|
best = sig.severity
|
|
23
23
|
return best
|
|
24
24
|
|
|
@@ -19,6 +19,8 @@ GUARD_ACTION_VALUES: tuple[GuardAction, ...] = (
|
|
|
19
19
|
)
|
|
20
20
|
DECISION_SCOPE_VALUES: tuple[DecisionScope, ...] = ("global", "harness", "workspace", "artifact", "publisher")
|
|
21
21
|
|
|
22
|
+
SEVERITY_RANK: dict[str, int] = {"info": 0, "low": 1, "medium": 2, "high": 3, "critical": 4}
|
|
23
|
+
|
|
22
24
|
|
|
23
25
|
def _redact_url(value: str | None) -> str | None:
|
|
24
26
|
if value is None:
|
|
@@ -23,7 +23,6 @@ _ACTION_RANK: dict[GuardAction, int] = {
|
|
|
23
23
|
"sandbox-required": 4,
|
|
24
24
|
"block": 5,
|
|
25
25
|
}
|
|
26
|
-
_SEVERITY_RANK: dict[str, int] = {"info": 0, "low": 1, "medium": 2, "high": 3, "critical": 4}
|
|
27
26
|
_SOURCE_RISK_CLASS: dict[str, str] = {
|
|
28
27
|
"cisco_skill": "malicious_skill",
|
|
29
28
|
"cisco_mcp": "mcp_dangerous_tool",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/.github/ISSUE_TEMPLATE/feature-request.yml
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
|
|
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
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-layout.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-mobile.test.ts
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-primitives.tsx
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/dashboard/src/approval-center-review-cards.tsx
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
|
|
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
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/argparse_utils.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/best_practices.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/code_quality.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/manifest.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/marketplace.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/mcp_security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/opencode.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/checks/skill_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/base.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/claude.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/codex.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/detect.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/opencode.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/registry.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/ecosystems/types.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/github_reporting.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/copilot.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/cursor.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/adapters/hermes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/advisory_model.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/approvals.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/bridge/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/capabilities.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/bootstrap.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/connect_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/product.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/cli/prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/codex_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/consumer/service.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.159 → plugin_scanner-2.0.160}/src/codex_plugin_scanner/guard/daemon/__init__.py
RENAMED
|
File without changes
|