@shepai/cli 1.170.0 → 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.
Files changed (464) hide show
  1. package/apis/json-schema/ActionDispositionEntry.yaml +14 -0
  2. package/apis/json-schema/DependencyFinding.yaml +28 -0
  3. package/apis/json-schema/DependencyRiskType.yaml +11 -0
  4. package/apis/json-schema/DependencyRules.yaml +38 -0
  5. package/apis/json-schema/EffectivePolicySnapshot.yaml +24 -0
  6. package/apis/json-schema/ReleaseIntegrityCheck.yaml +22 -0
  7. package/apis/json-schema/ReleaseIntegrityCheckType.yaml +9 -0
  8. package/apis/json-schema/ReleaseIntegrityResult.yaml +16 -0
  9. package/apis/json-schema/ReleaseRules.yaml +21 -0
  10. package/apis/json-schema/SecurityActionCategory.yaml +10 -0
  11. package/apis/json-schema/SecurityActionDisposition.yaml +8 -0
  12. package/apis/json-schema/SecurityConfig.yaml +17 -0
  13. package/apis/json-schema/SecurityEvent.yaml +36 -0
  14. package/apis/json-schema/SecurityMode.yaml +8 -0
  15. package/apis/json-schema/SecurityPolicy.yaml +24 -0
  16. package/apis/json-schema/SecuritySeverity.yaml +9 -0
  17. package/apis/json-schema/Settings.yaml +3 -0
  18. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +15 -1
  19. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  20. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +3 -1
  21. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  22. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts +76 -0
  23. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts.map +1 -0
  24. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.js +11 -0
  25. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +38 -0
  26. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
  27. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +9 -0
  28. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts +77 -0
  29. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts.map +1 -0
  30. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.js +13 -0
  31. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +11 -0
  32. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  33. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  34. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +2 -0
  35. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  36. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -0
  37. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  38. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -0
  39. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  40. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -0
  41. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  42. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -0
  43. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  44. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +2 -0
  45. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts +71 -0
  46. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map +1 -0
  47. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.js +215 -0
  48. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts +24 -0
  49. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts.map +1 -0
  50. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js +56 -0
  51. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts +36 -0
  52. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map +1 -0
  53. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.js +76 -0
  54. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts +14 -0
  55. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts.map +1 -0
  56. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js +46 -0
  57. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts +1 -0
  58. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts.map +1 -1
  59. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.js +59 -2
  60. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts +15 -0
  61. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts.map +1 -0
  62. package/dist/packages/core/src/domain/errors/security-violation.error.js +20 -0
  63. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  64. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +5 -1
  65. package/dist/packages/core/src/domain/generated/output.d.ts +259 -0
  66. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  67. package/dist/packages/core/src/domain/generated/output.js +43 -0
  68. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  69. package/dist/packages/core/src/infrastructure/di/container.js +57 -0
  70. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts +44 -0
  71. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts.map +1 -0
  72. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.js +55 -0
  73. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
  74. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  75. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +14 -0
  76. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts +18 -0
  77. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts.map +1 -0
  78. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.js +31 -0
  79. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts +29 -0
  80. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts.map +1 -0
  81. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.js +53 -0
  82. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts +24 -0
  83. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts.map +1 -0
  84. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.js +96 -0
  85. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  86. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +12 -3
  87. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +2 -0
  88. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  89. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +12 -0
  90. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts +22 -0
  91. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts.map +1 -0
  92. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.js +30 -0
  93. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +10 -0
  94. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  95. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +34 -0
  96. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  97. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +3 -1
  98. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  99. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +7 -1
  100. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +3 -1
  101. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  102. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +32 -1
  103. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  104. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +19 -0
  105. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +45 -0
  106. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts.map +1 -0
  107. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.js +70 -0
  108. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +4 -1
  109. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  110. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +10 -0
  111. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +10 -1
  112. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
  113. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +101 -1
  114. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts +53 -0
  115. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map +1 -0
  116. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.js +241 -0
  117. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts +44 -0
  118. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map +1 -0
  119. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.js +194 -0
  120. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts +28 -0
  121. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts.map +1 -0
  122. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.js +50 -0
  123. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts +26 -0
  124. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts.map +1 -0
  125. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.js +147 -0
  126. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts +44 -0
  127. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts.map +1 -0
  128. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.js +174 -0
  129. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -0
  130. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  131. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +61 -0
  132. package/dist/src/presentation/cli/commands/security.command.d.ts +16 -0
  133. package/dist/src/presentation/cli/commands/security.command.d.ts.map +1 -0
  134. package/dist/src/presentation/cli/commands/security.command.js +118 -0
  135. package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
  136. package/dist/src/presentation/cli/commands/upgrade.command.js +68 -3
  137. package/dist/src/presentation/cli/index.js +2 -0
  138. package/dist/src/presentation/web/app/actions/security.d.ts +28 -0
  139. package/dist/src/presentation/web/app/actions/security.d.ts.map +1 -0
  140. package/dist/src/presentation/web/app/actions/security.js +59 -0
  141. package/dist/src/presentation/web/app/build-graph-nodes.d.ts +3 -1
  142. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  143. package/dist/src/presentation/web/app/build-graph-nodes.js +2 -0
  144. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -1
  145. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  146. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  147. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -1
  148. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +3 -1
  149. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  150. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -2
  151. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts +6 -0
  152. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts.map +1 -0
  153. package/dist/src/presentation/web/components/common/repository-node/security-panel.js +29 -0
  154. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts +10 -0
  155. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts.map +1 -0
  156. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.js +53 -0
  157. package/dist/src/presentation/web/components/common/security-badge.d.ts +7 -0
  158. package/dist/src/presentation/web/components/common/security-badge.d.ts.map +1 -0
  159. package/dist/src/presentation/web/components/common/security-badge.js +30 -0
  160. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts +12 -0
  161. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts.map +1 -0
  162. package/dist/src/presentation/web/components/common/security-badge.stories.js +20 -0
  163. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  164. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +16 -3
  165. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts +6 -0
  166. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts.map +1 -0
  167. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.js +60 -0
  168. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts +14 -0
  169. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts.map +1 -0
  170. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.js +116 -0
  171. package/dist/translations/ar/cli.json +22 -0
  172. package/dist/translations/ar/web.json +43 -1
  173. package/dist/translations/de/cli.json +22 -0
  174. package/dist/translations/de/web.json +43 -1
  175. package/dist/translations/en/cli.json +22 -0
  176. package/dist/translations/en/web.json +43 -1
  177. package/dist/translations/es/cli.json +22 -0
  178. package/dist/translations/es/web.json +43 -1
  179. package/dist/translations/fr/cli.json +22 -0
  180. package/dist/translations/fr/web.json +43 -1
  181. package/dist/translations/he/cli.json +22 -0
  182. package/dist/translations/he/web.json +43 -1
  183. package/dist/translations/pt/cli.json +22 -0
  184. package/dist/translations/pt/web.json +43 -1
  185. package/dist/translations/ru/cli.json +22 -0
  186. package/dist/translations/ru/web.json +43 -1
  187. package/dist/tsconfig.build.tsbuildinfo +1 -1
  188. package/package.json +1 -1
  189. package/web/.next/BUILD_ID +1 -1
  190. package/web/.next/build-manifest.json +2 -2
  191. package/web/.next/fallback-build-manifest.json +2 -2
  192. package/web/.next/prerender-manifest.json +3 -3
  193. package/web/.next/required-server-files.js +3 -3
  194. package/web/.next/required-server-files.json +3 -3
  195. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  196. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -1
  197. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  198. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  199. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  200. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +2 -1
  201. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  202. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  203. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  204. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -1
  205. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  206. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  207. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  208. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -1
  209. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  210. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  211. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  212. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -1
  213. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  214. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  215. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  216. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +2 -1
  217. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  218. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  219. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  220. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -1
  221. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  222. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  223. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  224. package/web/.next/server/app/(dashboard)/chat/page.js +2 -1
  225. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  226. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  227. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  228. package/web/.next/server/app/(dashboard)/create/page.js +2 -1
  229. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  230. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  231. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  232. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -1
  233. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  234. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  235. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  236. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -1
  237. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  238. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  239. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  240. package/web/.next/server/app/(dashboard)/page.js +2 -1
  241. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  242. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  243. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  244. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +2 -1
  245. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  246. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  247. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  248. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -1
  249. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  250. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  251. package/web/.next/server/app/_global-error.html +2 -2
  252. package/web/.next/server/app/_global-error.rsc +1 -1
  253. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  254. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  255. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  256. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  257. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  258. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  259. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  260. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  261. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  262. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  263. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  264. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  265. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  266. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  267. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  268. package/web/.next/server/app/features/page.js.nft.json +1 -1
  269. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  270. package/web/.next/server/app/settings/page/server-reference-manifest.json +33 -18
  271. package/web/.next/server/app/settings/page.js +1 -1
  272. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  273. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  274. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  275. package/web/.next/server/app/skills/page.js +2 -1
  276. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  277. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  278. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  279. package/web/.next/server/app/tools/page.js +2 -1
  280. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  281. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  282. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  283. package/web/.next/server/app/version/page.js.nft.json +1 -1
  284. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  285. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  286. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  287. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  288. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  289. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  290. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  291. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +3 -0
  293. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -0
  294. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +3 -0
  295. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -0
  296. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +3 -0
  297. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -0
  298. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  299. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  301. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  303. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  305. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +3 -0
  306. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -0
  307. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +4 -0
  308. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
  309. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +3 -0
  310. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -0
  311. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  312. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  313. package/web/.next/server/chunks/ssr/[root-of-the-server]__9a9cb046._.js +3 -0
  314. package/web/.next/server/chunks/ssr/[root-of-the-server]__9a9cb046._.js.map +1 -0
  315. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js +4 -0
  316. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js.map +1 -0
  317. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +3 -0
  318. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -0
  319. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +3 -0
  320. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -0
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  322. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  323. package/web/.next/server/chunks/ssr/_02580450._.js +3 -0
  324. package/web/.next/server/chunks/ssr/_02580450._.js.map +1 -0
  325. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  326. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  327. package/web/.next/server/chunks/ssr/_1594e369._.js +9 -0
  328. package/web/.next/server/chunks/ssr/_1594e369._.js.map +1 -0
  329. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  330. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  331. package/web/.next/server/chunks/ssr/_21d37090._.js +3 -0
  332. package/web/.next/server/chunks/ssr/_21d37090._.js.map +1 -0
  333. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  334. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  335. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  336. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  337. package/web/.next/server/chunks/ssr/_5119a3df._.js +1 -1
  338. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  339. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  340. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  341. package/web/.next/server/chunks/ssr/{_0d7dd23b._.js → _767748d2._.js} +2 -2
  342. package/web/.next/server/chunks/ssr/_767748d2._.js.map +1 -0
  343. package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
  344. package/web/.next/server/chunks/ssr/{_77ae079a._.js → _ee42a212._.js} +2 -2
  345. package/web/.next/server/chunks/ssr/{_77ae079a._.js.map → _ee42a212._.js.map} +1 -1
  346. package/web/.next/server/chunks/ssr/_f8c55130._.js +4 -0
  347. package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -0
  348. package/web/.next/server/chunks/ssr/_ff04802c._.js +3 -0
  349. package/web/.next/server/chunks/ssr/_ff04802c._.js.map +1 -0
  350. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  351. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  352. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  353. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  354. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +3 -0
  355. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -0
  356. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +5 -0
  357. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -0
  358. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +5 -0
  359. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -0
  360. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +3 -0
  361. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -0
  362. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +3 -0
  363. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -0
  364. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
  365. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
  366. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
  367. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
  368. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  369. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  370. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  371. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  372. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  373. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  374. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  375. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  376. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  377. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  378. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  379. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +3 -0
  380. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -0
  381. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +3 -0
  382. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -0
  383. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  384. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  385. package/web/.next/server/pages/500.html +2 -2
  386. package/web/.next/server/server-reference-manifest.js +1 -1
  387. package/web/.next/server/server-reference-manifest.json +74 -59
  388. package/web/.next/static/chunks/051873309d87fb45.css +1 -0
  389. package/web/.next/static/chunks/{8e12deeabf6624e9.js → 16fa4d3877c28fe2.js} +1 -1
  390. package/web/.next/static/chunks/23d80bb760e7dc4c.js +1 -0
  391. package/web/.next/static/chunks/30a0ba9015f94405.js +7 -0
  392. package/web/.next/static/chunks/{7a6854bb07182777.js → 39f6ad3f9005703a.js} +1 -1
  393. package/web/.next/static/chunks/3aba9d2242420cb5.js +1 -0
  394. package/web/.next/static/chunks/7a6f56f37aaa17ea.js +1 -0
  395. package/web/.next/static/chunks/{b0a6fce5425f8d3a.js → 7e05e7e25220ee9a.js} +1 -1
  396. package/web/.next/static/chunks/{f9da308b3033c57a.js → 89dd90bf14488ec0.js} +1 -1
  397. package/web/.next/static/chunks/{2b2f3a70ebd6ac1c.js → 9374d251360e808b.js} +1 -1
  398. package/web/.next/static/chunks/{f29814a72404ea2b.js → 9423dc2310202fda.js} +1 -1
  399. package/web/.next/static/chunks/a794cf7a1a5648dd.js +1 -0
  400. package/web/.next/static/chunks/{3d1df5c349d855eb.js → a8edb9423086e83f.js} +1 -1
  401. package/web/.next/static/chunks/ae81796726a9bba3.js +1 -0
  402. package/web/.next/static/chunks/{a3802d6f8677cd04.js → b9c62932ed987239.js} +2 -2
  403. package/web/.next/static/chunks/{c5a0b452afc8fe47.js → d1c3e0ee8e788c87.js} +1 -1
  404. package/web/.next/static/chunks/{ca23a8642f750548.js → e8c3c12f92e9a521.js} +2 -2
  405. package/web/.next/static/chunks/f3d5e0ae13def35a.js +1 -0
  406. package/web/.next/static/chunks/{d5366257d6b9f855.js → fb8dadb64c0ffc6b.js} +1 -1
  407. package/web/.next/static/chunks/fd232b88b5b50b2e.js +1 -0
  408. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +0 -4
  409. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +0 -1
  410. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +0 -4
  411. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +0 -1
  412. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +0 -4
  413. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +0 -1
  414. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +0 -4
  415. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +0 -1
  416. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +0 -4
  417. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +0 -1
  418. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +0 -4
  419. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +0 -1
  420. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +0 -4
  421. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +0 -1
  422. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +0 -3
  423. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +0 -1
  424. package/web/.next/server/chunks/ssr/_02e01240._.js +0 -4
  425. package/web/.next/server/chunks/ssr/_02e01240._.js.map +0 -1
  426. package/web/.next/server/chunks/ssr/_0d7dd23b._.js.map +0 -1
  427. package/web/.next/server/chunks/ssr/_18886033._.js +0 -4
  428. package/web/.next/server/chunks/ssr/_18886033._.js.map +0 -1
  429. package/web/.next/server/chunks/ssr/_22e00a14._.js +0 -4
  430. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +0 -1
  431. package/web/.next/server/chunks/ssr/_43ba79e7._.js +0 -3
  432. package/web/.next/server/chunks/ssr/_43ba79e7._.js.map +0 -1
  433. package/web/.next/server/chunks/ssr/_a5a5901d._.js +0 -4
  434. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +0 -1
  435. package/web/.next/server/chunks/ssr/_a963dd3c._.js +0 -3
  436. package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +0 -1
  437. package/web/.next/server/chunks/ssr/_ad09f271._.js +0 -4
  438. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +0 -1
  439. package/web/.next/server/chunks/ssr/_c3f595c6._.js +0 -4
  440. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +0 -1
  441. package/web/.next/server/chunks/ssr/_deabc145._.js +0 -3
  442. package/web/.next/server/chunks/ssr/_deabc145._.js.map +0 -1
  443. package/web/.next/server/chunks/ssr/_e3f14907._.js +0 -9
  444. package/web/.next/server/chunks/ssr/_e3f14907._.js.map +0 -1
  445. package/web/.next/server/chunks/ssr/_ea9e1556._.js +0 -4
  446. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +0 -1
  447. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +0 -6
  448. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +0 -1
  449. package/web/.next/server/chunks/ssr/_f33cd07e._.js +0 -6
  450. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +0 -1
  451. package/web/.next/server/chunks/ssr/_f8b45233._.js +0 -4
  452. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +0 -1
  453. package/web/.next/static/chunks/06a86173379e6c51.js +0 -1
  454. package/web/.next/static/chunks/16ed73f9880b7d63.js +0 -1
  455. package/web/.next/static/chunks/4559a403ee40dd19.js +0 -7
  456. package/web/.next/static/chunks/74e5b5c7950efbc1.js +0 -1
  457. package/web/.next/static/chunks/8b0a9cb5109fe899.js +0 -1
  458. package/web/.next/static/chunks/9c6f8f49799efd3a.js +0 -1
  459. package/web/.next/static/chunks/b14085e99b88e7f7.css +0 -1
  460. package/web/.next/static/chunks/b65e555419a0c664.js +0 -1
  461. package/web/.next/static/chunks/f51250616da82bd2.js +0 -1
  462. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → t6SUt71jyk_PYf152Imog}/_buildManifest.js +0 -0
  463. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → t6SUt71jyk_PYf152Imog}/_clientMiddlewareManifest.json +0 -0
  464. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → t6SUt71jyk_PYf152Imog}/_ssgManifest.js +0 -0
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useTransition, useRef, useEffect, useCallback } from 'react';
4
- import { Check, Bot, Terminal, GitBranch, Activity, Bell, Flag, Database, Globe, Minus, Plus, ExternalLink, Settings2, Timer, MessageSquare, LayoutGrid, } from 'lucide-react';
4
+ import { Check, Bot, Terminal, GitBranch, Activity, Bell, Flag, Database, Globe, Minus, Plus, ExternalLink, Settings2, Timer, MessageSquare, LayoutGrid, Shield, } from 'lucide-react';
5
5
  import { toast } from 'sonner';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import { cn } from '../../../lib/utils.js';
