@shepai/cli 1.174.0 → 1.175.0-pr527.9ada632
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/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/Repository.yaml +6 -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/repository-repository.interface.d.ts +3 -1
- package/dist/packages/core/src/application/ports/output/repositories/repository-repository.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/git-pr-service.interface.d.ts +28 -0
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +2 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +85 -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 +21 -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-from-remote.use-case.d.ts +67 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.js +128 -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/repositories/import-github-repository.use-case.d.ts +16 -5
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.js +76 -14
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts +30 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js +51 -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 +5 -1
- package/dist/packages/core/src/domain/generated/output.d.ts +267 -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 +67 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js +4 -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 +3 -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 +14 -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/055-add-repository-fork-fields.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.js +26 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +14 -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 +12 -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/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 +34 -0
- 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 +19 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +45 -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 +70 -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 +13 -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 +155 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +62 -0
- 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/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +32 -6
- package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/index.js +3 -1
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts +15 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.js +44 -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 +118 -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 +2 -1
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts +31 -0
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.js +69 -0
- package/dist/src/presentation/web/app/actions/import-github-repository.d.ts +1 -0
- package/dist/src/presentation/web/app/actions/import-github-repository.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/import-github-repository.js +1 -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-create-drawer/feature-create-drawer.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.js +22 -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/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +16 -3
- 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/src/presentation/web/lib/feature-flags.js +1 -1
- package/dist/translations/ar/cli.json +32 -0
- package/dist/translations/ar/web.json +43 -1
- package/dist/translations/de/cli.json +32 -0
- package/dist/translations/de/web.json +43 -1
- package/dist/translations/en/cli.json +32 -0
- package/dist/translations/en/web.json +43 -1
- package/dist/translations/es/cli.json +32 -0
- package/dist/translations/es/web.json +43 -1
- package/dist/translations/fr/cli.json +32 -0
- package/dist/translations/fr/web.json +43 -1
- package/dist/translations/he/cli.json +32 -0
- package/dist/translations/he/web.json +43 -1
- package/dist/translations/pt/cli.json +32 -0
- package/dist/translations/pt/web.json +43 -1
- package/dist/translations/ru/cli.json +32 -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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -0
- 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 +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -0
- 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 +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -0
- 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/_3686b70d._.js +3 -0
- package/web/.next/server/chunks/ssr/_3686b70d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_3a71f39b._.js → _45286124._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_3a71f39b._.js.map → _45286124._.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/_6abfa39e._.js.map +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/{_7953be4d._.js → _d943aad7._.js} +2 -2
- package/web/.next/server/chunks/ssr/_d943aad7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f8c55130._.js +4 -0
- package/web/.next/server/chunks/ssr/_f8c55130._.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/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 +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
- 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 +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -0
- 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/{ad47bc6ddec7508e.js → 128f165077681f87.js} +2 -2
- package/web/.next/static/chunks/20ec94c610d07a10.css +1 -0
- package/web/.next/static/chunks/2ceebcc839ee0d4b.js +1 -0
- package/web/.next/static/chunks/{6bc240cd4ae43267.js → 34e82d5f47b938e3.js} +1 -1
- package/web/.next/static/chunks/38c5a2cc4ce5d4d2.js +1 -0
- package/web/.next/static/chunks/3aba9d2242420cb5.js +1 -0
- package/web/.next/static/chunks/4981e52ed9b5dea3.js +1 -0
- package/web/.next/static/chunks/{a060ad1bb509687f.js → 4a909223df60de49.js} +1 -1
- package/web/.next/static/chunks/5858b85217fd0ead.js +1 -0
- package/web/.next/static/chunks/{a2a03ecb10000974.js → 68a0d1e04c636c09.js} +1 -1
- package/web/.next/static/chunks/{393b27ab5de6c454.js → 85473115de724a77.js} +1 -1
- package/web/.next/static/chunks/{d9c9db1823b4dffd.js → 8a5c7d80045a8f49.js} +2 -2
- package/web/.next/static/chunks/{5a2e1c8699897c26.js → 90c687976b254681.js} +3 -3
- package/web/.next/static/chunks/aab749e78b4c10bc.js +1 -0
- package/web/.next/static/chunks/{534194b584a151ed.js → ac18577f94d63177.js} +1 -1
- package/web/.next/static/chunks/ae81796726a9bba3.js +1 -0
- package/web/.next/static/chunks/{6dc0a23d333274ae.js → af9ee4accaa11f83.js} +2 -2
- package/web/.next/static/chunks/{c164b157638b2a8b.js → b082a6bb7e17b701.js} +1 -1
- package/web/.next/static/chunks/{b49ab0b290e9342d.js → b46545caae3b4930.js} +1 -1
- 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/[root-of-the-server]__4fb81977._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js +0 -4
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +0 -4
- package/web/.next/server/chunks/ssr/_18886033._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +0 -4
- package/web/.next/server/chunks/ssr/_22e00a14._.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/_7953be4d._.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/_a5a5901d._.js +0 -4
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js +0 -4
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +0 -4
- package/web/.next/server/chunks/ssr/_c3f595c6._.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/server/chunks/ssr/_ea9e1556._.js +0 -4
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +0 -6
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +0 -6
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +0 -4
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_fd595af2._.js +0 -3
- package/web/.next/server/chunks/ssr/_fd595af2._.js.map +0 -1
- package/web/.next/static/chunks/0baf5a2e56d191cf.js +0 -1
- package/web/.next/static/chunks/32c46154c31c58fc.js +0 -1
- package/web/.next/static/chunks/84b480808bd74fa9.css +0 -1
- package/web/.next/static/chunks/8b0a9cb5109fe899.js +0 -1
- package/web/.next/static/chunks/b65e555419a0c664.js +0 -1
- package/web/.next/static/chunks/e30aa6d2cf824fa1.js +0 -1
- package/web/.next/static/chunks/f5abbc495d496f5b.js +0 -1
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_buildManifest.js +0 -0
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_ssgManifest.js +0 -0
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Import GitHub Repository Use Case
|
|
3
3
|
*
|
|
4
4
|
* Orchestrates importing a GitHub repository: validates the URL, checks auth,
|
|
5
|
-
* detects duplicates by remoteUrl,
|
|
6
|
-
*
|
|
7
|
-
* repository record with the normalized remoteUrl.
|
|
5
|
+
* detects duplicates by remoteUrl/upstreamUrl, checks push access, and either
|
|
6
|
+
* clones directly or auto-forks when the user lacks push access.
|
|
8
7
|
*/
|
|
9
8
|
import type { Repository } from '../../../domain/generated/output.js';
|
|
10
|
-
import type { IGitHubRepositoryService, CloneOptions } from '../../ports/output/services/github-repository-service.interface.js';
|
|
9
|
+
import type { IGitHubRepositoryService, CloneOptions, ForkOptions } from '../../ports/output/services/github-repository-service.interface.js';
|
|
10
|
+
import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
|
|
11
11
|
import type { IRepositoryRepository } from '../../ports/output/repositories/repository-repository.interface.js';
|
|
12
12
|
import { AddRepositoryUseCase } from './add-repository.use-case.js';
|
|
13
13
|
export interface ImportGitHubRepositoryInput {
|
|
@@ -19,13 +19,24 @@ export interface ImportGitHubRepositoryInput {
|
|
|
19
19
|
defaultCloneDir?: string;
|
|
20
20
|
/** Options for the clone subprocess (e.g. progress callback) */
|
|
21
21
|
cloneOptions?: CloneOptions;
|
|
22
|
+
/** Options for fork operations (e.g. progress callback) */
|
|
23
|
+
forkOptions?: ForkOptions;
|
|
22
24
|
}
|
|
23
25
|
export declare class ImportGitHubRepositoryUseCase {
|
|
24
26
|
private readonly gitHubService;
|
|
25
27
|
private readonly repositoryRepo;
|
|
26
28
|
private readonly addRepositoryUseCase;
|
|
27
|
-
|
|
29
|
+
private readonly gitPrService;
|
|
30
|
+
constructor(gitHubService: IGitHubRepositoryService, repositoryRepo: IRepositoryRepository, addRepositoryUseCase: AddRepositoryUseCase, gitPrService: IGitPrService);
|
|
28
31
|
execute(input: ImportGitHubRepositoryInput): Promise<Repository>;
|
|
32
|
+
/**
|
|
33
|
+
* Direct clone path — user has push access to the repository.
|
|
34
|
+
*/
|
|
35
|
+
private cloneDirect;
|
|
36
|
+
/**
|
|
37
|
+
* Fork-and-clone path — user lacks push access, so we auto-fork first.
|
|
38
|
+
*/
|
|
39
|
+
private forkAndClone;
|
|
29
40
|
private resolveDestination;
|
|
30
41
|
}
|
|
31
42
|
//# sourceMappingURL=import-github-repository.use-case.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-github-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/import-github-repository.use-case.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"import-github-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/import-github-repository.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EACV,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACZ,MAAM,oEAAoE,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAC7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAKpE,MAAM,WAAW,2BAA2B;IAC1C,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAUD,qBACa,6BAA6B;IAGtC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAErC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,aAAa,EAAE,wBAAwB,EAEvC,cAAc,EAAE,qBAAqB,EAErC,oBAAoB,EAAE,oBAAoB,EAE1C,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCtE;;OAEG;YACW,WAAW;IAsBzB;;OAEG;YACW,YAAY;IAqD1B,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Import GitHub Repository Use Case
|
|
3
3
|
*
|
|
4
4
|
* Orchestrates importing a GitHub repository: validates the URL, checks auth,
|
|
5
|
-
* detects duplicates by remoteUrl,
|
|
6
|
-
*
|
|
7
|
-
* repository record with the normalized remoteUrl.
|
|
5
|
+
* detects duplicates by remoteUrl/upstreamUrl, checks push access, and either
|
|
6
|
+
* clones directly or auto-forks when the user lacks push access.
|
|
8
7
|
*/
|
|
9
8
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
10
9
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -22,6 +21,8 @@ import { injectable, inject } from 'tsyringe';
|
|
|
22
21
|
import { homedir } from 'node:os';
|
|
23
22
|
import { join } from 'node:path';
|
|
24
23
|
import { AddRepositoryUseCase } from './add-repository.use-case.js';
|
|
24
|
+
/** Name of the git remote used to track the original upstream repo of a fork. */
|
|
25
|
+
const UPSTREAM_REMOTE_NAME = 'upstream';
|
|
25
26
|
/**
|
|
26
27
|
* Normalizes a GitHub remote URL for storage and duplicate detection.
|
|
27
28
|
* Lowercases and strips trailing .git suffix.
|
|
@@ -33,10 +34,12 @@ let ImportGitHubRepositoryUseCase = class ImportGitHubRepositoryUseCase {
|
|
|
33
34
|
gitHubService;
|
|
34
35
|
repositoryRepo;
|
|
35
36
|
addRepositoryUseCase;
|
|
36
|
-
|
|
37
|
+
gitPrService;
|
|
38
|
+
constructor(gitHubService, repositoryRepo, addRepositoryUseCase, gitPrService) {
|
|
37
39
|
this.gitHubService = gitHubService;
|
|
38
40
|
this.repositoryRepo = repositoryRepo;
|
|
39
41
|
this.addRepositoryUseCase = addRepositoryUseCase;
|
|
42
|
+
this.gitPrService = gitPrService;
|
|
40
43
|
}
|
|
41
44
|
async execute(input) {
|
|
42
45
|
// 1. Validate URL — throws GitHubUrlParseError for invalid formats
|
|
@@ -48,32 +51,81 @@ let ImportGitHubRepositoryUseCase = class ImportGitHubRepositoryUseCase {
|
|
|
48
51
|
if (existing) {
|
|
49
52
|
return existing;
|
|
50
53
|
}
|
|
54
|
+
// 3b. Check for duplicate by upstreamUrl (fork of this repo already imported)
|
|
55
|
+
const existingFork = await this.repositoryRepo.findByUpstreamUrl(normalizedUrl);
|
|
56
|
+
if (existingFork) {
|
|
57
|
+
return existingFork;
|
|
58
|
+
}
|
|
51
59
|
// 4. Check auth — throws GitHubAuthError if not authenticated
|
|
52
60
|
await this.gitHubService.checkAuth();
|
|
53
|
-
// 5.
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
// 5. Check push access to determine if we need to fork
|
|
62
|
+
const { hasPushAccess } = await this.gitHubService.checkPushAccess(parsed.nameWithOwner);
|
|
63
|
+
if (hasPushAccess) {
|
|
64
|
+
return this.cloneDirect(input, parsed.nameWithOwner, parsed.repo, normalizedUrl);
|
|
65
|
+
}
|
|
66
|
+
return this.forkAndClone(input, parsed.nameWithOwner, parsed.repo, normalizedUrl);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Direct clone path — user has push access to the repository.
|
|
70
|
+
*/
|
|
71
|
+
async cloneDirect(input, nameWithOwner, repoName, normalizedUrl) {
|
|
72
|
+
const destination = this.resolveDestination(input, repoName);
|
|
73
|
+
await this.gitHubService.cloneRepository(nameWithOwner, destination, input.cloneOptions);
|
|
58
74
|
const repository = await this.addRepositoryUseCase.execute({
|
|
59
75
|
path: destination,
|
|
60
|
-
name:
|
|
76
|
+
name: repoName,
|
|
61
77
|
});
|
|
62
|
-
// 8. Update with normalized remoteUrl
|
|
63
78
|
await this.repositoryRepo.update(repository.id, {
|
|
64
79
|
remoteUrl: normalizedUrl,
|
|
65
80
|
});
|
|
66
81
|
return { ...repository, remoteUrl: normalizedUrl };
|
|
67
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Fork-and-clone path — user lacks push access, so we auto-fork first.
|
|
85
|
+
*/
|
|
86
|
+
async forkAndClone(input, originalNameWithOwner, repoName, normalizedOriginalUrl) {
|
|
87
|
+
// Fork the repository
|
|
88
|
+
const forkResult = await this.gitHubService.forkRepository(originalNameWithOwner, input.forkOptions);
|
|
89
|
+
// Check if fork was already tracked
|
|
90
|
+
const normalizedForkUrl = normalizeRemoteUrl(forkResult.nameWithOwner);
|
|
91
|
+
const existingForkByRemote = await this.repositoryRepo.findByRemoteUrl(normalizedForkUrl);
|
|
92
|
+
if (existingForkByRemote) {
|
|
93
|
+
return existingForkByRemote;
|
|
94
|
+
}
|
|
95
|
+
// Clone the fork
|
|
96
|
+
const destination = this.resolveDestination(input, repoName);
|
|
97
|
+
await this.gitHubService.cloneRepository(forkResult.nameWithOwner, destination, input.cloneOptions);
|
|
98
|
+
// Configure the upstream remote so users can `git fetch upstream` / sync
|
|
99
|
+
// with the original repo. Without this, the fork has no knowledge of its
|
|
100
|
+
// upstream — breaking PR workflows that rely on upstream as the merge base.
|
|
101
|
+
await this.gitPrService.addRemote(destination, UPSTREAM_REMOTE_NAME, normalizedOriginalUrl);
|
|
102
|
+
// Register the cloned fork
|
|
103
|
+
const repository = await this.addRepositoryUseCase.execute({
|
|
104
|
+
path: destination,
|
|
105
|
+
name: repoName,
|
|
106
|
+
});
|
|
107
|
+
// Update with fork metadata
|
|
108
|
+
await this.repositoryRepo.update(repository.id, {
|
|
109
|
+
remoteUrl: normalizedForkUrl,
|
|
110
|
+
isFork: true,
|
|
111
|
+
upstreamUrl: normalizedOriginalUrl,
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
...repository,
|
|
115
|
+
remoteUrl: normalizedForkUrl,
|
|
116
|
+
isFork: true,
|
|
117
|
+
upstreamUrl: normalizedOriginalUrl,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
68
120
|
resolveDestination(input, repoName) {
|
|
69
121
|
if (input.dest) {
|
|
70
|
-
return input.dest;
|
|
122
|
+
return normalizePath(input.dest);
|
|
71
123
|
}
|
|
72
124
|
let baseDir = input.defaultCloneDir ?? join(homedir(), 'repos');
|
|
73
125
|
if (baseDir.startsWith('~/')) {
|
|
74
126
|
baseDir = join(homedir(), baseDir.slice(2));
|
|
75
127
|
}
|
|
76
|
-
return join(baseDir, repoName);
|
|
128
|
+
return normalizePath(join(baseDir, repoName));
|
|
77
129
|
}
|
|
78
130
|
};
|
|
79
131
|
ImportGitHubRepositoryUseCase = __decorate([
|
|
@@ -81,6 +133,16 @@ ImportGitHubRepositoryUseCase = __decorate([
|
|
|
81
133
|
__param(0, inject('IGitHubRepositoryService')),
|
|
82
134
|
__param(1, inject('IRepositoryRepository')),
|
|
83
135
|
__param(2, inject(AddRepositoryUseCase)),
|
|
84
|
-
|
|
136
|
+
__param(3, inject('IGitPrService')),
|
|
137
|
+
__metadata("design:paramtypes", [Object, Object, AddRepositoryUseCase, Object])
|
|
85
138
|
], ImportGitHubRepositoryUseCase);
|
|
86
139
|
export { ImportGitHubRepositoryUseCase };
|
|
140
|
+
/**
|
|
141
|
+
* Normalizes a filesystem path to use forward slashes.
|
|
142
|
+
*
|
|
143
|
+
* Per packages/CLAUDE.md, all paths stored in the database MUST use forward
|
|
144
|
+
* slashes so that Windows and POSIX callers resolve/compare identically.
|
|
145
|
+
*/
|
|
146
|
+
function normalizePath(p) {
|
|
147
|
+
return p.replace(/\\/g, '/');
|
|
148
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Remote Repository Use Case
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates creating a GitHub repository from a local repo that has
|
|
5
|
+
* no remote yet. Uses `gh repo create` with `--source=.` to create the
|
|
6
|
+
* remote repo, configure the origin remote, and push the current branch.
|
|
7
|
+
*/
|
|
8
|
+
import { type IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
|
|
9
|
+
export interface InitRemoteRepositoryInput {
|
|
10
|
+
/** Working directory of the local repository */
|
|
11
|
+
cwd: string;
|
|
12
|
+
/** Repository name (defaults to directory basename) */
|
|
13
|
+
name?: string;
|
|
14
|
+
/** Whether to create a private repository (default: true) */
|
|
15
|
+
isPrivate?: boolean;
|
|
16
|
+
/** GitHub organization to create the repo under */
|
|
17
|
+
org?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface InitRemoteRepositoryResult {
|
|
20
|
+
/** URL of the created GitHub repository */
|
|
21
|
+
url: string;
|
|
22
|
+
/** Name used for the repository */
|
|
23
|
+
name: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class InitRemoteRepositoryUseCase {
|
|
26
|
+
private readonly gitPrService;
|
|
27
|
+
constructor(gitPrService: IGitPrService);
|
|
28
|
+
execute(input: InitRemoteRepositoryInput): Promise<InitRemoteRepositoryResult>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=init-remote-repository.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-remote-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,yDAAyD,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACxC,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBACa,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAuBrF"}
|
package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Remote Repository Use Case
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates creating a GitHub repository from a local repo that has
|
|
5
|
+
* no remote yet. Uses `gh repo create` with `--source=.` to create the
|
|
6
|
+
* remote repo, configure the origin remote, and push the current branch.
|
|
7
|
+
*/
|
|
8
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
16
|
+
};
|
|
17
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
18
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
19
|
+
};
|
|
20
|
+
import { injectable, inject } from 'tsyringe';
|
|
21
|
+
import { basename } from 'node:path';
|
|
22
|
+
import { GitPrError, GitPrErrorCode, } from '../../ports/output/services/git-pr-service.interface.js';
|
|
23
|
+
let InitRemoteRepositoryUseCase = class InitRemoteRepositoryUseCase {
|
|
24
|
+
gitPrService;
|
|
25
|
+
constructor(gitPrService) {
|
|
26
|
+
this.gitPrService = gitPrService;
|
|
27
|
+
}
|
|
28
|
+
async execute(input) {
|
|
29
|
+
// 1. Guard: check if the repo already has a remote
|
|
30
|
+
const hasRemote = await this.gitPrService.hasRemote(input.cwd);
|
|
31
|
+
if (hasRemote) {
|
|
32
|
+
const existingUrl = await this.gitPrService.getRemoteUrl(input.cwd);
|
|
33
|
+
throw new GitPrError(`Repository already has a remote configured${existingUrl ? ` (${existingUrl})` : ''}. ` +
|
|
34
|
+
'Use `git remote set-url origin <url>` to change it.', GitPrErrorCode.REMOTE_ALREADY_EXISTS);
|
|
35
|
+
}
|
|
36
|
+
// 2. Derive repo name from directory if not provided
|
|
37
|
+
const name = input.name ?? basename(input.cwd);
|
|
38
|
+
// 3. Create the GitHub repo (also adds origin remote and pushes)
|
|
39
|
+
const url = await this.gitPrService.createGitHubRepo(input.cwd, name, {
|
|
40
|
+
isPrivate: input.isPrivate ?? true,
|
|
41
|
+
org: input.org,
|
|
42
|
+
});
|
|
43
|
+
return { url, name };
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
InitRemoteRepositoryUseCase = __decorate([
|
|
47
|
+
injectable(),
|
|
48
|
+
__param(0, inject('IGitPrService')),
|
|
49
|
+
__metadata("design:paramtypes", [Object])
|
|
50
|
+
], InitRemoteRepositoryUseCase);
|
|
51
|
+
export { InitRemoteRepositoryUseCase };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enforce Security Use Case
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full security enforcement flow:
|
|
5
|
+
* 1. Evaluate effective policy
|
|
6
|
+
* 2. Run dependency-risk checks
|
|
7
|
+
* 3. Run release-integrity checks
|
|
8
|
+
* 4. Persist findings as security events
|
|
9
|
+
* 5. Return structured enforcement result
|
|
10
|
+
*
|
|
11
|
+
* Supports Advisory (always pass) and Enforce (fail on violations) modes.
|
|
12
|
+
* Disabled mode returns empty pass result.
|
|
13
|
+
*/
|
|
14
|
+
import { SecurityMode } from '../../../domain/generated/output.js';
|
|
15
|
+
import type { EffectivePolicySnapshot, DependencyFinding, ReleaseIntegrityResult } from '../../../domain/generated/output.js';
|
|
16
|
+
import type { ISecurityPolicyService } from '../../ports/output/services/security-policy-service.interface.js';
|
|
17
|
+
import type { ISecurityEventRepository } from '../../ports/output/repositories/security-event.repository.interface.js';
|
|
18
|
+
import type { ISettingsRepository } from '../../ports/output/repositories/settings.repository.interface.js';
|
|
19
|
+
import type { IGitHubRepositoryService, GovernanceFinding } from '../../ports/output/services/github-repository-service.interface.js';
|
|
20
|
+
import { DependencyRiskEvaluator } from '../../../infrastructure/services/security/dependency-risk-evaluator.js';
|
|
21
|
+
import { ReleaseIntegrityEvaluator } from '../../../infrastructure/services/security/release-integrity-evaluator.js';
|
|
22
|
+
/**
|
|
23
|
+
* Input for the enforce security use case.
|
|
24
|
+
*/
|
|
25
|
+
export interface EnforceSecurityInput {
|
|
26
|
+
/** Absolute path to the repository to evaluate */
|
|
27
|
+
repositoryPath: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Result of the enforcement flow.
|
|
31
|
+
*/
|
|
32
|
+
export interface EnforceSecurityResult {
|
|
33
|
+
/** Whether all checks passed (Advisory always passes, Enforce fails on violations) */
|
|
34
|
+
passed: boolean;
|
|
35
|
+
/** Effective security mode used for evaluation */
|
|
36
|
+
mode: SecurityMode;
|
|
37
|
+
/** Effective policy snapshot */
|
|
38
|
+
policy: EffectivePolicySnapshot;
|
|
39
|
+
/** Dependency risk findings */
|
|
40
|
+
dependencyFindings: DependencyFinding[];
|
|
41
|
+
/** Release integrity result */
|
|
42
|
+
releaseIntegrity: ReleaseIntegrityResult;
|
|
43
|
+
/** GitHub governance audit findings (audit-only, do not affect pass/fail) */
|
|
44
|
+
governanceFindings: GovernanceFinding[];
|
|
45
|
+
/** Total number of findings (excludes governance — governance is audit-only) */
|
|
46
|
+
totalFindings: number;
|
|
47
|
+
}
|
|
48
|
+
export declare class EnforceSecurityUseCase {
|
|
49
|
+
private readonly policyService;
|
|
50
|
+
private readonly eventRepository;
|
|
51
|
+
private readonly settingsRepository;
|
|
52
|
+
private readonly dependencyEvaluator;
|
|
53
|
+
private readonly releaseEvaluator;
|
|
54
|
+
private readonly githubService;
|
|
55
|
+
constructor(policyService: ISecurityPolicyService, eventRepository: ISecurityEventRepository, settingsRepository: ISettingsRepository, dependencyEvaluator: DependencyRiskEvaluator, releaseEvaluator: ReleaseIntegrityEvaluator, githubService: IGitHubRepositoryService);
|
|
56
|
+
execute(input: EnforceSecurityInput): Promise<EnforceSecurityResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Resolve GitHub owner/repo from the repository's git remote and run governance audit.
|
|
59
|
+
* Returns empty array if the remote cannot be resolved (not a GitHub repo, no remote, etc.).
|
|
60
|
+
*/
|
|
61
|
+
private runGovernanceAudit;
|
|
62
|
+
/**
|
|
63
|
+
* Persist dependency findings, failed release checks, and governance findings as security events.
|
|
64
|
+
*/
|
|
65
|
+
private persistFindings;
|
|
66
|
+
/**
|
|
67
|
+
* Update settings with the latest evaluation timestamp and policy source.
|
|
68
|
+
*/
|
|
69
|
+
private updateEvaluationTimestamp;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=enforce-security.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforce-security.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/security/enforce-security.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,YAAY,EAA0B,MAAM,qCAAqC,CAAC;AAC3F,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EAIvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wEAAwE,CAAC;AACvH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wEAAwE,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAOrH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sFAAsF;IACtF,MAAM,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,+BAA+B;IAC/B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,+BAA+B;IAC/B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,6EAA6E;IAC7E,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;CACvB;AAuBD,qBACa,sBAAsB;IAG/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAVb,aAAa,EAAE,sBAAsB,EAErC,eAAe,EAAE,wBAAwB,EAEzC,kBAAkB,EAAE,mBAAmB,EAEvC,mBAAmB,EAAE,uBAAuB,EAE5C,gBAAgB,EAAE,yBAAyB,EAE3C,aAAa,EAAE,wBAAwB;IAGpD,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8D1E;;;OAGG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,eAAe;IA6D7B;;OAEG;YACW,yBAAyB;CAgBxC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enforce Security Use Case
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full security enforcement flow:
|
|
5
|
+
* 1. Evaluate effective policy
|
|
6
|
+
* 2. Run dependency-risk checks
|
|
7
|
+
* 3. Run release-integrity checks
|
|
8
|
+
* 4. Persist findings as security events
|
|
9
|
+
* 5. Return structured enforcement result
|
|
10
|
+
*
|
|
11
|
+
* Supports Advisory (always pass) and Enforce (fail on violations) modes.
|
|
12
|
+
* Disabled mode returns empty pass result.
|
|
13
|
+
*/
|
|
14
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
15
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
16
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
17
|
+
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;
|
|
18
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
+
};
|
|
20
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
21
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
22
|
+
};
|
|
23
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
24
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
25
|
+
};
|
|
26
|
+
import { injectable, inject } from 'tsyringe';
|
|
27
|
+
import { SecurityMode, SecurityActionCategory } from '../../../domain/generated/output.js';
|
|
28
|
+
import { DependencyRiskEvaluator } from '../../../infrastructure/services/security/dependency-risk-evaluator.js';
|
|
29
|
+
import { ReleaseIntegrityEvaluator } from '../../../infrastructure/services/security/release-integrity-evaluator.js';
|
|
30
|
+
import { randomUUID } from 'node:crypto';
|
|
31
|
+
import { execFile as execFileCb } from 'node:child_process';
|
|
32
|
+
import { promisify } from 'node:util';
|
|
33
|
+
const execFileAsync = promisify(execFileCb);
|
|
34
|
+
/**
|
|
35
|
+
* Default dependency rules when no policy file defines them.
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_DEPENDENCY_RULES = {
|
|
38
|
+
checkLockfileConsistency: true,
|
|
39
|
+
checkLifecycleScripts: true,
|
|
40
|
+
checkNonRegistrySource: true,
|
|
41
|
+
enforceStrictVersionRanges: false,
|
|
42
|
+
allowlist: [],
|
|
43
|
+
denylist: [],
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Default release rules when no policy file defines them.
|
|
47
|
+
*/
|
|
48
|
+
const DEFAULT_RELEASE_RULES = {
|
|
49
|
+
requireCiOnlyPublishing: true,
|
|
50
|
+
requireProvenance: true,
|
|
51
|
+
checkWorkflowIntegrity: true,
|
|
52
|
+
};
|
|
53
|
+
let EnforceSecurityUseCase = class EnforceSecurityUseCase {
|
|
54
|
+
policyService;
|
|
55
|
+
eventRepository;
|
|
56
|
+
settingsRepository;
|
|
57
|
+
dependencyEvaluator;
|
|
58
|
+
releaseEvaluator;
|
|
59
|
+
githubService;
|
|
60
|
+
constructor(policyService, eventRepository, settingsRepository, dependencyEvaluator, releaseEvaluator, githubService) {
|
|
61
|
+
this.policyService = policyService;
|
|
62
|
+
this.eventRepository = eventRepository;
|
|
63
|
+
this.settingsRepository = settingsRepository;
|
|
64
|
+
this.dependencyEvaluator = dependencyEvaluator;
|
|
65
|
+
this.releaseEvaluator = releaseEvaluator;
|
|
66
|
+
this.githubService = githubService;
|
|
67
|
+
}
|
|
68
|
+
async execute(input) {
|
|
69
|
+
// Evaluate effective policy
|
|
70
|
+
const policy = await this.policyService.evaluatePolicy(input.repositoryPath);
|
|
71
|
+
// Disabled mode — return empty pass result
|
|
72
|
+
if (policy.mode === SecurityMode.Disabled) {
|
|
73
|
+
return {
|
|
74
|
+
passed: true,
|
|
75
|
+
mode: SecurityMode.Disabled,
|
|
76
|
+
policy,
|
|
77
|
+
dependencyFindings: [],
|
|
78
|
+
releaseIntegrity: { checks: [], passed: true },
|
|
79
|
+
governanceFindings: [],
|
|
80
|
+
totalFindings: 0,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Run dependency-risk checks
|
|
84
|
+
const dependencyFindings = this.dependencyEvaluator.evaluate(input.repositoryPath, DEFAULT_DEPENDENCY_RULES);
|
|
85
|
+
// Run release-integrity checks
|
|
86
|
+
const releaseIntegrity = this.releaseEvaluator.evaluate(input.repositoryPath, DEFAULT_RELEASE_RULES);
|
|
87
|
+
// Run governance audit (audit-only — does not affect pass/fail)
|
|
88
|
+
const governanceFindings = await this.runGovernanceAudit(input.repositoryPath);
|
|
89
|
+
// Count total findings (governance excluded — audit-only per FR-15)
|
|
90
|
+
const failedReleaseChecks = releaseIntegrity.checks.filter((c) => !c.passed);
|
|
91
|
+
const totalFindings = dependencyFindings.length + failedReleaseChecks.length;
|
|
92
|
+
// Persist findings as security events
|
|
93
|
+
await this.persistFindings(input.repositoryPath, dependencyFindings, releaseIntegrity, governanceFindings);
|
|
94
|
+
// Update settings with evaluation timestamp
|
|
95
|
+
await this.updateEvaluationTimestamp(policy.source);
|
|
96
|
+
// Determine pass/fail based on mode (governance is always advisory)
|
|
97
|
+
const hasFailures = totalFindings > 0;
|
|
98
|
+
const passed = policy.mode === SecurityMode.Advisory ? true : !hasFailures;
|
|
99
|
+
return {
|
|
100
|
+
passed,
|
|
101
|
+
mode: policy.mode,
|
|
102
|
+
policy,
|
|
103
|
+
dependencyFindings,
|
|
104
|
+
releaseIntegrity,
|
|
105
|
+
governanceFindings,
|
|
106
|
+
totalFindings,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Resolve GitHub owner/repo from the repository's git remote and run governance audit.
|
|
111
|
+
* Returns empty array if the remote cannot be resolved (not a GitHub repo, no remote, etc.).
|
|
112
|
+
*/
|
|
113
|
+
async runGovernanceAudit(repositoryPath) {
|
|
114
|
+
try {
|
|
115
|
+
const { stdout } = await execFileAsync('git', ['remote', 'get-url', 'origin'], {
|
|
116
|
+
cwd: repositoryPath,
|
|
117
|
+
});
|
|
118
|
+
const remoteUrl = stdout.trim();
|
|
119
|
+
if (!remoteUrl)
|
|
120
|
+
return [];
|
|
121
|
+
const parsed = this.githubService.parseGitHubUrl(remoteUrl);
|
|
122
|
+
return await this.githubService.auditRepositoryGovernance(parsed.owner, parsed.repo);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Not a GitHub repository, no remote configured, or parse failure — skip governance audit
|
|
126
|
+
return [];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Persist dependency findings, failed release checks, and governance findings as security events.
|
|
131
|
+
*/
|
|
132
|
+
async persistFindings(repositoryPath, depFindings, releaseResult, govFindings) {
|
|
133
|
+
const now = new Date().toISOString();
|
|
134
|
+
for (const finding of depFindings) {
|
|
135
|
+
const event = {
|
|
136
|
+
id: randomUUID(),
|
|
137
|
+
repositoryPath,
|
|
138
|
+
severity: finding.severity,
|
|
139
|
+
category: SecurityActionCategory.DependencyInstall,
|
|
140
|
+
disposition: 'Denied',
|
|
141
|
+
message: finding.message,
|
|
142
|
+
remediationSummary: finding.remediation,
|
|
143
|
+
createdAt: now,
|
|
144
|
+
updatedAt: now,
|
|
145
|
+
};
|
|
146
|
+
await this.eventRepository.save(event);
|
|
147
|
+
}
|
|
148
|
+
for (const check of releaseResult.checks) {
|
|
149
|
+
if (!check.passed) {
|
|
150
|
+
const event = {
|
|
151
|
+
id: randomUUID(),
|
|
152
|
+
repositoryPath,
|
|
153
|
+
severity: check.severity,
|
|
154
|
+
category: SecurityActionCategory.PublishRelease,
|
|
155
|
+
disposition: 'Denied',
|
|
156
|
+
message: check.message,
|
|
157
|
+
createdAt: now,
|
|
158
|
+
updatedAt: now,
|
|
159
|
+
};
|
|
160
|
+
await this.eventRepository.save(event);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Persist governance findings as advisory events
|
|
164
|
+
for (const finding of govFindings) {
|
|
165
|
+
// Map governance severity to SecuritySeverity (Unknown → Low for persistence)
|
|
166
|
+
const severity = finding.severity === 'Unknown'
|
|
167
|
+
? 'Low'
|
|
168
|
+
: finding.severity;
|
|
169
|
+
const event = {
|
|
170
|
+
id: randomUUID(),
|
|
171
|
+
repositoryPath,
|
|
172
|
+
severity,
|
|
173
|
+
category: SecurityActionCategory.CiWorkflowModify,
|
|
174
|
+
disposition: 'Allowed',
|
|
175
|
+
message: `[Governance Audit] ${finding.message}`,
|
|
176
|
+
remediationSummary: finding.remediation,
|
|
177
|
+
createdAt: now,
|
|
178
|
+
updatedAt: now,
|
|
179
|
+
};
|
|
180
|
+
await this.eventRepository.save(event);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Update settings with the latest evaluation timestamp and policy source.
|
|
185
|
+
*/
|
|
186
|
+
async updateEvaluationTimestamp(policySource) {
|
|
187
|
+
try {
|
|
188
|
+
const settings = await this.settingsRepository.load();
|
|
189
|
+
if (settings) {
|
|
190
|
+
settings.security = {
|
|
191
|
+
...settings.security,
|
|
192
|
+
mode: settings.security?.mode ?? SecurityMode.Advisory,
|
|
193
|
+
lastEvaluationAt: new Date().toISOString(),
|
|
194
|
+
policySource,
|
|
195
|
+
};
|
|
196
|
+
await this.settingsRepository.update(settings);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Non-fatal — evaluation results are still returned even if settings update fails
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
EnforceSecurityUseCase = __decorate([
|
|
205
|
+
injectable(),
|
|
206
|
+
__param(0, inject('ISecurityPolicyService')),
|
|
207
|
+
__param(1, inject('ISecurityEventRepository')),
|
|
208
|
+
__param(2, inject('ISettingsRepository')),
|
|
209
|
+
__param(3, inject('DependencyRiskEvaluator')),
|
|
210
|
+
__param(4, inject('ReleaseIntegrityEvaluator')),
|
|
211
|
+
__param(5, inject('IGitHubRepositoryService')),
|
|
212
|
+
__metadata("design:paramtypes", [Object, Object, Object, DependencyRiskEvaluator,
|
|
213
|
+
ReleaseIntegrityEvaluator, Object])
|
|
214
|
+
], EnforceSecurityUseCase);
|
|
215
|
+
export { EnforceSecurityUseCase };
|
package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluate Security Policy Use Case
|
|
3
|
+
*
|
|
4
|
+
* Wraps ISecurityPolicyService.evaluatePolicy() as a use case.
|
|
5
|
+
* Updates settings with the latest evaluation timestamp and policy source.
|
|
6
|
+
* Returns the effective policy snapshot.
|
|
7
|
+
*/
|
|
8
|
+
import type { EffectivePolicySnapshot } from '../../../domain/generated/output.js';
|
|
9
|
+
import type { ISecurityPolicyService } from '../../ports/output/services/security-policy-service.interface.js';
|
|
10
|
+
import type { ISettingsRepository } from '../../ports/output/repositories/settings.repository.interface.js';
|
|
11
|
+
/**
|
|
12
|
+
* Input for the evaluate security policy use case.
|
|
13
|
+
*/
|
|
14
|
+
export interface EvaluateSecurityPolicyInput {
|
|
15
|
+
/** Absolute path to the repository to evaluate */
|
|
16
|
+
repositoryPath: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class EvaluateSecurityPolicyUseCase {
|
|
19
|
+
private readonly policyService;
|
|
20
|
+
private readonly settingsRepository;
|
|
21
|
+
constructor(policyService: ISecurityPolicyService, settingsRepository: ISettingsRepository);
|
|
22
|
+
execute(input: EvaluateSecurityPolicyInput): Promise<EffectivePolicySnapshot>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=evaluate-security-policy.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-security-policy.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAE5G;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBACa,6BAA6B;IAGtC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAFlB,aAAa,EAAE,sBAAsB,EAErC,kBAAkB,EAAE,mBAAmB;IAGpD,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqBpF"}
|
package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluate Security Policy Use Case
|
|
3
|
+
*
|
|
4
|
+
* Wraps ISecurityPolicyService.evaluatePolicy() as a use case.
|
|
5
|
+
* Updates settings with the latest evaluation timestamp and policy source.
|
|
6
|
+
* Returns the effective policy snapshot.
|
|
7
|
+
*/
|
|
8
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
16
|
+
};
|
|
17
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
18
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
19
|
+
};
|
|
20
|
+
import { injectable, inject } from 'tsyringe';
|
|
21
|
+
import { SecurityMode } from '../../../domain/generated/output.js';
|
|
22
|
+
let EvaluateSecurityPolicyUseCase = class EvaluateSecurityPolicyUseCase {
|
|
23
|
+
policyService;
|
|
24
|
+
settingsRepository;
|
|
25
|
+
constructor(policyService, settingsRepository) {
|
|
26
|
+
this.policyService = policyService;
|
|
27
|
+
this.settingsRepository = settingsRepository;
|
|
28
|
+
}
|
|
29
|
+
async execute(input) {
|
|
30
|
+
const policy = await this.policyService.evaluatePolicy(input.repositoryPath);
|
|
31
|
+
// Update settings with evaluation timestamp and source
|
|
32
|
+
try {
|
|
33
|
+
const settings = await this.settingsRepository.load();
|
|
34
|
+
if (settings) {
|
|
35
|
+
settings.security = {
|
|
36
|
+
...settings.security,
|
|
37
|
+
mode: settings.security?.mode ?? SecurityMode.Advisory,
|
|
38
|
+
lastEvaluationAt: new Date().toISOString(),
|
|
39
|
+
policySource: policy.source,
|
|
40
|
+
};
|
|
41
|
+
await this.settingsRepository.update(settings);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Non-fatal — policy is still returned even if settings update fails
|
|
46
|
+
}
|
|
47
|
+
return policy;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
EvaluateSecurityPolicyUseCase = __decorate([
|
|
51
|
+
injectable(),
|
|
52
|
+
__param(0, inject('ISecurityPolicyService')),
|
|
53
|
+
__param(1, inject('ISettingsRepository')),
|
|
54
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
55
|
+
], EvaluateSecurityPolicyUseCase);
|
|
56
|
+
export { EvaluateSecurityPolicyUseCase };
|