@shepai/cli 1.171.0-pr527.e2ee839 → 1.172.0-pr528.108a424

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.
Files changed (501) hide show
  1. package/apis/json-schema/AgentType.yaml +1 -0
  2. package/apis/json-schema/Settings.yaml +0 -3
  3. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +1 -15
  4. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -3
  6. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +0 -38
  8. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +0 -9
  10. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +0 -11
  11. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  12. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +0 -2
  14. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  15. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +0 -2
  16. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  17. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +0 -2
  18. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  19. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +0 -1
  20. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  21. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +0 -2
  22. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  23. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +0 -2
  24. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  25. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -5
  26. package/dist/packages/core/src/domain/generated/output.d.ts +1 -259
  27. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  28. package/dist/packages/core/src/domain/generated/output.js +1 -43
  29. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/di/container.js +3 -57
  31. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -3
  32. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -14
  34. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  35. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -12
  36. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +23 -0
  38. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +1 -0
  40. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +0 -2
  41. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +0 -12
  43. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts +63 -0
  44. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts.map +1 -0
  45. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.js +494 -0
  46. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -10
  47. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +0 -34
  49. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  50. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -3
  51. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  52. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +1 -7
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -3
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  55. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -32
  56. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  57. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +0 -19
  58. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +1 -4
  59. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  60. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +0 -10
  61. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +1 -10
  62. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
  63. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +1 -101
  64. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +0 -1
  65. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  66. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +0 -61
  67. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/codex.json +32 -0
  68. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/copilot.json +32 -0
  69. package/dist/src/presentation/cli/index.js +0 -2
  70. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
  71. package/dist/src/presentation/tui/prompts/agent-select.prompt.js +5 -0
  72. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
  73. package/dist/src/presentation/web/app/actions/check-agent-auth.js +18 -0
  74. package/dist/src/presentation/web/app/actions/get-all-agent-models.d.ts.map +1 -1
  75. package/dist/src/presentation/web/app/actions/get-all-agent-models.js +4 -2
  76. package/dist/src/presentation/web/app/build-graph-nodes.d.ts +1 -3
  77. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  78. package/dist/src/presentation/web/app/build-graph-nodes.js +0 -2
  79. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts +1 -1
  80. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
  81. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +2 -0
  82. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts.map +1 -1
  83. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.js +1 -0
  84. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +1 -3
  85. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  86. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  87. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +1 -2
  88. package/dist/src/presentation/web/components/common/repo-group/repo-group.js +1 -1
  89. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +1 -3
  90. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  91. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +2 -3
  92. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +1 -0
  93. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
  94. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +7 -0
  95. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
  96. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +11 -3
  97. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +1 -0
  98. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
  99. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +8 -0
  100. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  101. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +3 -16
  102. package/dist/translations/ar/cli.json +0 -20
  103. package/dist/translations/ar/tui.json +4 -0
  104. package/dist/translations/ar/web.json +1 -43
  105. package/dist/translations/de/cli.json +0 -20
  106. package/dist/translations/de/tui.json +4 -0
  107. package/dist/translations/de/web.json +1 -43
  108. package/dist/translations/en/cli.json +0 -20
  109. package/dist/translations/en/tui.json +4 -0
  110. package/dist/translations/en/web.json +1 -43
  111. package/dist/translations/es/cli.json +0 -20
  112. package/dist/translations/es/tui.json +4 -0
  113. package/dist/translations/es/web.json +1 -43
  114. package/dist/translations/fr/cli.json +0 -20
  115. package/dist/translations/fr/tui.json +4 -0
  116. package/dist/translations/fr/web.json +1 -43
  117. package/dist/translations/he/cli.json +0 -20
  118. package/dist/translations/he/tui.json +4 -0
  119. package/dist/translations/he/web.json +1 -43
  120. package/dist/translations/pt/cli.json +0 -20
  121. package/dist/translations/pt/tui.json +4 -0
  122. package/dist/translations/pt/web.json +1 -43
  123. package/dist/translations/ru/cli.json +0 -20
  124. package/dist/translations/ru/tui.json +4 -0
  125. package/dist/translations/ru/web.json +1 -43
  126. package/dist/tsconfig.build.tsbuildinfo +1 -1
  127. package/package.json +1 -1
  128. package/web/.next/BUILD_ID +1 -1
  129. package/web/.next/build-manifest.json +2 -2
  130. package/web/.next/fallback-build-manifest.json +2 -2
  131. package/web/.next/prerender-manifest.json +3 -3
  132. package/web/.next/required-server-files.js +2 -2
  133. package/web/.next/required-server-files.json +2 -2
  134. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  135. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -2
  136. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  137. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  139. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -2
  140. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  141. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  142. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  143. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -2
  144. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  145. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  146. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  147. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -2
  148. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  149. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  150. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  151. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -2
  152. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  153. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  154. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  155. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -2
  156. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  157. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  158. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  159. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -2
  160. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  161. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  162. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  163. package/web/.next/server/app/(dashboard)/chat/page.js +1 -2
  164. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  165. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  166. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  167. package/web/.next/server/app/(dashboard)/create/page.js +1 -2
  168. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  169. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  171. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -2
  172. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  173. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  174. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  175. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -2
  176. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  177. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  178. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  179. package/web/.next/server/app/(dashboard)/page.js +1 -2
  180. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  181. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  182. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  183. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -2
  184. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  185. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  186. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  187. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -2
  188. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  189. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  190. package/web/.next/server/app/_global-error.html +2 -2
  191. package/web/.next/server/app/_global-error.rsc +1 -1
  192. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  193. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  194. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  195. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  196. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  197. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  198. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  199. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  201. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  202. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  203. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  204. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  205. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  206. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  207. package/web/.next/server/app/features/page.js.nft.json +1 -1
  208. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  209. package/web/.next/server/app/settings/page/server-reference-manifest.json +18 -33
  210. package/web/.next/server/app/settings/page.js +1 -1
  211. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  212. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  213. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  214. package/web/.next/server/app/skills/page.js +1 -2
  215. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  216. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  217. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  218. package/web/.next/server/app/tools/page.js +1 -2
  219. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  220. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  221. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  222. package/web/.next/server/app/version/page.js.nft.json +1 -1
  223. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  225. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  226. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  227. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  228. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  229. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  230. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  232. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  234. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +4 -0
  236. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -0
  237. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +4 -0
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +4 -0
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +4 -0
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +4 -0
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -0
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +4 -0
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -0
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +4 -0
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -0
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +3 -0
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +1 -0
  258. package/web/.next/server/chunks/ssr/_02e01240._.js +4 -0
  259. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -0
  260. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  261. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  263. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  264. package/web/.next/server/chunks/ssr/_18886033._.js +4 -0
  265. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/_1e08a336._.js +1 -1
  267. package/web/.next/server/chunks/ssr/_22e00a14._.js +4 -0
  268. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -0
  269. package/web/.next/server/chunks/ssr/{_ee42a212._.js → _324beb75._.js} +2 -2
  270. package/web/.next/server/chunks/ssr/{_ee42a212._.js.map → _324beb75._.js.map} +1 -1
  271. package/web/.next/server/chunks/ssr/_43ba79e7._.js +3 -0
  272. package/web/.next/server/chunks/ssr/_43ba79e7._.js.map +1 -0
  273. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  274. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  276. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/_5119a3df._.js +1 -1
  278. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  280. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/{_767748d2._.js → _5e3cb0a7._.js} +2 -2
  282. package/web/.next/server/chunks/ssr/_5e3cb0a7._.js.map +1 -0
  283. package/web/.next/server/chunks/ssr/_a5a5901d._.js +4 -0
  284. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -0
  285. package/web/.next/server/chunks/ssr/_a963dd3c._.js +3 -0
  286. package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +1 -0
  287. package/web/.next/server/chunks/ssr/_ad09f271._.js +4 -0
  288. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -0
  289. package/web/.next/server/chunks/ssr/_c3f595c6._.js +4 -0
  290. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -0
  291. package/web/.next/server/chunks/ssr/_c9d3f255._.js +3 -0
  292. package/web/.next/server/chunks/ssr/_c9d3f255._.js.map +1 -0
  293. package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
  294. package/web/.next/server/chunks/ssr/_e3f14907._.js +9 -0
  295. package/web/.next/server/chunks/ssr/_e3f14907._.js.map +1 -0
  296. package/web/.next/server/chunks/ssr/_ea9e1556._.js +4 -0
  297. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -0
  298. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +6 -0
  299. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -0
  300. package/web/.next/server/chunks/ssr/_f33cd07e._.js +6 -0
  301. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -0
  302. package/web/.next/server/chunks/ssr/_f8b45233._.js +4 -0
  303. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -0
  304. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  305. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  307. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  316. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  317. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  319. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  320. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  321. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  322. package/web/.next/server/pages/500.html +2 -2
  323. package/web/.next/server/server-reference-manifest.js +1 -1
  324. package/web/.next/server/server-reference-manifest.json +59 -74
  325. package/web/.next/static/chunks/01d34ca202152b33.js +1 -0
  326. package/web/.next/static/chunks/120279c82aa8aa25.js +1 -0
  327. package/web/.next/static/chunks/2e32d8578aace93a.js +1 -0
  328. package/web/.next/static/chunks/{16fa4d3877c28fe2.js → 41f5bb33ac4f3c7d.js} +1 -1
  329. package/web/.next/static/chunks/{b9c62932ed987239.js → 43cf78a6c49eb7c1.js} +2 -2
  330. package/web/.next/static/chunks/4559a403ee40dd19.js +7 -0
  331. package/web/.next/static/chunks/{a8edb9423086e83f.js → 50b760a2c7ad03d3.js} +1 -1
  332. package/web/.next/static/chunks/{d1c3e0ee8e788c87.js → 6e10cf4513c1f54f.js} +1 -1
  333. package/web/.next/static/chunks/{39f6ad3f9005703a.js → 8a486366e2878cbc.js} +1 -1
  334. package/web/.next/static/chunks/8b0a9cb5109fe899.js +1 -0
  335. package/web/.next/static/chunks/{9374d251360e808b.js → 947678ada7948442.js} +1 -1
  336. package/web/.next/static/chunks/{7e05e7e25220ee9a.js → b1b0c8ff51c0c2fc.js} +3 -3
  337. package/web/.next/static/chunks/b65e555419a0c664.js +1 -0
  338. package/web/.next/static/chunks/{89dd90bf14488ec0.js → bd55a833b24ee17b.js} +1 -1
  339. package/web/.next/static/chunks/{e8c3c12f92e9a521.js → c91571264851a71e.js} +3 -3
  340. package/web/.next/static/chunks/cc832e47f53eb2c3.js +1 -0
  341. package/web/.next/static/chunks/{fb8dadb64c0ffc6b.js → d5366257d6b9f855.js} +1 -1
  342. package/web/.next/static/chunks/da504d7f1c40bce1.js +1 -0
  343. package/web/.next/static/chunks/dcf8bb4389557a76.css +1 -0
  344. package/web/.next/static/chunks/f8f647baf2e91a9d.js +1 -0
  345. package/web/public/icons/agents/copilot.svg +12 -0
  346. package/apis/json-schema/ActionDispositionEntry.yaml +0 -14
  347. package/apis/json-schema/DependencyFinding.yaml +0 -28
  348. package/apis/json-schema/DependencyRiskType.yaml +0 -11
  349. package/apis/json-schema/DependencyRules.yaml +0 -38
  350. package/apis/json-schema/EffectivePolicySnapshot.yaml +0 -24
  351. package/apis/json-schema/ReleaseIntegrityCheck.yaml +0 -22
  352. package/apis/json-schema/ReleaseIntegrityCheckType.yaml +0 -9
  353. package/apis/json-schema/ReleaseIntegrityResult.yaml +0 -16
  354. package/apis/json-schema/ReleaseRules.yaml +0 -21
  355. package/apis/json-schema/SecurityActionCategory.yaml +0 -10
  356. package/apis/json-schema/SecurityActionDisposition.yaml +0 -8
  357. package/apis/json-schema/SecurityConfig.yaml +0 -17
  358. package/apis/json-schema/SecurityEvent.yaml +0 -36
  359. package/apis/json-schema/SecurityMode.yaml +0 -8
  360. package/apis/json-schema/SecurityPolicy.yaml +0 -24
  361. package/apis/json-schema/SecuritySeverity.yaml +0 -9
  362. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts +0 -76
  363. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts.map +0 -1
  364. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.js +0 -11
  365. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts +0 -77
  366. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts.map +0 -1
  367. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.js +0 -13
  368. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts +0 -71
  369. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map +0 -1
  370. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.js +0 -215
  371. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts +0 -24
  372. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts.map +0 -1
  373. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js +0 -56
  374. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts +0 -36
  375. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map +0 -1
  376. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.js +0 -76
  377. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts +0 -14
  378. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts.map +0 -1
  379. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js +0 -46
  380. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts +0 -15
  381. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts.map +0 -1
  382. package/dist/packages/core/src/domain/errors/security-violation.error.js +0 -20
  383. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts +0 -44
  384. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts.map +0 -1
  385. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.js +0 -55
  386. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts +0 -18
  387. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts.map +0 -1
  388. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.js +0 -31
  389. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts +0 -29
  390. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts.map +0 -1
  391. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.js +0 -53
  392. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts +0 -24
  393. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts.map +0 -1
  394. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.js +0 -96
  395. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts +0 -22
  396. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts.map +0 -1
  397. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.js +0 -30
  398. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +0 -45
  399. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts.map +0 -1
  400. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.js +0 -70
  401. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts +0 -53
  402. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map +0 -1
  403. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.js +0 -241
  404. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts +0 -44
  405. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map +0 -1
  406. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.js +0 -194
  407. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts +0 -28
  408. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts.map +0 -1
  409. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.js +0 -50
  410. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts +0 -26
  411. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts.map +0 -1
  412. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.js +0 -147
  413. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts +0 -44
  414. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts.map +0 -1
  415. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.js +0 -174
  416. package/dist/src/presentation/cli/commands/security.command.d.ts +0 -16
  417. package/dist/src/presentation/cli/commands/security.command.d.ts.map +0 -1
  418. package/dist/src/presentation/cli/commands/security.command.js +0 -118
  419. package/dist/src/presentation/web/app/actions/security.d.ts +0 -28
  420. package/dist/src/presentation/web/app/actions/security.d.ts.map +0 -1
  421. package/dist/src/presentation/web/app/actions/security.js +0 -59
  422. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts +0 -6
  423. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts.map +0 -1
  424. package/dist/src/presentation/web/components/common/repository-node/security-panel.js +0 -29
  425. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts +0 -10
  426. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts.map +0 -1
  427. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.js +0 -53
  428. package/dist/src/presentation/web/components/common/security-badge.d.ts +0 -7
  429. package/dist/src/presentation/web/components/common/security-badge.d.ts.map +0 -1
  430. package/dist/src/presentation/web/components/common/security-badge.js +0 -30
  431. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts +0 -12
  432. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts.map +0 -1
  433. package/dist/src/presentation/web/components/common/security-badge.stories.js +0 -20
  434. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts +0 -6
  435. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts.map +0 -1
  436. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.js +0 -60
  437. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts +0 -14
  438. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts.map +0 -1
  439. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.js +0 -116
  440. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +0 -3
  441. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +0 -1
  442. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +0 -3
  443. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +0 -1
  444. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +0 -3
  445. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +0 -1
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +0 -3
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +0 -1
  448. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +0 -4
  449. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +0 -1
  450. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +0 -3
  451. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +0 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__9a9cb046._.js +0 -3
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__9a9cb046._.js.map +0 -1
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js +0 -4
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js.map +0 -1
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +0 -3
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +0 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +0 -3
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +0 -1
  460. package/web/.next/server/chunks/ssr/_02580450._.js +0 -3
  461. package/web/.next/server/chunks/ssr/_02580450._.js.map +0 -1
  462. package/web/.next/server/chunks/ssr/_1594e369._.js +0 -9
  463. package/web/.next/server/chunks/ssr/_1594e369._.js.map +0 -1
  464. package/web/.next/server/chunks/ssr/_21d37090._.js +0 -3
  465. package/web/.next/server/chunks/ssr/_21d37090._.js.map +0 -1
  466. package/web/.next/server/chunks/ssr/_767748d2._.js.map +0 -1
  467. package/web/.next/server/chunks/ssr/_f8c55130._.js +0 -4
  468. package/web/.next/server/chunks/ssr/_f8c55130._.js.map +0 -1
  469. package/web/.next/server/chunks/ssr/_ff04802c._.js +0 -3
  470. package/web/.next/server/chunks/ssr/_ff04802c._.js.map +0 -1
  471. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +0 -3
  472. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +0 -1
  473. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +0 -5
  474. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +0 -1
  475. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +0 -5
  476. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +0 -1
  477. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +0 -3
  478. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +0 -1
  479. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +0 -3
  480. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +0 -1
  481. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +0 -3
  482. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +0 -1
  483. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +0 -3
  484. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +0 -1
  485. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +0 -3
  486. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +0 -1
  487. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +0 -3
  488. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +0 -1
  489. package/web/.next/static/chunks/051873309d87fb45.css +0 -1
  490. package/web/.next/static/chunks/23d80bb760e7dc4c.js +0 -1
  491. package/web/.next/static/chunks/30a0ba9015f94405.js +0 -7
  492. package/web/.next/static/chunks/3aba9d2242420cb5.js +0 -1
  493. package/web/.next/static/chunks/7a6f56f37aaa17ea.js +0 -1
  494. package/web/.next/static/chunks/9423dc2310202fda.js +0 -1
  495. package/web/.next/static/chunks/a794cf7a1a5648dd.js +0 -1
  496. package/web/.next/static/chunks/ae81796726a9bba3.js +0 -1
  497. package/web/.next/static/chunks/f3d5e0ae13def35a.js +0 -1
  498. package/web/.next/static/chunks/fd232b88b5b50b2e.js +0 -1
  499. /package/web/.next/static/{t6SUt71jyk_PYf152Imog → S_u3qor6FkwObhA1F2xEj}/_buildManifest.js +0 -0
  500. /package/web/.next/static/{t6SUt71jyk_PYf152Imog → S_u3qor6FkwObhA1F2xEj}/_clientMiddlewareManifest.json +0 -0
  501. /package/web/.next/static/{t6SUt71jyk_PYf152Imog → S_u3qor6FkwObhA1F2xEj}/_ssgManifest.js +0 -0
