plugin-scanner 2.0.177__tar.gz → 2.0.178__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.177 → plugin_scanner-2.0.178}/PKG-INFO +1 -1
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/review-workspace.tsx +10 -10
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/pyproject.toml +1 -1
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/pyproject.toml.bak +1 -1
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js +10 -10
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/assets/index.css +22 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/version.py +1 -1
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.clusterfuzzlite/Dockerfile +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.clusterfuzzlite/build.sh +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.clusterfuzzlite/project.yaml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.clusterfuzzlite/requirements-atheris.txt +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.dockerignore +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/CODEOWNERS +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/dependabot.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/ci.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/codeql.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/dependabot-uv-lock.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/fuzz.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/harness-smoke.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/publish.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.github/workflows/scorecard.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.gitignore +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/.pre-commit-hooks.yaml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/CONTRIBUTING.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/Dockerfile +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/index.html +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/package.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/pnpm-lock.yaml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/public/favicon.ico +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/app.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-layout.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-layout.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-mobile.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-primitives.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-review-cards.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-utils.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/apps/app-detail-workspace.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/data-flow-evidence-card.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/error-boundary.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/fleet-workspace.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/guard-api.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/guard-api.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/guard-demo.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/guard-types.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/help-modal.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/home-dashboard.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/home-dashboard.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/main.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/queue-chip-filter.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/queue-state.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/queue-state.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/receipts-workspace.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/receipts-workspace.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/risk-signal-cards.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/risk-signal-cards.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/runtime-overview.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/runtime-overview.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/scanner-evidence-badge.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/settings-workspace.test.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/settings-workspace.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/styles.css +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/use-focus-trap.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/vite-env.d.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/watched-app-card.tsx +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/tsconfig.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/vite.config.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docker-requirements.txt +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/approval-audit.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/architecture.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/get-started.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/harness-support.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/local-vs-cloud.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/release-checklist.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/release-notes.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/smoke-tests.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/guard/testing-matrix.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/trust/mcp-trust-draft.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/trust/plugin-trust-draft.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/docs/trust/skill-trust-local.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/fuzzers/manifest_fuzzer.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/requirements.txt +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/schemas/plugin-quality.v1.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/schemas/scan-result.v1.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/schemas/verify-result.v1.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/action_runner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/argparse_utils.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/best_practices.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/claude.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/code_quality.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/ecosystem_common.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/gemini.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/manifest.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/manifest_support.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/marketplace.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/mcp_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/opencode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/operational_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/skill_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/cli.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/cli_ui.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/config.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/base.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/claude.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/codex.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/detect.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/gemini.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/opencode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/registry.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/types.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/github_reporting.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/access_graph_events.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/antigravity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/base.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/claude_code.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/cloud_identity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/codex.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/contracts.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/copilot.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/cursor.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/gemini.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/hermes.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/mcp_servers.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/openclaw.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/openclaw_config.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/openclaw_support.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/opencode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/opencode_artifacts.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/advisory_model.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/approvals.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/bridge/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/capabilities.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/approval_commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/bootstrap.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/connect_flow.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/install_commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/product.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/prompt.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/render.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/cli/update_commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/codex_config.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/config.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/consumer/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/consumer/service.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/client.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/manager.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/server.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/favicon.ico +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/daemon/static/index.html +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/edge_events.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/incident.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/insights.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/inventory_cisco.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/inventory_contract.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/launcher.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/mcp_tool_calls.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/models.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/policy/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/policy/engine.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/protect.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/proxy/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/proxy/remote.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/proxy/stdio.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/receipts/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/receipts/manager.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/redaction.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/risk.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/action_identity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/actions.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/advisory_escalation.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/advisory_matchers.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/cisco_evidence.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/cisco_preflight.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/composition_rules.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/data_flow.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/data_flow_rules.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/data_flow_variables.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/decisions.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/detectors.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/false_positive_rules.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/mcp_protection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/persistence_rules.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/prompt_injection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/runner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/safe_decode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/sandbox.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/scanner_cache.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/secret_file_requests.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/secret_sensitivity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/secret_sources.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/shell_commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/signals.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/skill_protection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/supply_chain.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/surface_server.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/temp_files.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/runtime/threat_intel.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/schemas/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/schemas/consumer_mode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/schemas/guard_event_v1.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/schemas/surface_server.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/shims.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/store.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/store_approvals.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/store_connect.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/store_evidence.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/store_threat_intel.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/types.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/integrations/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/integrations/cisco_mcp_scanner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/integrations/cisco_skill_scanner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/lint_fixes.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/marketplace_support.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/models.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/path_support.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/policy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/quality_artifact.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/repo_detect.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/reporting.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/rules/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/rules/registry.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/rules/specs.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/scanner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/submission.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/suppressions.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_domain_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_helpers.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_mcp_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_models.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_plugin_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_skill_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/trust_specs.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/verification.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/conftest.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/__init__.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/bad-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/bad-plugin/.mcp.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/bad-plugin/secrets.js +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/.claude-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/hooks/hooks.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/claude-plugin-good/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/code-quality-bad/evil.js +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/code-quality-bad/inject.js +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/GEMINI.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/commands/hello.toml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/gemini-extension-good/gemini-extension.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/assets/icon.svg +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/assets/logo.svg +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/assets/screenshot.svg +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/good-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-codex-malicious-mcp/.codex/config.toml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/benign-docs-fake-token.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/benign-health-endpoint.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/benign-nvmrc-fake-creds.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/benign-source-search.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/canary-exfil-encoded.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/canary-exfil.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/expected-decisions.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-dockerfile.txt +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-encoded-shell-exfil.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-github-action.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-mcp-delete.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-mcp-secret-read.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-mcp-skill-exfil.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-npm-postinstall.js +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-prompt-env-read.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-prompt-guard-bypass.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-prompt-npmrc-read.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/malicious-python-setup.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/guard-red-team/smoke-evidence-template.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/config.yaml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/mcp_servers.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/skills/security/malicious/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/references/api-setup.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/hermes-plugin-evil/skills/utils/benign/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malformed-json/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/malicious-skill-plugin/skills/leaky-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/mcp-canary-server.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/minimal-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/missing-fields/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/mit-license/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/codex-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/codex-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/codex-plugin/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/codex-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/gemini-ext/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-ecosystem-repo/gemini-ext/gemini-extension.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/.agents/plugins/marketplace.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/no-version/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/.opencode/commands/hello.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/.opencode/plugins/example.ts +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/LICENSE +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/README.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/opencode-good/opencode.jsonc +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/skills-missing-dir/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/skills-no-frontmatter/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/skills-no-frontmatter/skills/bad-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/benign-npm-package.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/benign-pnpm-package.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/benign-pyproject.toml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/malicious-Dockerfile +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/malicious-action.yml +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/malicious-npm-package.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/supply-chain/malicious-setup.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/with-marketplace/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/with-marketplace/marketplace-broken.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/fixtures/with-marketplace/marketplace.json +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test-trust-scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test-trust-specs.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_action_runner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_best_practices.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_cisco_install_surfaces.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_cli.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_code_quality.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_config.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_coverage_remaining.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_ecosystems.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_edge_cases.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_final_coverage.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_access_graph.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_action_identity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_advisory_escalation.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_approval_continuity.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_approval_copy_commands.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_approval_store_dedup.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_approval_store_scale.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_approvals.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_bootstrap.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_bypass_detector.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_canary_fixtures.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_capabilities.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_cisco_evidence.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_cisco_runtime_cli.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_claude_adapter.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_cli.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_cloud_local_sync.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_codex_e2e.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_codex_install.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_codex_proxy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_config_paths.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_connect_flow.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_consumer_mode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_copilot_adapter.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_copilot_proxy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_cli.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_manager.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_perf.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_registry.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_repair_perf.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_daemon_wake.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_data_flow.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_decision_propagation.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_detector_fp.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_event_schema_v1.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_events.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_evidence_store.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_harness_contracts.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_harness_setup.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_harness_smoke.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_insights.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_inventory_cisco.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_inventory_contract.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_launch_env.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_mcp_detectors.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_mcp_protection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_opencode_proxy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_policy_dedup.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_product_flow.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_prompt_injection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_protect.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_queue_api_contract.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_queue_contract.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_red_team.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_red_team_e2e.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_redaction.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_render.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_resolution_copy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_risk.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime_action_harnesses.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime_actions.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime_decisions.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime_detectors.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_runtime_signals.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_safe_decode.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_sandbox.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_settings_presets.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_skill_protection.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_store_migrations.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_supply_chain.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_surface_server.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_threat_intel.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_verdicts.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_guard_web_recovery.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_hermes_adapter.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_integration.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_lint_fixes.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_live_cisco_smoke.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_manifest.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_marketplace.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_mcp_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_openclaw_adapter.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_operational_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_policy.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_quality_artifact.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_rule_registry.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_scanner.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_schema_contracts.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_security_ops.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_skill_security.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_submission.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_trust_scoring.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_trust_specs.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_verification.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/tests/test_versioning.py +0 -0
- {plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/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.178
|
|
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
|
|
@@ -187,7 +187,7 @@ const ReviewQueueList = forwardRef<HTMLDivElement, {
|
|
|
187
187
|
<div
|
|
188
188
|
role="listbox"
|
|
189
189
|
aria-label="Review queue"
|
|
190
|
-
className="max-h-[70vh] space-y-2 overflow-y-auto rounded-
|
|
190
|
+
className="max-h-[70vh] space-y-2 overflow-y-auto rounded-lg border border-slate-100 bg-white p-1.5"
|
|
191
191
|
>
|
|
192
192
|
{requests.map((item, index) => (
|
|
193
193
|
<QueueItemRow
|
|
@@ -220,7 +220,7 @@ function QueueItemRow({ item, active, index, onClick }: {
|
|
|
220
220
|
aria-posinset={index + 1}
|
|
221
221
|
aria-setsize={/* parent will provide */ undefined}
|
|
222
222
|
tabIndex={active ? 0 : -1}
|
|
223
|
-
className={`w-full rounded-
|
|
223
|
+
className={`w-full rounded-lg py-2.5 text-left transition-all ${
|
|
224
224
|
active
|
|
225
225
|
? "border-brand-blue bg-brand-blue/[0.06]"
|
|
226
226
|
: "border-transparent bg-white hover:bg-slate-50"
|
|
@@ -381,7 +381,7 @@ function ReviewDecisionCard(props: {
|
|
|
381
381
|
{/* Success banner */}
|
|
382
382
|
{resolved && (
|
|
383
383
|
<div
|
|
384
|
-
className={`guard-fade-in flex items-center gap-3 rounded-
|
|
384
|
+
className={`guard-fade-in flex items-center gap-3 rounded-xl border px-4 py-3 transition-all ${
|
|
385
385
|
resolved === "allow"
|
|
386
386
|
? "border-brand-green/25 bg-brand-green-bg/30"
|
|
387
387
|
: "border-brand-attention/25 bg-brand-attention/[0.04]"
|
|
@@ -401,7 +401,7 @@ function ReviewDecisionCard(props: {
|
|
|
401
401
|
|
|
402
402
|
{/* Confirm modal for broad scopes */}
|
|
403
403
|
{confirmScope !== null && pendingAction !== null && (
|
|
404
|
-
<div className="guard-fade-in rounded-
|
|
404
|
+
<div className="guard-fade-in rounded-xl border border-brand-attention/15 bg-brand-attention/[0.03] p-4" role="alertdialog" aria-modal="true">
|
|
405
405
|
<div className="flex items-start gap-3">
|
|
406
406
|
<HiMiniExclamationTriangle className="mt-0.5 h-5 w-5 shrink-0 text-brand-attention" aria-hidden="true" />
|
|
407
407
|
<div>
|
|
@@ -425,7 +425,7 @@ function ReviewDecisionCard(props: {
|
|
|
425
425
|
)}
|
|
426
426
|
|
|
427
427
|
{/* Main decision card */}
|
|
428
|
-
<div className="rounded-
|
|
428
|
+
<div className="rounded-xl border border-slate-100 p-4 sm:p-5">
|
|
429
429
|
<div className="flex items-start justify-between gap-3">
|
|
430
430
|
<div>
|
|
431
431
|
<SectionLabel>Paused action</SectionLabel>
|
|
@@ -574,7 +574,7 @@ function ReviewDecisionCard(props: {
|
|
|
574
574
|
|
|
575
575
|
{/* Evidence section */}
|
|
576
576
|
{hasEvidence && (
|
|
577
|
-
<div className="rounded-
|
|
577
|
+
<div className="rounded-xl border border-slate-100 p-4 sm:p-5">
|
|
578
578
|
<button
|
|
579
579
|
onClick={() => setShowEvidence(!showEvidence)}
|
|
580
580
|
className="flex w-full items-center justify-between text-left focus:outline-none focus:ring-2 focus:ring-brand-blue/20 rounded-lg px-2 py-1 -ml-2"
|
|
@@ -606,7 +606,7 @@ function ReviewDecisionCard(props: {
|
|
|
606
606
|
|
|
607
607
|
{/* Last time */}
|
|
608
608
|
{detail.receipt && (
|
|
609
|
-
<div className="rounded-
|
|
609
|
+
<div className="rounded-xl border border-slate-100 p-4 sm:p-5">
|
|
610
610
|
<SectionLabel>Last time</SectionLabel>
|
|
611
611
|
<p className="mt-2 text-sm text-muted-foreground">
|
|
612
612
|
You previously {detail.receipt.policy_decision}d a similar action{" "}
|
|
@@ -657,7 +657,7 @@ function ReviewEmptyState({ runtime, resolutionMessage }: { runtime: GuardRuntim
|
|
|
657
657
|
)}
|
|
658
658
|
|
|
659
659
|
<div className="grid gap-6 lg:grid-cols-2">
|
|
660
|
-
<div className="rounded-
|
|
660
|
+
<div className="rounded-xl border border-emerald-200/60 bg-emerald-50/30 p-4 sm:p-5">
|
|
661
661
|
<div className="flex items-start gap-3">
|
|
662
662
|
<span className="inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-brand-green/10">
|
|
663
663
|
<HiMiniShieldCheck className="h-5 w-5 text-brand-green" aria-hidden="true" />
|
|
@@ -671,7 +671,7 @@ function ReviewEmptyState({ runtime, resolutionMessage }: { runtime: GuardRuntim
|
|
|
671
671
|
</div>
|
|
672
672
|
</div>
|
|
673
673
|
|
|
674
|
-
<div className="rounded-
|
|
674
|
+
<div className="rounded-xl border border-slate-100 p-4 sm:p-5">
|
|
675
675
|
<SectionLabel>What Guard does</SectionLabel>
|
|
676
676
|
<ul className="mt-3 space-y-2">
|
|
677
677
|
{[
|
|
@@ -748,7 +748,7 @@ function ActionContentCard({ item }: { item: GuardApprovalRequest }) {
|
|
|
748
748
|
)}
|
|
749
749
|
|
|
750
750
|
{/* Terminal display of actual content */}
|
|
751
|
-
<div className="overflow-hidden rounded-
|
|
751
|
+
<div className="overflow-hidden rounded-xl bg-[#0f172a]">
|
|
752
752
|
<div className="flex items-center gap-1.5 border-b border-white/10 px-3 py-2">
|
|
753
753
|
<span className="h-2.5 w-2.5 rounded-full bg-brand-purple" />
|
|
754
754
|
<span className="h-2.5 w-2.5 rounded-full bg-brand-blue" />
|
|
@@ -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.178"
|
|
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.178"
|
|
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"
|
|
@@ -14719,7 +14719,7 @@ const ReviewQueueList = reactExports.forwardRef(({ requests, activeRequestId, on
|
|
|
14719
14719
|
{
|
|
14720
14720
|
role: "listbox",
|
|
14721
14721
|
"aria-label": "Review queue",
|
|
14722
|
-
className: "max-h-[70vh] space-y-2 overflow-y-auto rounded-
|
|
14722
|
+
className: "max-h-[70vh] space-y-2 overflow-y-auto rounded-lg border border-slate-100 bg-white p-1.5",
|
|
14723
14723
|
children: requests.map((item, index) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
14724
14724
|
QueueItemRow,
|
|
14725
14725
|
{
|
|
@@ -14750,7 +14750,7 @@ function QueueItemRow({ item, active, index, onClick }) {
|
|
|
14750
14750
|
void 0
|
|
14751
14751
|
),
|
|
14752
14752
|
tabIndex: active ? 0 : -1,
|
|
14753
|
-
className: `w-full rounded-
|
|
14753
|
+
className: `w-full rounded-lg py-2.5 text-left transition-all ${active ? "border-brand-blue bg-brand-blue/[0.06]" : "border-transparent bg-white hover:bg-slate-50"}`,
|
|
14754
14754
|
children: [
|
|
14755
14755
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
14756
14756
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "truncate text-sm font-medium text-brand-dark", children: title }),
|
|
@@ -14885,7 +14885,7 @@ function ReviewDecisionCard(props) {
|
|
|
14885
14885
|
resolved && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
14886
14886
|
"div",
|
|
14887
14887
|
{
|
|
14888
|
-
className: `guard-fade-in flex items-center gap-3 rounded-
|
|
14888
|
+
className: `guard-fade-in flex items-center gap-3 rounded-xl border px-4 py-3 transition-all ${resolved === "allow" ? "border-brand-green/25 bg-brand-green-bg/30" : "border-brand-attention/25 bg-brand-attention/[0.04]"}`,
|
|
14889
14889
|
role: "status",
|
|
14890
14890
|
"aria-live": "polite",
|
|
14891
14891
|
children: [
|
|
@@ -14900,7 +14900,7 @@ function ReviewDecisionCard(props) {
|
|
|
14900
14900
|
]
|
|
14901
14901
|
}
|
|
14902
14902
|
),
|
|
14903
|
-
confirmScope !== null && pendingAction !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "guard-fade-in rounded-
|
|
14903
|
+
confirmScope !== null && pendingAction !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "guard-fade-in rounded-xl border border-brand-attention/15 bg-brand-attention/[0.03] p-4", role: "alertdialog", "aria-modal": "true", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
14904
14904
|
/* @__PURE__ */ jsxRuntimeExports.jsx(HiMiniExclamationTriangle, { className: "mt-0.5 h-5 w-5 shrink-0 text-brand-attention", "aria-hidden": "true" }),
|
|
14905
14905
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
14906
14906
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-semibold text-brand-dark", children: [
|
|
@@ -14923,7 +14923,7 @@ function ReviewDecisionCard(props) {
|
|
|
14923
14923
|
] })
|
|
14924
14924
|
] })
|
|
14925
14925
|
] }) }),
|
|
14926
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-
|
|
14926
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-xl border border-slate-100 p-4 sm:p-5", children: [
|
|
14927
14927
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
14928
14928
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
14929
14929
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionLabel, { children: "Paused action" }),
|
|
@@ -15048,7 +15048,7 @@ function ReviewDecisionCard(props) {
|
|
|
15048
15048
|
] })
|
|
15049
15049
|
] })
|
|
15050
15050
|
] }),
|
|
15051
|
-
hasEvidence && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-
|
|
15051
|
+
hasEvidence && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-xl border border-slate-100 p-4 sm:p-5", children: [
|
|
15052
15052
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
15053
15053
|
"button",
|
|
15054
15054
|
{
|
|
@@ -15070,7 +15070,7 @@ function ReviewDecisionCard(props) {
|
|
|
15070
15070
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DecodedLayerCard, { item })
|
|
15071
15071
|
] })
|
|
15072
15072
|
] }),
|
|
15073
|
-
detail.receipt && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-
|
|
15073
|
+
detail.receipt && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-xl border border-slate-100 p-4 sm:p-5", children: [
|
|
15074
15074
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionLabel, { children: "Last time" }),
|
|
15075
15075
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-2 text-sm text-muted-foreground", children: [
|
|
15076
15076
|
"You previously ",
|
|
@@ -15115,14 +15115,14 @@ function ReviewEmptyState({ runtime, resolutionMessage }) {
|
|
|
15115
15115
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-brand-green-text", children: resolutionMessage })
|
|
15116
15116
|
] }),
|
|
15117
15117
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-6 lg:grid-cols-2", children: [
|
|
15118
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-
|
|
15118
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-xl border border-emerald-200/60 bg-emerald-50/30 p-4 sm:p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15119
15119
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-brand-green/10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(HiMiniShieldCheck, { className: "h-5 w-5 text-brand-green", "aria-hidden": "true" }) }),
|
|
15120
15120
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
15121
15121
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionLabel, { children: "Protection active" }),
|
|
15122
15122
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Guard is running and will pause any risky actions from your AI apps. When something needs review, it will appear here." })
|
|
15123
15123
|
] })
|
|
15124
15124
|
] }) }),
|
|
15125
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-
|
|
15125
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-xl border border-slate-100 p-4 sm:p-5", children: [
|
|
15126
15126
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionLabel, { children: "What Guard does" }),
|
|
15127
15127
|
/* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "mt-3 space-y-2", children: [
|
|
15128
15128
|
"Pauses risky file reads and writes",
|
|
@@ -15171,7 +15171,7 @@ function ActionContentCard({ item }) {
|
|
|
15171
15171
|
] }),
|
|
15172
15172
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm leading-relaxed text-brand-dark/80", children: pauseReason }),
|
|
15173
15173
|
detailText && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm leading-relaxed text-brand-dark/80", children: detailText }),
|
|
15174
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "overflow-hidden rounded-
|
|
15174
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "overflow-hidden rounded-xl bg-[#0f172a]", children: [
|
|
15175
15175
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 border-b border-white/10 px-3 py-2", children: [
|
|
15176
15176
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "h-2.5 w-2.5 rounded-full bg-brand-purple" }),
|
|
15177
15177
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "h-2.5 w-2.5 rounded-full bg-brand-blue" }),
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
@layer theme {
|
|
72
72
|
:root, :host {
|
|
73
73
|
--font-sans: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
74
|
+
--color-emerald-50: oklch(97.9% .021 166.113);
|
|
75
|
+
--color-emerald-200: oklch(90.5% .093 164.15);
|
|
74
76
|
--color-emerald-500: oklch(69.6% .17 162.48);
|
|
75
77
|
--color-emerald-600: oklch(59.6% .145 163.225);
|
|
76
78
|
--color-blue-50: oklch(97% .014 254.604);
|
|
@@ -1472,6 +1474,16 @@
|
|
|
1472
1474
|
}
|
|
1473
1475
|
}
|
|
1474
1476
|
|
|
1477
|
+
.border-emerald-200\/60 {
|
|
1478
|
+
border-color: #a4f4cf99;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1482
|
+
.border-emerald-200\/60 {
|
|
1483
|
+
border-color: color-mix(in oklab, var(--color-emerald-200) 60%, transparent);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1475
1487
|
.border-emerald-500 {
|
|
1476
1488
|
border-color: var(--color-emerald-500);
|
|
1477
1489
|
}
|
|
@@ -1908,6 +1920,16 @@
|
|
|
1908
1920
|
background-color: hsl(var(--card));
|
|
1909
1921
|
}
|
|
1910
1922
|
|
|
1923
|
+
.bg-emerald-50\/30 {
|
|
1924
|
+
background-color: #ecfdf54d;
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1928
|
+
.bg-emerald-50\/30 {
|
|
1929
|
+
background-color: color-mix(in oklab, var(--color-emerald-50) 30%, transparent);
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
|
|
1911
1933
|
.bg-gray-100 {
|
|
1912
1934
|
background-color: var(--color-gray-100);
|
|
1913
1935
|
}
|
|
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.177 → plugin_scanner-2.0.178}/.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.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-layout.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-mobile.test.ts
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-primitives.tsx
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/approval-center-review-cards.tsx
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/dashboard/src/apps/app-detail-workspace.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/argparse_utils.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/best_practices.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/code_quality.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/manifest.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/marketplace.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/mcp_security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/opencode.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/checks/security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/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.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/base.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/claude.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/codex.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/detect.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/opencode.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/registry.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/ecosystems/types.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/github_reporting.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/copilot.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/cursor.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.177 → plugin_scanner-2.0.178}/src/codex_plugin_scanner/guard/adapters/gemini.py
RENAMED
|
File without changes
|