@@ -9,11 +9,12 @@ import { Label } from '../../ui/label.js';
9
9
  import { Switch } from '../../ui/switch.js';
10
10
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/select.js';
11
11
  import { updateSettingsAction } from '../../../app/actions/update-settings.js';
12
- import { EditorType, Language, TerminalType, } from '../../../../../../packages/core/src/domain/generated/output.js';
12
+ import { EditorType, Language, SecurityMode, TerminalType, } from '../../../../../../packages/core/src/domain/generated/output.js';
13
13
  import { getEditorTypeIcon } from '../../common/editor-type-icons.js';
14
14
  import { AgentModelPicker } from '../../features/settings/AgentModelPicker/index.js';
15
15
  import { LanguageSettingsSection } from '../../features/settings/language-settings-section.js';
16
16
  import { TimeoutSlider } from '../../features/settings/timeout-slider.js';
17
+ import { SupplyChainSecuritySettingsSection } from '../../features/settings/supply-chain-security-settings-section.js';
17
18
  const EDITOR_OPTIONS = [
18
19
  { value: EditorType.VsCode, label: 'VS Code' },
19
20
  { value: EditorType.Cursor, label: 'Cursor' },
@@ -31,6 +32,7 @@ const SECTIONS = [
31
32
  { id: 'agent', labelKey: 'settings.sections.agent', icon: Bot },
32
33
  { id: 'environment', labelKey: 'settings.sections.environment', icon: Terminal },
33
34
  { id: 'workflow', labelKey: 'settings.sections.workflow', icon: GitBranch },
35
+ { id: 'security', labelKey: 'settings.sections.security', icon: Shield },
34
36
  { id: 'ci', labelKey: 'settings.sections.ci', icon: Activity },
35
37
  { id: 'stage-timeouts', labelKey: 'settings.sections.timeouts', icon: Timer },
36
38
  { id: 'notifications', labelKey: 'settings.sections.notifications', icon: Bell },
@@ -440,7 +442,18 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
440
442
  label: t('settings.workflow.links.pushAndPrFlags'),
441
443
  href: 'https://github.com/shep-ai/shep/blob/main/specs/037-feature-pr-push-flags/spec.yaml',
442
444
  },
443
- ], children: t('settings.workflow.hint') })] }), _jsxs("div", { id: "section-ci", className: "grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]", children: [_jsxs(SettingsSection, { icon: Activity, title: t('settings.ci.title'), description: t('settings.ci.description'), testId: "ci-settings-section", children: [_jsx(SettingsRow, { label: t('settings.ci.maxFixAttempts'), description: t('settings.ci.maxFixAttemptsDescription'), htmlFor: "ci-max-fix", children: _jsx(NumberStepper, { id: "ci-max-fix", testId: "ci-max-fix-input", placeholder: "3", value: ciMaxFix, onChange: setCiMaxFix, onBlur: () => {
445
+ ], children: t('settings.workflow.hint') })] }), _jsxs("div", { id: "section-security", className: "grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]", children: [_jsx(SupplyChainSecuritySettingsSection, { securityState: {
446
+ mode: settings.security?.mode ?? SecurityMode.Advisory,
447
+ lastEvaluationAt: settings.security?.lastEvaluationAt ?? null,
448
+ policySource: settings.security?.policySource ?? null,
449
+ recentEvents: [],
450
+ highestSeverityFinding: null,
451
+ } }), _jsx(SectionHint, { links: [
452
+ {
453
+ label: t('settings.security.links.securitySpec'),
454
+ href: 'https://github.com/shep-ai/shep/blob/main/specs/083-supply-chain-security/spec.yaml',
455
+ },
456
+ ], children: t('settings.security.hint') })] }), _jsxs("div", { id: "section-ci", className: "grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]", children: [_jsxs(SettingsSection, { icon: Activity, title: t('settings.ci.title'), description: t('settings.ci.description'), testId: "ci-settings-section", children: [_jsx(SettingsRow, { label: t('settings.ci.maxFixAttempts'), description: t('settings.ci.maxFixAttemptsDescription'), htmlFor: "ci-max-fix", children: _jsx(NumberStepper, { id: "ci-max-fix", testId: "ci-max-fix-input", placeholder: "3", value: ciMaxFix, onChange: setCiMaxFix, onBlur: () => {
444
457
  if (ciMaxFix !== originalCiMaxFix)
445
458
  save(buildWorkflowPayload({ ciMaxFix }));
446
459
  }, min: 1, max: 10 }) }), _jsx(SettingsRow, { label: t('settings.ci.watchTimeout'), description: t('settings.ci.watchTimeoutDescription'), htmlFor: "ci-timeout", children: _jsx(NumberStepper, { id: "ci-timeout", testId: "ci-timeout-input", placeholder: "300", value: ciTimeout, onChange: setCiTimeout, onBlur: () => {
@@ -0,0 +1,6 @@
1
+ import type { SecurityState } from '../../../../../../packages/core/src/application/use-cases/security/get-security-state.use-case.js';
2
+ export interface SupplyChainSecuritySettingsSectionProps {
3
+ securityState: SecurityState;
4
+ }
5
+ export declare function SupplyChainSecuritySettingsSection({ securityState, }: SupplyChainSecuritySettingsSectionProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=supply-chain-security-settings-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supply-chain-security-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/supply-chain-security-settings-section.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yEAAyE,CAAC;AAE7G,MAAM,WAAW,uCAAuC;IACtD,aAAa,EAAE,aAAa,CAAC;CAC9B;AAeD,wBAAgB,kCAAkC,CAAC,EACjD,aAAa,GACd,EAAE,uCAAuC,2CAgKzC"}
@@ -0,0 +1,60 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useTransition, useRef, useEffect } from 'react';
4
+ import { Shield, Check, AlertTriangle, ShieldAlert, ShieldOff } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { cn } from '../../../lib/utils.js';
8
+ import { Badge } from '../../ui/badge.js';
9
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/select.js';
10
+ import { updateSecurityModeAction } from '../../../app/actions/security.js';
11
+ import { SecurityMode } from '../../../../../../packages/core/src/domain/generated/output.js';
12
+ const MODE_OPTIONS = [
13
+ { value: SecurityMode.Disabled, icon: ShieldOff },
14
+ { value: SecurityMode.Advisory, icon: Shield },
15
+ { value: SecurityMode.Enforce, icon: ShieldAlert },
16
+ ];
17
+ const SEVERITY_COLORS = {
18
+ Low: 'bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300',
19
+ Medium: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/40 dark:text-yellow-300',
20
+ High: 'bg-orange-100 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300',
21
+ Critical: 'bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300',
22
+ };
23
+ export function SupplyChainSecuritySettingsSection({ securityState, }) {
24
+ const { t } = useTranslation('web');
25
+ const [mode, setMode] = useState(securityState.mode);
26
+ const [isPending, startTransition] = useTransition();
27
+ const [showSaved, setShowSaved] = useState(false);
28
+ const prevPendingRef = useRef(false);
29
+ useEffect(() => {
30
+ if (prevPendingRef.current && !isPending) {
31
+ setShowSaved(true);
32
+ const timer = setTimeout(() => setShowSaved(false), 2000);
33
+ return () => clearTimeout(timer);
34
+ }
35
+ prevPendingRef.current = isPending;
36
+ }, [isPending]);
37
+ function handleModeChange(value) {
38
+ const newMode = value;
39
+ setMode(newMode);
40
+ startTransition(async () => {
41
+ const result = await updateSecurityModeAction(newMode);
42
+ if (!result.success) {
43
+ toast.error(result.error ?? t('settings.failedToSave'));
44
+ setMode(securityState.mode);
45
+ }
46
+ });
47
+ }
48
+ const lastEvalDisplay = securityState.lastEvaluationAt
49
+ ? new Date(securityState.lastEvaluationAt).toLocaleString()
50
+ : t('settings.security.lastEvaluationNever');
51
+ const policySourceDisplay = securityState.policySource ?? t('settings.security.policySourceNone');
52
+ return (_jsxs("div", { className: "bg-background rounded-lg border", "data-testid": "security-settings-section", children: [_jsxs("div", { className: "bg-muted/30 border-b px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Shield, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("h2", { className: "text-sm font-semibold", children: t('settings.security.sectionTitle') }), isPending ? (_jsx("span", { className: "text-muted-foreground text-xs", children: t('settings.saving') })) : null, showSaved && !isPending ? (_jsxs("span", { className: "flex items-center gap-1 text-xs text-green-600", children: [_jsx(Check, { className: "h-3 w-3" }), t('settings.saved')] })) : null] }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-[11px]", children: t('settings.security.sectionDescription') })] }), _jsxs("div", { className: "px-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-4 border-b py-2.5", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("label", { htmlFor: "security-mode", className: "cursor-pointer text-sm font-normal whitespace-nowrap", children: t('settings.security.mode') }), _jsx("p", { className: "text-muted-foreground text-[11px] leading-tight", children: t('settings.security.modeDescription') })] }), _jsx("div", { className: "flex shrink-0 items-center gap-2", children: _jsxs(Select, { value: mode, onValueChange: handleModeChange, children: [_jsx(SelectTrigger, { id: "security-mode", "data-testid": "security-mode-select", className: "w-40 cursor-pointer text-xs", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: MODE_OPTIONS.map((opt) => {
53
+ const Icon = opt.icon;
54
+ return (_jsx(SelectItem, { value: opt.value, children: _jsxs("span", { className: "flex items-center gap-2 text-xs", children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0" }), t(`settings.security.mode${opt.value}`)] }) }, opt.value));
55
+ }) })] }) })] }), _jsxs("div", { className: "flex items-center justify-between gap-4 border-b py-2.5", children: [_jsx("div", { className: "min-w-0", children: _jsx("span", { className: "text-sm font-normal whitespace-nowrap", children: t('settings.security.policySource') }) }), _jsx("span", { className: "text-muted-foreground max-w-50 truncate font-mono text-xs", children: policySourceDisplay })] }), _jsxs("div", { className: "flex items-center justify-between gap-4 border-b py-2.5", children: [_jsx("div", { className: "min-w-0", children: _jsx("span", { className: "text-sm font-normal whitespace-nowrap", children: t('settings.security.lastEvaluation') }) }), _jsx("span", { className: "text-muted-foreground text-xs", children: lastEvalDisplay })] }), _jsxs("div", { className: "py-2.5 last:border-b-0", children: [_jsx("div", { className: "mb-2", children: _jsx("span", { className: "text-sm font-normal", children: t('settings.security.recentFindings') }) }), securityState.recentEvents.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-xs", children: t('settings.security.noFindings') })) : (_jsx("div", { className: "flex flex-col gap-1.5", children: securityState.recentEvents.slice(0, 5).map((event) => (_jsxs("div", { className: "flex items-start gap-2 rounded-md border px-2.5 py-1.5", children: [_jsx(AlertTriangle, { className: cn('mt-0.5 h-3 w-3 shrink-0', event.severity === 'Critical' || event.severity === 'High'
56
+ ? 'text-red-500'
57
+ : event.severity === 'Medium'
58
+ ? 'text-yellow-500'
59
+ : 'text-blue-500') }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Badge, { variant: "secondary", className: cn('px-1 py-0 text-[9px]', SEVERITY_COLORS[event.severity]), children: t(`settings.security.severity.${event.severity}`) }), _jsx("span", { className: "text-muted-foreground text-[10px]", children: event.category })] }), _jsx("p", { className: "mt-0.5 truncate text-[11px]", children: event.message })] })] }, event.id))) }))] })] })] }));
60
+ }
@@ -0,0 +1,14 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SupplyChainSecuritySettingsSection } from './supply-chain-security-settings-section.js';
3
+ declare const meta: Meta<typeof SupplyChainSecuritySettingsSection>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof SupplyChainSecuritySettingsSection>;
6
+ /** Advisory mode with no findings — default posture for new repositories. */
7
+ export declare const AdvisoryNoFindings: Story;
8
+ /** Disabled mode — security enforcement is turned off. */
9
+ export declare const Disabled: Story;
10
+ /** Enforce mode with a critical finding. */
11
+ export declare const EnforceWithCriticalFinding: Story;
12
+ /** Advisory mode with multiple findings of varying severity. */
13
+ export declare const AdvisoryWithMultipleFindings: Story;
14
+ //# sourceMappingURL=supply-chain-security-settings-section.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supply-chain-security-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAG9F,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,kCAAkC,CAIzD,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAUjE,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,KAIhC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,0BAA0B,EAAE,KAgCxC,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,4BAA4B,EAAE,KAkD1C,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { SecurityMode, SecuritySeverity, SecurityActionCategory, SecurityActionDisposition, } from '../../../../../../packages/core/src/domain/generated/output.js';
2
+ import { SupplyChainSecuritySettingsSection } from './supply-chain-security-settings-section.js';
3
+ const meta = {
4
+ title: 'Settings/SupplyChainSecuritySettingsSection',
5
+ component: SupplyChainSecuritySettingsSection,
6
+ tags: ['autodocs'],
7
+ };
8
+ export default meta;
9
+ const baseState = {
10
+ mode: SecurityMode.Advisory,
11
+ lastEvaluationAt: null,
12
+ policySource: null,
13
+ recentEvents: [],
14
+ highestSeverityFinding: null,
15
+ };
16
+ /** Advisory mode with no findings — default posture for new repositories. */
17
+ export const AdvisoryNoFindings = {
18
+ args: {
19
+ securityState: baseState,
20
+ },
21
+ };
22
+ /** Disabled mode — security enforcement is turned off. */
23
+ export const Disabled = {
24
+ args: {
25
+ securityState: {
26
+ ...baseState,
27
+ mode: SecurityMode.Disabled,
28
+ },
29
+ },
30
+ };
31
+ /** Enforce mode with a critical finding. */
32
+ export const EnforceWithCriticalFinding = {
33
+ args: {
34
+ securityState: {
35
+ mode: SecurityMode.Enforce,
36
+ lastEvaluationAt: new Date().toISOString(),
37
+ policySource: 'shep.security.yaml',
38
+ recentEvents: [
39
+ {
40
+ id: 'evt-1',
41
+ repositoryPath: '/path/to/repo',
42
+ severity: SecuritySeverity.Critical,
43
+ category: SecurityActionCategory.PublishRelease,
44
+ disposition: SecurityActionDisposition.Denied,
45
+ message: 'Missing npm provenance configuration in release workflow',
46
+ remediationSummary: 'Add --provenance flag to npm publish step',
47
+ createdAt: new Date().toISOString(),
48
+ updatedAt: new Date().toISOString(),
49
+ },
50
+ ],
51
+ highestSeverityFinding: {
52
+ id: 'evt-1',
53
+ repositoryPath: '/path/to/repo',
54
+ severity: SecuritySeverity.Critical,
55
+ category: SecurityActionCategory.PublishRelease,
56
+ disposition: SecurityActionDisposition.Denied,
57
+ message: 'Missing npm provenance configuration in release workflow',
58
+ remediationSummary: 'Add --provenance flag to npm publish step',
59
+ createdAt: new Date().toISOString(),
60
+ updatedAt: new Date().toISOString(),
61
+ },
62
+ },
63
+ },
64
+ };
65
+ /** Advisory mode with multiple findings of varying severity. */
66
+ export const AdvisoryWithMultipleFindings = {
67
+ args: {
68
+ securityState: {
69
+ mode: SecurityMode.Advisory,
70
+ lastEvaluationAt: new Date(Date.now() - 3600000).toISOString(),
71
+ policySource: 'shep.security.yaml',
72
+ recentEvents: [
73
+ {
74
+ id: 'evt-1',
75
+ repositoryPath: '/path/to/repo',
76
+ severity: SecuritySeverity.High,
77
+ category: SecurityActionCategory.DependencyInstall,
78
+ disposition: SecurityActionDisposition.Denied,
79
+ message: 'Package has postinstall lifecycle script: malicious-pkg@1.0.0',
80
+ createdAt: new Date().toISOString(),
81
+ updatedAt: new Date().toISOString(),
82
+ },
83
+ {
84
+ id: 'evt-2',
85
+ repositoryPath: '/path/to/repo',
86
+ severity: SecuritySeverity.Medium,
87
+ category: SecurityActionCategory.CiWorkflowModify,
88
+ disposition: SecurityActionDisposition.Allowed,
89
+ message: '[Governance Audit] Branch protection not enabled on main',
90
+ createdAt: new Date().toISOString(),
91
+ updatedAt: new Date().toISOString(),
92
+ },
93
+ {
94
+ id: 'evt-3',
95
+ repositoryPath: '/path/to/repo',
96
+ severity: SecuritySeverity.Low,
97
+ category: SecurityActionCategory.DependencyInstall,
98
+ disposition: SecurityActionDisposition.Allowed,
99
+ message: 'Dependency uses git source instead of registry: lodash@git+https://...',
100
+ createdAt: new Date().toISOString(),
101
+ updatedAt: new Date().toISOString(),
102
+ },
103
+ ],
104
+ highestSeverityFinding: {
105
+ id: 'evt-1',
106
+ repositoryPath: '/path/to/repo',
107
+ severity: SecuritySeverity.High,
108
+ category: SecurityActionCategory.DependencyInstall,
109
+ disposition: SecurityActionDisposition.Denied,
110
+ message: 'Package has postinstall lifecycle script: malicious-pkg@1.0.0',
111
+ createdAt: new Date().toISOString(),
112
+ updatedAt: new Date().toISOString(),
113
+ },
114
+ },
115
+ },
116
+ };
@@ -187,6 +187,26 @@
187
187
  "failedToList": "خطأ في عرض الأدوات: {{error}}"