@@ -1,147 +0,0 @@
1
- /**
2
- * Security Policy Validator
3
- *
4
- * Validates a parsed security policy object against the expected schema.
5
- * Checks required fields, valid enum values, contradictory rules,
6
- * and reasonable input limits. Returns structured validation results
7
- * with per-field error messages.
8
- */
9
- import { SecurityMode, SecurityActionCategory, SecurityActionDisposition, } from '../../../domain/generated/output.js';
10
- /** Maximum number of action disposition entries allowed */
11
- const MAX_ACTION_DISPOSITIONS = 100;
12
- /** Maximum number of entries in allowlist or denylist */
13
- const MAX_LIST_ENTRIES = 100;
14
- const VALID_MODES = Object.values(SecurityMode);
15
- const VALID_CATEGORIES = Object.values(SecurityActionCategory);
16
- const VALID_DISPOSITIONS = Object.values(SecurityActionDisposition);
17
- /**
18
- * Validates parsed security policy objects against the expected schema.
19
- */
20
- export class SecurityPolicyValidator {
21
- /**
22
- * Validate a parsed policy object.
23
- *
24
- * @param policy - The parsed policy object (from YAML)
25
- * @returns Validation result with errors array
26
- */
27
- validate(policy) {
28
- const errors = [];
29
- // Validate mode (optional, but if present must be valid)
30
- if (policy.mode !== undefined) {
31
- if (!VALID_MODES.includes(policy.mode)) {
32
- errors.push(`Invalid mode: "${String(policy.mode)}". Valid values: ${VALID_MODES.join(', ')}`);
33
- }
34
- }
35
- // Validate actionDispositions (optional, but if present must be valid)
36
- if (policy.actionDispositions !== undefined) {
37
- this.validateActionDispositions(policy.actionDispositions, errors);
38
- }
39
- // Validate dependencyRules (optional, but if present must be valid)
40
- if (policy.dependencyRules !== undefined) {
41
- this.validateDependencyRules(policy.dependencyRules, errors);
42
- }
43
- // Validate releaseRules (optional, but if present must be valid)
44
- if (policy.releaseRules !== undefined) {
45
- this.validateReleaseRules(policy.releaseRules, errors);
46
- }
47
- return {
48
- valid: errors.length === 0,
49
- errors,
50
- };
51
- }
52
- validateActionDispositions(value, errors) {
53
- if (!Array.isArray(value)) {
54
- errors.push('actionDispositions must be an array');
55
- return;
56
- }
57
- if (value.length > MAX_ACTION_DISPOSITIONS) {
58
- errors.push(`actionDispositions exceeds limit: ${value.length} entries (max ${MAX_ACTION_DISPOSITIONS})`);
59
- return;
60
- }
61
- // Track categories to detect contradictions
62
- const categoryToDisposition = new Map();
63
- for (let i = 0; i < value.length; i++) {
64
- const entry = value[i];
65
- if (!entry || typeof entry !== 'object') {
66
- errors.push(`actionDispositions[${i}] must be an object`);
67
- continue;
68
- }
69
- const category = entry.category;
70
- const disposition = entry.disposition;
71
- if (!VALID_CATEGORIES.includes(category)) {
72
- errors.push(`actionDispositions[${i}].category: invalid value "${String(category)}". Valid values: ${VALID_CATEGORIES.join(', ')}`);
73
- }
74
- if (!VALID_DISPOSITIONS.includes(disposition)) {
75
- errors.push(`actionDispositions[${i}].disposition: invalid value "${String(disposition)}". Valid values: ${VALID_DISPOSITIONS.join(', ')}`);
76
- }
77
- // Check for contradictory entries (same category, different disposition)
78
- if (VALID_CATEGORIES.includes(category) &&
79
- VALID_DISPOSITIONS.includes(disposition)) {
80
- const existing = categoryToDisposition.get(category);
81
- if (existing !== undefined && existing !== disposition) {
82
- errors.push(`Contradictory action dispositions for category "${category}": "${existing}" vs "${disposition}"`);
83
- }
84
- else {
85
- categoryToDisposition.set(category, disposition);
86
- }
87
- }
88
- }
89
- }
90
- validateDependencyRules(value, errors) {
91
- if (!value || typeof value !== 'object') {
92
- errors.push('dependencyRules must be an object');
93
- return;
94
- }
95
- const rules = value;
96
- // Validate boolean fields
97
- const booleanFields = [
98
- 'checkLockfileConsistency',
99
- 'checkLifecycleScripts',
100
- 'checkNonRegistrySource',
101
- 'enforceStrictVersionRanges',
102
- ];
103
- for (const field of booleanFields) {
104
- if (rules[field] !== undefined && typeof rules[field] !== 'boolean') {
105
- errors.push(`dependencyRules.${field} must be a boolean, got ${typeof rules[field]}`);
106
- }
107
- }
108
- // Validate list fields
109
- if (rules.allowlist !== undefined) {
110
- this.validateStringList('dependencyRules.allowlist', rules.allowlist, errors);
111
- }
112
- if (rules.denylist !== undefined) {
113
- this.validateStringList('dependencyRules.denylist', rules.denylist, errors);
114
- }
115
- }
116
- validateReleaseRules(value, errors) {
117
- if (!value || typeof value !== 'object') {
118
- errors.push('releaseRules must be an object');
119
- return;
120
- }
121
- const rules = value;
122
- const booleanFields = [
123
- 'requireCiOnlyPublishing',
124
- 'requireProvenance',
125
- 'checkWorkflowIntegrity',
126
- ];
127
- for (const field of booleanFields) {
128
- if (rules[field] !== undefined && typeof rules[field] !== 'boolean') {
129
- errors.push(`releaseRules.${field} must be a boolean, got ${typeof rules[field]}`);
130
- }
131
- }
132
- }
133
- validateStringList(path, value, errors) {
134
- if (!Array.isArray(value)) {
135
- errors.push(`${path} must be an array`);
136
- return;
137
- }
138
- if (value.length > MAX_LIST_ENTRIES) {
139
- errors.push(`${path} exceeds limit: ${value.length} entries (max ${MAX_LIST_ENTRIES})`);
140
- }
141
- for (let i = 0; i < value.length; i++) {
142
- if (typeof value[i] !== 'string') {
143
- errors.push(`${path}[${i}] must be a string`);
144
- }
145
- }
146
- }
147
- }
@@ -1,44 +0,0 @@
1
- /**
2
- * Security Policy Service
3
- *
4
- * Central policy engine implementing ISecurityPolicyService.
5
- * Reads the policy file, validates it, merges with persisted settings defaults
6
- * using deterministic precedence, and returns an EffectivePolicySnapshot.
7
- *
8
- * Precedence: global settings defaults < repository policy file (stricter wins).
9
- * A lower-precedence layer cannot weaken a stricter higher-precedence rule.
10
- */
11
- import { SecurityActionCategory, SecurityActionDisposition } from '../../../domain/generated/output.js';
12
- import type { EffectivePolicySnapshot } from '../../../domain/generated/output.js';
13
- import type { ISecurityPolicyService, PolicyValidationResult } from '../../../application/ports/output/services/security-policy-service.interface.js';
14
- import type { ISettingsRepository } from '../../../application/ports/output/repositories/settings.repository.interface.js';
15
- import { SecurityPolicyFileReader } from './security-policy-file-reader.js';
16
- import { SecurityPolicyValidator } from './security-policy-validator.js';
17
- export declare class SecurityPolicyService implements ISecurityPolicyService {
18
- private readonly fileReader;
19
- private readonly validator;
20
- private readonly settingsRepo;
21
- private readonly cache;
22
- constructor(fileReader: SecurityPolicyFileReader, validator: SecurityPolicyValidator, settingsRepo: ISettingsRepository);
23
- evaluatePolicy(repositoryPath: string): Promise<EffectivePolicySnapshot>;
24
- getEffectivePolicy(repositoryPath: string): Promise<EffectivePolicySnapshot>;
25
- validatePolicyFile(filePath: string): Promise<PolicyValidationResult>;
26
- getActionDisposition(policy: EffectivePolicySnapshot, actionCategory: SecurityActionCategory): SecurityActionDisposition;
27
- /**
28
- * Build a default snapshot from settings mode only (no policy file).
29
- */
30
- private buildDefaultSnapshot;
31
- /**
32
- * Merge settings defaults with policy file, applying strict-wins precedence.
33
- */
34
- private mergePolicy;
35
- /**
36
- * Return the stricter of two SecurityMode values.
37
- */
38
- private stricterMode;
39
- /**
40
- * Return the stricter of two SecurityActionDisposition values.
41
- */
42
- private stricterDisposition;
43
- }
44
- //# sourceMappingURL=security-policy.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-policy.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/security/security-policy.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAEL,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,uBAAuB,EAGxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iFAAiF,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iFAAiF,CAAC;AAC3H,OAAO,EACL,wBAAwB,EAEzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AA4BzE,qBACa,qBAAsB,YAAW,sBAAsB;IAKhE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;gBAIjD,UAAU,EAAE,wBAAwB,EAEpC,SAAS,EAAE,uBAAuB,EAElC,YAAY,EAAE,mBAAmB;IAG9C,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA6BxE,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAQ5E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAY3E,oBAAoB,CAClB,MAAM,EAAE,uBAAuB,EAC/B,cAAc,EAAE,sBAAsB,GACrC,yBAAyB;IAK5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAuCnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
@@ -1,174 +0,0 @@
1
- /**
2
- * Security Policy Service
3
- *
4
- * Central policy engine implementing ISecurityPolicyService.
5
- * Reads the policy file, validates it, merges with persisted settings defaults
6
- * using deterministic precedence, and returns an EffectivePolicySnapshot.
7
- *
8
- * Precedence: global settings defaults < repository policy file (stricter wins).
9
- * A lower-precedence layer cannot weaken a stricter higher-precedence rule.
10
- */
11
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14
- 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;
15
- return c > 3 && r && Object.defineProperty(target, key, r), r;
16
- };
17
- var __metadata = (this && this.__metadata) || function (k, v) {
18
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
19
- };
20
- var __param = (this && this.__param) || function (paramIndex, decorator) {
21
- return function (target, key) { decorator(target, key, paramIndex); }
22
- };
23
- import { injectable, inject } from 'tsyringe';
24
- import { SecurityMode, SecurityActionCategory, SecurityActionDisposition, } from '../../../domain/generated/output.js';
25
- import { SecurityPolicyFileReader, SECURITY_POLICY_FILENAME, } from './security-policy-file-reader.js';
26
- import { SecurityPolicyValidator } from './security-policy-validator.js';
27
- import { dirname } from 'node:path';
28
- /**
29
- * Numeric rank for comparing SecurityMode strictness.
30
- * Higher number = stricter mode.
31
- */
32
- const MODE_STRICTNESS = {
33
- [SecurityMode.Disabled]: 0,
34
- [SecurityMode.Advisory]: 1,
35
- [SecurityMode.Enforce]: 2,
36
- };
37
- /**
38
- * Numeric rank for comparing disposition strictness.
39
- * Higher number = more restrictive.
40
- */
41
- const DISPOSITION_STRICTNESS = {
42
- [SecurityActionDisposition.Allowed]: 0,
43
- [SecurityActionDisposition.ApprovalRequired]: 1,
44
- [SecurityActionDisposition.Denied]: 2,
45
- };
46
- /**
47
- * All action categories for building default dispositions.
48
- */
49
- const ALL_CATEGORIES = Object.values(SecurityActionCategory);
50
- let SecurityPolicyService = class SecurityPolicyService {
51
- fileReader;
52
- validator;
53
- settingsRepo;
54
- cache = new Map();
55
- constructor(fileReader, validator, settingsRepo) {
56
- this.fileReader = fileReader;
57
- this.validator = validator;
58
- this.settingsRepo = settingsRepo;
59
- }
60
- async evaluatePolicy(repositoryPath) {
61
- // Load settings defaults
62
- const settings = await this.settingsRepo.load();
63
- const settingsMode = settings?.security?.mode ?? SecurityMode.Advisory;
64
- // Read policy file
65
- const policyFile = await this.fileReader.read(repositoryPath);
66
- if (!policyFile) {
67
- // No policy file — use settings defaults
68
- const snapshot = this.buildDefaultSnapshot(settingsMode);
69
- this.cache.set(repositoryPath, snapshot);
70
- return snapshot;
71
- }
72
- // Validate policy file
73
- const validation = this.validator.validate(policyFile);
74
- if (!validation.valid) {
75
- throw new Error(`Security policy validation failed for ${repositoryPath}:\n${validation.errors.join('\n')}`);
76
- }
77
- // Merge with precedence: settings defaults < policy file (stricter wins)
78
- const snapshot = this.mergePolicy(settingsMode, policyFile);
79
- this.cache.set(repositoryPath, snapshot);
80
- return snapshot;
81
- }
82
- async getEffectivePolicy(repositoryPath) {
83
- const cached = this.cache.get(repositoryPath);
84
- if (cached) {
85
- return cached;
86
- }
87
- return this.evaluatePolicy(repositoryPath);
88
- }
89
- async validatePolicyFile(filePath) {
90
- // Read the file from the directory containing it
91
- const dirPath = dirname(filePath);
92
- const policyFile = await this.fileReader.read(dirPath);
93
- if (!policyFile) {
94
- return { valid: true, errors: [] };
95
- }
96
- return this.validator.validate(policyFile);
97
- }
98
- getActionDisposition(policy, actionCategory) {
99
- const entry = policy.actionDispositions.find((d) => d.category === actionCategory);
100
- return entry?.disposition ?? SecurityActionDisposition.Allowed;
101
- }
102
- /**
103
- * Build a default snapshot from settings mode only (no policy file).
104
- */
105
- buildDefaultSnapshot(mode) {
106
- return {
107
- mode,
108
- source: 'settings-default',
109
- evaluatedAt: new Date().toISOString(),
110
- actionDispositions: ALL_CATEGORIES.map((category) => ({
111
- category,
112
- disposition: SecurityActionDisposition.Allowed,
113
- })),
114
- };
115
- }
116
- /**
117
- * Merge settings defaults with policy file, applying strict-wins precedence.
118
- */
119
- mergePolicy(settingsMode, policyFile) {
120
- // Mode: stricter wins
121
- const fileMode = policyFile.mode ?? SecurityMode.Advisory;
122
- const effectiveMode = this.stricterMode(settingsMode, fileMode);
123
- // Action dispositions: merge file entries with defaults, stricter wins
124
- const dispositionMap = new Map();
125
- // Start with defaults (all Allowed)
126
- for (const category of ALL_CATEGORIES) {
127
- dispositionMap.set(category, SecurityActionDisposition.Allowed);
128
- }
129
- // Apply policy file entries (can only make stricter, not weaker)
130
- if (policyFile.actionDispositions) {
131
- for (const entry of policyFile.actionDispositions) {
132
- const current = dispositionMap.get(entry.category);
133
- if (current !== undefined) {
134
- dispositionMap.set(entry.category, this.stricterDisposition(current, entry.disposition));
135
- }
136
- }
137
- }
138
- const actionDispositions = [];
139
- for (const [category, disposition] of dispositionMap) {
140
- actionDispositions.push({ category, disposition });
141
- }
142
- return {
143
- mode: effectiveMode,
144
- source: SECURITY_POLICY_FILENAME,
145
- evaluatedAt: new Date().toISOString(),
146
- actionDispositions,
147
- };
148
- }
149
- /**
150
- * Return the stricter of two SecurityMode values.
151
- */
152
- stricterMode(a, b) {
153
- const rankA = MODE_STRICTNESS[a] ?? 0;
154
- const rankB = MODE_STRICTNESS[b] ?? 0;
155
- return rankA >= rankB ? a : b;
156
- }
157
- /**
158
- * Return the stricter of two SecurityActionDisposition values.
159
- */
160
- stricterDisposition(a, b) {
161
- const rankA = DISPOSITION_STRICTNESS[a] ?? 0;
162
- const rankB = DISPOSITION_STRICTNESS[b] ?? 0;
163
- return rankA >= rankB ? a : b;
164
- }
165
- };
166
- SecurityPolicyService = __decorate([
167
- injectable(),
168
- __param(0, inject('SecurityPolicyFileReader')),
169
- __param(1, inject('SecurityPolicyValidator')),
170
- __param(2, inject('ISettingsRepository')),
171
- __metadata("design:paramtypes", [SecurityPolicyFileReader,
172
- SecurityPolicyValidator, Object])
173
- ], SecurityPolicyService);
174
- export { SecurityPolicyService };
@@ -1,16 +0,0 @@
1
- /**
2
- * Security Command Group
3
- *
4
- * Top-level security command with subcommands for supply-chain security
5
- * policy management and enforcement.
6
- *
7
- * Usage:
8
- * shep security enforce Evaluate and enforce security posture
9
- * shep security enforce --output json Machine-readable output for CI
10
- */
11
- import { Command } from 'commander';
12
- /**
13
- * Create the security command group with all subcommands.
14
- */
15
- export declare function createSecurityCommand(): Command;
16
- //# sourceMappingURL=security.command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/security.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAqH/C"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Security Command Group
3
- *
4
- * Top-level security command with subcommands for supply-chain security
5
- * policy management and enforcement.
6
- *
7
- * Usage:
8
- * shep security enforce Evaluate and enforce security posture
9
- * shep security enforce --output json Machine-readable output for CI
10
- */
11
- import { Command } from 'commander';
12
- import { container } from '../../../../packages/core/src/infrastructure/di/container.js';
13
- import { EnforceSecurityUseCase } from '../../../../packages/core/src/application/use-cases/security/enforce-security.use-case.js';
14
- import { SecurityMode } from '../../../../packages/core/src/domain/generated/output.js';
15
- import { colors, fmt, messages } from '../ui/index.js';
16
- import { OutputFormatter } from '../ui/output.js';
17
- import { getCliI18n } from '../i18n.js';
18
- /**
19
- * Create the security command group with all subcommands.
20
- */
21
- export function createSecurityCommand() {
22
- const t = getCliI18n().t;
23
- const security = new Command('security').description(t('cli:commands.security.description'));
24
- security
25
- .command('enforce')
26
- .description(t('cli:commands.security.enforce.description'))
27
- .option('-r, --repo <path>', t('cli:commands.security.enforce.repoOption'), process.cwd())
28
- .option('-o, --output <format>', t('cli:commands.security.enforce.outputOption'), 'table')
29
- .action(async (options) => {
30
- try {
31
- const useCase = container.resolve(EnforceSecurityUseCase);
32
- const result = await useCase.execute({ repositoryPath: options.repo });
33
- const outputFormat = options.output;
34
- if (outputFormat === 'json' || outputFormat === 'yaml') {
35
- // Machine-readable output
36
- console.log(OutputFormatter.format(result, outputFormat));
37
- }
38
- else {
39
- // Human-readable table output
40
- messages.newline();
41
- if (result.mode === SecurityMode.Disabled) {
42
- messages.info(t('cli:commands.security.enforce.disabledNote'));
43
- messages.newline();
44
- }
45
- else {
46
- // Summary header
47
- console.log(`${fmt.label(t('cli:commands.security.enforce.modeLabel'))}: ${result.mode}`);
48
- console.log(`${fmt.label(t('cli:commands.security.enforce.sourceLabel'))}: ${result.policy.source}`);
49
- console.log(`${fmt.label(t('cli:commands.security.enforce.totalFindingsLabel'))}: ${result.totalFindings}`);
50
- messages.newline();
51
- // Dependency findings
52
- if (result.dependencyFindings.length > 0) {
53
- console.log(fmt.heading(t('cli:commands.security.enforce.dependencyFindingsLabel')));
54
- for (const finding of result.dependencyFindings) {
55
- const severityColor = finding.severity === 'Critical' || finding.severity === 'High'
56
- ? colors.error
57
- : colors.warning;
58
- console.log(` ${severityColor(`[${finding.severity}]`)} ${finding.packageName}: ${finding.message}`);
59
- if (finding.remediation) {
60
- console.log(` ${colors.muted(finding.remediation)}`);
61
- }
62
- }
63
- messages.newline();
64
- }
65
- // Release integrity
66
- const failedChecks = result.releaseIntegrity.checks.filter((c) => !c.passed);
67
- if (failedChecks.length > 0) {
68
- console.log(fmt.heading(t('cli:commands.security.enforce.releaseIntegrityLabel')));
69
- for (const check of failedChecks) {
70
- const severityColor = check.severity === 'Critical' || check.severity === 'High'
71
- ? colors.error
72
- : colors.warning;
73
- console.log(` ${severityColor(`[${check.severity}]`)} ${check.message}`);
74
- }
75
- messages.newline();
76
- }
77
- // Governance findings (audit-only)
78
- if (result.governanceFindings.length > 0) {
79
- console.log(fmt.heading(t('cli:commands.security.enforce.governanceFindingsLabel')));
80
- for (const finding of result.governanceFindings) {
81
- const severityColor = finding.severity === 'Critical' || finding.severity === 'High'
82
- ? colors.error
83
- : colors.warning;
84
- console.log(` ${severityColor(`[${finding.severity}]`)} ${finding.message}`);
85
- if (finding.remediation) {
86
- console.log(` ${colors.muted(finding.remediation)}`);
87
- }
88
- }
89
- messages.newline();
90
- }
91
- // Result
92
- if (result.totalFindings === 0) {
93
- messages.info(t('cli:commands.security.enforce.noFindings'));
94
- }
95
- if (result.passed) {
96
- messages.success(t('cli:commands.security.enforce.passed'));
97
- if (result.mode === SecurityMode.Advisory && result.totalFindings > 0) {
98
- messages.info(t('cli:commands.security.enforce.advisoryNote'));
99
- }
100
- }
101
- else {
102
- messages.error(t('cli:commands.security.enforce.failed'));
103
- }
104
- }
105
- messages.newline();
106
- }
107
- if (!result.passed) {
108
- process.exitCode = 1;
109
- }
110
- }
111
- catch (error) {
112
- const err = error instanceof Error ? error : new Error(String(error));
113
- messages.error(t('cli:commands.security.enforce.failedToEnforce'), err);
114
- process.exitCode = 1;
115
- }
116
- });
117
- return security;
118
- }
@@ -1,28 +0,0 @@
1
- import type { SecurityState } from '../../../../../packages/core/src/application/use-cases/security/get-security-state.use-case.js';
2
- import type { EnforceSecurityResult } from '../../../../../packages/core/src/application/use-cases/security/enforce-security.use-case.js';
3
- import type { SecurityMode } from '../../../../../packages/core/src/domain/generated/output.js';
4
- export interface GetSecurityStateResult {
5
- state?: SecurityState;
6
- error?: string;
7
- }
8
- export interface EnforceSecurityActionResult {
9
- result?: EnforceSecurityResult;
10
- error?: string;
11
- }
12
- export interface UpdateSecurityModeResult {
13
- success: boolean;
14
- error?: string;
15
- }
16
- /**
17
- * Fetches the current security state for a repository.
18
- */
19
- export declare function getSecurityStateAction(repositoryPath: string): Promise<GetSecurityStateResult>;
20
- /**
21
- * Runs the full security enforcement flow for a repository.
22
- */
23
- export declare function enforceSecurityAction(repositoryPath: string): Promise<EnforceSecurityActionResult>;
24
- /**
25
- * Updates the security mode in settings.
26
- */
27
- export declare function updateSecurityModeAction(mode: SecurityMode): Promise<UpdateSecurityModeResult>;
28
- //# sourceMappingURL=security.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/security.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,yEAAyE,CAAC;AACjF,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uEAAuE,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,sBAAsB,CAAC,CASjC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,2BAA2B,CAAC,CAUtC;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,wBAAwB,CAAC,CAyBnC"}
@@ -1,59 +0,0 @@
1
- 'use server';
2
- import { revalidatePath } from 'next/cache';
3
- import { resolve } from '../../lib/server-container.js';
4
- import { updateSettings as updateSettingsSingleton } from '../../../../../packages/core/src/infrastructure/services/settings.service.js';
5
- /**
6
- * Fetches the current security state for a repository.
7
- */
8
- export async function getSecurityStateAction(repositoryPath) {
9
- try {
10
- const useCase = resolve('GetSecurityStateUseCase');
11
- const state = await useCase.execute(repositoryPath);
12
- return { state };
13
- }
14
- catch (error) {
15
- const message = error instanceof Error ? error.message : 'Failed to load security state';
16
- return { error: message };
17
- }
18
- }
19
- /**
20
- * Runs the full security enforcement flow for a repository.
21
- */
22
- export async function enforceSecurityAction(repositoryPath) {
23
- try {
24
- const useCase = resolve('EnforceSecurityUseCase');
25
- const result = await useCase.execute({ repositoryPath });
26
- revalidatePath('/', 'layout');
27
- return { result };
28
- }
29
- catch (error) {
30
- const message = error instanceof Error ? error.message : 'Failed to run security enforcement';
31
- return { error: message };
32
- }
33
- }
34
- /**
35
- * Updates the security mode in settings.
36
- */
37
- export async function updateSecurityModeAction(mode) {
38
- try {
39
- const loadUseCase = resolve('LoadSettingsUseCase');
40
- const current = await loadUseCase.execute();
41
- const merged = {
42
- ...current,
43
- security: {
44
- ...current.security,
45
- mode,
46
- },
47
- updatedAt: new Date(),
48
- };
49
- const updateUseCase = resolve('UpdateSettingsUseCase');
50
- await updateUseCase.execute(merged);
51
- updateSettingsSingleton(merged);
52
- revalidatePath('/', 'layout');
53
- return { success: true };
54
- }
55
- catch (error) {
56
- const message = error instanceof Error ? error.message : 'Failed to update security mode';
57
- return { success: false, error: message };
58
- }
59
- }
@@ -1,6 +0,0 @@
1
- import type { SecurityEvent } from '../../../../../../packages/core/src/domain/generated/output.js';
2
- export interface SecurityPanelProps {
3
- events: SecurityEvent[];
4
- }
5
- export declare function SecurityPanel({ events }: SecurityPanelProps): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=security-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-panel.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/security-panel.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAgBD,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CA6F3D"}
@@ -1,29 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { Shield, ChevronDown, AlertTriangle } from 'lucide-react';
5
- import { useTranslation } from 'react-i18next';
6
- import { cn } from '../../../lib/utils.js';
7
- import { Badge } from '../../ui/badge.js';
8
- const SEVERITY_COLORS = {
9
- Low: 'bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300',
10
- Medium: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/40 dark:text-yellow-300',
11
- High: 'bg-orange-100 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300',
12
- Critical: 'bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300',
13
- };
14
- const SEVERITY_ICON_COLORS = {
15
- Low: 'text-blue-500',
16
- Medium: 'text-yellow-500',
17
- High: 'text-orange-500',
18
- Critical: 'text-red-500',
19
- };
20
- export function SecurityPanel({ events }) {
21
- const { t } = useTranslation('web');
22
- const hasFindings = events.length > 0;
23
- const [expanded, setExpanded] = useState(hasFindings);
24
- const severityCounts = events.reduce((acc, event) => {
25
- acc[event.severity] = (acc[event.severity] ?? 0) + 1;
26
- return acc;
27
- }, {});
28
- return (_jsxs("div", { "data-testid": "security-panel", children: [_jsxs("button", { type: "button", onClick: () => setExpanded(!expanded), className: "flex w-full cursor-pointer items-center justify-between text-left", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Shield, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("span", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: t('settings.security.panel.title').toUpperCase() }), hasFindings ? (_jsx(Badge, { variant: "secondary", className: "bg-red-100 px-1.5 py-0 text-[9px] text-red-700 dark:bg-red-900/40 dark:text-red-300", children: events.length })) : null] }), _jsx(ChevronDown, { className: cn('text-muted-foreground h-3.5 w-3.5 transition-transform', expanded && 'rotate-180') })] }), expanded ? (_jsx("div", { className: "mt-3 flex flex-col gap-2", children: !hasFindings ? (_jsx("p", { className: "text-muted-foreground text-xs", children: t('settings.security.panel.noFindings') })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex flex-wrap gap-1.5", children: Object.entries(severityCounts).map(([severity, count]) => (_jsxs(Badge, { variant: "secondary", className: cn('px-1.5 py-0 text-[9px]', SEVERITY_COLORS[severity]), children: [count, " ", severity] }, severity))) }), _jsx("div", { className: "flex flex-col gap-1.5", children: events.slice(0, 5).map((event) => (_jsxs("div", { className: "flex items-start gap-2 rounded-md border px-2 py-1.5", children: [_jsx(AlertTriangle, { className: cn('mt-0.5 h-3 w-3 shrink-0', SEVERITY_ICON_COLORS[event.severity] ?? 'text-muted-foreground') }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-[11px]", children: event.message }), event.remediationSummary ? (_jsx("p", { className: "text-muted-foreground mt-0.5 truncate text-[10px]", children: event.remediationSummary })) : null] })] }, event.id))) })] })) })) : null] }));
29
- }
@@ -1,10 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { SecurityPanel } from './security-panel.js';
3
- declare const meta: Meta<typeof SecurityPanel>;
4
- export default meta;
5
- type Story = StoryObj<typeof SecurityPanel>;
6
- /** No findings — clean repository. */
7
- export declare const NoFindings: Story;
8
- /** Mixed governance and dependency findings. */
9
- export declare const MixedFindings: Story;
10
- //# sourceMappingURL=security-panel.stories.d.ts.map