plugin-scanner 2.0.570__tar.gz → 2.0.572__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.
Potentially problematic release.
This version of plugin-scanner might be problematic. Click here for more details.
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/PKG-INFO +1 -1
- plugin_scanner-2.0.572/docs/guard/enterprise-event-taxonomy.md +83 -0
- plugin_scanner-2.0.572/docs/guard/enterprise-export-examples.md +162 -0
- plugin_scanner-2.0.572/docs/guard/enterprise-packet.md +118 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/get-started.md +3 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/pyproject.toml +1 -1
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/pyproject.toml.bak +1 -1
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/aibom_detection.py +17 -4
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/version.py +1 -1
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_aibom_detection.py +60 -4
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.clusterfuzzlite/Dockerfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.clusterfuzzlite/build.sh +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.clusterfuzzlite/project.yaml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.clusterfuzzlite/requirements-atheris.txt +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.dockerignore +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.factory/droids/hol-guard-runner.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.factory/skills/hol-guard/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/CODEOWNERS +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/dependabot.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/pr-bodies/claude-permission-request-visible.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/ci.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/codeql.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/dependabot-uv-lock.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/fuzz.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/harness-smoke.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/publish.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/scorecard.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.github/workflows/security-gates.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.gitignore +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/.pre-commit-hooks.yaml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/CONTRIBUTING.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/Dockerfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/PRODUCT.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/e2e/fixture-states.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/e2e/proof-dir.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/e2e/scrg172-states.spec.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/e2e/static-server.mjs +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/index.html +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/playwright.config.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/pnpm-lock.yaml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/public/favicon.ico +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-analytics.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-content.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-content.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-design.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-external-links.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-external-links.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-types.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/about-external-link.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/about-footer.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/about-hero.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/about-runtime-proof-strip.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/data-boundary-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/ecosystem-programs.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/open-standards-map.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/pathway-grid.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/section-shell.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/tracked-action-button.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/about/components/trust-contract-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/app-detail-phase11.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/app-detail-workspace.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/app-routing.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/app.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-layout.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-layout.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-mobile.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-primitives.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-review-cards.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-center-utils.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-gate-utils.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-gate.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-proof-modal.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-scopes.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/approval-scopes.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/apps/app-catalog.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/apps/app-detail-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/audit-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/clear-policy-payload.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/clear-policy-payload.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/compare-time-periods.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/data-flow-evidence-card.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/error-boundary.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/app-tab.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/breakdown-card.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/categories.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/category-tab.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/decision-badge.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-action-detail.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-action-list.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-activity-heatmap-mini.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-activity-heatmap.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-activity-heatmap.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-analytics-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-clear-modal.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-copy.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-data-provenance-strip.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-detail.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-export-drawer.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-export.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-export.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-filter-bar.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-filters.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-filters.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-format.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-format.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-hero.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insight-strip.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-headline-bento.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-headline-bento.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-home-preview.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-home-preview.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-layout.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-share-button.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-share-errors.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-share-modal.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-share-sheet.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-insights-surface.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-metrics.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-metrics.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-pagination.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-pagination.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-perf.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-period.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-share-bar.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-sort.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-sort.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-story.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-table.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-trend-chart.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-trend-chart.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-types.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-url-state.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-url-state.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/evidence-view-shell.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/explore-tab.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/guard-stat-metric.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/index.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/plain-english.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/scoped-evidence-table.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/scoped-evidence-table.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/sparkline.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/story-tab.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/evidence/use-receipt-analytics.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/feed-health-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/fleet-workspace-phase11.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/fleet-workspace.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/fleet-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-api.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-api.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-demo.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-modal-layer.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-types.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-update-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/guard-update.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/help-modal.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/history-analytics.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/history-charts.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/history-export.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/home-dashboard.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/home-dashboard.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/home-protection-module.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/main.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/package-firewall-connect.test.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/package-workbench-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/phase09-review.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/policy-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/queue-chip-filter.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/queue-state.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/queue-state.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/receipts-workspace.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/receipts-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/review-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/risk-signal-cards.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/risk-signal-cards.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/runtime-overview.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/runtime-overview.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scanner-evidence-badge.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scrg159-170.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scrg171-172.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09-next-action.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09-package-firewall-status.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09c-evidence-rail.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09d-intercept-drawer.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09e-posture-banners.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09f-mobile-polish.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09g-cloud-capabilities.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase09h-hero-cards.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/scsr-phase10-package-workbench.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/security-fixes.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings/settings-ia.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings/settings-ia.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings/settings-row-primitives.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings/settings-section-shell.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings-workspace-phase11.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings-workspace.test.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/settings-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/styles.css +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-audit-findings-summary.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-audit-normalize.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-bundle-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-cloud-capabilities-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-cloud-capabilities.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-evidence-rail-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-evidence-rail.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-action-result.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-controls.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-manager-row.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-next-action.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-firewall-views.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-hub-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-intercept-proof-modal.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-manager-cards.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-manager-drawer.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-posture-banners.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-posture.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-protection-stats.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-workspace-hero-state.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-workspace-hero.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-workspace-layout.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/supply-chain-workspace.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/totp-enrollment-qr-panel.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-debounce.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-focus-trap.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-keyboard-shortcut.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-reduced-motion.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-resolved-approval-gate.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/use-route-focus.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/vite-env.d.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/watched-app-card.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/src/workspace-page-header.tsx +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/tsconfig.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/dashboard/vite.config.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docker-requirements.txt +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/architecture.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/cursor-local-cloud-contract.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/harness-support.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/incident-response.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/local-vs-cloud.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/release-checklist.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/remediation.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/guard/testing-matrix.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/trust/mcp-trust-draft.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/trust/plugin-trust-draft.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/docs/trust/skill-trust-local.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/fuzzers/manifest_fuzzer.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/pr-body.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/requirements.txt +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/schemas/plugin-quality.v1.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/schemas/scan-result.v1.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/schemas/verify-result.v1.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/scripts/codex-auto-resume-smoke.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/scripts/e2e-cursor-hook-smoke.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/action_runner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/argparse_utils.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/best_practices.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/claude.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/code_quality.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/ecosystem_common.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/gemini.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/manifest.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/manifest_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/marketplace.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/mcp_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/opencode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/operational_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/checks/skill_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/cli_ui.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/config.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/base.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/claude.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/codex.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/detect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/gemini.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/opencode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/registry.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/ecosystems/types.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/github_reporting.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/access_graph_events.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/antigravity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/base.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/claude_code.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/claude_daemon_hook_bridge.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/cloud_identity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/codex.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/contracts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/copilot.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/cursor.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/cursor_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/cursor_hooks.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/cursor_native_approval.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/gemini.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/hermes.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/hook_python.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/mcp_servers.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/openclaw.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/openclaw_config.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/openclaw_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/opencode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/opencode_artifacts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/adapters/opencode_pretool.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/advisory_model.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/aibom_symlink.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/aibom_trust_metadata.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/approval_gate.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/approval_gate_state.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/approvals.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/bridge/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/capabilities.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/approval_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/approval_gate_prompt.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/bootstrap.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/connect_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/cursor_actions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/dashboard_sync.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/docs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/install_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/oauth_client.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/product.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/prompt.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/remote_pair_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/render.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/cli/update_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/codex_app_server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/codex_config.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/codex_resume.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/config.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/consumer/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/consumer/service.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/contracts/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/contracts/supply_chain_decision_evidence_v1.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/client.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/dashboard_update.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/dashboard_update_runner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/manager.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/about-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/app-catalog.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/app-detail-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/audit-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/feed-health-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/fleet-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/help-modal.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/home-dashboard.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/policy-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/runtime-overview.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/settings-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-hub-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-workspace.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/chunks/use-resolved-approval-gate.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/assets/index.css +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/favicon.ico +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/daemon/static/index.html +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/desktop_notifications.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/edge_events.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/harness_usage.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/incident.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/insights.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/insights_share.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/inventory_cisco.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/inventory_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/launcher.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/local_dashboard_session.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/local_supply_chain.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/mcp_tool_calls.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/models.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/package_firewall_action_rate_limit.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/package_firewall_entitlement.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/package_firewall_receipts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/package_shim_status.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/policy/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/policy/engine.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/policy_bundle_parser.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/product_model.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/protect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/provenance.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/proxy/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/proxy/remote.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/proxy/stdio.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/receipts/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/receipts/manager.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/redaction.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/remote_pairing_constants.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/risk.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/action_identity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/actions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/advisory_escalation.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/advisory_matchers.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/cisco_evidence.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/cisco_preflight.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/composition_rules.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/data_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/data_flow_rules.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/data_flow_variables.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/decisions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/detectors.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/false_positive_rules.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/harness_attribution.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/js_semver.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/mcp_protection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/mcp_skill_firewall.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/package_intent.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/package_intent_common.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/package_intent_parser.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/package_manifest_diff.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/persistence_rules.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/prompt_injection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/runner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/safe_decode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/sandbox.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/scanner_cache.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/secret_file_requests.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/secret_sensitivity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/secret_sources.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/sed_scripts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/shell_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/signals.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/skill_protection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_bundle.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_bundle_base.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_bundle_models.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_bundle_runtime.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_package_eval.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/supply_chain_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/surface_server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/temp_files.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/runtime/threat_intel.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/schemas/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/schemas/consumer_mode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/schemas/guard_event_v1.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/schemas/guard_product_model_v1.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/schemas/surface_server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/shim_probe.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/shims.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/stable_digest.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_approvals.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_connect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_evidence.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_resume.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_supply_chain.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/store_threat_intel.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/totp.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/types.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/integrations/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/integrations/cisco_mcp_scanner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/integrations/cisco_skill_scanner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/lint_fixes.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/marketplace_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/models.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/path_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/policy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/quality_artifact.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/repo_detect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/reporting.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/rules/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/rules/registry.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/rules/specs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/scanner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/submission.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/suppressions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_domain_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_helpers.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_mcp_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_models.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_plugin_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_skill_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/trust_specs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/verification.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/bundle_first_cloud.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/conftest.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/e2e_droid_exec.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/__init__.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/bad-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/bad-plugin/.mcp.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/bad-plugin/secrets.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/.claude-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/hooks/hooks.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/claude-plugin-good/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/code-quality-bad/evil.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/code-quality-bad/inject.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/benign-echo.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/benign-health-check.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/expected-permissions.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/malicious-aws-credentials-read.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/malicious-canary-exfil-shell.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/malicious-env-read.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/cursor-hooks/malicious-mcp-secret-read.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/GEMINI.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/commands/hello.toml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/gemini-extension-good/gemini-extension.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/assets/icon.svg +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/assets/logo.svg +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/assets/screenshot.svg +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/good-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/benign-docs-fake-token.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/benign-health-endpoint.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/benign-nvmrc-fake-creds.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/benign-source-search.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/canary-exfil-encoded.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/canary-exfil.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/expected-decisions.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-dockerfile.txt +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-encoded-shell-exfil.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-github-action.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-mcp-delete.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-mcp-secret-read.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-mcp-skill-exfil.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-npm-postinstall.js +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-prompt-env-read.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-prompt-guard-bypass.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-prompt-npmrc-read.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/malicious-python-setup.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/guard-red-team/smoke-evidence-template.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/config.yaml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/mcp_servers.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/skills/security/malicious/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/references/api-setup.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/hermes-plugin-evil/skills/utils/benign/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malformed-json/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/malicious-skill-plugin/skills/leaky-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/mcp-canary-server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/minimal-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/missing-fields/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/mit-license/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/codex-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/codex-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/codex-plugin/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/codex-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/gemini-ext/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-ecosystem-repo/gemini-ext/gemini-extension.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/.agents/plugins/marketplace.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/no-version/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/.opencode/commands/hello.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/.opencode/plugins/example.ts +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/LICENSE +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/README.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/opencode-good/opencode.jsonc +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/skills-missing-dir/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/skills-no-frontmatter/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/skills-no-frontmatter/skills/bad-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/benign-npm-controls-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/benign-npm-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/benign-pnpm-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/benign-pyproject.toml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/critical-base-image-Dockerfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-Dockerfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-action.yml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-npm-env-fs-network-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-npm-obfuscated-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-npm-package.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/supply-chain/malicious-setup.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/cargo-safe/Cargo.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/cargo-safe/Cargo.toml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/cargo-vulnerable/Cargo.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/cargo-vulnerable/Cargo.toml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/composer-safe/composer.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/composer-safe/composer.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/composer-vulnerable/composer.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/composer-vulnerable/composer.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/go-safe/go.mod +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/go-vulnerable/go.mod +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/gradle-safe/build.gradle +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/gradle-safe/gradle.lockfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/gradle-vulnerable/build.gradle +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/gradle-vulnerable/gradle.lockfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/maven-safe/pom.xml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/maven-vulnerable/pom.xml +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/rubygems-safe/Gemfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/rubygems-safe/Gemfile.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/rubygems-vulnerable/Gemfile +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/tier2/rubygems-vulnerable/Gemfile.lock +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/with-marketplace/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/with-marketplace/marketplace-broken.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/fixtures/with-marketplace/marketplace.json +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/guard_python_phase12_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/guard_tier2_phase13_support.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/shim_execution_helpers.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test-trust-scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test-trust-specs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_action_runner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_best_practices.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cisco_install_surfaces.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_claude_daemon_hook_bridge.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_code_quality.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_config.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_coverage_remaining.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_completion_gates.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_headless_fixtures.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_hooks.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_cursor_local_actions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_dashboard_sync_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_dashboard_update.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_ecosystems.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_edge_cases.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_final_coverage.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_gemini_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_access_graph.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_action_identity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_advisory_escalation.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_aibom_symlink.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_aibom_symlink_negative_matrix.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_aibom_trust_metadata.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_continuity.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_copy_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_decisions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_gate.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_store_dedup.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_store_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approval_store_scale.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_approvals.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_auto_first_sync.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_bootstrap.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_bridge.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_bypass_detector.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_canary_fixtures.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_capabilities.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_cisco_evidence.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_cisco_runtime_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_claude_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_cloud_local_sync.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_app_server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_auto_resume_smoke.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_e2e.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_install.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_proxy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_resume_commands.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_codex_resume_endpoints.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_config_paths.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_connect_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_consumer_mode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_copilot_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_copilot_proxy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_manager.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_perf.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_registry.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_repair_perf.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_daemon_wake.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_data_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_decision_propagation.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_desktop_notifications.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_detector_fp.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_docs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_event_schema_v1.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_events.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_evidence_api_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_evidence_store.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_harness_contracts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_harness_setup.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_harness_smoke.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_hashnet_mcp_canaries.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_headless_daemon_api.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_insights.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_install_workspace.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_inventory_cisco.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_inventory_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_lab_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_lockfile_resolution_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_package_hook_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_package_intent_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_semver_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_js_supply_chain_phase11.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_launch_env.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_legacy_token_fixtures.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_local_supply_chain_audit_phase16.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_local_supply_chain_phase15.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_mcp_detectors.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_mcp_package_proxy_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_mcp_protection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_mcp_skill_firewall.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_oauth_client.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_oauth_device_connect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_opencode_proxy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_hook.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_hook_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_intent.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_resume_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_shims.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_package_shims_cli.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase03_local_install.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase03_remainder.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase04_failure_modes.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase04_harness_contracts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase04_harness_ux.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase04_install_reason_proofs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase05_approval_memory.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase05_manager_coverage.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase06_workspace_audit.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase07_entitlement_daemon_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase07_harness_coverage_matrix.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase11_package_firewall_receipts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_phase11_package_firewall_status.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_policy_dedup.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_product_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_product_model_contracts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_prompt_injection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_protect.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_protect_package_spec_parsing.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_provenance.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_python_lab_phase12.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_python_package_hook_phase12.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_python_package_intent_phase12.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_python_supply_chain_heuristics_phase12.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_python_supply_chain_phase12.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_queue_api_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_queue_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_receipt_p5_fields.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_receipt_persistence.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_red_team.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_red_team_e2e.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_redaction.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_registry_broker_skills_canaries.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_remote_pair_flow.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_render.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_resolution_copy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_risk.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_action_harnesses.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_actions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_actions_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_decisions.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_detectors.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_runtime_signals.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_safe_decode.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_sandbox.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_settings_api.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_settings_presets.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_shim_intercept_proofs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_shim_truth.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_skill_protection.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_skill_protection_phase14.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_source_view_secret_fixtures.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_stable_digest.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_store_migrations.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_bundle.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_daemon.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_decision_contract.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_disclosure_reasons.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_evaluator.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_supply_chain_sync.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_surface_server.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_threat_intel.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_tier2_labs_phase13.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_tier2_package_intent_phase13.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_tier2_supply_chain_phase13.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_verdicts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_web_recovery.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_guard_wrapper_flows.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_harness_attribution.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_hermes_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_insights_share.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_integration.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_lint_fixes.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_live_cisco_smoke.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_manifest.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_marketplace.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_mcp_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_openclaw_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_opencode_adapter.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_opencode_hook_python.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_opencode_pretool.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_operational_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_policy.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_policy_bundle_parser.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_quality_artifact.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_rule_registry.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_scanner.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_schema_contracts.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_security_ops.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_shim_probe_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_skill_security.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_submission.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_trust_scoring.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_trust_specs.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_verification.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/tests/test_versioning.py +0 -0
- {plugin_scanner-2.0.570 → plugin_scanner-2.0.572}/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.572
|
|
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/hol-guard
|
|
6
6
|
Project-URL: Repository, https://github.com/hashgraph-online/hol-guard
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Guard Enterprise Event Taxonomy
|
|
2
|
+
|
|
3
|
+
Guard Cloud emits a normalized, redacted event shape for exports, webhook
|
|
4
|
+
delivery, and SIEM forwarding. The canonical schema version is `guard.siem.v1`.
|
|
5
|
+
|
|
6
|
+
## Required fields
|
|
7
|
+
|
|
8
|
+
| Field | Type | Description |
|
|
9
|
+
| --- | --- | --- |
|
|
10
|
+
| `eventVersion` | string | Always `guard.siem.v1` |
|
|
11
|
+
| `eventType` | enum | See event types below |
|
|
12
|
+
| `occurredAt` | ISO-8601 UTC | Event timestamp |
|
|
13
|
+
| `severity` | enum | `info`, `medium`, `high`, `critical` |
|
|
14
|
+
| `workspaceId` | string | Workspace scope for the event |
|
|
15
|
+
| `receiptId` | string | Linked receipt or audit record id |
|
|
16
|
+
| `actor.actorType` | enum | `human`, `agent`, `system` |
|
|
17
|
+
| `actor.actorHash` | string | Stable hashed actor identifier |
|
|
18
|
+
| `subject.artifactType` | enum | `receipt`, `approval`, `policy`, `incident`, `feed`, `package` |
|
|
19
|
+
| `subject.artifactId` | string | Stable artifact identifier |
|
|
20
|
+
| `subject.ecosystem` | string \| null | Package ecosystem when relevant |
|
|
21
|
+
| `redaction.rawCommandIncluded` | false | Raw shell commands are never exported |
|
|
22
|
+
| `redaction.rawPromptIncluded` | false | Raw prompts are never exported |
|
|
23
|
+
| `redaction.secretMaterialIncluded` | false | Secrets and tokens are never exported |
|
|
24
|
+
| `routing.suggestedSink` | enum | `siem`, `ticketing`, `case-management` |
|
|
25
|
+
| `routing.enterpriseTrigger` | string \| null | Sales-assist trigger when applicable |
|
|
26
|
+
|
|
27
|
+
## Event types
|
|
28
|
+
|
|
29
|
+
| `eventType` | Typical severity | Meaning |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| `receipt.created` | info | Guard recorded a decision receipt |
|
|
32
|
+
| `approval.resolved` | medium | Human or delegated approval resolved |
|
|
33
|
+
| `policy.mutation` | medium | Workspace policy changed |
|
|
34
|
+
| `incident.created` | high | Guard opened an incident |
|
|
35
|
+
| `feed.degraded` | medium | Supply-chain feed stale or degraded |
|
|
36
|
+
| `package.blocked` | critical | Package install blocked by policy |
|
|
37
|
+
|
|
38
|
+
## Confidence and severity guidance
|
|
39
|
+
|
|
40
|
+
- **Severity** describes customer impact if the event is ignored.
|
|
41
|
+
- **Confidence** for incident and firewall events is stored on incident and
|
|
42
|
+
evaluation records in Guard Cloud, not in raw command text.
|
|
43
|
+
- Export and webhook payloads use redacted summaries only. Confidence scores
|
|
44
|
+
appear as numeric fields on incident exports, not as free-text model output.
|
|
45
|
+
|
|
46
|
+
## Identity fields
|
|
47
|
+
|
|
48
|
+
| ID | Scope | Notes |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `workspaceId` | Cloud workspace | Required on signed-in exports |
|
|
51
|
+
| `actor.actorHash` | Actor | Hashed; no email or display name in SIEM payload |
|
|
52
|
+
| `receiptId` | Audit trail | Join key across receipt, incident, and export manifests |
|
|
53
|
+
| Agent / device ids | Runtime | Available on receipt exports and incident timelines; omitted from default SIEM samples |
|
|
54
|
+
|
|
55
|
+
## Generic webhook schema versioning
|
|
56
|
+
|
|
57
|
+
Webhook deliveries SHOULD include:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"schemaVersion": "guard.webhook.v1",
|
|
62
|
+
"event": { "... guard.siem.v1 fields ..." },
|
|
63
|
+
"delivery": {
|
|
64
|
+
"provider": "webhook",
|
|
65
|
+
"sentAt": "2026-06-10T18:00:00.000Z",
|
|
66
|
+
"idempotencyKey": "delivery_01jz_example"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Breaking changes increment `guard.webhook.vN`. Non-breaking field additions stay
|
|
72
|
+
on the same major version.
|
|
73
|
+
|
|
74
|
+
## Vendor mapping
|
|
75
|
+
|
|
76
|
+
Guard ships sample mappings for common SIEM sinks in
|
|
77
|
+
`hol-points-portal/src/lib/guard/siem/guard-siem-vendor-formats.ts`. These are
|
|
78
|
+
schema examples for webhook forwarding; native Splunk, Elastic, Sentinel, and
|
|
79
|
+
Datadog integrations remain **Planned** in the integration catalog until each
|
|
80
|
+
provider has setup, delivery, retry, and test coverage.
|
|
81
|
+
|
|
82
|
+
See [Enterprise export examples](./enterprise-export-examples.md) for JSON
|
|
83
|
+
samples.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Guard Enterprise Export Examples
|
|
2
|
+
|
|
3
|
+
This page lists export surfaces security and GRC teams can reference during
|
|
4
|
+
reviews. All examples are redacted by default.
|
|
5
|
+
|
|
6
|
+
## Export surfaces
|
|
7
|
+
|
|
8
|
+
| Export | API / surface | Contents |
|
|
9
|
+
| --- | --- | --- |
|
|
10
|
+
| Policy version | **Controls** UI + policy receipts | Active rules, owners, scopes, receipt links |
|
|
11
|
+
| Firewall evaluation | **Firewall** UI + `/api/guard/supply-chain/*` | Package, version, harness, policy version, decision |
|
|
12
|
+
| Receipt / evidence manifest | `/api/guard/receipts/export` | Redacted receipt summaries and filters |
|
|
13
|
+
| Incident timeline | **Incidents** UI + incident export | Attack-path header, owner, evidence refs, remediation |
|
|
14
|
+
| Trust score snapshot | **Intelligence** UI | Workspace risk posture summary |
|
|
15
|
+
| Notification delivery record | **Settings** → Integrations | Provider health, last delivery, retry state |
|
|
16
|
+
| Workspace audit events | `/api/guard/supply-chain/audit/export` | Supply-chain audit log (CSV/JSON) |
|
|
17
|
+
| AI-BOM bundle | Inventory export builder | MCP, skills, packages, policies with redaction metadata |
|
|
18
|
+
| Integrity manifest | Enterprise export manifest helper | SHA-256 checksums per export artifact |
|
|
19
|
+
|
|
20
|
+
## Integrity manifest (example)
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"schemaVersion": "guard.enterprise-export.v1",
|
|
25
|
+
"generatedAt": "2026-06-10T18:00:00.000Z",
|
|
26
|
+
"workspaceId": "workspace_9d21",
|
|
27
|
+
"artifacts": [
|
|
28
|
+
{
|
|
29
|
+
"exportType": "receipt-manifest",
|
|
30
|
+
"contentSha256": "b3a8f2…",
|
|
31
|
+
"recordCount": 128,
|
|
32
|
+
"redaction": {
|
|
33
|
+
"rawSecretsIncluded": false,
|
|
34
|
+
"rawCommandsIncluded": false,
|
|
35
|
+
"rawPromptsIncluded": false
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Canonical SIEM event (guard.siem.v1)
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"eventVersion": "guard.siem.v1",
|
|
47
|
+
"eventType": "package.blocked",
|
|
48
|
+
"occurredAt": "2026-06-08T18:10:00.000Z",
|
|
49
|
+
"severity": "critical",
|
|
50
|
+
"workspaceId": "workspace_9d21",
|
|
51
|
+
"receiptId": "package_receipt_01jz",
|
|
52
|
+
"actor": { "actorType": "agent", "actorHash": "actor_agent_7f3a" },
|
|
53
|
+
"subject": {
|
|
54
|
+
"artifactType": "package",
|
|
55
|
+
"artifactId": "package:npm/acme-risky-install",
|
|
56
|
+
"ecosystem": "npm"
|
|
57
|
+
},
|
|
58
|
+
"redaction": {
|
|
59
|
+
"rawCommandIncluded": false,
|
|
60
|
+
"rawPromptIncluded": false,
|
|
61
|
+
"secretMaterialIncluded": false
|
|
62
|
+
},
|
|
63
|
+
"routing": {
|
|
64
|
+
"enterpriseTrigger": "siem_export_schema_request",
|
|
65
|
+
"suggestedSink": "siem"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Webhook envelope (available today)
|
|
71
|
+
|
|
72
|
+
Use the **Webhook** integration in Guard Cloud to POST the canonical event to
|
|
73
|
+
your HTTPS endpoint:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"schemaVersion": "guard.webhook.v1",
|
|
78
|
+
"event": { "... guard.siem.v1 object ..." },
|
|
79
|
+
"delivery": {
|
|
80
|
+
"provider": "webhook",
|
|
81
|
+
"sentAt": "2026-06-10T18:00:00.000Z",
|
|
82
|
+
"idempotencyKey": "delivery_01jz_example"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Vendor sink examples (schema mapping)
|
|
88
|
+
|
|
89
|
+
These examples show how to map `guard.siem.v1` into common SIEM shapes when
|
|
90
|
+
forwarding through your webhook receiver. Native connectors remain **Planned**
|
|
91
|
+
until provider setup and delivery tests ship.
|
|
92
|
+
|
|
93
|
+
### Splunk HEC-style
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"time": 1717867800,
|
|
98
|
+
"host": "guard-cloud",
|
|
99
|
+
"source": "hol-guard",
|
|
100
|
+
"sourcetype": "guard:siem:v1",
|
|
101
|
+
"event": { "... guard.siem.v1 object ..." }
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Elastic ECS-style
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"@timestamp": "2026-06-08T18:10:00.000Z",
|
|
110
|
+
"event.kind": "event",
|
|
111
|
+
"event.category": ["security"],
|
|
112
|
+
"event.type": ["info"],
|
|
113
|
+
"event.action": "package.blocked",
|
|
114
|
+
"guard.event_version": "guard.siem.v1",
|
|
115
|
+
"guard.workspace_id": "workspace_9d21",
|
|
116
|
+
"guard.receipt_id": "package_receipt_01jz",
|
|
117
|
+
"guard.redaction": {
|
|
118
|
+
"raw_command_included": false,
|
|
119
|
+
"raw_prompt_included": false,
|
|
120
|
+
"secret_material_included": false
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Microsoft Sentinel-style
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"TimeGenerated": "2026-06-08T18:10:00.000Z",
|
|
130
|
+
"AlertName": "Guard package blocked",
|
|
131
|
+
"Severity": "High",
|
|
132
|
+
"ExtendedProperties": {
|
|
133
|
+
"guardEventVersion": "guard.siem.v1",
|
|
134
|
+
"guardEventType": "package.blocked",
|
|
135
|
+
"guardWorkspaceId": "workspace_9d21",
|
|
136
|
+
"guardReceiptId": "package_receipt_01jz"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Datadog log-style
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"ddsource": "hol-guard",
|
|
146
|
+
"service": "guard-cloud",
|
|
147
|
+
"message": "Guard package blocked",
|
|
148
|
+
"guard": { "... guard.siem.v1 object ..." }
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Redaction rules (all exports)
|
|
153
|
+
|
|
154
|
+
Exports MUST NOT include:
|
|
155
|
+
|
|
156
|
+
- Raw shell commands or prompt bodies
|
|
157
|
+
- Bearer tokens, API keys, or `.env` contents
|
|
158
|
+
- Local filesystem paths under user home directories
|
|
159
|
+
- Raw email addresses in SIEM samples
|
|
160
|
+
|
|
161
|
+
Portal export builders attach explicit `redaction` metadata when fields are
|
|
162
|
+
removed or summarized.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# HOL Guard Enterprise Packet
|
|
2
|
+
|
|
3
|
+
This packet explains what Guard controls, where customers see those controls in
|
|
4
|
+
the product, and which exports security and GRC teams can request without
|
|
5
|
+
engineering narration.
|
|
6
|
+
|
|
7
|
+
Guard Cloud is optional. Local Guard continues to enforce policy, write
|
|
8
|
+
receipts, and operate without sign-in. Cloud adds synced memory, team RBAC,
|
|
9
|
+
integrations, exports, and admin workflows on top of the same local runtime.
|
|
10
|
+
|
|
11
|
+
Related docs:
|
|
12
|
+
|
|
13
|
+
- [Local Guard vs Guard Cloud](./local-vs-cloud.md)
|
|
14
|
+
- [Harness support matrix](./harness-support.md)
|
|
15
|
+
- [Enterprise event taxonomy](./enterprise-event-taxonomy.md)
|
|
16
|
+
- [Enterprise export examples](./enterprise-export-examples.md)
|
|
17
|
+
|
|
18
|
+
## Control maps
|
|
19
|
+
|
|
20
|
+
Each map lists the control, the enforcement layer, and where the customer can
|
|
21
|
+
review it in Guard Cloud or local runtime output.
|
|
22
|
+
|
|
23
|
+
### AI agent risk
|
|
24
|
+
|
|
25
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| Harness discovery and attach | Detects configured harnesses and records runtime sessions | Syncs session health and stale coverage | **Agents**, **Home** |
|
|
28
|
+
| Tool-call interception | Evaluates shell, MCP, skill, and file actions before side effects | Stores searchable receipts and decision history | **Evidence**, **Inbox** |
|
|
29
|
+
| Approval paths | Native harness approval, local approval center, terminal resolution | Delegated approvals and team routing | **Inbox**, **Controls** |
|
|
30
|
+
| Agent identity and tokens | Local daemon identity and scoped tokens | Workspace-scoped agent registry and RBAC | **Agents**, **Team** |
|
|
31
|
+
| Trust and drift signals | Local policy and inventory diff detection | Trust score, incidents, intelligence findings | **Intelligence**, **Incidents** |
|
|
32
|
+
|
|
33
|
+
### MCP and skill risk
|
|
34
|
+
|
|
35
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| MCP server inventory | Parses descriptors, commands, transports, and dependencies | Syncs inventory snapshots over time | **Agents**, **Evidence** |
|
|
38
|
+
| Skill inventory | Parses `SKILL.md`, install intent, and declared tools | Syncs skill drift and review history | **Agents**, **Evidence** |
|
|
39
|
+
| Descriptor and schema drift | Detects hash changes and material risk deltas | Requires reapproval when drift is high-risk | **Inbox**, **Controls** |
|
|
40
|
+
| Tool poisoning and shadowing checks | Local evaluators flag hidden instructions and collisions | Incident routing for high-confidence drift | **Incidents**, **Intelligence** |
|
|
41
|
+
| Package intent inside skills | Blocks risky install instructions before execution | Receipts and firewall linkage | **Firewall**, **Evidence** |
|
|
42
|
+
|
|
43
|
+
### Supply-chain risk
|
|
44
|
+
|
|
45
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| Package manager shims | Intercepts npm, pnpm, pip, and other supported managers | Firewall UI and synced evaluations | **Firewall** |
|
|
48
|
+
| Feed freshness and source health | Local feed checks and stale warnings | Feed health indicators in Cloud | **Firewall**, **Controls** |
|
|
49
|
+
| Policy evaluation | Local block, warn, monitor, and exception paths | Shared policy memory and simulator | **Controls**, **Firewall** |
|
|
50
|
+
| Audit export | Local receipts include package intent metadata | Workspace audit export API | **Firewall**, API export |
|
|
51
|
+
|
|
52
|
+
### Local enforcement
|
|
53
|
+
|
|
54
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| Launch interception | Blocks or warns before risky commands run | Mirrors decisions after sync | Local daemon, **Evidence** |
|
|
57
|
+
| Policy version pinning | Local policy files and presets | Team policy packs and workspace scope | **Controls** |
|
|
58
|
+
| Receipts and explain output | Signed local receipts with redacted summaries | Searchable history and exports | **Evidence** |
|
|
59
|
+
| Cloud outage independence | Enforcement continues without Cloud sign-in | Sync catches up when Cloud returns | **Home**, **Protect** |
|
|
60
|
+
|
|
61
|
+
### Evidence and export
|
|
62
|
+
|
|
63
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
64
|
+
| --- | --- | --- | --- |
|
|
65
|
+
| Receipt manifest export | Redacted local summaries | `/api/guard/receipts/export` | **Evidence** export |
|
|
66
|
+
| AI-BOM export | Inventory redaction in export builder | Workspace-scoped AI-BOM bundle | **Evidence**, API |
|
|
67
|
+
| Action explanation fields | Shared explanation contract in receipts | Inspector and export surfaces | **Evidence**, **Incidents** |
|
|
68
|
+
| Integrity manifest | Local export checksum metadata | Enterprise manifest helper in portal | Export bundle header |
|
|
69
|
+
| SIEM forwarding | Not required for local protection | Generic **Webhook** integration (available) | **Settings** → Integrations |
|
|
70
|
+
|
|
71
|
+
### Notification and incident response
|
|
72
|
+
|
|
73
|
+
| Control | Local Guard | Guard Cloud | Customer view |
|
|
74
|
+
| --- | --- | --- | --- |
|
|
75
|
+
| High-severity routing | Local alerts and approval center | Slack, email, PagerDuty, Jira, GitHub, webhook | **Settings**, **Incidents** |
|
|
76
|
+
| Incident timeline | Local receipt linkage | Attack-path header, owner, remediation checklist | **Incidents** |
|
|
77
|
+
| External work linkage | N/A locally | Jira, GitHub, PagerDuty, Slack refs on incidents | **Incidents** |
|
|
78
|
+
| Delivery records | Local notification attempts when configured | Integration health and retry status | **Settings** → Integrations |
|
|
79
|
+
|
|
80
|
+
Catalog-only observability providers (Datadog, Splunk, Sentinel) are labeled
|
|
81
|
+
**Planned** in Guard Cloud. Customers can still forward the canonical
|
|
82
|
+
`guard.siem.v1` payload through the available **Webhook** integration today.
|
|
83
|
+
|
|
84
|
+
## Workspace controls
|
|
85
|
+
|
|
86
|
+
| Control | Where enforced | Customer view |
|
|
87
|
+
| --- | --- | --- |
|
|
88
|
+
| Personal vs team workspace scope | Cloud auth and workspace queries | **Settings**, workspace switcher |
|
|
89
|
+
| Viewer / member / admin / owner RBAC | API route guards | **Team**, **Settings** |
|
|
90
|
+
| Service principal ownership | Token and principal registry | **Agents** |
|
|
91
|
+
| Billing entitlements | Plan config and checkout | **Billing** |
|
|
92
|
+
| Audit read/export permissions | Supply-chain and evidence routes | API + **Evidence** |
|
|
93
|
+
|
|
94
|
+
## Buyer FAQ
|
|
95
|
+
|
|
96
|
+
**Does Guard require Cloud sign-in for local protection?**
|
|
97
|
+
No. Local interception, policy, receipts, and approval paths work without Cloud.
|
|
98
|
+
|
|
99
|
+
**What does a paid Cloud plan add?**
|
|
100
|
+
Synced history, searchable activity, team RBAC, integrations, exports, longer
|
|
101
|
+
retention, and admin workflows.
|
|
102
|
+
|
|
103
|
+
**Where do we see a blocked package install?**
|
|
104
|
+
**Firewall** for evaluation details, **Evidence** for receipts, **Incidents**
|
|
105
|
+
when severity warrants routing, and export APIs for GRC archives.
|
|
106
|
+
|
|
107
|
+
**Can we send events to Splunk or Datadog today?**
|
|
108
|
+
Use the available **Webhook** integration with the canonical event schema in
|
|
109
|
+
[Enterprise event taxonomy](./enterprise-event-taxonomy.md). Native Splunk,
|
|
110
|
+
Datadog, and Sentinel connectors remain catalog **Planned** until setup,
|
|
111
|
+
delivery, retry, and tests ship for each provider.
|
|
112
|
+
|
|
113
|
+
## Source references
|
|
114
|
+
|
|
115
|
+
- Guard architecture: [architecture.md](./architecture.md)
|
|
116
|
+
- Incident response: [incident-response.md](./incident-response.md)
|
|
117
|
+
- Remediation patterns: [remediation.md](./remediation.md)
|
|
118
|
+
- Cloud API inventory: `hol-points-portal/docs/guard-cloud-api-inventory.generated.md`
|
|
@@ -11,6 +11,9 @@ protection. See
|
|
|
11
11
|
[Local Guard vs Guard Cloud](./local-vs-cloud.md) for the full subscription
|
|
12
12
|
boundary.
|
|
13
13
|
|
|
14
|
+
For security reviews, sales conversations, and GRC packets, see the
|
|
15
|
+
[Enterprise packet](./enterprise-packet.md).
|
|
16
|
+
|
|
14
17
|
## The everyday flow
|
|
15
18
|
|
|
16
19
|
1. Start the guided first-run setup:
|
|
@@ -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.572"
|
|
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.572"
|
|
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.570 → plugin_scanner-2.0.572}/src/codex_plugin_scanner/guard/aibom_detection.py
RENAMED
|
@@ -33,18 +33,31 @@ INVENTORY_ITEM_KINDS: tuple[str, ...] = (
|
|
|
33
33
|
"network_endpoint",
|
|
34
34
|
)
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
_READ_CHUNK_BYTES = 65536
|
|
37
37
|
_CURSOR_RULE_PATTERNS = ("*.mdc", "*.md")
|
|
38
38
|
_CODEX_SKILL_ROOTS = (".agents/skills",)
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
def file_content_hash(path: Path, *, max_bytes: int =
|
|
41
|
+
def file_content_hash(path: Path, *, max_bytes: int | None = None) -> str | None:
|
|
42
|
+
"""Return a SHA-256 digest of the full file bytes used for approval drift detection.
|
|
43
|
+
|
|
44
|
+
When ``max_bytes`` is set, only that prefix is hashed. Production callers must
|
|
45
|
+
leave ``max_bytes`` unset so tail edits cannot bypass change detection.
|
|
46
|
+
"""
|
|
42
47
|
try:
|
|
48
|
+
digest = hashlib.sha256()
|
|
43
49
|
with path.open("rb") as handle:
|
|
44
|
-
|
|
50
|
+
if max_bytes is None:
|
|
51
|
+
while True:
|
|
52
|
+
chunk = handle.read(_READ_CHUNK_BYTES)
|
|
53
|
+
if not chunk:
|
|
54
|
+
break
|
|
55
|
+
digest.update(chunk)
|
|
56
|
+
else:
|
|
57
|
+
digest.update(handle.read(max_bytes))
|
|
58
|
+
return digest.hexdigest()
|
|
45
59
|
except OSError:
|
|
46
60
|
return None
|
|
47
|
-
return fingerprint_text(payload.decode("utf-8", errors="replace"))
|
|
48
61
|
|
|
49
62
|
|
|
50
63
|
def directory_content_hash(root: Path, *, home_dir: Path) -> str:
|
|
@@ -3,6 +3,10 @@ from __future__ import annotations
|
|
|
3
3
|
import json
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
+
from codex_plugin_scanner.guard.adapters.base import HarnessContext
|
|
7
|
+
from codex_plugin_scanner.guard.adapters.cursor import CursorHarnessAdapter
|
|
8
|
+
from codex_plugin_scanner.guard.adapters.hermes import HermesHarnessAdapter
|
|
9
|
+
from codex_plugin_scanner.guard.adapters.openclaw import OpenClawHarnessAdapter
|
|
6
10
|
from codex_plugin_scanner.guard.aibom_detection import (
|
|
7
11
|
INVENTORY_ITEM_KINDS,
|
|
8
12
|
discover_shared_workspace_aibom_artifacts,
|
|
@@ -10,10 +14,7 @@ from codex_plugin_scanner.guard.aibom_detection import (
|
|
|
10
14
|
file_content_hash,
|
|
11
15
|
instruction_role_for_path,
|
|
12
16
|
)
|
|
13
|
-
from codex_plugin_scanner.guard.
|
|
14
|
-
from codex_plugin_scanner.guard.adapters.cursor import CursorHarnessAdapter
|
|
15
|
-
from codex_plugin_scanner.guard.adapters.hermes import HermesHarnessAdapter
|
|
16
|
-
from codex_plugin_scanner.guard.adapters.openclaw import OpenClawHarnessAdapter
|
|
17
|
+
from codex_plugin_scanner.guard.consumer.service import artifact_hash, diff_artifact
|
|
17
18
|
from codex_plugin_scanner.guard.inventory_contract import inventory_snapshot_from_detection
|
|
18
19
|
from codex_plugin_scanner.guard.models import HarnessDetection
|
|
19
20
|
|
|
@@ -102,6 +103,61 @@ def test_discover_codex_skills_and_marketplace_plugins(tmp_path: Path) -> None:
|
|
|
102
103
|
assert "plugin" in artifact_types
|
|
103
104
|
|
|
104
105
|
|
|
106
|
+
def test_content_hash_detects_tail_changes_beyond_one_mebibyte(tmp_path: Path) -> None:
|
|
107
|
+
prefix = b"A" * (1024 * 1024)
|
|
108
|
+
path = tmp_path / "AGENTS.md"
|
|
109
|
+
path.write_bytes(prefix + b"tail-version-one\n")
|
|
110
|
+
first = file_content_hash(path)
|
|
111
|
+
path.write_bytes(prefix + b"tail-version-two\n")
|
|
112
|
+
second = file_content_hash(path)
|
|
113
|
+
|
|
114
|
+
assert first is not None
|
|
115
|
+
assert second is not None
|
|
116
|
+
assert first != second
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def test_diff_artifact_detects_tail_only_instruction_change(tmp_path: Path) -> None:
|
|
120
|
+
workspace = tmp_path / "repo"
|
|
121
|
+
workspace.mkdir()
|
|
122
|
+
agents_md = workspace / "AGENTS.md"
|
|
123
|
+
prefix = b"policy-" * (1024 * 1024 // len(b"policy-") + 1)
|
|
124
|
+
prefix = prefix[: 1024 * 1024]
|
|
125
|
+
agents_md.write_bytes(prefix + b"approved-tail\n")
|
|
126
|
+
|
|
127
|
+
artifacts_v1 = discover_shared_workspace_aibom_artifacts(
|
|
128
|
+
"codex",
|
|
129
|
+
home_dir=tmp_path,
|
|
130
|
+
workspace_dir=workspace,
|
|
131
|
+
)
|
|
132
|
+
artifact_v1 = next(
|
|
133
|
+
(artifact for artifact in artifacts_v1 if artifact.artifact_type == "instruction"),
|
|
134
|
+
None,
|
|
135
|
+
)
|
|
136
|
+
assert artifact_v1 is not None, "Expected an instruction artifact in v1 discovery"
|
|
137
|
+
previous = {
|
|
138
|
+
**artifact_v1.to_dict(),
|
|
139
|
+
"artifact_hash": artifact_hash(artifact_v1),
|
|
140
|
+
"env_keys": [],
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
agents_md.write_bytes(prefix + b"malicious-tail\n")
|
|
144
|
+
artifacts_v2 = discover_shared_workspace_aibom_artifacts(
|
|
145
|
+
"codex",
|
|
146
|
+
home_dir=tmp_path,
|
|
147
|
+
workspace_dir=workspace,
|
|
148
|
+
)
|
|
149
|
+
artifact_v2 = next(
|
|
150
|
+
(artifact for artifact in artifacts_v2 if artifact.artifact_type == "instruction"),
|
|
151
|
+
None,
|
|
152
|
+
)
|
|
153
|
+
assert artifact_v2 is not None, "Expected an instruction artifact in v2 discovery"
|
|
154
|
+
|
|
155
|
+
diff = diff_artifact(previous, artifact_v2)
|
|
156
|
+
|
|
157
|
+
assert diff["changed"] is True
|
|
158
|
+
assert diff["previous_hash"] != diff["current_hash"]
|
|
159
|
+
|
|
160
|
+
|
|
105
161
|
def test_content_hash_changes_when_instruction_file_changes(tmp_path: Path) -> None:
|
|
106
162
|
path = tmp_path / "AGENTS.md"
|
|
107
163
|
path.write_text("version one\n", encoding="utf-8")
|
|
File without changes
|
|
File without changes
|
|
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.570 → plugin_scanner-2.0.572}/.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.570 → plugin_scanner-2.0.572}/dashboard/src/about/about-external-links.test.ts
RENAMED
|
File without changes
|