@shepai/cli 1.175.0 → 1.175.1-pr527.ea242b8
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.
- package/apis/json-schema/ActionDispositionEntry.yaml +14 -0
- package/apis/json-schema/DependencyFinding.yaml +28 -0
- package/apis/json-schema/DependencyRiskType.yaml +11 -0
- package/apis/json-schema/DependencyRules.yaml +38 -0
- package/apis/json-schema/EffectivePolicySnapshot.yaml +24 -0
- package/apis/json-schema/FeatureFlags.yaml +5 -0
- package/apis/json-schema/ReleaseIntegrityCheck.yaml +22 -0
- package/apis/json-schema/ReleaseIntegrityCheckType.yaml +9 -0
- package/apis/json-schema/ReleaseIntegrityResult.yaml +16 -0
- package/apis/json-schema/ReleaseRules.yaml +21 -0
- package/apis/json-schema/SecurityActionCategory.yaml +10 -0
- package/apis/json-schema/SecurityActionDisposition.yaml +8 -0
- package/apis/json-schema/SecurityConfig.yaml +17 -0
- package/apis/json-schema/SecurityEvent.yaml +36 -0
- package/apis/json-schema/SecurityMode.yaml +8 -0
- package/apis/json-schema/SecurityPolicy.yaml +24 -0
- package/apis/json-schema/SecuritySeverity.yaml +9 -0
- package/apis/json-schema/Settings.yaml +3 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +15 -1
- package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +3 -1
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts +76 -0
- package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.js +11 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +38 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +9 -0
- package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts +77 -0
- package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.js +13 -0
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +11 -0
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -0
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts +71 -0
- package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.js +215 -0
- package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts +24 -0
- package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js +56 -0
- package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts +36 -0
- package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.js +76 -0
- package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts +14 -0
- package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js +46 -0
- package/dist/packages/core/src/domain/errors/security-violation.error.d.ts +15 -0
- package/dist/packages/core/src/domain/errors/security-violation.error.d.ts.map +1 -0
- package/dist/packages/core/src/domain/errors/security-violation.error.js +20 -0
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +6 -1
- package/dist/packages/core/src/domain/generated/output.d.ts +263 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +43 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +57 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts +44 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.js +55 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +4 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +17 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts +18 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.js +31 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts +29 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.js +53 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.d.ts +16 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.js +22 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts +24 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.js +96 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +15 -3
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +12 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +44 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts +22 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.js +30 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +10 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +35 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +7 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +32 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +25 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +59 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.js +89 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +10 -0
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +10 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +101 -1
- package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts +53 -0
- package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.js +241 -0
- package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts +44 -0
- package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.js +194 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts +28 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.js +50 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts +26 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.js +147 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts +44 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/security/security-policy.service.js +174 -0
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +61 -0
- package/dist/src/presentation/cli/commands/security.command.d.ts +16 -0
- package/dist/src/presentation/cli/commands/security.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/security.command.js +133 -0
- package/dist/src/presentation/cli/index.js +2 -0
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +5 -1
- package/dist/src/presentation/web/app/actions/security.d.ts +28 -0
- package/dist/src/presentation/web/app/actions/security.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/security.js +59 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts +3 -1
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +2 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +3 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -2
- package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts +6 -0
- package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/repository-node/security-panel.js +29 -0
- package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.js +53 -0
- package/dist/src/presentation/web/components/common/security-badge.d.ts +7 -0
- package/dist/src/presentation/web/components/common/security-badge.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/security-badge.js +30 -0
- package/dist/src/presentation/web/components/common/security-badge.stories.d.ts +12 -0
- package/dist/src/presentation/web/components/common/security-badge.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/security-badge.stories.js +20 -0
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +26 -7
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts +6 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.js +60 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts +14 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.js +116 -0
- package/dist/translations/ar/cli.json +21 -0
- package/dist/translations/ar/web.json +43 -1
- package/dist/translations/de/cli.json +21 -0
- package/dist/translations/de/web.json +43 -1
- package/dist/translations/en/cli.json +21 -0
- package/dist/translations/en/web.json +43 -1
- package/dist/translations/es/cli.json +21 -0
- package/dist/translations/es/web.json +43 -1
- package/dist/translations/fr/cli.json +21 -0
- package/dist/translations/fr/web.json +43 -1
- package/dist/translations/he/cli.json +21 -0
- package/dist/translations/he/web.json +43 -1
- package/dist/translations/pt/cli.json +22 -1
- package/dist/translations/pt/web.json +43 -1
- package/dist/translations/ru/cli.json +21 -0
- package/dist/translations/ru/web.json +43 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +33 -18
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_08eaf4b1._.js +3 -0
- package/web/.next/server/chunks/ssr/_08eaf4b1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_295fffde._.js +1 -1
- package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
- package/web/.next/server/chunks/ssr/_783debcb._.js +9 -0
- package/web/.next/server/chunks/ssr/_783debcb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_af6b8b94._.js → _e7f76333._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_af6b8b94._.js.map → _e7f76333._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_e0dd6fcf._.js → _fc1578d7._.js} +2 -2
- package/web/.next/server/chunks/ssr/_fc1578d7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ff04802c._.js +3 -0
- package/web/.next/server/chunks/ssr/_ff04802c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ff87ffa6._.js +3 -0
- package/web/.next/server/chunks/ssr/_ff87ffa6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +74 -59
- package/web/.next/static/chunks/{238fdbed09dc61b6.js → 1eeabda286169861.js} +2 -2
- package/web/.next/static/chunks/20ec94c610d07a10.css +1 -0
- package/web/.next/static/chunks/{940c842293a6ee9b.js → 2dcae7bd1f3e2b51.js} +1 -1
- package/web/.next/static/chunks/3aba9d2242420cb5.js +1 -0
- package/web/.next/static/chunks/6003ad985fb78e62.js +1 -0
- package/web/.next/static/chunks/{0b07ee72b0c639ef.js → 69aa6a996dccb7dc.js} +2 -2
- package/web/.next/static/chunks/{873e837cd1179cdd.js → 6e5aeb5da5bb2ab6.js} +1 -1
- package/web/.next/static/chunks/{2ad924f5ba5ec0a6.js → 7c8e1ab108e3ceea.js} +1 -1
- package/web/.next/static/chunks/{bc41a393614b1192.js → 825ddcb7c361b2fe.js} +1 -1
- package/web/.next/static/chunks/{a22ee308ae1509ca.js → 89a6182ae40ac10b.js} +1 -1
- package/web/.next/static/chunks/{d26542df5ecc8717.js → a6d516b7e128f889.js} +1 -1
- package/web/.next/static/chunks/ae81796726a9bba3.js +1 -0
- package/web/.next/static/chunks/{b49ab0b290e9342d.js → b46545caae3b4930.js} +1 -1
- package/web/.next/static/chunks/{b7b5d65a5dd2fff1.js → c43f00ac45c5381d.js} +1 -1
- package/web/.next/static/chunks/{39054eabee156e55.js → c741f40bcb2abe54.js} +3 -3
- package/web/.next/static/chunks/{1b336d1266a0aa3d.js → dfc05704351fc940.js} +1 -1
- package/web/.next/static/chunks/eb72ac7aa8986962.js +1 -0
- package/web/.next/static/chunks/eef5d47669e61a54.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_2b021b35._.js +0 -3
- package/web/.next/server/chunks/ssr/_2b021b35._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_43ba79e7._.js +0 -3
- package/web/.next/server/chunks/ssr/_43ba79e7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_7cb0396e._.js +0 -3
- package/web/.next/server/chunks/ssr/_7cb0396e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e0dd6fcf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e680c57c._.js +0 -9
- package/web/.next/server/chunks/ssr/_e680c57c._.js.map +0 -1
- package/web/.next/static/chunks/28f6b1cab38ab025.js +0 -3
- package/web/.next/static/chunks/8b0a9cb5109fe899.js +0 -1
- package/web/.next/static/chunks/a20f2d6f76f469b7.css +0 -1
- package/web/.next/static/chunks/b2aa69e4b0b032d9.js +0 -1
- package/web/.next/static/chunks/b65e555419a0c664.js +0 -1
- package/web/.next/static/chunks/ba0e0fa2d1a650bb.js +0 -1
- /package/web/.next/static/{9rcv3ICw0kZNuv3TVdO8E → 4jtpgWCvk_Q6-K-puXRhW}/_buildManifest.js +0 -0
- /package/web/.next/static/{9rcv3ICw0kZNuv3TVdO8E → 4jtpgWCvk_Q6-K-puXRhW}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{9rcv3ICw0kZNuv3TVdO8E → 4jtpgWCvk_Q6-K-puXRhW}/_ssgManifest.js +0 -0
package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* checks, repository listing, cloning (with progress streaming), and URL parsing.
|
|
6
6
|
*/
|
|
7
7
|
import type { ExecFunction } from '../git/worktree.service.js';
|
|
8
|
-
import type { IGitHubRepositoryService, GitHubRepo, GitHubOrganization, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, ForkOptions, PushAccessResult, ForkResult } from '../../../application/ports/output/services/github-repository-service.interface.js';
|
|
8
|
+
import type { IGitHubRepositoryService, GitHubRepo, GitHubOrganization, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, ForkOptions, PushAccessResult, ForkResult, GovernanceFinding } from '../../../application/ports/output/services/github-repository-service.interface.js';
|
|
9
9
|
export declare class GitHubRepositoryService implements IGitHubRepositoryService {
|
|
10
10
|
private readonly execFile;
|
|
11
11
|
constructor(execFile: ExecFunction);
|
|
@@ -18,6 +18,15 @@ export declare class GitHubRepositoryService implements IGitHubRepositoryService
|
|
|
18
18
|
getAuthenticatedUser(): Promise<string>;
|
|
19
19
|
checkPushAccess(nameWithOwner: string): Promise<PushAccessResult>;
|
|
20
20
|
forkRepository(nameWithOwner: string, options?: ForkOptions): Promise<ForkResult>;
|
|
21
|
+
auditRepositoryGovernance(owner: string, repo: string, defaultBranch?: string): Promise<GovernanceFinding[]>;
|
|
22
|
+
private checkBranchProtection;
|
|
23
|
+
private checkCodeowners;
|
|
24
|
+
/**
|
|
25
|
+
* Handle errors from governance API calls gracefully.
|
|
26
|
+
* 404 errors are treated as findings (missing config).
|
|
27
|
+
* Auth/permission errors are treated as Unknown severity findings.
|
|
28
|
+
*/
|
|
29
|
+
private handleGovernanceCheckError;
|
|
21
30
|
private cleanupPartialClone;
|
|
22
31
|
}
|
|
23
32
|
//# sourceMappingURL=github-repository.service.d.ts.map
|
package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-repository.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/external/github-repository.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,wBAAwB,EACxB,UAAU,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"github-repository.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/external/github-repository.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,wBAAwB,EACxB,UAAU,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EAClB,MAAM,mFAAmF,CAAC;AA2B3F,qBACa,uBAAwB,YAAW,wBAAwB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB1B,oBAAoB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAuClF,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA2BlD,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC;IAgDhB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IA2CtC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtD,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAUvC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBjE,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBjF,yBAAyB,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,aAAa,SAAS,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAcjB,qBAAqB;YAmCrB,eAAe;IA6B7B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;YA6CpB,mBAAmB;CAOlC"}
|
package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js
CHANGED
|
@@ -20,7 +20,7 @@ import { injectable, inject } from 'tsyringe';
|
|
|
20
20
|
import { resolve, normalize } from 'node:path';
|
|
21
21
|
import { rm } from 'node:fs/promises';
|
|
22
22
|
import { spawn } from 'node:child_process';
|
|
23
|
-
import { GitHubAuthError, GitHubCloneError, GitHubForkError, GitHubPermissionError, GitHubRepoListError, GitHubUrlParseError, } from '../../../application/ports/output/services/github-repository-service.interface.js';
|
|
23
|
+
import { GitHubAuthError, GitHubCloneError, GitHubForkError, GitHubPermissionError, GitHubRepoListError, GitHubUrlParseError, GovernanceFindingCategory, } from '../../../application/ports/output/services/github-repository-service.interface.js';
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
// URL regex patterns
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
@@ -245,6 +245,106 @@ let GitHubRepositoryService = class GitHubRepositoryService {
|
|
|
245
245
|
throw new GitHubForkError(`Failed to fork ${nameWithOwner}: ${err.message}`, err);
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
|
+
async auditRepositoryGovernance(owner, repo, defaultBranch = 'main') {
|
|
249
|
+
const findings = [];
|
|
250
|
+
// Check branch protection
|
|
251
|
+
const branchFindings = await this.checkBranchProtection(owner, repo, defaultBranch);
|
|
252
|
+
findings.push(...branchFindings);
|
|
253
|
+
// Check CODEOWNERS presence
|
|
254
|
+
const codeownersFindings = await this.checkCodeowners(owner, repo);
|
|
255
|
+
findings.push(...codeownersFindings);
|
|
256
|
+
return findings;
|
|
257
|
+
}
|
|
258
|
+
async checkBranchProtection(owner, repo, branch) {
|
|
259
|
+
try {
|
|
260
|
+
const { stdout } = await this.execFile('gh', [
|
|
261
|
+
'api',
|
|
262
|
+
`/repos/${owner}/${repo}/branches/${branch}/protection`,
|
|
263
|
+
]);
|
|
264
|
+
const protection = JSON.parse(stdout);
|
|
265
|
+
// Protection exists — check for PR review requirements
|
|
266
|
+
if (!protection.required_pull_request_reviews) {
|
|
267
|
+
return [
|
|
268
|
+
{
|
|
269
|
+
category: GovernanceFindingCategory.BranchProtection,
|
|
270
|
+
severity: 'Medium',
|
|
271
|
+
message: `Branch "${branch}" has protection enabled but does not require pull request reviews.`,
|
|
272
|
+
remediation: `Enable "Require a pull request before merging" in branch protection settings for "${branch}".`,
|
|
273
|
+
},
|
|
274
|
+
];
|
|
275
|
+
}
|
|
276
|
+
return [];
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
return this.handleGovernanceCheckError(error, GovernanceFindingCategory.BranchProtection, `Branch "${branch}" has no branch protection rules configured.`, `Enable branch protection for "${branch}" in repository settings. Require pull request reviews and status checks.`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async checkCodeowners(owner, repo) {
|
|
283
|
+
// CODEOWNERS can live in repo root or .github/ directory
|
|
284
|
+
const paths = [
|
|
285
|
+
`/repos/${owner}/${repo}/contents/CODEOWNERS`,
|
|
286
|
+
`/repos/${owner}/${repo}/contents/.github/CODEOWNERS`,
|
|
287
|
+
];
|
|
288
|
+
for (const path of paths) {
|
|
289
|
+
try {
|
|
290
|
+
await this.execFile('gh', ['api', path]);
|
|
291
|
+
// Found CODEOWNERS — no finding needed
|
|
292
|
+
return [];
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Not found at this path — try next
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// Neither location found
|
|
299
|
+
return [
|
|
300
|
+
{
|
|
301
|
+
category: GovernanceFindingCategory.Codeowners,
|
|
302
|
+
severity: 'Medium',
|
|
303
|
+
message: 'No CODEOWNERS file found in the repository.',
|
|
304
|
+
remediation: 'Add a CODEOWNERS file to the repository root or .github/ directory to enforce code review ownership.',
|
|
305
|
+
},
|
|
306
|
+
];
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Handle errors from governance API calls gracefully.
|
|
310
|
+
* 404 errors are treated as findings (missing config).
|
|
311
|
+
* Auth/permission errors are treated as Unknown severity findings.
|
|
312
|
+
*/
|
|
313
|
+
handleGovernanceCheckError(error, category, notFoundMessage, notFoundRemediation) {
|
|
314
|
+
const errMessage = error instanceof Error ? error.message : String(error);
|
|
315
|
+
const errnoCode = error?.code;
|
|
316
|
+
// gh not installed
|
|
317
|
+
if (errnoCode === 'ENOENT') {
|
|
318
|
+
return [
|
|
319
|
+
{
|
|
320
|
+
category,
|
|
321
|
+
severity: 'Unknown',
|
|
322
|
+
message: 'GitHub CLI (gh) is not installed. Cannot audit repository governance.',
|
|
323
|
+
remediation: 'Install the GitHub CLI from https://cli.github.com/',
|
|
324
|
+
},
|
|
325
|
+
];
|
|
326
|
+
}
|
|
327
|
+
// 404 = resource not configured (branch protection, file missing, etc.)
|
|
328
|
+
if (errMessage.includes('404')) {
|
|
329
|
+
return [
|
|
330
|
+
{
|
|
331
|
+
category,
|
|
332
|
+
severity: 'High',
|
|
333
|
+
message: notFoundMessage,
|
|
334
|
+
remediation: notFoundRemediation,
|
|
335
|
+
},
|
|
336
|
+
];
|
|
337
|
+
}
|
|
338
|
+
// Auth/permission errors or other unexpected failures — return Unknown finding
|
|
339
|
+
return [
|
|
340
|
+
{
|
|
341
|
+
category,
|
|
342
|
+
severity: 'Unknown',
|
|
343
|
+
message: `Unable to audit ${category}: ${errMessage}`,
|
|
344
|
+
remediation: 'Verify that the GitHub CLI is authenticated with sufficient permissions. Run `gh auth login`.',
|
|
345
|
+
},
|
|
346
|
+
];
|
|
347
|
+
}
|
|
248
348
|
async cleanupPartialClone(destination) {
|
|
249
349
|
try {
|
|
250
350
|
await rm(destination, { recursive: true, force: true });
|
package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Risk Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Evaluates repository-local dependency risk signals without
|
|
5
|
+
* external services. Checks:
|
|
6
|
+
* - Manifest-lockfile consistency (package.json vs lockfile)
|
|
7
|
+
* - Dependency source types (registry vs git vs file)
|
|
8
|
+
* - Risky lifecycle scripts (preinstall, postinstall, prepare)
|
|
9
|
+
* - Allowlist/denylist enforcement
|
|
10
|
+
* - Version-range strictness
|
|
11
|
+
*
|
|
12
|
+
* Returns an array of DependencyFinding objects with severity and remediation.
|
|
13
|
+
*/
|
|
14
|
+
import type { DependencyFinding, DependencyRules } from '../../../domain/generated/output.js';
|
|
15
|
+
export declare class DependencyRiskEvaluator {
|
|
16
|
+
/**
|
|
17
|
+
* Evaluate dependency risk for a repository.
|
|
18
|
+
*
|
|
19
|
+
* @param repositoryPath - Absolute path to the repository root
|
|
20
|
+
* @param rules - Dependency risk policy rules
|
|
21
|
+
* @returns Array of dependency findings
|
|
22
|
+
*/
|
|
23
|
+
evaluate(repositoryPath: string, rules: DependencyRules): DependencyFinding[];
|
|
24
|
+
/**
|
|
25
|
+
* Collect all dependencies from package.json (dependencies + devDependencies).
|
|
26
|
+
*/
|
|
27
|
+
private collectDependencies;
|
|
28
|
+
/**
|
|
29
|
+
* Check that a lockfile exists when there are dependencies.
|
|
30
|
+
*/
|
|
31
|
+
private checkLockfileConsistency;
|
|
32
|
+
/**
|
|
33
|
+
* Check for dependencies installed from non-registry sources.
|
|
34
|
+
*/
|
|
35
|
+
private checkNonRegistrySources;
|
|
36
|
+
/**
|
|
37
|
+
* Check installed packages for risky lifecycle scripts.
|
|
38
|
+
*/
|
|
39
|
+
private checkLifecycleScripts;
|
|
40
|
+
/**
|
|
41
|
+
* Check dependencies against the denylist.
|
|
42
|
+
*/
|
|
43
|
+
private checkDenylist;
|
|
44
|
+
/**
|
|
45
|
+
* Check dependencies against the allowlist (non-empty allowlist = only listed packages allowed).
|
|
46
|
+
*/
|
|
47
|
+
private checkAllowlist;
|
|
48
|
+
/**
|
|
49
|
+
* Check version ranges for strictness (no ^, ~, *, >= patterns).
|
|
50
|
+
*/
|
|
51
|
+
private checkVersionRangeStrictness;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=dependency-risk-evaluator.d.ts.map
|
package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-risk-evaluator.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/security/dependency-risk-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAsB9F,qBAAa,uBAAuB;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,iBAAiB,EAAE;IAmD7E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0BhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8C7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAwBpC"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Risk Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Evaluates repository-local dependency risk signals without
|
|
5
|
+
* external services. Checks:
|
|
6
|
+
* - Manifest-lockfile consistency (package.json vs lockfile)
|
|
7
|
+
* - Dependency source types (registry vs git vs file)
|
|
8
|
+
* - Risky lifecycle scripts (preinstall, postinstall, prepare)
|
|
9
|
+
* - Allowlist/denylist enforcement
|
|
10
|
+
* - Version-range strictness
|
|
11
|
+
*
|
|
12
|
+
* Returns an array of DependencyFinding objects with severity and remediation.
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
import { DependencyRiskType, SecuritySeverity } from '../../../domain/generated/output.js';
|
|
17
|
+
/**
|
|
18
|
+
* Lockfile names in priority order.
|
|
19
|
+
*/
|
|
20
|
+
const LOCKFILE_NAMES = ['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock'];
|
|
21
|
+
/**
|
|
22
|
+
* Lifecycle script names that execute arbitrary code during install.
|
|
23
|
+
*/
|
|
24
|
+
const RISKY_LIFECYCLE_SCRIPTS = ['preinstall', 'install', 'postinstall', 'prepare'];
|
|
25
|
+
/**
|
|
26
|
+
* Patterns indicating a non-registry dependency source.
|
|
27
|
+
*/
|
|
28
|
+
const NON_REGISTRY_PREFIXES = ['git+', 'git:', 'github:', 'file:', 'link:', 'http:', 'https:'];
|
|
29
|
+
/**
|
|
30
|
+
* Patterns indicating loose version ranges.
|
|
31
|
+
*/
|
|
32
|
+
const LOOSE_RANGE_PATTERNS = [/^\*$/, /^\^/, /^~/, /^>=/, /^>(?!=)/];
|
|
33
|
+
export class DependencyRiskEvaluator {
|
|
34
|
+
/**
|
|
35
|
+
* Evaluate dependency risk for a repository.
|
|
36
|
+
*
|
|
37
|
+
* @param repositoryPath - Absolute path to the repository root
|
|
38
|
+
* @param rules - Dependency risk policy rules
|
|
39
|
+
* @returns Array of dependency findings
|
|
40
|
+
*/
|
|
41
|
+
evaluate(repositoryPath, rules) {
|
|
42
|
+
const packageJsonPath = join(repositoryPath, 'package.json');
|
|
43
|
+
if (!existsSync(packageJsonPath)) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
let packageJson;
|
|
47
|
+
try {
|
|
48
|
+
packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const findings = [];
|
|
54
|
+
// Collect all dependencies
|
|
55
|
+
const allDeps = this.collectDependencies(packageJson);
|
|
56
|
+
// Check lockfile consistency
|
|
57
|
+
if (rules.checkLockfileConsistency) {
|
|
58
|
+
findings.push(...this.checkLockfileConsistency(repositoryPath, allDeps));
|
|
59
|
+
}
|
|
60
|
+
// Check non-registry sources
|
|
61
|
+
if (rules.checkNonRegistrySource) {
|
|
62
|
+
findings.push(...this.checkNonRegistrySources(allDeps));
|
|
63
|
+
}
|
|
64
|
+
// Check lifecycle scripts
|
|
65
|
+
if (rules.checkLifecycleScripts) {
|
|
66
|
+
findings.push(...this.checkLifecycleScripts(repositoryPath, allDeps));
|
|
67
|
+
}
|
|
68
|
+
// Check denylist
|
|
69
|
+
if (rules.denylist.length > 0) {
|
|
70
|
+
findings.push(...this.checkDenylist(allDeps, rules.denylist));
|
|
71
|
+
}
|
|
72
|
+
// Check allowlist
|
|
73
|
+
if (rules.allowlist.length > 0) {
|
|
74
|
+
findings.push(...this.checkAllowlist(allDeps, rules.allowlist));
|
|
75
|
+
}
|
|
76
|
+
// Check version-range strictness
|
|
77
|
+
if (rules.enforceStrictVersionRanges) {
|
|
78
|
+
findings.push(...this.checkVersionRangeStrictness(allDeps));
|
|
79
|
+
}
|
|
80
|
+
return findings;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Collect all dependencies from package.json (dependencies + devDependencies).
|
|
84
|
+
*/
|
|
85
|
+
collectDependencies(packageJson) {
|
|
86
|
+
const deps = new Map();
|
|
87
|
+
const depSections = ['dependencies', 'devDependencies'];
|
|
88
|
+
for (const section of depSections) {
|
|
89
|
+
const sectionDeps = packageJson[section];
|
|
90
|
+
if (sectionDeps && typeof sectionDeps === 'object') {
|
|
91
|
+
for (const [name, version] of Object.entries(sectionDeps)) {
|
|
92
|
+
deps.set(name, version);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return deps;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check that a lockfile exists when there are dependencies.
|
|
100
|
+
*/
|
|
101
|
+
checkLockfileConsistency(repositoryPath, deps) {
|
|
102
|
+
if (deps.size === 0) {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
const hasLockfile = LOCKFILE_NAMES.some((name) => existsSync(join(repositoryPath, name)));
|
|
106
|
+
if (!hasLockfile) {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
packageName: '*',
|
|
110
|
+
severity: SecuritySeverity.High,
|
|
111
|
+
riskType: DependencyRiskType.LockfileInconsistency,
|
|
112
|
+
message: 'No lockfile found. Dependencies are not pinned to specific versions.',
|
|
113
|
+
remediation: 'Run your package manager install command to generate a lockfile (e.g., pnpm install).',
|
|
114
|
+
},
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check for dependencies installed from non-registry sources.
|
|
121
|
+
*/
|
|
122
|
+
checkNonRegistrySources(deps) {
|
|
123
|
+
const findings = [];
|
|
124
|
+
for (const [name, version] of deps) {
|
|
125
|
+
const isNonRegistry = NON_REGISTRY_PREFIXES.some((prefix) => version.startsWith(prefix));
|
|
126
|
+
if (isNonRegistry) {
|
|
127
|
+
findings.push({
|
|
128
|
+
packageName: name,
|
|
129
|
+
version,
|
|
130
|
+
severity: SecuritySeverity.Medium,
|
|
131
|
+
riskType: DependencyRiskType.NonRegistrySource,
|
|
132
|
+
message: `Package "${name}" is installed from a non-registry source: ${version}`,
|
|
133
|
+
remediation: `Consider using a registry-published version of "${name}" instead of a direct source reference.`,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return findings;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check installed packages for risky lifecycle scripts.
|
|
141
|
+
*/
|
|
142
|
+
checkLifecycleScripts(repositoryPath, deps) {
|
|
143
|
+
const findings = [];
|
|
144
|
+
const nodeModules = join(repositoryPath, 'node_modules');
|
|
145
|
+
if (!existsSync(nodeModules)) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
for (const [name] of deps) {
|
|
149
|
+
const pkgJsonPath = join(nodeModules, name, 'package.json');
|
|
150
|
+
if (!existsSync(pkgJsonPath)) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
|
|
155
|
+
const scripts = pkgJson.scripts;
|
|
156
|
+
if (!scripts || typeof scripts !== 'object') {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const riskyScripts = RISKY_LIFECYCLE_SCRIPTS.filter((s) => typeof scripts[s] === 'string' && scripts[s].length > 0);
|
|
160
|
+
if (riskyScripts.length > 0) {
|
|
161
|
+
findings.push({
|
|
162
|
+
packageName: name,
|
|
163
|
+
version: pkgJson.version,
|
|
164
|
+
severity: SecuritySeverity.Medium,
|
|
165
|
+
riskType: DependencyRiskType.LifecycleScript,
|
|
166
|
+
message: `Package "${name}" has lifecycle scripts that execute during install: ${riskyScripts.join(', ')}`,
|
|
167
|
+
remediation: `Review the lifecycle scripts in "${name}" or add it to the allowlist if trusted. Consider using --ignore-scripts during install.`,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Skip packages with unreadable package.json
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return findings;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check dependencies against the denylist.
|
|
179
|
+
*/
|
|
180
|
+
checkDenylist(deps, denylist) {
|
|
181
|
+
const findings = [];
|
|
182
|
+
const denySet = new Set(denylist);
|
|
183
|
+
for (const [name, version] of deps) {
|
|
184
|
+
if (denySet.has(name)) {
|
|
185
|
+
findings.push({
|
|
186
|
+
packageName: name,
|
|
187
|
+
version,
|
|
188
|
+
severity: SecuritySeverity.Critical,
|
|
189
|
+
riskType: DependencyRiskType.DenylistViolation,
|
|
190
|
+
message: `Package "${name}" is on the denylist and must be removed.`,
|
|
191
|
+
remediation: `Remove "${name}" from your dependencies. It has been explicitly denied by security policy.`,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return findings;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check dependencies against the allowlist (non-empty allowlist = only listed packages allowed).
|
|
199
|
+
*/
|
|
200
|
+
checkAllowlist(deps, allowlist) {
|
|
201
|
+
const findings = [];
|
|
202
|
+
const allowSet = new Set(allowlist);
|
|
203
|
+
for (const [name, version] of deps) {
|
|
204
|
+
if (!allowSet.has(name)) {
|
|
205
|
+
findings.push({
|
|
206
|
+
packageName: name,
|
|
207
|
+
version,
|
|
208
|
+
severity: SecuritySeverity.High,
|
|
209
|
+
riskType: DependencyRiskType.AllowlistViolation,
|
|
210
|
+
message: `Package "${name}" is not on the allowlist.`,
|
|
211
|
+
remediation: `Add "${name}" to the allowlist in shep.security.yaml if it is a trusted dependency, or remove it.`,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return findings;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Check version ranges for strictness (no ^, ~, *, >= patterns).
|
|
219
|
+
*/
|
|
220
|
+
checkVersionRangeStrictness(deps) {
|
|
221
|
+
const findings = [];
|
|
222
|
+
for (const [name, version] of deps) {
|
|
223
|
+
// Skip non-registry sources (already flagged separately)
|
|
224
|
+
if (NON_REGISTRY_PREFIXES.some((prefix) => version.startsWith(prefix))) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
const isLoose = LOOSE_RANGE_PATTERNS.some((pattern) => pattern.test(version));
|
|
228
|
+
if (isLoose) {
|
|
229
|
+
findings.push({
|
|
230
|
+
packageName: name,
|
|
231
|
+
version,
|
|
232
|
+
severity: SecuritySeverity.Medium,
|
|
233
|
+
riskType: DependencyRiskType.VersionRangePolicy,
|
|
234
|
+
message: `Package "${name}" uses a loose version range "${version}". Strict version pinning is required by policy.`,
|
|
235
|
+
remediation: `Pin "${name}" to an exact version (e.g., "4.17.21" instead of "${version}").`,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return findings;
|
|
240
|
+
}
|
|
241
|
+
}
|
package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Release Integrity Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Checks release pipeline integrity for a repository:
|
|
5
|
+
* - CI workflow exists and publishes from CI (not local)
|
|
6
|
+
* - NPM_TOKEN and RELEASE_TOKEN referenced as secrets (not hardcoded)
|
|
7
|
+
* - npm provenance flags (--provenance) present in publish steps
|
|
8
|
+
* - Release workflow integrity (semantic-release configured)
|
|
9
|
+
*
|
|
10
|
+
* Returns a ReleaseIntegrityResult with individual check results and overall pass/fail.
|
|
11
|
+
*/
|
|
12
|
+
import type { ReleaseIntegrityResult, ReleaseRules } from '../../../domain/generated/output.js';
|
|
13
|
+
export declare class ReleaseIntegrityEvaluator {
|
|
14
|
+
/**
|
|
15
|
+
* Evaluate release pipeline integrity.
|
|
16
|
+
*
|
|
17
|
+
* @param repositoryPath - Absolute path to the repository root
|
|
18
|
+
* @param rules - Release integrity policy rules
|
|
19
|
+
* @returns Aggregated result with individual check details
|
|
20
|
+
*/
|
|
21
|
+
evaluate(repositoryPath: string, rules: ReleaseRules): ReleaseIntegrityResult;
|
|
22
|
+
/**
|
|
23
|
+
* Read all YAML workflow files from .github/workflows/.
|
|
24
|
+
*/
|
|
25
|
+
private readWorkflowFiles;
|
|
26
|
+
/**
|
|
27
|
+
* Check that CI workflow files exist (publishing happens in CI, not locally).
|
|
28
|
+
*/
|
|
29
|
+
private checkCiOnlyPublishing;
|
|
30
|
+
/**
|
|
31
|
+
* Check that tokens are referenced as secrets, not hardcoded.
|
|
32
|
+
* Scans for known token env var names and verifies they use ${{ secrets.* }}.
|
|
33
|
+
*/
|
|
34
|
+
private checkSecretConfiguration;
|
|
35
|
+
/**
|
|
36
|
+
* Check that npm publish commands include --provenance flag.
|
|
37
|
+
*/
|
|
38
|
+
private checkProvenanceConfiguration;
|
|
39
|
+
/**
|
|
40
|
+
* Check workflow integrity (semantic-release is configured).
|
|
41
|
+
*/
|
|
42
|
+
private checkWorkflowIntegrity;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=release-integrity-evaluator.d.ts.map
|
package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-integrity-evaluator.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/security/release-integrity-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAEV,sBAAsB,EACtB,YAAY,EACb,MAAM,qCAAqC,CAAC;AA2B7C,qBAAa,yBAAyB;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,sBAAsB;IAiC7E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAyCpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAoB/B"}
|