@shepai/cli 1.174.0 → 1.175.0-pr527.9ada632

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) 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/Repository.yaml +6 -0
  11. package/apis/json-schema/SecurityActionCategory.yaml +10 -0
  12. package/apis/json-schema/SecurityActionDisposition.yaml +8 -0
  13. package/apis/json-schema/SecurityConfig.yaml +17 -0
  14. package/apis/json-schema/SecurityEvent.yaml +36 -0
  15. package/apis/json-schema/SecurityMode.yaml +8 -0
  16. package/apis/json-schema/SecurityPolicy.yaml +24 -0
  17. package/apis/json-schema/SecuritySeverity.yaml +9 -0
  18. package/apis/json-schema/Settings.yaml +3 -0
  19. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +15 -1
  20. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  21. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +3 -1
  22. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  23. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts +3 -1
  24. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts.map +1 -1
  25. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts +76 -0
  26. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts.map +1 -0
  27. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.js +11 -0
  28. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +28 -0
  29. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  30. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +2 -0
  31. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +85 -0
  32. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
  33. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +21 -0
  34. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts +77 -0
  35. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts.map +1 -0
  36. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.js +13 -0
  37. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +11 -0
  38. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  39. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  40. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +2 -0
  41. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  42. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -0
  43. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  44. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -0
  45. package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.d.ts +67 -0
  46. package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.d.ts.map +1 -0
  47. package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.js +128 -0
  48. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  49. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -0
  50. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  51. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -0
  52. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  53. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +2 -0
  54. package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts +16 -5
  55. package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts.map +1 -1
  56. package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.js +76 -14
  57. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts +30 -0
  58. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts.map +1 -0
  59. package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js +51 -0
  60. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts +71 -0
  61. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map +1 -0
  62. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.js +215 -0
  63. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts +24 -0
  64. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts.map +1 -0
  65. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js +56 -0
  66. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts +36 -0
  67. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map +1 -0
  68. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.js +76 -0
  69. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts +14 -0
  70. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts.map +1 -0
  71. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js +46 -0
  72. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts +15 -0
  73. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts.map +1 -0
  74. package/dist/packages/core/src/domain/errors/security-violation.error.js +20 -0
  75. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  76. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +5 -1
  77. package/dist/packages/core/src/domain/generated/output.d.ts +267 -0
  78. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  79. package/dist/packages/core/src/domain/generated/output.js +43 -0
  80. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  81. package/dist/packages/core/src/infrastructure/di/container.js +67 -0
  82. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts +2 -0
  83. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map +1 -1
  84. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js +4 -0
  85. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts +44 -0
  86. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts.map +1 -0
  87. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.js +55 -0
  88. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
  89. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  90. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +14 -0
  91. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts +18 -0
  92. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts.map +1 -0
  93. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.js +31 -0
  94. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts +29 -0
  95. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts.map +1 -0
  96. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.js +53 -0
  97. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.d.ts +12 -0
  98. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.d.ts.map +1 -0
  99. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.js +26 -0
  100. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts +2 -1
  101. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
  102. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +14 -0
  103. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts +24 -0
  104. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts.map +1 -0
  105. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.js +96 -0
  106. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  107. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +12 -3
  108. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +2 -0
  109. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  110. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +12 -0
  111. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts +22 -0
  112. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts.map +1 -0
  113. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.js +30 -0
  114. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +10 -0
  115. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  116. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +34 -0
  117. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  118. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +3 -1
  119. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  120. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +7 -1
  121. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +3 -1
  122. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  123. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +32 -1
  124. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  125. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +19 -0
  126. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +45 -0
  127. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts.map +1 -0
  128. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.js +70 -0
  129. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +4 -1
  130. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  131. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +10 -0
  132. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +13 -1
  133. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
  134. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +155 -1
  135. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +15 -0
  136. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  137. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +62 -0
  138. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts +53 -0
  139. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map +1 -0
  140. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.js +241 -0
  141. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts +44 -0
  142. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map +1 -0
  143. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.js +194 -0
  144. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts +28 -0
  145. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts.map +1 -0
  146. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.js +50 -0
  147. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts +26 -0
  148. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts.map +1 -0
  149. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.js +147 -0
  150. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts +44 -0
  151. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts.map +1 -0
  152. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.js +174 -0
  153. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -0
  154. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  155. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +61 -0
  156. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  157. package/dist/src/presentation/cli/commands/feat/new.command.js +32 -6
  158. package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
  159. package/dist/src/presentation/cli/commands/repo/index.js +3 -1
  160. package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts +15 -0
  161. package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts.map +1 -0
  162. package/dist/src/presentation/cli/commands/repo/init-remote.command.js +44 -0
  163. package/dist/src/presentation/cli/commands/security.command.d.ts +16 -0
  164. package/dist/src/presentation/cli/commands/security.command.d.ts.map +1 -0
  165. package/dist/src/presentation/cli/commands/security.command.js +118 -0
  166. package/dist/src/presentation/cli/index.js +2 -0
  167. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  168. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +2 -1
  169. package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts +31 -0
  170. package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts.map +1 -0
  171. package/dist/src/presentation/web/app/actions/create-feature-from-remote.js +69 -0
  172. package/dist/src/presentation/web/app/actions/import-github-repository.d.ts +1 -0
  173. package/dist/src/presentation/web/app/actions/import-github-repository.d.ts.map +1 -1
  174. package/dist/src/presentation/web/app/actions/import-github-repository.js +1 -1
  175. package/dist/src/presentation/web/app/actions/security.d.ts +28 -0
  176. package/dist/src/presentation/web/app/actions/security.d.ts.map +1 -0
  177. package/dist/src/presentation/web/app/actions/security.js +59 -0
  178. package/dist/src/presentation/web/app/build-graph-nodes.d.ts +3 -1
  179. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  180. package/dist/src/presentation/web/app/build-graph-nodes.js +2 -0
  181. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
  182. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  183. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
  184. package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts +2 -0
  185. package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts.map +1 -1
  186. package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.js +22 -0
  187. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -1
  188. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  189. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  190. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -1
  191. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +3 -1
  192. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  193. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +3 -2
  194. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts +6 -0
  195. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts.map +1 -0
  196. package/dist/src/presentation/web/components/common/repository-node/security-panel.js +29 -0
  197. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts +10 -0
  198. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts.map +1 -0
  199. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.js +53 -0
  200. package/dist/src/presentation/web/components/common/security-badge.d.ts +7 -0
  201. package/dist/src/presentation/web/components/common/security-badge.d.ts.map +1 -0
  202. package/dist/src/presentation/web/components/common/security-badge.js +30 -0
  203. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts +12 -0
  204. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts.map +1 -0
  205. package/dist/src/presentation/web/components/common/security-badge.stories.js +20 -0
  206. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  207. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +16 -3
  208. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts +6 -0
  209. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts.map +1 -0
  210. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.js +60 -0
  211. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts +14 -0
  212. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts.map +1 -0
  213. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.js +116 -0
  214. package/dist/src/presentation/web/lib/feature-flags.js +1 -1
  215. package/dist/translations/ar/cli.json +32 -0
  216. package/dist/translations/ar/web.json +43 -1
  217. package/dist/translations/de/cli.json +32 -0
  218. package/dist/translations/de/web.json +43 -1
  219. package/dist/translations/en/cli.json +32 -0
  220. package/dist/translations/en/web.json +43 -1
  221. package/dist/translations/es/cli.json +32 -0
  222. package/dist/translations/es/web.json +43 -1
  223. package/dist/translations/fr/cli.json +32 -0
  224. package/dist/translations/fr/web.json +43 -1
  225. package/dist/translations/he/cli.json +32 -0
  226. package/dist/translations/he/web.json +43 -1
  227. package/dist/translations/pt/cli.json +32 -0
  228. package/dist/translations/pt/web.json +43 -1
  229. package/dist/translations/ru/cli.json +32 -0
  230. package/dist/translations/ru/web.json +43 -1
  231. package/dist/tsconfig.build.tsbuildinfo +1 -1
  232. package/package.json +1 -1
  233. package/web/.next/BUILD_ID +1 -1
  234. package/web/.next/build-manifest.json +2 -2
  235. package/web/.next/fallback-build-manifest.json +2 -2
  236. package/web/.next/prerender-manifest.json +3 -3
  237. package/web/.next/required-server-files.js +3 -3
  238. package/web/.next/required-server-files.json +3 -3
  239. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  240. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -1
  241. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  242. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  243. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  244. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +2 -1
  245. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  246. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  247. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  248. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -1
  249. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  250. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  251. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  252. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -1
  253. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  254. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  255. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  256. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -1
  257. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  258. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  259. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  260. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +2 -1
  261. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  262. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  263. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  264. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -1
  265. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  266. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  267. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  268. package/web/.next/server/app/(dashboard)/chat/page.js +2 -1
  269. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  270. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  271. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  272. package/web/.next/server/app/(dashboard)/create/page.js +2 -1
  273. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  274. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  275. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  276. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -1
  277. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  278. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  279. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  280. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -1
  281. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  282. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  283. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  284. package/web/.next/server/app/(dashboard)/page.js +2 -1
  285. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  286. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  287. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  288. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +2 -1
  289. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  290. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  291. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  292. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -1
  293. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  294. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  295. package/web/.next/server/app/_global-error.html +2 -2
  296. package/web/.next/server/app/_global-error.rsc +1 -1
  297. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  298. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  299. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  300. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  301. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  302. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  303. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  304. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  305. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  306. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  307. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  308. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  309. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  310. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  311. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  312. package/web/.next/server/app/features/page.js.nft.json +1 -1
  313. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/settings/page/server-reference-manifest.json +33 -18
  315. package/web/.next/server/app/settings/page.js +1 -1
  316. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  317. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  318. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  319. package/web/.next/server/app/skills/page.js +2 -1
  320. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  321. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  322. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  323. package/web/.next/server/app/tools/page.js +2 -1
  324. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  325. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  326. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  327. package/web/.next/server/app/version/page.js.nft.json +1 -1
  328. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  329. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  330. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  331. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  332. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  333. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  334. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  335. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  336. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +3 -0
  337. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -0
  338. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +3 -0
  339. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -0
  340. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +3 -0
  341. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -0
  342. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  343. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  344. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  345. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  348. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +3 -0
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -0
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +4 -0
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +3 -0
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -0
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js +4 -0
  358. package/web/.next/server/chunks/ssr/[root-of-the-server]__a2d6c0ac._.js.map +1 -0
  359. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +3 -0
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -0
  361. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +3 -0
  362. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -0
  363. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  364. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  365. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  366. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  367. package/web/.next/server/chunks/ssr/_08eaf4b1._.js +3 -0
  368. package/web/.next/server/chunks/ssr/_08eaf4b1._.js.map +1 -0
  369. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  370. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  371. package/web/.next/server/chunks/ssr/_295fffde._.js +1 -1
  372. package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
  373. package/web/.next/server/chunks/ssr/_3686b70d._.js +3 -0
  374. package/web/.next/server/chunks/ssr/_3686b70d._.js.map +1 -0
  375. package/web/.next/server/chunks/ssr/{_3a71f39b._.js → _45286124._.js} +2 -2
  376. package/web/.next/server/chunks/ssr/{_3a71f39b._.js.map → _45286124._.js.map} +1 -1
  377. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  378. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  379. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  380. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  381. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  382. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  383. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  384. package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
  385. package/web/.next/server/chunks/ssr/_783debcb._.js +9 -0
  386. package/web/.next/server/chunks/ssr/_783debcb._.js.map +1 -0
  387. package/web/.next/server/chunks/ssr/{_7953be4d._.js → _d943aad7._.js} +2 -2
  388. package/web/.next/server/chunks/ssr/_d943aad7._.js.map +1 -0
  389. package/web/.next/server/chunks/ssr/_f8c55130._.js +4 -0
  390. package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -0
  391. package/web/.next/server/chunks/ssr/_ff04802c._.js +3 -0
  392. package/web/.next/server/chunks/ssr/_ff04802c._.js.map +1 -0
  393. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  394. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  395. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  396. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  397. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +3 -0
  398. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -0
  399. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +5 -0
  400. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -0
  401. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +5 -0
  402. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -0
  403. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +3 -0
  404. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -0
  405. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +3 -0
  406. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -0
  407. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
  408. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
  409. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
  410. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
  411. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  412. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  413. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  414. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  415. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  416. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  417. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  418. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  419. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  421. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +3 -0
  423. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -0
  424. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +3 -0
  425. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  427. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  428. package/web/.next/server/pages/500.html +2 -2
  429. package/web/.next/server/server-reference-manifest.js +1 -1
  430. package/web/.next/server/server-reference-manifest.json +74 -59
  431. package/web/.next/static/chunks/{ad47bc6ddec7508e.js → 128f165077681f87.js} +2 -2
  432. package/web/.next/static/chunks/20ec94c610d07a10.css +1 -0
  433. package/web/.next/static/chunks/2ceebcc839ee0d4b.js +1 -0
  434. package/web/.next/static/chunks/{6bc240cd4ae43267.js → 34e82d5f47b938e3.js} +1 -1
  435. package/web/.next/static/chunks/38c5a2cc4ce5d4d2.js +1 -0
  436. package/web/.next/static/chunks/3aba9d2242420cb5.js +1 -0
  437. package/web/.next/static/chunks/4981e52ed9b5dea3.js +1 -0
  438. package/web/.next/static/chunks/{a060ad1bb509687f.js → 4a909223df60de49.js} +1 -1
  439. package/web/.next/static/chunks/5858b85217fd0ead.js +1 -0
  440. package/web/.next/static/chunks/{a2a03ecb10000974.js → 68a0d1e04c636c09.js} +1 -1
  441. package/web/.next/static/chunks/{393b27ab5de6c454.js → 85473115de724a77.js} +1 -1
  442. package/web/.next/static/chunks/{d9c9db1823b4dffd.js → 8a5c7d80045a8f49.js} +2 -2
  443. package/web/.next/static/chunks/{5a2e1c8699897c26.js → 90c687976b254681.js} +3 -3
  444. package/web/.next/static/chunks/aab749e78b4c10bc.js +1 -0
  445. package/web/.next/static/chunks/{534194b584a151ed.js → ac18577f94d63177.js} +1 -1
  446. package/web/.next/static/chunks/ae81796726a9bba3.js +1 -0
  447. package/web/.next/static/chunks/{6dc0a23d333274ae.js → af9ee4accaa11f83.js} +2 -2
  448. package/web/.next/static/chunks/{c164b157638b2a8b.js → b082a6bb7e17b701.js} +1 -1
  449. package/web/.next/static/chunks/{b49ab0b290e9342d.js → b46545caae3b4930.js} +1 -1
  450. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +0 -4
  451. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +0 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +0 -4
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +0 -1
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +0 -4
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +0 -1
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +0 -4
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +0 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +0 -4
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +0 -1
  460. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +0 -4
  461. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +0 -1
  462. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +0 -4
  463. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +0 -1
  464. package/web/.next/server/chunks/ssr/_02e01240._.js +0 -4
  465. package/web/.next/server/chunks/ssr/_02e01240._.js.map +0 -1
  466. package/web/.next/server/chunks/ssr/_18886033._.js +0 -4
  467. package/web/.next/server/chunks/ssr/_18886033._.js.map +0 -1
  468. package/web/.next/server/chunks/ssr/_22e00a14._.js +0 -4
  469. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +0 -1
  470. package/web/.next/server/chunks/ssr/_43ba79e7._.js +0 -3
  471. package/web/.next/server/chunks/ssr/_43ba79e7._.js.map +0 -1
  472. package/web/.next/server/chunks/ssr/_7953be4d._.js.map +0 -1
  473. package/web/.next/server/chunks/ssr/_7cb0396e._.js +0 -3
  474. package/web/.next/server/chunks/ssr/_7cb0396e._.js.map +0 -1
  475. package/web/.next/server/chunks/ssr/_a5a5901d._.js +0 -4
  476. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +0 -1
  477. package/web/.next/server/chunks/ssr/_ad09f271._.js +0 -4
  478. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +0 -1
  479. package/web/.next/server/chunks/ssr/_c3f595c6._.js +0 -4
  480. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +0 -1
  481. package/web/.next/server/chunks/ssr/_e680c57c._.js +0 -9
  482. package/web/.next/server/chunks/ssr/_e680c57c._.js.map +0 -1
  483. package/web/.next/server/chunks/ssr/_ea9e1556._.js +0 -4
  484. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +0 -1
  485. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +0 -6
  486. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +0 -1
  487. package/web/.next/server/chunks/ssr/_f33cd07e._.js +0 -6
  488. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +0 -1
  489. package/web/.next/server/chunks/ssr/_f8b45233._.js +0 -4
  490. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +0 -1
  491. package/web/.next/server/chunks/ssr/_fd595af2._.js +0 -3
  492. package/web/.next/server/chunks/ssr/_fd595af2._.js.map +0 -1
  493. package/web/.next/static/chunks/0baf5a2e56d191cf.js +0 -1
  494. package/web/.next/static/chunks/32c46154c31c58fc.js +0 -1
  495. package/web/.next/static/chunks/84b480808bd74fa9.css +0 -1
  496. package/web/.next/static/chunks/8b0a9cb5109fe899.js +0 -1
  497. package/web/.next/static/chunks/b65e555419a0c664.js +0 -1
  498. package/web/.next/static/chunks/e30aa6d2cf824fa1.js +0 -1
  499. package/web/.next/static/chunks/f5abbc495d496f5b.js +0 -1
  500. /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_buildManifest.js +0 -0
  501. /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_clientMiddlewareManifest.json +0 -0
  502. /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → PEEwFezIwaFMSsCXbx5zQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Migration 054: Create security_events table.
