@shepai/cli 1.170.0-pr513.cff27cb → 1.171.0-pr527.e2ee839
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/Feature.yaml +5 -17
- 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/SdlcLifecycle.yaml +0 -1
- 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/apis/json-schema/WorkflowConfig.yaml +5 -10
- 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 +4 -2
- 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 +14 -4
- 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 +4 -2
- 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 +4 -2
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +2 -3
- 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 +4 -2
- 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 +8 -18
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -3
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +0 -13
- 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 +4 -2
- 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 +5 -5
- 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/application/use-cases/upgrade/upgrade-cli.use-case.d.ts +1 -0
- package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.js +59 -2
- 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 -3
- package/dist/packages/core/src/domain/generated/output.d.ts +263 -22
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +43 -7
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts +6 -21
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
- package/dist/packages/core/src/domain/lifecycle-gates.js +6 -25
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +57 -5
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -3
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -10
- 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 -2
- 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 +16 -7
- 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/repositories/sqlite-feature.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +3 -5
- 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 -6
- 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 -20
- 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 -68
- 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 +4 -2
- 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 +9 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +4 -2
- 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 +39 -19
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +0 -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 -1
- 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 -5
- 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 +6 -13
- 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 +2 -1
- 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 +65 -7
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/index.js +1 -5
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +5 -18
- 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/commands/upgrade.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/upgrade.command.js +68 -3
- package/dist/src/presentation/cli/index.js +2 -0
- package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -3
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +3 -3
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +1 -2
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +1 -2
- 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/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +0 -1
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +2 -4
- 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 +4 -4
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +0 -3
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -65
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -3
- 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 +11 -15
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -6
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +4 -16
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +0 -2
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +4 -6
- 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-state-config.js +0 -12
- 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 +3 -7
- 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 +22 -9
- 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/components/features/settings/workflow-settings-section.stories.js +3 -3
- package/dist/translations/ar/cli.json +22 -24
- package/dist/translations/ar/web.json +45 -7
- package/dist/translations/de/cli.json +22 -24
- package/dist/translations/de/web.json +45 -7
- package/dist/translations/en/cli.json +22 -24
- package/dist/translations/en/web.json +45 -7
- package/dist/translations/es/cli.json +22 -24
- package/dist/translations/es/web.json +45 -7
- package/dist/translations/fr/cli.json +22 -24
- package/dist/translations/fr/web.json +45 -7
- package/dist/translations/he/cli.json +22 -24
- package/dist/translations/he/web.json +45 -7
- package/dist/translations/pt/cli.json +22 -24
- package/dist/translations/pt/web.json +45 -7
- package/dist/translations/ru/cli.json +22 -24
- package/dist/translations/ru/web.json +45 -7
- 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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- 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 +76 -121
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- 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 +76 -121
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- 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 +76 -121
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
- 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 +76 -121
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
- 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/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.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 +3 -3
- 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]__4ed9b909._.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]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.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]__9a9cb046._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9a9cb046._.js.map +1 -0
- 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/[root-of-the-server]__c1262d08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_02580450._.js +3 -0
- package/web/.next/server/chunks/ssr/_02580450._.js.map +1 -0
- 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/_1594e369._.js +9 -0
- package/web/.next/server/chunks/ssr/_1594e369._.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/_21d37090._.js +3 -0
- package/web/.next/server/chunks/ssr/_21d37090._.js.map +1 -0
- 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/_5119a3df._.js +1 -1
- package/web/.next/server/chunks/ssr/_5119a3df._.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/{_0fd635d7._.js → _767748d2._.js} +2 -2
- package/web/.next/server/chunks/ssr/_767748d2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
- package/web/.next/server/chunks/ssr/{_34d897da._.js → _ee42a212._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_34d897da._.js.map → _ee42a212._.js.map} +1 -1
- 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 +226 -319
- package/web/.next/static/chunks/051873309d87fb45.css +1 -0
- package/web/.next/static/chunks/{52681a7f14138e48.js → 16fa4d3877c28fe2.js} +1 -1
- package/web/.next/static/chunks/23d80bb760e7dc4c.js +1 -0
- package/web/.next/static/chunks/30a0ba9015f94405.js +7 -0
- package/web/.next/static/chunks/{0f30a983f3467cd5.js → 39f6ad3f9005703a.js} +1 -1
- package/web/.next/static/chunks/3aba9d2242420cb5.js +1 -0
- package/web/.next/static/chunks/{d5bf9c963b5346e1.js → 7a6f56f37aaa17ea.js} +1 -1
- package/web/.next/static/chunks/{09a25231e5fc1ab8.js → 7e05e7e25220ee9a.js} +1 -1
- package/web/.next/static/chunks/{4219ddfde68a6d0b.js → 89dd90bf14488ec0.js} +1 -1
- package/web/.next/static/chunks/{e93ae5725b0babeb.js → 9374d251360e808b.js} +1 -1
- package/web/.next/static/chunks/{fc595d95626ac9bb.js → 9423dc2310202fda.js} +1 -1
- package/web/.next/static/chunks/a794cf7a1a5648dd.js +1 -0
- package/web/.next/static/chunks/{37f9543560c58ea6.js → a8edb9423086e83f.js} +1 -1
- package/web/.next/static/chunks/ae81796726a9bba3.js +1 -0
- package/web/.next/static/chunks/{9a78b4c5dcd28196.js → b9c62932ed987239.js} +2 -2
- package/web/.next/static/chunks/{478adf5d5156f002.js → d1c3e0ee8e788c87.js} +1 -1
- package/web/.next/static/chunks/e8c3c12f92e9a521.js +5 -0
- package/web/.next/static/chunks/f3d5e0ae13def35a.js +1 -0
- package/web/.next/static/chunks/{2a9af061f4fbe7f5.js → fb8dadb64c0ffc6b.js} +1 -1
- package/web/.next/static/chunks/fd232b88b5b50b2e.js +1 -0
- package/apis/json-schema/FeatureMode.yaml +0 -8
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts +0 -40
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.js +0 -125
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts +0 -19
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.js +0 -46
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts +0 -17
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.js +0 -37
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.js +0 -17
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts +0 -362
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.js +0 -72
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts +0 -18
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.js +0 -52
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts +0 -24
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.js +0 -38
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts +0 -31
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.js +0 -240
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts +0 -21
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.js +0 -134
- package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts +0 -12
- package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/feat/feedback.command.js +0 -64
- package/dist/src/presentation/cli/commands/feat/promote.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/feat/promote.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/feat/promote.command.js +0 -41
- package/dist/src/presentation/web/app/actions/discard-exploration.d.ts +0 -9
- package/dist/src/presentation/web/app/actions/discard-exploration.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/discard-exploration.js +0 -29
- package/dist/src/presentation/web/app/actions/promote-exploration.d.ts +0 -11
- package/dist/src/presentation/web/app/actions/promote-exploration.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/promote-exploration.js +0 -21
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts +0 -12
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/submit-exploration-feedback.js +0 -40
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts +0 -8
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.js +0 -33
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.js +0 -33
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts +0 -11
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.js +0 -34
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts +0 -16
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.js +0 -70
- package/dist/src/presentation/web/components/ui/toggle-group.d.ts +0 -10
- package/dist/src/presentation/web/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/src/presentation/web/components/ui/toggle-group.js +0 -22
- package/dist/src/presentation/web/components/ui/toggle.d.ts +0 -10
- package/dist/src/presentation/web/components/ui/toggle.d.ts.map +0 -1
- package/dist/src/presentation/web/components/ui/toggle.js +0 -26
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js.map +0 -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]__403afc23._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__403afc23._.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]__df550e85._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df550e85._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.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/_0fd635d7._.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/_30ddea9d._.js +0 -9
- package/web/.next/server/chunks/ssr/_30ddea9d._.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/_6e79a2cc._.js +0 -3
- package/web/.next/server/chunks/ssr/_6e79a2cc._.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/_cac4abe6._.js +0 -3
- package/web/.next/server/chunks/ssr/_cac4abe6._.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/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js.map +0 -1
- package/web/.next/static/chunks/0769c695d6b663c7.js +0 -1
- package/web/.next/static/chunks/2ceebcc839ee0d4b.js +0 -1
- package/web/.next/static/chunks/5743a9c1c63e5261.js +0 -5
- package/web/.next/static/chunks/5cf9745e2ef3837c.js +0 -1
- package/web/.next/static/chunks/5e20f692bbfcfb94.js +0 -7
- package/web/.next/static/chunks/8b0a9cb5109fe899.js +0 -1
- package/web/.next/static/chunks/c80e8e3d0cf5baa6.css +0 -1
- package/web/.next/static/chunks/d60cee2e7318f425.js +0 -1
- package/web/.next/static/chunks/da565c85277c2461.js +0 -1
- package/web/.next/static/chunks/fb89cf91c10b2e8b.js +0 -1
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → t6SUt71jyk_PYf152Imog}/_buildManifest.js +0 -0
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → t6SUt71jyk_PYf152Imog}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → t6SUt71jyk_PYf152Imog}/_ssgManifest.js +0 -0
|
@@ -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 };
|
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 };
|
|
@@ -24,6 +24,7 @@ export declare class UpgradeCliUseCase {
|
|
|
24
24
|
constructor(versionService: IVersionService, daemonService: IDaemonService);
|
|
25
25
|
execute(onOutput?: (data: string) => void): Promise<UpgradeResult>;
|
|
26
26
|
private getLatestVersion;
|
|
27
|
+
private preDownloadPackage;
|
|
27
28
|
/**
|
|
28
29
|
* Schedule a daemon self-restart after upgrade.
|
|
29
30
|
* Reads the current daemon port, spawns a new daemon process with the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-cli.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"upgrade-cli.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAE9F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,cAAc,EAAE,eAAe,EAE/B,aAAa,EAAE,cAAc;IAG1C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAyCxE,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,kBAAkB;IAwD1B;;;;OAIG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5C,OAAO,CAAC,aAAa;CAuBtB"}
|
|
@@ -24,7 +24,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
24
24
|
};
|
|
25
25
|
import { injectable, inject } from 'tsyringe';
|
|
26
26
|
import { spawn } from 'node:child_process';
|
|
27
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
28
|
+
import { tmpdir } from 'node:os';
|
|
29
|
+
import { join } from 'node:path';
|
|
27
30
|
const VERSION_CHECK_TIMEOUT_MS = 10_000;
|
|
31
|
+
const NPM_CACHE_ADD_TIMEOUT_MS = 120_000;
|
|
28
32
|
/** Delay (ms) before the current process exits to allow the SSE response to flush. */
|
|
29
33
|
const SELF_RESTART_DELAY_MS = 1_000;
|
|
30
34
|
let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
@@ -43,8 +47,14 @@ let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
|
43
47
|
onOutput?.(`Already up to date (v${currentVersion})\n`);
|
|
44
48
|
return { status: 'up-to-date', currentVersion, latestVersion };
|
|
45
49
|
}
|
|
46
|
-
// 3.
|
|
50
|
+
// 3. Pre-download the package into npm cache before install
|
|
47
51
|
const target = latestVersion ? `v${latestVersion}` : 'latest';
|
|
52
|
+
onOutput?.(`Downloading @shepai/cli@latest...\n`);
|
|
53
|
+
const cached = await this.preDownloadPackage();
|
|
54
|
+
if (!cached) {
|
|
55
|
+
onOutput?.('Pre-download did not complete — proceeding with install...\n');
|
|
56
|
+
}
|
|
57
|
+
// 4. Run install (fast if cached)
|
|
48
58
|
onOutput?.(`Upgrading from v${currentVersion} to ${target}...\n`);
|
|
49
59
|
try {
|
|
50
60
|
const exitCode = await this.runNpmInstall(onOutput);
|
|
@@ -104,6 +114,53 @@ let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
|
104
114
|
});
|
|
105
115
|
});
|
|
106
116
|
}
|
|
117
|
+
preDownloadPackage() {
|
|
118
|
+
let tmpDir;
|
|
119
|
+
try {
|
|
120
|
+
tmpDir = mkdtempSync(join(tmpdir(), 'shep-upgrade-'));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return Promise.resolve(false);
|
|
124
|
+
}
|
|
125
|
+
const cleanup = () => {
|
|
126
|
+
try {
|
|
127
|
+
rmSync(tmpDir, { recursive: true, force: true });
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
/* best-effort */
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
return new Promise((resolve) => {
|
|
134
|
+
let settled = false;
|
|
135
|
+
const child = spawn('npm', ['install', '--prefix', tmpDir, '--ignore-scripts', '@shepai/cli@latest'], {
|
|
136
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
137
|
+
});
|
|
138
|
+
const timeout = setTimeout(() => {
|
|
139
|
+
if (!settled) {
|
|
140
|
+
settled = true;
|
|
141
|
+
child.kill();
|
|
142
|
+
cleanup();
|
|
143
|
+
resolve(false);
|
|
144
|
+
}
|
|
145
|
+
}, NPM_CACHE_ADD_TIMEOUT_MS);
|
|
146
|
+
child.on('close', (code) => {
|
|
147
|
+
if (!settled) {
|
|
148
|
+
settled = true;
|
|
149
|
+
clearTimeout(timeout);
|
|
150
|
+
cleanup();
|
|
151
|
+
resolve(code === 0);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
child.on('error', () => {
|
|
155
|
+
if (!settled) {
|
|
156
|
+
settled = true;
|
|
157
|
+
clearTimeout(timeout);
|
|
158
|
+
cleanup();
|
|
159
|
+
resolve(false);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
}
|
|
107
164
|
/**
|
|
108
165
|
* Schedule a daemon self-restart after upgrade.
|
|
109
166
|
* Reads the current daemon port, spawns a new daemon process with the
|
|
@@ -130,7 +187,7 @@ let UpgradeCliUseCase = class UpgradeCliUseCase {
|
|
|
130
187
|
}
|
|
131
188
|
runNpmInstall(onOutput) {
|
|
132
189
|
return new Promise((resolve, reject) => {
|
|
133
|
-
const child = spawn('npm', ['i', '-g', '@shepai/cli@latest'], {
|
|
190
|
+
const child = spawn('npm', ['i', '-g', '@shepai/cli@latest', '--prefer-offline'], {
|
|
134
191
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
135
192
|
});
|
|
136
193
|
child.stdout?.on('data', (data) => {
|
|
@@ -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,CAmJhD"}
|