188
188
  }
189
189
  },
190
+ "security": {
191
+ "description": "Supply-chain security policy management",
192
+ "enforce": {
193
+ "description": "Evaluate repository security posture and enforce policy",
194
+ "repoOption": "Repository path (defaults to current directory)",
195
+ "outputOption": "Output format (table, json, yaml)",
196
+ "passed": "Security enforcement passed",
197
+ "failed": "Security enforcement failed",
198
+ "advisoryNote": "Mode is Advisory — findings are reported but do not block",
199
+ "disabledNote": "Security mode is Disabled — no checks performed",
200
+ "modeLabel": "Mode",
201
+ "sourceLabel": "Source",
202
+ "dependencyFindingsLabel": "Dependency Findings",
203
+ "releaseIntegrityLabel": "Release Integrity",
204
+ "totalFindingsLabel": "Total Findings",
205
+ "governanceFindingsLabel": "GitHub Governance (audit-only)",
206
+ "noFindings": "No findings",
207
+ "failedToEnforce": "Failed to evaluate security posture"
208
+ }
209
+ },
190
210
  "feat": {
191
211
  "description": "إدارة الميزات عبر دورة حياة تطوير البرمجيات",
192
212
  "new": {
@@ -567,6 +587,8 @@
567
587
  "alreadyUpToDate": "محدّث بالفعل (v{{version}})",
568
588
  "upgradingFromTo": "الترقية من v{{current}} إلى v{{latest}}",
569
589
  "upgradingToLatest": "الترقية من v{{current}} إلى الأحدث",
590
+ "downloadingPackage": "جارٍ تنزيل الإصدار الجديد...",
591
+ "downloadFailed": "لم يكتمل التنزيل المسبق — المتابعة بالتثبيت",
570
592
  "stoppingDaemon": "جارٍ إيقاف الخدمة الخلفية قبل الترقية...",
571
593
  "restartingDaemon": "جارٍ إعادة تشغيل الخدمة الخلفية...",
572
594
  "daemonRestarted": "تمت إعادة تشغيل الخدمة الخلفية بنجاح.",
@@ -15,7 +15,8 @@
15
15
  "flags": "العلامات",
16
16
  "chat": "المحادثة",
17
17
  "layout": "التخطيط",
18
- "database": "قاعدة البيانات"
18
+ "database": "قاعدة البيانات",
19
+ "security": "Security"
19
20
  },
20
21
  "language": {
21
22
  "title": "اللغة",
@@ -224,6 +225,47 @@
224
225
  "swapPositionDescription": "نقل زر المحادثة إلى اليسار وزر الإنشاء إلى اليمين",
225
226
  "hint": "يوجد زران عائمان (إنشاء ومحادثة) في الزوايا السفلية لمركز التحكم. قم بتفعيل هذا الخيار لتبديل مواضعهما."
226
227
  },
228
+ "security": {
229
+ "title": "Supply Chain Security",
230
+ "sectionTitle": "Supply Chain Security",
231
+ "sectionDescription": "Configure security mode and review policy enforcement findings",
232
+ "mode": "Security mode",
233
+ "modeDescription": "Controls how the policy engine responds to violations",
234
+ "modeDisabled": "Disabled",
235
+ "modeAdvisory": "Advisory",
236
+ "modeEnforce": "Enforce",
237
+ "policySource": "Policy source",
238
+ "policySourceNone": "No policy loaded",
239
+ "lastEvaluation": "Last evaluation",
240
+ "lastEvaluationNever": "Never",
241
+ "recentFindings": "Recent findings",
242
+ "noFindings": "No security findings recorded",
243
+ "runEnforcement": "Run enforcement",
244
+ "running": "Running...",
245
+ "severity": {
246
+ "Low": "Low",
247
+ "Medium": "Medium",
248
+ "High": "High",
249
+ "Critical": "Critical"
250
+ },
251
+ "hint": "Security mode controls how the policy engine handles violations. Advisory mode logs findings without blocking. Enforce mode blocks risky actions and fails builds.",
252
+ "links": {
253
+ "securitySpec": "Security spec"
254
+ },
255
+ "badge": {
256
+ "advisory": "Security: Advisory",
257
+ "enforce": "Security: Enforce",
258
+ "disabled": "Security: Disabled"
259
+ },
260
+ "panel": {
261
+ "title": "Security",
262
+ "governance": "Governance",
263
+ "dependencies": "Dependencies",
264
+ "noFindings": "No security findings",
265
+ "findingsByCategory": "Findings by category",
266
+ "totalFindings": "{{count}} finding(s)"
267
+ }
268
+ },
227
269
  "database": {
228
270
  "title": "قاعدة البيانات",
229
271
  "description": "مسار قاعدة البيانات وإدارتها",
@@ -187,6 +187,26 @@
187
187
  "failedToList": "Fehler beim Auflisten der Tools: {{error}}"
188
188
  }
189
189
  },
