@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/application/use-cases/security/get-security-state.use-case.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Security State Use Case
|
|
3
|
+
*
|
|
4
|
+
* Returns the current security state for UI projection:
|
|
5
|
+
* - Effective mode from settings
|
|
6
|
+
* - Recent security events (limited)
|
|
7
|
+
* - Highest-severity open finding
|
|
8
|
+
* - Last evaluation timestamp
|
|
9
|
+
*/
|
|
10
|
+
import { SecurityMode } from '../../../domain/generated/output.js';
|
|
11
|
+
import type { SecurityEvent } from '../../../domain/generated/output.js';
|
|
12
|
+
import type { ISecurityEventRepository } from '../../ports/output/repositories/security-event.repository.interface.js';
|
|
13
|
+
import type { ISettingsRepository } from '../../ports/output/repositories/settings.repository.interface.js';
|
|
14
|
+
/**
|
|
15
|
+
* Security state summary for UI projection.
|
|
16
|
+
*/
|
|
17
|
+
export interface SecurityState {
|
|
18
|
+
/** Effective security mode */
|
|
19
|
+
mode: SecurityMode;
|
|
20
|
+
/** Last evaluation timestamp (ISO string) or null */
|
|
21
|
+
lastEvaluationAt: string | null;
|
|
22
|
+
/** Policy source or null */
|
|
23
|
+
policySource: string | null;
|
|
24
|
+
/** Recent security events (most recent first, limited) */
|
|
25
|
+
recentEvents: SecurityEvent[];
|
|
26
|
+
/** Highest-severity finding from recent events, or null */
|
|
27
|
+
highestSeverityFinding: SecurityEvent | null;
|
|
28
|
+
}
|
|
29
|
+
export declare class GetSecurityStateUseCase {
|
|
30
|
+
private readonly eventRepository;
|
|
31
|
+
private readonly settingsRepository;
|
|
32
|
+
constructor(eventRepository: ISecurityEventRepository, settingsRepository: ISettingsRepository);
|
|
33
|
+
execute(repositoryPath: string): Promise<SecurityState>;
|
|
34
|
+
private findHighestSeverity;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=get-security-state.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-security-state.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/security/get-security-state.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAoB,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wEAAwE,CAAC;AACvH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAK5G;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4BAA4B;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0DAA0D;IAC1D,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,2DAA2D;IAC3D,sBAAsB,EAAE,aAAa,GAAG,IAAI,CAAC;CAC9C;AAUD,qBACa,uBAAuB;IAGhC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAFlB,eAAe,EAAE,wBAAwB,EAEzC,kBAAkB,EAAE,mBAAmB;IAGpD,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB7D,OAAO,CAAC,mBAAmB;CAgB5B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Security State Use Case
|
|
3
|
+
*
|
|
4
|
+
* Returns the current security state for UI projection:
|
|
5
|
+
* - Effective mode from settings
|
|
6
|
+
* - Recent security events (limited)
|
|
7
|
+
* - Highest-severity open finding
|
|
8
|
+
* - Last evaluation timestamp
|
|
9
|
+
*/
|
|
10
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
11
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
12
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
14
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
15
|
+
};
|
|
16
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
18
|
+
};
|
|
19
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
20
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
21
|
+
};
|
|
22
|
+
import { injectable, inject } from 'tsyringe';
|
|
23
|
+
import { SecurityMode, SecuritySeverity } from '../../../domain/generated/output.js';
|
|
24
|
+
/** Maximum number of recent events returned. */
|
|
25
|
+
const RECENT_EVENTS_LIMIT = 20;
|
|
26
|
+
/** Severity ordering for comparison (higher = more severe). */
|
|
27
|
+
const SEVERITY_RANK = {
|
|
28
|
+
[SecuritySeverity.Low]: 0,
|
|
29
|
+
[SecuritySeverity.Medium]: 1,
|
|
30
|
+
[SecuritySeverity.High]: 2,
|
|
31
|
+
[SecuritySeverity.Critical]: 3,
|
|
32
|
+
};
|
|
33
|
+
let GetSecurityStateUseCase = class GetSecurityStateUseCase {
|
|
34
|
+
eventRepository;
|
|
35
|
+
settingsRepository;
|
|
36
|
+
constructor(eventRepository, settingsRepository) {
|
|
37
|
+
this.eventRepository = eventRepository;
|
|
38
|
+
this.settingsRepository = settingsRepository;
|
|
39
|
+
}
|
|
40
|
+
async execute(repositoryPath) {
|
|
41
|
+
const settings = await this.settingsRepository.load();
|
|
42
|
+
const securityConfig = settings?.security;
|
|
43
|
+
const recentEvents = await this.eventRepository.findByRepository(repositoryPath, {
|
|
44
|
+
limit: RECENT_EVENTS_LIMIT,
|
|
45
|
+
});
|
|
46
|
+
const highestSeverityFinding = this.findHighestSeverity(recentEvents);
|
|
47
|
+
return {
|
|
48
|
+
mode: securityConfig?.mode ?? SecurityMode.Advisory,
|
|
49
|
+
lastEvaluationAt: securityConfig?.lastEvaluationAt ?? null,
|
|
50
|
+
policySource: securityConfig?.policySource ?? null,
|
|
51
|
+
recentEvents,
|
|
52
|
+
highestSeverityFinding,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
findHighestSeverity(events) {
|
|
56
|
+
if (events.length === 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
let highest = events[0];
|
|
60
|
+
for (const event of events) {
|
|
61
|
+
const eventRank = SEVERITY_RANK[event.severity] ?? 0;
|
|
62
|
+
const highestRank = SEVERITY_RANK[highest.severity] ?? 0;
|
|
63
|
+
if (eventRank > highestRank) {
|
|
64
|
+
highest = event;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return highest;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
GetSecurityStateUseCase = __decorate([
|
|
71
|
+
injectable(),
|
|
72
|
+
__param(0, inject('ISecurityEventRepository')),
|
|
73
|
+
__param(1, inject('ISettingsRepository')),
|
|
74
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
75
|
+
], GetSecurityStateUseCase);
|
|
76
|
+
export { GetSecurityStateUseCase };
|
package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Security Event Use Case
|
|
3
|
+
*
|
|
4
|
+
* Persists a security event and triggers 90-day retention cleanup.
|
|
5
|
+
* Used by runtime guardrails and enforcement flow to record findings.
|
|
6
|
+
*/
|
|
7
|
+
import type { SecurityEvent } from '../../../domain/generated/output.js';
|
|
8
|
+
import type { ISecurityEventRepository } from '../../ports/output/repositories/security-event.repository.interface.js';
|
|
9
|
+
export declare class RecordSecurityEventUseCase {
|
|
10
|
+
private readonly eventRepository;
|
|
11
|
+
constructor(eventRepository: ISecurityEventRepository);
|
|
12
|
+
execute(event: SecurityEvent): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=record-security-event.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-security-event.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/security/record-security-event.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wEAAwE,CAAC;AAMvH,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,wBAAwB;IAGtD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAcnD"}
|
package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Security Event Use Case
|
|
3
|
+
*
|
|
4
|
+
* Persists a security event and triggers 90-day retention cleanup.
|
|
5
|
+
* Used by runtime guardrails and enforcement flow to record findings.
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
17
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
18
|
+
};
|
|
19
|
+
import { injectable, inject } from 'tsyringe';
|
|
20
|
+
import { randomUUID } from 'node:crypto';
|
|
21
|
+
/** Retention window in days for security events. */
|
|
22
|
+
const SECURITY_EVENT_RETENTION_DAYS = 90;
|
|
23
|
+
let RecordSecurityEventUseCase = class RecordSecurityEventUseCase {
|
|
24
|
+
eventRepository;
|
|
25
|
+
constructor(eventRepository) {
|
|
26
|
+
this.eventRepository = eventRepository;
|
|
27
|
+
}
|
|
28
|
+
async execute(event) {
|
|
29
|
+
// Ensure the event has an ID
|
|
30
|
+
const eventToSave = {
|
|
31
|
+
...event,
|
|
32
|
+
id: event.id || randomUUID(),
|
|
33
|
+
};
|
|
34
|
+
await this.eventRepository.save(eventToSave);
|
|
35
|
+
// Trigger 90-day retention cleanup
|
|
36
|
+
const cutoff = new Date();
|
|
37
|
+
cutoff.setDate(cutoff.getDate() - SECURITY_EVENT_RETENTION_DAYS);
|
|
38
|
+
await this.eventRepository.deleteOlderThan(cutoff);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
RecordSecurityEventUseCase = __decorate([
|
|
42
|
+
injectable(),
|
|
43
|
+
__param(0, inject('ISecurityEventRepository')),
|
|
44
|
+
__metadata("design:paramtypes", [Object])
|
|
45
|
+
], RecordSecurityEventUseCase);
|
|
46
|
+
export { RecordSecurityEventUseCase };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Violation Error
|
|
3
|
+
*
|
|
4
|
+
* Thrown when a security policy constraint is violated during agent execution.
|
|
5
|
+
* Contains structured information about the violated rule, the action category,
|
|
6
|
+
* and actionable remediation guidance.
|
|
7
|
+
*/
|
|
8
|
+
import type { SecurityActionCategory } from '../generated/output.js';
|
|
9
|
+
export declare class SecurityViolationError extends Error {
|
|
10
|
+
readonly rule: string;
|
|
11
|
+
readonly category: SecurityActionCategory;
|
|
12
|
+
readonly remediation: string;
|
|
13
|
+
constructor(rule: string, category: SecurityActionCategory, remediation: string);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=security-violation.error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-violation.error.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/errors/security-violation.error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,sBAAsB;aAChC,WAAW,EAAE,MAAM;gBAFnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM;CAMtC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Violation Error
|
|
3
|
+
*
|
|
4
|
+
* Thrown when a security policy constraint is violated during agent execution.
|
|
5
|
+
* Contains structured information about the violated rule, the action category,
|
|
6
|
+
* and actionable remediation guidance.
|
|
7
|
+
*/
|
|
8
|
+
export class SecurityViolationError extends Error {
|
|
9
|
+
rule;
|
|
10
|
+
category;
|
|
11
|
+
remediation;
|
|
12
|
+
constructor(rule, category, remediation) {
|
|
13
|
+
super(`Security policy violation: ${rule}`);
|
|
14
|
+
this.rule = rule;
|
|
15
|
+
this.category = category;
|
|
16
|
+
this.remediation = remediation;
|
|
17
|
+
this.name = 'SecurityViolationError';
|
|
18
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAYT,MAAM,qBAAqB,CAAC;AAoD7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAoJhD"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Auto-update enabled, log level set to info
|
|
12
12
|
* - Unique IDs and timestamps generated for each instance
|
|
13
13
|
*/
|
|
14
|
-
import { AgentType, AgentAuthMethod, EditorType, SkillSourceType, TerminalType, } from '../generated/output.js';
|
|
14
|
+
import { AgentType, AgentAuthMethod, EditorType, SkillSourceType, SecurityMode, TerminalType, } from '../generated/output.js';
|
|
15
15
|
/**
|
|
16
16
|
* Default AI model for all SDLC agents.
|
|
17
17
|
* Provides balanced performance and cost for all workflow stages.
|
|
@@ -184,6 +184,10 @@ export function createDefaultSettings() {
|
|
|
184
184
|
gitRebaseSync: false,
|
|
185
185
|
reactFileManager: false,
|
|
186
186
|
inventory: false,
|
|
187
|
+
supplyChainSecurity: true,
|
|
188
|
+
};
|
|
189
|
+
const security = {
|
|
190
|
+
mode: SecurityMode.Advisory,
|
|
187
191
|
};
|
|
188
192
|
return {
|
|
189
193
|
id: globalThis.crypto.randomUUID(),
|
|
@@ -195,6 +199,7 @@ export function createDefaultSettings() {
|
|
|
195
199
|
notifications,
|
|
196
200
|
workflow,
|
|
197
201
|
featureFlags,
|
|
202
|
+
security,
|
|
198
203
|
onboardingComplete: false,
|
|
199
204
|
createdAt: now,
|
|
200
205
|
updatedAt: now,
|
|
@@ -632,6 +632,10 @@ export type FeatureFlags = {
|
|
|
632
632
|
* Enable the Inventory page showing all repositories and features
|
|
633
633
|
*/
|
|
634
634
|
inventory: boolean;
|
|
635
|
+
/**
|
|
636
|
+
* Enable the supply chain security feature (policy engine, badges, settings, CLI, CI gate). When false, the feature is inert regardless of SecurityMode.
|
|
637
|
+
*/
|
|
638
|
+
supplyChainSecurity: boolean;
|
|
635
639
|
};
|
|
636
640
|
/**
|
|
637
641
|
* Interactive agent chat tab configuration
|
|
@@ -659,6 +663,28 @@ export type FabLayoutConfig = {
|
|
|
659
663
|
*/
|
|
660
664
|
swapPosition: boolean;
|
|
661
665
|
};
|
|
666
|
+
export declare enum SecurityMode {
|
|
667
|
+
Disabled = "Disabled",
|
|
668
|
+
Advisory = "Advisory",
|
|
669
|
+
Enforce = "Enforce"
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Supply-chain security configuration persisted in settings
|
|
673
|
+
*/
|
|
674
|
+
export type SecurityConfig = {
|
|
675
|
+
/**
|
|
676
|
+
* Effective security mode (default: Advisory)
|
|
677
|
+
*/
|
|
678
|
+
mode: SecurityMode;
|
|
679
|
+
/**
|
|
680
|
+
* ISO timestamp of last policy evaluation (null if never evaluated)
|
|
681
|
+
*/
|
|
682
|
+
lastEvaluationAt?: string;
|
|
683
|
+
/**
|
|
684
|
+
* Source of the active security policy (null if never evaluated)
|
|
685
|
+
*/
|
|
686
|
+
policySource?: string;
|
|
687
|
+
};
|
|
662
688
|
/**
|
|
663
689
|
* Global Shep platform settings (singleton)
|
|
664
690
|
*/
|
|
@@ -707,6 +733,10 @@ export type Settings = BaseEntity & {
|
|
|
707
733
|
* FAB layout configuration (optional, defaults applied at runtime)
|
|
708
734
|
*/
|
|
709
735
|
fabLayout?: FabLayoutConfig;
|
|
736
|
+
/**
|
|
737
|
+
* Supply-chain security configuration (optional, defaults applied at runtime)
|
|
738
|
+
*/
|
|
739
|
+
security?: SecurityConfig;
|
|
710
740
|
};
|
|
711
741
|
export declare enum TaskState {
|
|
712
742
|
Todo = "Todo",
|
|
@@ -1678,6 +1708,239 @@ export type Repository = SoftDeletableEntity & {
|
|
|
1678
1708
|
*/
|
|
1679
1709
|
upstreamUrl?: string;
|
|
1680
1710
|
};
|
|
1711
|
+
export declare enum SecurityActionCategory {
|
|
1712
|
+
DependencyInstall = "DependencyInstall",
|
|
1713
|
+
PackageScriptExec = "PackageScriptExec",
|
|
1714
|
+
CiWorkflowModify = "CiWorkflowModify",
|
|
1715
|
+
PublishRelease = "PublishRelease",
|
|
1716
|
+
SandboxEscalation = "SandboxEscalation"
|
|
1717
|
+
}
|
|
1718
|
+
export declare enum SecurityActionDisposition {
|
|
1719
|
+
Allowed = "Allowed",
|
|
1720
|
+
Denied = "Denied",
|
|
1721
|
+
ApprovalRequired = "ApprovalRequired"
|
|
1722
|
+
}
|
|
1723
|
+
/**
|
|
1724
|
+
* Mapping of an action category to its enforcement disposition
|
|
1725
|
+
*/
|
|
1726
|
+
export type ActionDispositionEntry = {
|
|
1727
|
+
/**
|
|
1728
|
+
* The action category
|
|
1729
|
+
*/
|
|
1730
|
+
category: SecurityActionCategory;
|
|
1731
|
+
/**
|
|
1732
|
+
* How this action should be handled
|
|
1733
|
+
*/
|
|
1734
|
+
disposition: SecurityActionDisposition;
|
|
1735
|
+
};
|
|
1736
|
+
/**
|
|
1737
|
+
* Dependency risk evaluation policy rules
|
|
1738
|
+
*/
|
|
1739
|
+
export type DependencyRules = {
|
|
1740
|
+
/**
|
|
1741
|
+
* Check manifest-lockfile consistency (default: true)
|
|
1742
|
+
*/
|
|
1743
|
+
checkLockfileConsistency: boolean;
|
|
1744
|
+
/**
|
|
1745
|
+
* Flag packages with lifecycle scripts (default: true)
|
|
1746
|
+
*/
|
|
1747
|
+
checkLifecycleScripts: boolean;
|
|
1748
|
+
/**
|
|
1749
|
+
* Flag non-registry dependency sources (default: true)
|
|
1750
|
+
*/
|
|
1751
|
+
checkNonRegistrySource: boolean;
|
|
1752
|
+
/**
|
|
1753
|
+
* Enforce strict version ranges — no ^ or * (default: false)
|
|
1754
|
+
*/
|
|
1755
|
+
enforceStrictVersionRanges: boolean;
|
|
1756
|
+
/**
|
|
1757
|
+
* Packages explicitly allowed (empty = allow all)
|
|
1758
|
+
*/
|
|
1759
|
+
allowlist: string[];
|
|
1760
|
+
/**
|
|
1761
|
+
* Packages explicitly denied
|
|
1762
|
+
*/
|
|
1763
|
+
denylist: string[];
|
|
1764
|
+
};
|
|
1765
|
+
/**
|
|
1766
|
+
* Release integrity policy rules
|
|
1767
|
+
*/
|
|
1768
|
+
export type ReleaseRules = {
|
|
1769
|
+
/**
|
|
1770
|
+
* Require publishing from CI only, not local (default: true)
|
|
1771
|
+
*/
|
|
1772
|
+
requireCiOnlyPublishing: boolean;
|
|
1773
|
+
/**
|
|
1774
|
+
* Require npm provenance flags on publish (default: true)
|
|
1775
|
+
*/
|
|
1776
|
+
requireProvenance: boolean;
|
|
1777
|
+
/**
|
|
1778
|
+
* Check that release workflow has not been tampered with (default: true)
|
|
1779
|
+
*/
|
|
1780
|
+
checkWorkflowIntegrity: boolean;
|
|
1781
|
+
};
|
|
1782
|
+
/**
|
|
1783
|
+
* Security policy configuration from shep.security.yaml
|
|
1784
|
+
*/
|
|
1785
|
+
export type SecurityPolicy = {
|
|
1786
|
+
/**
|
|
1787
|
+
* Desired security mode for this repository
|
|
1788
|
+
*/
|
|
1789
|
+
mode: SecurityMode;
|
|
1790
|
+
/**
|
|
1791
|
+
* Per-action-category enforcement dispositions
|
|
1792
|
+
*/
|
|
1793
|
+
actionDispositions: ActionDispositionEntry[];
|
|
1794
|
+
/**
|
|
1795
|
+
* Dependency risk evaluation rules
|
|
1796
|
+
*/
|
|
1797
|
+
dependencyRules: DependencyRules;
|
|
1798
|
+
/**
|
|
1799
|
+
* Release integrity check rules
|
|
1800
|
+
*/
|
|
1801
|
+
releaseRules: ReleaseRules;
|
|
1802
|
+
};
|
|
1803
|
+
export declare enum SecuritySeverity {
|
|
1804
|
+
Low = "Low",
|
|
1805
|
+
Medium = "Medium",
|
|
1806
|
+
High = "High",
|
|
1807
|
+
Critical = "Critical"
|
|
1808
|
+
}
|
|
1809
|
+
/**
|
|
1810
|
+
* Persisted security event for audit and observability
|
|
1811
|
+
*/
|
|
1812
|
+
export type SecurityEvent = BaseEntity & {
|
|
1813
|
+
/**
|
|
1814
|
+
* Absolute path to the repository this event belongs to
|
|
1815
|
+
*/
|
|
1816
|
+
repositoryPath: string;
|
|
1817
|
+
/**
|
|
1818
|
+
* Feature ID if this event occurred during a feature run
|
|
1819
|
+
*/
|
|
1820
|
+
featureId?: string;
|
|
1821
|
+
/**
|
|
1822
|
+
* Severity of this security event
|
|
1823
|
+
*/
|
|
1824
|
+
severity: SecuritySeverity;
|
|
1825
|
+
/**
|
|
1826
|
+
* Action category that triggered this event
|
|
1827
|
+
*/
|
|
1828
|
+
category: SecurityActionCategory;
|
|
1829
|
+
/**
|
|
1830
|
+
* How the action was handled (allowed, denied, approval-required)
|
|
1831
|
+
*/
|
|
1832
|
+
disposition: SecurityActionDisposition;
|
|
1833
|
+
/**
|
|
1834
|
+
* Actor or source that triggered this event (agent, user, CI)
|
|
1835
|
+
*/
|
|
1836
|
+
actor?: string;
|
|
1837
|
+
/**
|
|
1838
|
+
* Human-readable event description
|
|
1839
|
+
*/
|
|
1840
|
+
message?: string;
|
|
1841
|
+
/**
|
|
1842
|
+
* Actionable remediation guidance
|
|
1843
|
+
*/
|
|
1844
|
+
remediationSummary?: string;
|
|
1845
|
+
};
|
|
1846
|
+
export declare enum DependencyRiskType {
|
|
1847
|
+
LockfileInconsistency = "LockfileInconsistency",
|
|
1848
|
+
NonRegistrySource = "NonRegistrySource",
|
|
1849
|
+
LifecycleScript = "LifecycleScript",
|
|
1850
|
+
DenylistViolation = "DenylistViolation",
|
|
1851
|
+
AllowlistViolation = "AllowlistViolation",
|
|
1852
|
+
VersionRangePolicy = "VersionRangePolicy"
|
|
1853
|
+
}
|
|
1854
|
+
/**
|
|
1855
|
+
* Single dependency risk finding
|
|
1856
|
+
*/
|
|
1857
|
+
export type DependencyFinding = {
|
|
1858
|
+
/**
|
|
1859
|
+
* Package name (e.g. 'lodash', '@types/node')
|
|
1860
|
+
*/
|
|
1861
|
+
packageName: string;
|
|
1862
|
+
/**
|
|
1863
|
+
* Package version or range (e.g. '^4.17.0')
|
|
1864
|
+
*/
|
|
1865
|
+
version?: string;
|
|
1866
|
+
/**
|
|
1867
|
+
* Severity of this finding
|
|
1868
|
+
*/
|
|
1869
|
+
severity: SecuritySeverity;
|
|
1870
|
+
/**
|
|
1871
|
+
* Type of dependency risk detected
|
|
1872
|
+
*/
|
|
1873
|
+
riskType: DependencyRiskType;
|
|
1874
|
+
/**
|
|
1875
|
+
* Human-readable description of the finding
|
|
1876
|
+
*/
|
|
1877
|
+
message: string;
|
|
1878
|
+
/**
|
|
1879
|
+
* Actionable remediation guidance
|
|
1880
|
+
*/
|
|
1881
|
+
remediation?: string;
|
|
1882
|
+
};
|
|
1883
|
+
export declare enum ReleaseIntegrityCheckType {
|
|
1884
|
+
CiOnlyPublishing = "CiOnlyPublishing",
|
|
1885
|
+
SecretConfiguration = "SecretConfiguration",
|
|
1886
|
+
ProvenanceConfiguration = "ProvenanceConfiguration",
|
|
1887
|
+
WorkflowIntegrity = "WorkflowIntegrity"
|
|
1888
|
+
}
|
|
1889
|
+
/**
|
|
1890
|
+
* Result of a single release integrity check
|
|
1891
|
+
*/
|
|
1892
|
+
export type ReleaseIntegrityCheck = {
|
|
1893
|
+
/**
|
|
1894
|
+
* Type of check performed
|
|
1895
|
+
*/
|
|
1896
|
+
checkType: ReleaseIntegrityCheckType;
|
|
1897
|
+
/**
|
|
1898
|
+
* Whether this check passed
|
|
1899
|
+
*/
|
|
1900
|
+
passed: boolean;
|
|
1901
|
+
/**
|
|
1902
|
+
* Human-readable description of the result
|
|
1903
|
+
*/
|
|
1904
|
+
message: string;
|
|
1905
|
+
/**
|
|
1906
|
+
* Severity when this check fails
|
|
1907
|
+
*/
|
|
1908
|
+
severity: SecuritySeverity;
|
|
1909
|
+
};
|
|
1910
|
+
/**
|
|
1911
|
+
* Aggregated release integrity evaluation result
|
|
1912
|
+
*/
|
|
1913
|
+
export type ReleaseIntegrityResult = {
|
|
1914
|
+
/**
|
|
1915
|
+
* Individual check results
|
|
1916
|
+
*/
|
|
1917
|
+
checks: ReleaseIntegrityCheck[];
|
|
1918
|
+
/**
|
|
1919
|
+
* Whether all checks passed
|
|
1920
|
+
*/
|
|
1921
|
+
passed: boolean;
|
|
1922
|
+
};
|
|
1923
|
+
/**
|
|
1924
|
+
* Computed effective security policy snapshot
|
|
1925
|
+
*/
|
|
1926
|
+
export type EffectivePolicySnapshot = {
|
|
1927
|
+
/**
|
|
1928
|
+
* Resolved effective security mode
|
|
1929
|
+
*/
|
|
1930
|
+
mode: SecurityMode;
|
|
1931
|
+
/**
|
|
1932
|
+
* Where the policy was sourced from (e.g. 'shep.security.yaml', 'settings-default')
|
|
1933
|
+
*/
|
|
1934
|
+
source: string;
|
|
1935
|
+
/**
|
|
1936
|
+
* ISO timestamp when this snapshot was computed
|
|
1937
|
+
*/
|
|
1938
|
+
evaluatedAt: string;
|
|
1939
|
+
/**
|
|
1940
|
+
* Resolved per-action-category enforcement dispositions
|
|
1941
|
+
*/
|
|
1942
|
+
actionDispositions: ActionDispositionEntry[];
|
|
1943
|
+
};
|
|
1681
1944
|
/**
|
|
1682
1945
|
* Single installation suggestion for a tool
|
|
1683
1946
|
*/
|