plugin-scanner 2.0.140__tar.gz → 2.0.141__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.140 → plugin_scanner-2.0.141}/PKG-INFO +1 -1
- plugin_scanner-2.0.141/docs/guard/release-notes.md +37 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/pyproject.toml +1 -1
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/pyproject.toml.bak +1 -1
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/runner.py +16 -1
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/version.py +1 -1
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_daemon_manager.py +74 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.clusterfuzzlite/Dockerfile +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.clusterfuzzlite/build.sh +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.clusterfuzzlite/project.yaml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.clusterfuzzlite/requirements-atheris.txt +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.dockerignore +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/CODEOWNERS +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/dependabot.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/ci.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/codeql.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/dependabot-uv-lock.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/fuzz.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/harness-smoke.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/publish.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.github/workflows/scorecard.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.gitignore +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/.pre-commit-hooks.yaml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/CONTRIBUTING.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/Dockerfile +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/index.html +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/package.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/pnpm-lock.yaml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/public/favicon.ico +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/app.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-layout.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-layout.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-primitives.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-review-cards.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-utils.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/data-flow-evidence-card.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/fleet-workspace.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/guard-api.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/guard-api.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/guard-demo.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/guard-types.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/main.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/receipts-workspace.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/receipts-workspace.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/risk-signal-cards.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/risk-signal-cards.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/runtime-overview.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/runtime-overview.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/settings-workspace.test.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/settings-workspace.tsx +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/styles.css +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/vite-env.d.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/tsconfig.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/vite.config.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docker-requirements.txt +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/approval-audit.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/architecture.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/get-started.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/harness-support.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/local-vs-cloud.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/release-checklist.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/smoke-tests.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/guard/testing-matrix.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/trust/mcp-trust-draft.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/trust/plugin-trust-draft.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/docs/trust/skill-trust-local.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/fuzzers/manifest_fuzzer.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/requirements.txt +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/schemas/plugin-quality.v1.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/schemas/scan-result.v1.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/schemas/verify-result.v1.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/action_runner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/argparse_utils.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/best_practices.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/claude.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/code_quality.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/ecosystem_common.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/gemini.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/manifest.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/manifest_support.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/marketplace.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/mcp_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/opencode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/operational_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/skill_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/cli.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/cli_ui.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/config.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/base.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/claude.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/codex.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/detect.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/gemini.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/opencode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/registry.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/types.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/github_reporting.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/access_graph_events.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/antigravity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/base.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/claude_code.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/cloud_identity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/codex.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/contracts.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/copilot.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/cursor.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/gemini.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/hermes.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/mcp_servers.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/openclaw.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/openclaw_config.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/openclaw_support.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/opencode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/opencode_artifacts.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/advisory_model.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/approvals.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/bridge/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/capabilities.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/approval_commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/bootstrap.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/connect_flow.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/install_commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/product.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/prompt.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/render.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/update_commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/codex_config.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/config.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/consumer/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/consumer/service.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/client.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/manager.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/server.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/assets/index.css +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/favicon.ico +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/static/index.html +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/edge_events.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/incident.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/launcher.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/mcp_tool_calls.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/models.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/policy/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/policy/engine.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/protect.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/proxy/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/proxy/remote.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/proxy/stdio.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/receipts/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/receipts/manager.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/redaction.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/risk.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/action_identity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/actions.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/advisory_escalation.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/advisory_matchers.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/data_flow.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/data_flow_rules.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/data_flow_variables.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/decisions.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/detectors.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/mcp_protection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/prompt_injection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/safe_decode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/sandbox.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/secret_file_requests.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/secret_sensitivity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/secret_sources.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/shell_commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/signals.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/skill_protection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/supply_chain.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/surface_server.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/temp_files.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/threat_intel.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/schemas/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/schemas/consumer_mode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/schemas/guard_event_v1.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/schemas/surface_server.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/shims.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/store.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/store_approvals.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/store_connect.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/store_evidence.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/store_threat_intel.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/types.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/integrations/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/integrations/cisco_mcp_scanner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/integrations/cisco_skill_scanner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/lint_fixes.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/marketplace_support.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/models.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/path_support.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/policy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/quality_artifact.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/repo_detect.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/reporting.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/rules/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/rules/registry.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/rules/specs.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/scanner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/submission.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/suppressions.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_domain_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_helpers.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_mcp_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_models.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_plugin_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_skill_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/trust_specs.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/verification.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/conftest.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/__init__.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/bad-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/bad-plugin/.mcp.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/bad-plugin/secrets.js +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/.claude-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/hooks/hooks.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/claude-plugin-good/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/code-quality-bad/evil.js +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/code-quality-bad/inject.js +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/GEMINI.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/commands/hello.toml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/gemini-extension-good/gemini-extension.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/assets/icon.svg +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/assets/logo.svg +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/assets/screenshot.svg +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/good-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-codex-malicious-mcp/.codex/config.toml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/benign-docs-fake-token.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/benign-health-endpoint.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/benign-nvmrc-fake-creds.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/benign-source-search.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/canary-exfil-encoded.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/canary-exfil.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/expected-decisions.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-dockerfile.txt +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-encoded-shell-exfil.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-github-action.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-mcp-delete.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-mcp-secret-read.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-mcp-skill-exfil.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-npm-postinstall.js +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-prompt-env-read.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-prompt-guard-bypass.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-prompt-npmrc-read.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/malicious-python-setup.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/guard-red-team/smoke-evidence-template.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/config.yaml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/mcp_servers.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/skills/security/malicious/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/references/api-setup.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/hermes-plugin-evil/skills/utils/benign/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malformed-json/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/malicious-skill-plugin/skills/leaky-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/mcp-canary-server.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/minimal-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/missing-fields/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/mit-license/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/codex-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/codex-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/codex-plugin/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/codex-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/gemini-ext/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-ecosystem-repo/gemini-ext/gemini-extension.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/.agents/plugins/marketplace.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/no-version/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/.opencode/commands/hello.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/.opencode/plugins/example.ts +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/LICENSE +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/README.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/opencode-good/opencode.jsonc +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/skills-missing-dir/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/skills-no-frontmatter/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/skills-no-frontmatter/skills/bad-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/benign-npm-package.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/benign-pnpm-package.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/benign-pyproject.toml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/malicious-Dockerfile +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/malicious-action.yml +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/malicious-npm-package.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/supply-chain/malicious-setup.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/with-marketplace/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/with-marketplace/marketplace-broken.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/fixtures/with-marketplace/marketplace.json +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test-trust-scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test-trust-specs.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_action_runner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_best_practices.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_cisco_install_surfaces.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_cli.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_code_quality.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_config.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_coverage_remaining.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_ecosystems.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_edge_cases.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_final_coverage.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_access_graph.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_action_identity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_advisory_escalation.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_approval_continuity.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_approval_copy_commands.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_approval_store_dedup.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_approval_store_scale.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_approvals.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_bootstrap.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_canary_fixtures.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_capabilities.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_claude_adapter.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_cli.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_cloud_local_sync.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_codex_e2e.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_codex_install.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_codex_proxy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_config_paths.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_connect_flow.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_consumer_mode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_copilot_adapter.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_copilot_proxy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_daemon_perf.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_daemon_repair_perf.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_data_flow.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_decision_propagation.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_event_schema_v1.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_events.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_evidence_store.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_harness_contracts.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_launch_env.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_mcp_protection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_opencode_proxy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_policy_dedup.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_product_flow.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_prompt_injection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_protect.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_red_team.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_render.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_resolution_copy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_risk.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime_action_harnesses.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime_actions.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime_decisions.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime_detectors.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_runtime_signals.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_safe_decode.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_sandbox.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_skill_protection.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_store_migrations.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_supply_chain.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_surface_server.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_threat_intel.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_verdicts.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_guard_web_recovery.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_hermes_adapter.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_integration.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_lint_fixes.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_live_cisco_smoke.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_manifest.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_marketplace.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_mcp_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_openclaw_adapter.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_operational_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_policy.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_quality_artifact.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_rule_registry.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_scanner.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_schema_contracts.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_security_ops.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_skill_security.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_submission.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_trust_scoring.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_trust_specs.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_verification.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/tests/test_versioning.py +0 -0
- {plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/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.141
|
|
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
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# HOL Guard Release Notes
|
|
2
|
+
|
|
3
|
+
Release notes document user-visible changes, false-positive improvements, and paid-feature additions.
|
|
4
|
+
Update this file for every release that touches a Guard integration path.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Unreleased
|
|
9
|
+
|
|
10
|
+
### False-positive improvements (T647)
|
|
11
|
+
|
|
12
|
+
- **Supply-chain artifact fallback** — `SupplyChainRiskCard` now matches `package_request`
|
|
13
|
+
and any `*_package` artifact type in addition to the original `supply_chain` value,
|
|
14
|
+
eliminating spurious "no risk signals" cards for npm/PyPI requests.
|
|
15
|
+
- **Encoded-layer count** — `DecodedLayerCard` now reads the true layer count from the
|
|
16
|
+
detector `plain_reason` field (e.g., "Decoded 3 encoding layer(s)") instead of counting
|
|
17
|
+
signal list length, so multi-layer exfil is accurately reported rather than shown as
|
|
18
|
+
"0 additional layers".
|
|
19
|
+
- **Detector registry cached across hook calls** — The default detector registry is now
|
|
20
|
+
lazily initialised once per process and reused, reducing per-hook construction overhead.
|
|
21
|
+
|
|
22
|
+
### Cloud advisory paid sync (T648)
|
|
23
|
+
|
|
24
|
+
Advisory bundles are signed by the HOL advisory service and verified locally before use.
|
|
25
|
+
The free plan receives a graceful 403 fallback with a local-only warning; no advisory data
|
|
26
|
+
is sent to the server during sync. Run `hol-guard advisories sync` to pull the latest bundle.
|
|
27
|
+
|
|
28
|
+
### Settings presets (T649)
|
|
29
|
+
|
|
30
|
+
Four one-click security presets — **Gentle**, **Balanced**, **Strict**, and **Paranoid** —
|
|
31
|
+
are available from the Settings page. Choosing a preset applies a curated `risk_actions`
|
|
32
|
+
profile. Custom overrides survive a preset switch unless explicitly cleared.
|
|
33
|
+
|
|
34
|
+
### Dashboard scale (T650)
|
|
35
|
+
|
|
36
|
+
The approval center and evidence log now paginate at 50 items per page. Large workspaces
|
|
37
|
+
with thousands of receipts will no longer cause the dashboard to stall on load.
|
|
@@ -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.141"
|
|
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.141"
|
|
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.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/runtime/runner.py
RENAMED
|
@@ -8,6 +8,7 @@ import os
|
|
|
8
8
|
import re
|
|
9
9
|
import socket
|
|
10
10
|
import subprocess
|
|
11
|
+
import threading
|
|
11
12
|
import urllib.error
|
|
12
13
|
import urllib.parse
|
|
13
14
|
import urllib.request
|
|
@@ -40,8 +41,22 @@ _APPROVAL_METADATA_KEYS = (
|
|
|
40
41
|
)
|
|
41
42
|
|
|
42
43
|
|
|
44
|
+
_DEFAULT_DETECTOR_REGISTRY: tuple[Callable[[], tuple[Any, ...]], DetectorRegistry] | None = None
|
|
45
|
+
_DEFAULT_DETECTOR_REGISTRY_LOCK = threading.Lock()
|
|
46
|
+
|
|
47
|
+
|
|
43
48
|
def _get_default_detector_registry() -> DetectorRegistry:
|
|
44
|
-
|
|
49
|
+
global _DEFAULT_DETECTOR_REGISTRY
|
|
50
|
+
factory = register_default_detectors
|
|
51
|
+
cached = _DEFAULT_DETECTOR_REGISTRY
|
|
52
|
+
if cached is not None and cached[0] is factory:
|
|
53
|
+
return cached[1]
|
|
54
|
+
with _DEFAULT_DETECTOR_REGISTRY_LOCK:
|
|
55
|
+
cached = _DEFAULT_DETECTOR_REGISTRY
|
|
56
|
+
if cached is None or cached[0] is not factory:
|
|
57
|
+
cached = (factory, DetectorRegistry(factory()))
|
|
58
|
+
_DEFAULT_DETECTOR_REGISTRY = cached
|
|
59
|
+
return cached[1]
|
|
45
60
|
|
|
46
61
|
|
|
47
62
|
_PAIN_SIGNAL_EVENTS = frozenset(
|
|
@@ -585,3 +585,77 @@ def test_guard_daemon_pid_matches_command_validates_guard_home_on_windows(tmp_pa
|
|
|
585
585
|
12345,
|
|
586
586
|
expected_guard_home=tmp_path / "other-home",
|
|
587
587
|
)
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
def test_guard_daemon_start_lock_prevents_concurrent_starts(tmp_path):
|
|
591
|
+
guard_home = tmp_path / "guard-home"
|
|
592
|
+
guard_home.mkdir(parents=True)
|
|
593
|
+
|
|
594
|
+
events: list[str] = []
|
|
595
|
+
errors: list[Exception] = []
|
|
596
|
+
t1_entered = threading.Event()
|
|
597
|
+
release_holder = threading.Event()
|
|
598
|
+
|
|
599
|
+
def holder() -> None:
|
|
600
|
+
try:
|
|
601
|
+
with daemon_manager_module._guard_daemon_start_lock(guard_home):
|
|
602
|
+
events.append("t1-entered")
|
|
603
|
+
t1_entered.set()
|
|
604
|
+
release_holder.wait(timeout=5)
|
|
605
|
+
events.append("t1-exited")
|
|
606
|
+
except Exception as exc:
|
|
607
|
+
errors.append(exc)
|
|
608
|
+
|
|
609
|
+
def waiter() -> None:
|
|
610
|
+
try:
|
|
611
|
+
with daemon_manager_module._guard_daemon_start_lock(guard_home):
|
|
612
|
+
events.append("t2-entered")
|
|
613
|
+
except Exception as exc:
|
|
614
|
+
errors.append(exc)
|
|
615
|
+
|
|
616
|
+
t1 = threading.Thread(target=holder)
|
|
617
|
+
t1.start()
|
|
618
|
+
t1_entered.wait(timeout=5)
|
|
619
|
+
t2 = threading.Thread(target=waiter)
|
|
620
|
+
t2.start()
|
|
621
|
+
release_holder.set()
|
|
622
|
+
t1.join(timeout=10)
|
|
623
|
+
t2.join(timeout=10)
|
|
624
|
+
|
|
625
|
+
assert not errors, f"Lock worker raised: {errors}"
|
|
626
|
+
assert events.index("t1-exited") < events.index("t2-entered"), (
|
|
627
|
+
"Second thread entered before first released the lock"
|
|
628
|
+
)
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
def test_guard_daemon_start_lock_file_created_and_released(tmp_path):
|
|
632
|
+
guard_home = tmp_path / "guard-home"
|
|
633
|
+
guard_home.mkdir(parents=True)
|
|
634
|
+
lock_path = guard_home / "daemon-start.lock"
|
|
635
|
+
|
|
636
|
+
assert not lock_path.exists()
|
|
637
|
+
|
|
638
|
+
with daemon_manager_module._guard_daemon_start_lock(guard_home):
|
|
639
|
+
assert lock_path.exists()
|
|
640
|
+
|
|
641
|
+
assert lock_path.exists()
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
def test_guard_daemon_start_lock_recovers_after_exception(tmp_path):
|
|
645
|
+
guard_home = tmp_path / "guard-home"
|
|
646
|
+
guard_home.mkdir(parents=True)
|
|
647
|
+
|
|
648
|
+
raised = False
|
|
649
|
+
try:
|
|
650
|
+
with daemon_manager_module._guard_daemon_start_lock(guard_home):
|
|
651
|
+
raised = True
|
|
652
|
+
raise RuntimeError("simulated crash")
|
|
653
|
+
except RuntimeError:
|
|
654
|
+
pass
|
|
655
|
+
|
|
656
|
+
assert raised
|
|
657
|
+
|
|
658
|
+
acquired = False
|
|
659
|
+
with daemon_manager_module._guard_daemon_start_lock(guard_home):
|
|
660
|
+
acquired = True
|
|
661
|
+
assert acquired, "Lock was not released after exception; stale lock not recoverable"
|
|
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.140 → plugin_scanner-2.0.141}/.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.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-layout.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/dashboard/src/approval-center-primitives.tsx
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/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
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/argparse_utils.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/best_practices.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/code_quality.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/manifest.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/marketplace.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/mcp_security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/opencode.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/checks/security.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/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.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/base.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/claude.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/codex.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/detect.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/opencode.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/registry.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/ecosystems/types.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/github_reporting.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/copilot.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/cursor.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/adapters/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/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.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/advisory_model.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/approvals.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/bridge/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/capabilities.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/bootstrap.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/commands.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/connect_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/product.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/prompt.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/cli/render.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/codex_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/consumer/service.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/client.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/manager.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/daemon/server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/edge_events.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/incident.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/launcher.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.140 → plugin_scanner-2.0.141}/src/codex_plugin_scanner/guard/mcp_tool_calls.py
RENAMED
|
File without changes
|
|
File without changes
|