190
+ "security": {
191
+ "description": "Supply-chain security policy management",
192
+ "enforce": {
193
+ "description": "Evaluate repository security posture and enforce policy",
194
+ "repoOption": "Repository path (defaults to current directory)",
195
+ "outputOption": "Output format (table, json, yaml)",
196
+ "passed": "Security enforcement passed",
197
+ "failed": "Security enforcement failed",
198
+ "advisoryNote": "Mode is Advisory — findings are reported but do not block",
199
+ "disabledNote": "Security mode is Disabled — no checks performed",
200
+ "modeLabel": "Mode",
201
+ "sourceLabel": "Source",
202
+ "dependencyFindingsLabel": "Dependency Findings",
203
+ "releaseIntegrityLabel": "Release Integrity",
204
+ "totalFindingsLabel": "Total Findings",
205
+ "governanceFindingsLabel": "GitHub Governance (audit-only)",
206
+ "noFindings": "No findings",
207
+ "failedToEnforce": "Failed to evaluate security posture"
208
+ }
209
+ },
190
210
  "feat": {
191
211
  "description": "Features durch den SDLC-Lebenszyklus verwalten",
192
212
  "new": {
@@ -567,6 +587,8 @@
567
587
  "alreadyUpToDate": "Bereits aktuell (v{{version}})",
568
588
  "upgradingFromTo": "Aktualisierung von v{{current}} auf v{{latest}}",
569
589
  "upgradingToLatest": "Aktualisierung von v{{current}} auf die neueste Version",
590
+ "downloadingPackage": "Neue Version wird heruntergeladen...",
591
+ "downloadFailed": "Vorab-Download nicht abgeschlossen — Installation wird fortgesetzt",
570
592
  "stoppingDaemon": "Dienst wird vor Aktualisierung gestoppt...",
571
593
  "restartingDaemon": "Dienst wird neu gestartet...",
572
594
  "daemonRestarted": "Dienst erfolgreich neu gestartet.",
@@ -15,7 +15,8 @@
15
15
  "flags": "Flags",
16
16
  "chat": "Chat",
17
17
  "layout": "Layout",
18
- "database": "Datenbank"
18
+ "database": "Datenbank",
19
+ "security": "Security"
19
20
  },
20
21
  "language": {
21
22
  "title": "Sprache",
@@ -224,6 +225,47 @@
224
225
  "swapPositionDescription": "Chat-Button nach links und Erstellen-Button nach rechts verschieben",
225
226
  "hint": "Die zwei schwebenden Aktionsschaltflächen (Erstellen und Chat) befinden sich in den unteren Ecken des Kontrollzentrums. Aktivieren Sie diese Option, um ihre Positionen zu tauschen."
226
227
  },
228
+ "security": {
229
+ "title": "Supply Chain Security",
230
+ "sectionTitle": "Supply Chain Security",
231
+ "sectionDescription": "Configure security mode and review policy enforcement findings",
232
+ "mode": "Security mode",
233
+ "modeDescription": "Controls how the policy engine responds to violations",
234
+ "modeDisabled": "Disabled",
235
+ "modeAdvisory": "Advisory",
236
+ "modeEnforce": "Enforce",
237
+ "policySource": "Policy source",
238
+ "policySourceNone": "No policy loaded",
239
+ "lastEvaluation": "Last evaluation",
240
+ "lastEvaluationNever": "Never",
241
+ "recentFindings": "Recent findings",
242
+ "noFindings": "No security findings recorded",
243
+ "runEnforcement": "Run enforcement",
244
+ "running": "Running...",
245
+ "severity": {
246
+ "Low": "Low",
247
+ "Medium": "Medium",
248
+ "High": "High",
249
+ "Critical": "Critical"
250
+ },
251
+ "hint": "Security mode controls how the policy engine handles violations. Advisory mode logs findings without blocking. Enforce mode blocks risky actions and fails builds.",
252
+ "links": {
253
+ "securitySpec": "Security spec"
254
+ },
255
+ "badge": {
256
+ "advisory": "Security: Advisory",
257
+ "enforce": "Security: Enforce",
258
+ "disabled": "Security: Disabled"
259
+ },
260
+ "panel": {
261
+ "title": "Security",
262
+ "governance": "Governance",
263
+ "dependencies": "Dependencies",
264
+ "noFindings": "No security findings",
265
+ "findingsByCategory": "Findings by category",
266
+ "totalFindings": "{{count}} finding(s)"
267
+ }
268
+ },
227
269
  "database": {
228
270
  "title": "Datenbank",
229
271
  "description": "Datenbankpfad und -verwaltung",
@@ -187,6 +187,26 @@
187
187
  "failedToList": "Error listing tools: {{error}}"
188
188
  }
189
189
  },