3
+ *
4
+ * Creates the security_events table for persisting security audit events
5
+ * (policy violations, approval decisions, enforcement outcomes).
6
+ *
7
+ * Columns:
8
+ * - id TEXT PRIMARY KEY
9
+ * - repository_path TEXT NOT NULL
10
+ * - feature_id TEXT (nullable)
11
+ * - severity TEXT NOT NULL
12
+ * - category TEXT NOT NULL
13
+ * - disposition TEXT NOT NULL
14
+ * - actor TEXT (nullable)
15
+ * - message TEXT (nullable)
16
+ * - remediation_summary TEXT (nullable)
17
+ * - created_at TEXT NOT NULL
18
+ *
19
+ * Indexes:
20
+ * - idx_security_events_repo_created ON (repository_path, created_at)
21
+ * - idx_security_events_feature ON (feature_id)
22
+ *
23
+ * Migration is idempotent: uses IF NOT EXISTS on CREATE TABLE and indexes.
24
+ */
25
+ export async function up({ context: db }) {
26
+ db.exec(`
27
+ CREATE TABLE IF NOT EXISTS security_events (
28
+ id TEXT PRIMARY KEY,
29
+ repository_path TEXT NOT NULL,
30
+ feature_id TEXT,
31
+ severity TEXT NOT NULL,
32
+ category TEXT NOT NULL,
33
+ disposition TEXT NOT NULL,
34
+ actor TEXT,
35
+ message TEXT,
36
+ remediation_summary TEXT,
37
+ created_at TEXT NOT NULL
38
+ )
39
+ `);
40
+ db.exec(`
41
+ CREATE INDEX IF NOT EXISTS idx_security_events_repo_created
42
+ ON security_events(repository_path, created_at)
43
+ `);
44
+ db.exec(`
45
+ CREATE INDEX IF NOT EXISTS idx_security_events_feature
46
+ ON security_events(feature_id)
47
+ `);
48
+ }
49
+ export async function down({ context: db }) {
50
+ // Additive-only migration — table is new and ignored by older code.
51
+ // No-op per LESSONS.md backward compatibility rules.
52
+ void db;
53
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration 055: Add fork tracking fields to repositories table
3
+ *
4
+ * Adds is_fork (boolean as INTEGER) and upstream_url (TEXT) columns
5
+ * to support auto-fork detection when importing remote repositories
6
+ * the user lacks push access to.
7
+ */
8
+ import type { MigrationParams } from 'umzug';
9
+ import type Database from 'better-sqlite3';
10
+ export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
11
+ export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
12
+ //# sourceMappingURL=055-add-repository-fork-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"055-add-repository-fork-fields.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Migration 055: Add fork tracking fields to repositories table
3
+ *
4
+ * Adds is_fork (boolean as INTEGER) and upstream_url (TEXT) columns
5
+ * to support auto-fork detection when importing remote repositories
6
+ * the user lacks push access to.
7
+ */
8
+ export async function up({ context: db }) {
9
+ const columns = db.pragma('table_info(repositories)');
10
+ const names = new Set(columns.map((c) => c.name));
11
+ if (!names.has('is_fork')) {
12
+ db.exec('ALTER TABLE repositories ADD COLUMN is_fork INTEGER DEFAULT 0');
13
+ }
14
+ if (!names.has('upstream_url')) {
15
+ db.exec('ALTER TABLE repositories ADD COLUMN upstream_url TEXT');
16
+ }
17
+ // Check if index already exists before creating
18
+ const indexes = db.pragma('index_list(repositories)');
19
+ const indexNames = new Set(indexes.map((i) => i.name));
20
+ if (!indexNames.has('idx_repositories_upstream_url')) {
21
+ db.exec('CREATE INDEX idx_repositories_upstream_url ON repositories(upstream_url)');
22
+ }
23
+ }
24
+ export async function down({ context: db }) {
25
+ void db;
26
+ }
@@ -16,7 +16,8 @@ export declare class SQLiteRepositoryRepository implements IRepositoryRepository
16
16
  remove(id: string): Promise<void>;
17
17
  findByPathIncludingDeleted(path: string): Promise<Repository | null>;
18
18
  findByRemoteUrl(url: string): Promise<Repository | null>;
19
- update(id: string, fields: Partial<Pick<Repository, 'name' | 'path' | 'remoteUrl'>>): Promise<Repository>;
19
+ findByUpstreamUrl(url: string): Promise<Repository | null>;
20
+ update(id: string, fields: Partial<Pick<Repository, 'name' | 'path' | 'remoteUrl' | 'isFork' | 'upstreamUrl'>>): Promise<Repository>;
20
21
  softDelete(id: string): Promise<void>;
21
22
  restore(id: string): Promise<void>;
22
23
  static normalizeRemoteUrl(url: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-repository.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-repository.repository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gFAAgF,CAAC;AAC5H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAOnE,qBACa,0BAA2B,YAAW,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAYnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMhD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQpD,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ7B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMpE,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAC/D,OAAO,CAAC,UAAU,CAAC;IA+BhB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/C"}
1
+ {"version":3,"file":"sqlite-repository.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-repository.repository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gFAAgF,CAAC;AAC5H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAOnE,qBACa,0BAA2B,YAAW,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAYnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMhD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQpD,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ7B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMpE,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASxD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAS1D,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC,GAC1F,OAAO,CAAC,UAAU,CAAC;IAuChB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/C"}
@@ -61,6 +61,12 @@ let SQLiteRepositoryRepository = SQLiteRepositoryRepository_1 = class SQLiteRepo
61
61
  const row = stmt.get(normalized);
62
62
  return row ? fromDatabase(row) : null;
63
63
  }
64
+ async findByUpstreamUrl(url) {
65
+ const normalized = SQLiteRepositoryRepository_1.normalizeRemoteUrl(url);
66
+ const stmt = this.db.prepare('SELECT * FROM repositories WHERE upstream_url = ? AND deleted_at IS NULL');
67
+ const row = stmt.get(normalized);
68
+ return row ? fromDatabase(row) : null;
69
+ }
64
70
  async update(id, fields) {
65
71
  const now = Date.now();
66
72
  const setClauses = ['updated_at = ?'];
@@ -77,6 +83,14 @@ let SQLiteRepositoryRepository = SQLiteRepositoryRepository_1 = class SQLiteRepo
77
83
  setClauses.push('remote_url = ?');
78
84
  values.push(fields.remoteUrl);
79
85
  }
86
+ if (fields.isFork !== undefined) {
87
+ setClauses.push('is_fork = ?');
88
+ values.push(fields.isFork ? 1 : 0);
89
+ }
90
+ if (fields.upstreamUrl !== undefined) {
91
+ setClauses.push('upstream_url = ?');
92
+ values.push(fields.upstreamUrl);
93
+ }
80
94
  values.push(id);
81
95
  const stmt = this.db.prepare(`UPDATE repositories SET ${setClauses.join(', ')} WHERE id = ?`);
82
96
  const result = stmt.run(...values);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * SQLite Security Event Repository Implementation
3
+ *
4
+ * Implements ISecurityEventRepository using SQLite database.
5
+ * Uses prepared statements to prevent SQL injection.
6
+ * Supports 90-day retention cleanup.
7
+ */
8
+ import type Database from 'better-sqlite3';
9
+ import type { ISecurityEventRepository, SecurityEventQueryOptions } from '../../application/ports/output/repositories/security-event.repository.interface.js';
10
+ import type { SecurityEvent } from '../../domain/generated/output.js';
11
+ /**
12
+ * SQLite implementation of ISecurityEventRepository.
13
+ * Manages SecurityEvent persistence with repository-scoped queries.
14
+ */
15
+ export declare class SQLiteSecurityEventRepository implements ISecurityEventRepository {
16
+ private readonly db;
17
+ constructor(db: Database.Database);
18
+ save(event: SecurityEvent): Promise<void>;
19
+ findByRepository(repositoryPath: string, options?: SecurityEventQueryOptions): Promise<SecurityEvent[]>;
20
+ findByFeature(featureId: string, options?: SecurityEventQueryOptions): Promise<SecurityEvent[]>;
21
+ deleteOlderThan(date: Date): Promise<number>;
22
+ count(repositoryPath: string): Promise<number>;
23
+ }
24
+ //# sourceMappingURL=sqlite-security-event.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-security-event.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-security-event.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,oFAAoF,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAOtE;;;GAGG;AACH,qBACa,6BAA8B,YAAW,wBAAwB;IAChE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzC,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BrB,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BrB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOrD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * SQLite Security Event Repository Implementation
3
+ *
4
+ * Implements ISecurityEventRepository using SQLite database.
5
+ * Uses prepared statements to prevent SQL injection.
6
+ * Supports 90-day retention cleanup.
7
+ */
8
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16
+ };
17
+ import { injectable } from 'tsyringe';
18
+ import { toDatabase, fromDatabase, } from '../persistence/sqlite/mappers/security-event.mapper.js';
19
+ /**
20
+ * SQLite implementation of ISecurityEventRepository.
21
+ * Manages SecurityEvent persistence with repository-scoped queries.
22
+ */
23
+ let SQLiteSecurityEventRepository = class SQLiteSecurityEventRepository {
24
+ db;
25
+ constructor(db) {
26
+ this.db = db;
27
+ }
28
+ async save(event) {
29
+ const row = toDatabase(event);
30
+ const stmt = this.db.prepare(`
31
+ INSERT INTO security_events (
32
+ id, repository_path, feature_id, severity, category,
33
+ disposition, actor, message, remediation_summary, created_at
34
+ ) VALUES (
35
+ @id, @repository_path, @feature_id, @severity, @category,
36
+ @disposition, @actor, @message, @remediation_summary, @created_at
37
+ )
38
+ `);
39
+ stmt.run(row);
40
+ }
41
+ async findByRepository(repositoryPath, options) {
42
+ let sql = 'SELECT * FROM security_events WHERE repository_path = ?';
43
+ const params = [repositoryPath];
44
+ if (options?.severity) {
45
+ sql += ' AND severity = ?';
46
+ params.push(options.severity);
47
+ }
48
+ sql += ' ORDER BY created_at DESC';
49
+ if (options?.limit) {
50
+ sql += ' LIMIT ?';
51
+ params.push(options.limit);
52
+ }
53
+ if (options?.offset) {
54
+ sql += ' OFFSET ?';
55
+ params.push(options.offset);
56
+ }
57
+ const stmt = this.db.prepare(sql);
58
+ const rows = stmt.all(...params);
59
+ return rows.map(fromDatabase);
60
+ }
61
+ async findByFeature(featureId, options) {
62
+ let sql = 'SELECT * FROM security_events WHERE feature_id = ?';
63
+ const params = [featureId];
64
+ if (options?.severity) {
65
+ sql += ' AND severity = ?';
66
+ params.push(options.severity);
67
+ }
68
+ sql += ' ORDER BY created_at DESC';
69
+ if (options?.limit) {
70
+ sql += ' LIMIT ?';
71
+ params.push(options.limit);
72
+ }
73
+ if (options?.offset) {
74
+ sql += ' OFFSET ?';
75
+ params.push(options.offset);
76
+ }
77
+ const stmt = this.db.prepare(sql);
78
+ const rows = stmt.all(...params);
79
+ return rows.map(fromDatabase);
80
+ }
81
+ async deleteOlderThan(date) {
82
+ const stmt = this.db.prepare('DELETE FROM security_events WHERE created_at < ?');
83
+ const result = stmt.run(date.toISOString());
84
+ return result.changes;
85
+ }
86
+ async count(repositoryPath) {
87
+ const stmt = this.db.prepare('SELECT COUNT(*) as cnt FROM security_events WHERE repository_path = ?');
88
+ const row = stmt.get(repositoryPath);
89
+ return row.cnt;
90
+ }
91
+ };
92
+ SQLiteSecurityEventRepository = __decorate([
93
+ injectable(),
94
+ __metadata("design:paramtypes", [Object])
95
+ ], SQLiteSecurityEventRepository);
96
+ export { SQLiteSecurityEventRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmFnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA2FhD"}
1
+ {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuFnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAgGhD"}
@@ -73,7 +73,9 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
73
73
  interactive_agent_max_concurrent_sessions,
74
74
  auto_archive_delay_minutes,
75
75
  stage_timeout_fast_implement_ms,
76
- fab_position_swapped
76
+ fab_position_swapped,
77
+ skill_injection_enabled, skill_injection_skills,
78
+ security_mode, security_last_evaluation_at, security_policy_source
77
79
  ) VALUES (
78
80
  @id, @created_at, @updated_at,
79
81
  @model_analyze, @model_requirements, @model_plan, @model_implement, @model_default,
@@ -105,7 +107,9 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
105
107
  @interactive_agent_max_concurrent_sessions,
106
108
  @auto_archive_delay_minutes,
107
109
  @stage_timeout_fast_implement_ms,
108
- @fab_position_swapped
110
+ @fab_position_swapped,
111
+ @skill_injection_enabled, @skill_injection_skills,
112
+ @security_mode, @security_last_evaluation_at, @security_policy_source
109
113
  )
110
114
  `);
111
115
  // Execute with named parameters (safe from SQL injection)
@@ -211,7 +215,12 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
211
215
  interactive_agent_max_concurrent_sessions = @interactive_agent_max_concurrent_sessions,
212
216
  auto_archive_delay_minutes = @auto_archive_delay_minutes,
213
217
  stage_timeout_fast_implement_ms = @stage_timeout_fast_implement_ms,
214
- fab_position_swapped = @fab_position_swapped
218
+ fab_position_swapped = @fab_position_swapped,
219
+ skill_injection_enabled = @skill_injection_enabled,
220
+ skill_injection_skills = @skill_injection_skills,
221
+ security_mode = @security_mode,
222
+ security_last_evaluation_at = @security_last_evaluation_at,
223
+ security_policy_source = @security_policy_source
215
224
  WHERE id = @id
216
225
  `);