190
+ "security": {
191
+ "description": "Supply-chain security policy management",
192
+ "enforce": {
193
+ "description": "Evaluate repository security posture and enforce policy",
194
+ "repoOption": "Repository path (defaults to current directory)",
195
+ "outputOption": "Output format (table, json, yaml)",
196
+ "passed": "Security enforcement passed",
197
+ "failed": "Security enforcement failed",
198
+ "advisoryNote": "Mode is Advisory — findings are reported but do not block",
199
+ "disabledNote": "Security mode is Disabled — no checks performed",
200
+ "modeLabel": "Mode",
201
+ "sourceLabel": "Source",
202
+ "dependencyFindingsLabel": "Dependency Findings",
203
+ "releaseIntegrityLabel": "Release Integrity",
204
+ "totalFindingsLabel": "Total Findings",
205
+ "governanceFindingsLabel": "GitHub Governance (audit-only)",
206
+ "noFindings": "No findings",
207
+ "failedToEnforce": "Failed to evaluate security posture"
208
+ }
209
+ },
190
210
  "feat": {
191
211
  "description": "Manage features through the SDLC lifecycle",
192
212
  "new": {
@@ -567,6 +587,8 @@
567
587
  "alreadyUpToDate": "Already up to date (v{{version}})",
568
588
  "upgradingFromTo": "Upgrading from v{{current}} to v{{latest}}",
569
589
  "upgradingToLatest": "Upgrading from v{{current}} to latest",
590
+ "downloadingPackage": "Downloading new version...",
591
+ "downloadFailed": "Pre-download did not complete — proceeding with install",
570
592
  "stoppingDaemon": "Stopping daemon before upgrade...",
571
593
  "restartingDaemon": "Restarting daemon...",
572
594
  "daemonRestarted": "Daemon restarted successfully.",
@@ -15,7 +15,8 @@
15
15
  "flags": "Flags",
16
16
  "chat": "Chat",
17
17
  "layout": "Layout",
18
- "database": "Database"
18
+ "database": "Database",
19
+ "security": "Security"
19
20
  },
20
21
  "language": {
21
22
  "title": "Language",
@@ -224,6 +225,47 @@
224
225
  "swapPositionDescription": "Move the Chat button to the left and the Create button to the right",
225
226
  "hint": "The two floating action buttons (Create and Chat) sit in the bottom corners of the control center. Enable this toggle to swap their positions."
226
227
  },
228
+ "security": {
229
+ "title": "Supply Chain Security",
230
+ "sectionTitle": "Security",
231
+ "sectionDescription": "Policy-driven supply chain security enforcement",
232
+ "mode": "Security Mode",
233
+ "modeDescription": "Controls how security policy is enforced",
234
+ "modeDisabled": "Disabled",
235
+ "modeAdvisory": "Advisory",
236
+ "modeEnforce": "Enforce",
237
+ "policySource": "Policy Source",
238
+ "policySourceNone": "Settings only",
239
+ "lastEvaluation": "Last Evaluation",
240
+ "lastEvaluationNever": "Never",
241
+ "recentFindings": "Recent Findings",
242
+ "noFindings": "No findings",
243
+ "runEnforcement": "Run Enforcement",
244
+ "running": "Running...",
245
+ "severity": {
246
+ "Low": "Low",
247
+ "Medium": "Medium",
248
+ "High": "High",
249
+ "Critical": "Critical"
250
+ },
251
+ "hint": "Security mode controls how the policy engine handles violations. Advisory mode logs findings without blocking. Enforce mode blocks risky actions and fails builds.",
252
+ "links": {
253
+ "securitySpec": "Security spec"
254
+ },
255
+ "badge": {
256
+ "advisory": "Advisory",
257
+ "enforce": "Enforce",
258
+ "disabled": "Disabled"
259
+ },
260
+ "panel": {
261
+ "title": "Security",
262
+ "governance": "Governance",
263
+ "dependencies": "Dependencies",
264
+ "noFindings": "No security findings",
265
+ "findingsByCategory": "Findings by Severity",
266
+ "totalFindings": "{{count}} finding(s)"
267
+ }
268
+ },
227
269
  "database": {
228
270
  "title": "Database",
229
271
  "description": "Database path and management",
@@ -187,6 +187,26 @@
187
187
  "failedToList": "Error al listar herramientas: {{error}}"
188
188
  }
189
189
  },
190
+ "security": {
191
+ "description": "Supply-chain security policy management",
192
+ "enforce": {
193
+ "description": "Evaluate repository security posture and enforce policy",
194
+ "repoOption": "Repository path (defaults to current directory)",
195
+ "outputOption": "Output format (table, json, yaml)",
196
+ "passed": "Security enforcement passed",
197
+ "failed": "Security enforcement failed",
198
+ "advisoryNote": "Mode is Advisory — findings are reported but do not block",
199
+ "disabledNote": "Security mode is Disabled — no checks performed",
200
+ "modeLabel": "Mode",
201
+ "sourceLabel": "Source",
202
+ "dependencyFindingsLabel": "Dependency Findings",
203
+ "releaseIntegrityLabel": "Release Integrity",
204
+ "totalFindingsLabel": "Total Findings",
205
+ "governanceFindingsLabel": "GitHub Governance (audit-only)",
206
+ "noFindings": "No findings",
207
+ "failedToEnforce": "Failed to evaluate security posture"
208
+ }
209
+ },
190
210
  "feat": {
191
211
  "description": "Administrar funcionalidades a través del ciclo de vida SDLC",
192
212
  "new": {
@@ -567,6 +587,8 @@
567
587
  "alreadyUpToDate": "Ya está actualizado (v{{version}})",
568
588
  "upgradingFromTo": "Actualizando de v{{current}} a v{{latest}}",
569
589
  "upgradingToLatest": "Actualizando de v{{current}} a la última versión",
590
+ "downloadingPackage": "Descargando nueva versión...",
591
+ "downloadFailed": "La descarga previa no se completó — continuando con la instalación",
570
592
  "stoppingDaemon": "Deteniendo el demonio antes de actualizar...",
571
593
  "restartingDaemon": "Reiniciando el demonio...",
572
594
  "daemonRestarted": "Demonio reiniciado exitosamente.",