217
226
  // Execute with named parameters (safe from SQL injection)
@@ -23,6 +23,8 @@ export declare class ClaudeCodeExecutorService implements IAgentExecutor {
23
23
  constructor(spawn: SpawnFunction);
24
24
  /** Debug logging — writes to stdout so it appears in the worker log file */
25
25
  private log;
26
+ /** Executor capabilities for security constraint validation */
27
+ private static readonly CAPABILITIES;
26
28
  execute(prompt: string, options?: AgentExecutionOptions): Promise<AgentExecutionResult>;
27
29
  executeStream(prompt: string, options?: AgentExecutionOptions): AsyncIterable<AgentExecutionStreamEvent>;
28
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EAEpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAMlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA8B;IAE3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAML,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoHtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAgG3C;;;OAGG;IACH,OAAO,CAAC,cAAc;IA0CtB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI/C,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IA6BvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,eAAe;CAkExB"}
1
+ {"version":3,"file":"claude-code-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EAEpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiBjD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAMlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA8B;IAE3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAMX,+DAA+D;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAGlC;IAEI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2HtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAsG3C;;;OAGG;IACH,OAAO,CAAC,cAAc;IA0CtB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI/C,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IA6BvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,eAAe;CAkExB"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { getCurrentPhase, getLogPrefix } from '../../feature-agent/log-context.js';
12
12
  import { IS_WINDOWS } from '../../../../platform.js';
13
+ import { validateSecurityConstraints, } from './security-constraint-validator.js';
13
14
  /** Features supported by Claude Code CLI */
14
15
  const SUPPORTED_FEATURES = new Set([
15
16
  'session-resume',
@@ -37,8 +38,16 @@ export class ClaudeCodeExecutorService {
37
38
  const ts = new Date().toISOString();
38
39
  process.stdout.write(`[${ts}] ${getCurrentPhase()}${getLogPrefix()}${message}\n`);
39
40
  }
41
+ /** Executor capabilities for security constraint validation */
42
+ static CAPABILITIES = {
43
+ requiresPermissiveMode: true, // uses --dangerously-skip-permissions
44
+ executorName: 'claude-code',
45
+ };
40
46
  async execute(prompt, options) {
41
47
  this.silent = options?.silent ?? false;
48
+ const warning = validateSecurityConstraints(options?.securityConstraints, ClaudeCodeExecutorService.CAPABILITIES);
49
+ if (warning)
50
+ this.log(warning);
42
51
  // Use stream-json so we get real-time events in the worker log
43
52
  // instead of zero output for minutes with --output-format json
44
53
  const args = this.buildStreamArgs(prompt, options);
@@ -141,6 +150,9 @@ export class ClaudeCodeExecutorService {
141
150
  });
142
151
  }
143
152
  async *executeStream(prompt, options) {
153
+ const warning = validateSecurityConstraints(options?.securityConstraints, ClaudeCodeExecutorService.CAPABILITIES);
154
+ if (warning)
155
+ this.log(warning);
144
156
  const args = this.buildStreamArgs(prompt, options);
145
157
  const spawnOpts = this.buildSpawnOptions(options);
146
158
  const proc = this.spawn('claude', args, spawnOpts);
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Security Constraint Validator
3
+ *
4
+ * Pure function that validates security constraints against executor capabilities.
5
+ * Reusable across all executor types. Throws SecurityViolationError in Enforce mode
6
+ * when constraints are incompatible. Logs warnings in Advisory mode.
7
+ */
8
+ import type { SecurityConstraints } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
9
+ export interface ExecutorCapabilities {
10
+ /** Whether this executor requires --dangerously-skip-permissions or equivalent */
11
+ requiresPermissiveMode: boolean;
12
+ /** Human-readable executor name for error messages */
13
+ executorName: string;
14
+ }
15
+ /**
16
+ * Validate security constraints against executor capabilities.
17
+ *
18
+ * @returns A warning message if Advisory mode detects an issue, or undefined if clean.
19
+ * @throws SecurityViolationError in Enforce mode when constraints are incompatible.
20
+ */
21
+ export declare function validateSecurityConstraints(constraints: SecurityConstraints | undefined, capabilities: ExecutorCapabilities): string | undefined;
22
+ //# sourceMappingURL=security-constraint-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-constraint-validator.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4EAA4E,CAAC;AAGtH,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,sBAAsB,EAAE,OAAO,CAAC;IAChC,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,GAAG,SAAS,EAC5C,YAAY,EAAE,oBAAoB,GACjC,MAAM,GAAG,SAAS,CAiBpB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Security Constraint Validator
3
+ *
4
+ * Pure function that validates security constraints against executor capabilities.
5
+ * Reusable across all executor types. Throws SecurityViolationError in Enforce mode
6
+ * when constraints are incompatible. Logs warnings in Advisory mode.
7
+ */
8
+ import { SecurityMode, SecurityActionCategory } from '../../../../../domain/generated/output.js';
9
+ import { SecurityViolationError } from '../../../../../domain/errors/security-violation.error.js';
10
+ /**
11
+ * Validate security constraints against executor capabilities.
12
+ *
13
+ * @returns A warning message if Advisory mode detects an issue, or undefined if clean.
14
+ * @throws SecurityViolationError in Enforce mode when constraints are incompatible.
15
+ */
16
+ export function validateSecurityConstraints(constraints, capabilities) {
17
+ if (!constraints)
18
+ return undefined;
19
+ if (constraints.mode === SecurityMode.Disabled)
20
+ return undefined;
21
+ if (constraints.sandboxLevel === 'strict' && capabilities.requiresPermissiveMode) {
22
+ const rule = `Executor "${capabilities.executorName}" requires permissive mode but policy demands strict sandbox`;
23
+ const remediation = 'Either switch to an executor that supports strict sandboxing, or relax the sandbox policy to permissive.';
24
+ if (constraints.mode === SecurityMode.Enforce) {
25
+ throw new SecurityViolationError(rule, SecurityActionCategory.SandboxEscalation, remediation);
26
+ }
27
+ return `[security:advisory] ${rule}. ${remediation}`;
28
+ }
29
+ return undefined;
30
+ }
@@ -69,6 +69,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
69
69
  ciFixAttempts: number;
70
70
  ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
71
71
  ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
72
+ securityMode: import("../../../../domain/index.js").SecurityMode;
73
+ securityActionDispositions: Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>;
72
74
  }, {
73
75
  featureId?: string | undefined;
74
76
  repositoryPath?: string | undefined;
@@ -102,6 +104,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
102
104
  ciFixAttempts?: number | undefined;
103
105
  ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
104
106
  ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
107
+ securityMode?: import("../../../../domain/index.js").SecurityMode | undefined;
108
+ securityActionDispositions?: Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>> | undefined;
105
109
  }, "__start__" | "fast-implement", {
106
110
  featureId: {
107
111
  (): import("@langchain/langgraph").LastValue<string>;
@@ -155,6 +159,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
155
159
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
156
160
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
157
161
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
162
+ securityMode: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").SecurityMode, import("../../../../domain/index.js").SecurityMode>;
163
+ securityActionDispositions: import("@langchain/langgraph").BinaryOperatorAggregate<Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>, Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>>;
158
164
  }, {
159
165
  featureId: {
160
166
  (): import("@langchain/langgraph").LastValue<string>;
@@ -208,6 +214,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
208
214
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
209
215
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
210
216
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
217
+ securityMode: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").SecurityMode, import("../../../../domain/index.js").SecurityMode>;
218
+ securityActionDispositions: import("@langchain/langgraph").BinaryOperatorAggregate<Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>, Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>>;
211
219
  }, import("@langchain/langgraph").StateDefinition, {
212
220
  "fast-implement": Partial<import("@langchain/langgraph").StateType<{
213
221
  featureId: {
@@ -262,6 +270,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
262
270
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
263
271
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
264
272
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
273
+ securityMode: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").SecurityMode, import("../../../../domain/index.js").SecurityMode>;
274
+ securityActionDispositions: import("@langchain/langgraph").BinaryOperatorAggregate<Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>, Partial<Record<import("../../../../domain/index.js").SecurityActionCategory, import("../../../../domain/index.js").SecurityActionDisposition>>>;
265
275
  }>>;
266
276
  }, unknown, unknown>;
267
277
  //# sourceMappingURL=fast-feature-agent-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
1
+ {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}