@shepai/cli 1.89.0 → 1.90.0-pr266.a433e53

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 (148) hide show
  1. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +48 -0
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +4 -1
  4. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +103 -0
  6. package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
  7. package/dist/src/presentation/web/app/actions/get-merge-review-data.js +11 -3
  8. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  9. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +18 -1
  10. package/dist/src/presentation/web/components/common/merge-review/diff-view.d.ts +6 -0
  11. package/dist/src/presentation/web/components/common/merge-review/diff-view.d.ts.map +1 -0
  12. package/dist/src/presentation/web/components/common/merge-review/diff-view.js +30 -0
  13. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.d.ts +18 -0
  14. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.d.ts.map +1 -0
  15. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.js +174 -0
  16. package/dist/src/presentation/web/components/common/merge-review/index.d.ts +2 -1
  17. package/dist/src/presentation/web/components/common/merge-review/index.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/merge-review/index.js +1 -0
  19. package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts +23 -0
  20. package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +3 -2
  23. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts +2 -0
  24. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts.map +1 -1
  25. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.js +69 -0
  26. package/dist/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +1 -1
  28. package/web/.next/BUILD_ID +1 -1
  29. package/web/.next/build-manifest.json +2 -2
  30. package/web/.next/fallback-build-manifest.json +2 -2
  31. package/web/.next/prerender-manifest.json +3 -3
  32. package/web/.next/required-server-files.js +1 -1
  33. package/web/.next/required-server-files.json +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  35. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  38. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  41. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +18 -18
  44. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +21 -21
  47. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  50. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  53. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/_global-error.html +2 -2
  56. package/web/.next/server/app/_global-error.rsc +1 -1
  57. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  58. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  59. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  62. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  63. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  65. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  66. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  67. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  69. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  70. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  72. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  73. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  75. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  77. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  78. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  79. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  80. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  81. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js +1 -1
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  99. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/_29664580._.js +4 -0
  101. package/web/.next/server/chunks/ssr/_29664580._.js.map +1 -0
  102. package/web/.next/server/chunks/ssr/_752e01fd._.js +1 -1
  103. package/web/.next/server/chunks/ssr/_752e01fd._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  105. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  107. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  109. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  111. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -2
  117. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  119. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  121. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  123. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -2
  125. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  126. package/web/.next/server/pages/500.html +2 -2
  127. package/web/.next/server/server-reference-manifest.js +1 -1
  128. package/web/.next/server/server-reference-manifest.json +28 -28
  129. package/web/.next/static/chunks/{28d9c6be736a8cc7.js → 0dbb1b115b7057d1.js} +1 -1
  130. package/web/.next/static/chunks/{76a19eab77047b72.js → 1e22b970b6ea293e.js} +1 -1
  131. package/web/.next/static/chunks/{9bccc1cd5344dbe9.js → 422119dbb854e24d.js} +1 -1
  132. package/web/.next/static/chunks/{fa7ead6d9da7f2e0.js → 4ec5c55bd008ca77.js} +1 -1
  133. package/web/.next/static/chunks/639c74e1b887b3f1.js +1 -0
  134. package/web/.next/static/chunks/{0d676efbd1a069ac.js → 68c6cff9df2ced02.js} +1 -1
  135. package/web/.next/static/chunks/8af039ad6352c80f.js +1 -0
  136. package/web/.next/static/chunks/9a9cfe47f7979b3b.js +2 -0
  137. package/web/.next/static/chunks/{fa2691e072fbc32e.js → cc3aabbb65d2ea2d.js} +1 -1
  138. package/web/.next/static/chunks/{6a3ca803667538a9.js → d054512d5b9f8fa1.js} +1 -1
  139. package/web/.next/static/chunks/f98eb6cb17b61cb2.css +2 -0
  140. package/web/.next/server/chunks/ssr/_74b242a7._.js +0 -4
  141. package/web/.next/server/chunks/ssr/_74b242a7._.js.map +0 -1
  142. package/web/.next/static/chunks/276883c9dc46601a.js +0 -1
  143. package/web/.next/static/chunks/59e9e5a9cfc3ba38.css +0 -2
  144. package/web/.next/static/chunks/a7d96dc069f1377e.js +0 -2
  145. package/web/.next/static/chunks/f30cab6b43179c31.js +0 -1
  146. /package/web/.next/static/{cHOqXO6iNIVWrwsMRYjXK → hcGPUbllHrS6fwBIqh8eE}/_buildManifest.js +0 -0
  147. /package/web/.next/static/{cHOqXO6iNIVWrwsMRYjXK → hcGPUbllHrS6fwBIqh8eE}/_clientMiddlewareManifest.json +0 -0
  148. /package/web/.next/static/{cHOqXO6iNIVWrwsMRYjXK → hcGPUbllHrS6fwBIqh8eE}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"merge-review.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/merge-review.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAgChF,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,YAAoB,EACpB,WAAmB,EACnB,SAAS,EACT,iBAAiB,GAClB,EAAE,gBAAgB,2CAsIlB"}
1
+ {"version":3,"file":"merge-review.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/merge-review.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAgChF,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,YAAoB,EACpB,WAAmB,EACnB,SAAS,EACT,iBAAiB,GAClB,EAAE,gBAAgB,2CAyIlB"}
@@ -4,12 +4,13 @@ import { ExternalLink, AlertTriangle, FileDiff, GitCommitHorizontal, GitBranch,
4
4
  import { Badge } from '../../ui/badge.js';
5
5
  import { CiStatusBadge } from '../../common/ci-status-badge/index.js';
6
6
  import { DrawerActionBar } from '../../common/drawer-action-bar/index.js';
7
+ import { DiffView } from './diff-view.js';
7
8
  function PhaseList({ phases }) {
8
9
  return (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "px-4 py-3", children: [_jsxs("div", { className: "mb-3 flex items-center gap-2", children: [_jsx(Layers, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Implementation Phases" })] }), _jsx("ol", { className: "space-y-2", children: phases.map((phase, i) => (_jsxs("li", { className: "flex items-start gap-2.5", children: [_jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-emerald-100 text-[10px] font-bold text-emerald-700", children: i + 1 }), _jsxs("div", { className: "min-w-0", children: [_jsx("span", { className: "text-foreground text-xs font-medium", children: phase.name }), phase.description ? (_jsx("p", { className: "text-muted-foreground mt-0.5 text-[11px] leading-relaxed", children: phase.description })) : null] })] }, phase.id))) })] }) }));
9
10
  }
10
11
  export function MergeReview({ data, onApprove, onReject, isProcessing = false, isRejecting = false, chatInput, onChatInputChange, }) {
11
- const { pr, diffSummary, phases, branch, warning } = data;
12
+ const { pr, diffSummary, fileDiffs, phases, branch, warning } = data;
12
13
  return (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [_jsxs("div", { className: "flex-1 space-y-4 overflow-y-auto p-4", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "mt-1.5 h-2.5 w-2.5 shrink-0 rounded-full bg-emerald-500" }), _jsxs("div", { className: "flex-1", children: [_jsx("h2", { className: "text-foreground text-sm font-bold", children: "Merge Review" }), _jsx("p", { className: "text-muted-foreground mt-1 text-xs leading-relaxed", children: pr
13
14
  ? 'Review the pull request details and approve to merge.'
14
- : 'Review the changes and approve to merge.' })] })] }), branch ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(GitBranch, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx(Badge, { variant: "secondary", className: "font-mono text-[11px]", children: branch.source }), _jsx(ArrowRight, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }), _jsx(Badge, { variant: "outline", className: "font-mono text-[11px]", children: branch.target })] }) })) : null, pr ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "space-y-3 px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { variant: "outline", className: "text-xs", children: pr.status })] }), pr.ciStatus ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "CI Status" }), _jsx(CiStatusBadge, { status: pr.ciStatus })] })) : null, pr.commitHash ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Commit" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: pr.commitHash.slice(0, 7) })] })] })) : null] }) })) : null, diffSummary ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "px-4 py-3", children: [_jsxs("div", { className: "mb-3 flex items-center gap-2", children: [_jsx(FileDiff, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changes" })] }), _jsxs("div", { className: "grid grid-cols-4 gap-3", children: [_jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.filesChanged }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "files" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-green-600", children: ["+", diffSummary.additions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "additions" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-red-600", children: ["-", diffSummary.deletions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "deletions" })] }), _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.commitCount }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "commits" })] })] })] }) })) : warning ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(AlertTriangle, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "text-muted-foreground text-xs", children: warning })] }) })) : null, phases && phases.length > 0 ? _jsx(PhaseList, { phases: phases }) : null] }), _jsx(DrawerActionBar, { onReject: onReject, onApprove: onApprove, approveLabel: "Approve Merge", revisionPlaceholder: "Ask AI to revise before merging...", isProcessing: isProcessing, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })] }));
15
+ : 'Review the changes and approve to merge.' })] })] }), branch ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(GitBranch, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx(Badge, { variant: "secondary", className: "font-mono text-[11px]", children: branch.source }), _jsx(ArrowRight, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }), _jsx(Badge, { variant: "outline", className: "font-mono text-[11px]", children: branch.target })] }) })) : null, pr ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "space-y-3 px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { variant: "outline", className: "text-xs", children: pr.status })] }), pr.ciStatus ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "CI Status" }), _jsx(CiStatusBadge, { status: pr.ciStatus })] })) : null, pr.commitHash ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Commit" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: pr.commitHash.slice(0, 7) })] })] })) : null] }) })) : null, diffSummary ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "px-4 py-3", children: [_jsxs("div", { className: "mb-3 flex items-center gap-2", children: [_jsx(FileDiff, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changes" })] }), _jsxs("div", { className: "grid grid-cols-4 gap-3", children: [_jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.filesChanged }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "files" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-green-600", children: ["+", diffSummary.additions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "additions" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-red-600", children: ["-", diffSummary.deletions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "deletions" })] }), _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.commitCount }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "commits" })] })] })] }) })) : warning ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(AlertTriangle, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "text-muted-foreground text-xs", children: warning })] }) })) : null, fileDiffs && fileDiffs.length > 0 ? _jsx(DiffView, { fileDiffs: fileDiffs }) : null, phases && phases.length > 0 ? _jsx(PhaseList, { phases: phases }) : null] }), _jsx(DrawerActionBar, { onReject: onReject, onApprove: onApprove, approveLabel: "Approve Merge", revisionPlaceholder: "Ask AI to revise before merging...", isProcessing: isProcessing, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange })] }));
15
16
  }
@@ -21,4 +21,6 @@ export declare const NoPrWithDiff: Story;
21
21
  export declare const NoPrNoDiff: Story;
22
22
  /** With implementation phases shown. */
23
23
  export declare const WithPhases: Story;
24
+ /** With file diffs — shows expandable file list with line-level changes. */
25
+ export declare const WithFileDiffs: Story;
24
26
  //# sourceMappingURL=merge-review.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-review.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/merge-review.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAsC7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,YAAY,EAAE,KAS1B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC"}
1
+ {"version":3,"file":"merge-review.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/merge-review.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,YAAY,EAAE,KAS1B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC"}
@@ -15,6 +15,65 @@ const samplePhases = [
15
15
  { id: 'phase-3', name: 'Integration & Wiring', description: 'Connect to control center' },
16
16
  ];
17
17
  const sampleBranch = { source: 'feat/add-auth', target: 'main' };
18
+ const sampleFileDiffs = [
19
+ {
20
+ path: 'src/components/auth/login-form.tsx',
21
+ additions: 8,
22
+ deletions: 2,
23
+ status: 'modified',
24
+ hunks: [
25
+ {
26
+ header: '@@ -1,5 +1,8 @@',
27
+ lines: [
28
+ {
29
+ type: 'context',
30
+ content: "import { useState } from 'react';",
31
+ oldNumber: 1,
32
+ newNumber: 1,
33
+ },
34
+ {
35
+ type: 'added',
36
+ content: "import { Input } from '../../ui/input.js';",
37
+ newNumber: 2,
38
+ },
39
+ { type: 'context', content: '', oldNumber: 2, newNumber: 3 },
40
+ { type: 'removed', content: 'export function LoginForm() {', oldNumber: 3 },
41
+ {
42
+ type: 'added',
43
+ content: 'export function LoginForm({ onSubmit }: Props) {',
44
+ newNumber: 4,
45
+ },
46
+ {
47
+ type: 'context',
48
+ content: " const [email, setEmail] = useState('');",
49
+ oldNumber: 4,
50
+ newNumber: 5,
51
+ },
52
+ ],
53
+ },
54
+ ],
55
+ },
56
+ {
57
+ path: 'src/lib/auth.ts',
58
+ additions: 12,
59
+ deletions: 0,
60
+ status: 'added',
61
+ hunks: [
62
+ {
63
+ header: '@@ -0,0 +1,4 @@',
64
+ lines: [
65
+ {
66
+ type: 'added',
67
+ content: 'export async function hashPassword(pw: string) {',
68
+ newNumber: 1,
69
+ },
70
+ { type: 'added', content: ' return hash(pw, 10);', newNumber: 2 },
71
+ { type: 'added', content: '}', newNumber: 3 },
72
+ ],
73
+ },
74
+ ],
75
+ },
76
+ ];
18
77
  const fullData = {
19
78
  pr: fullPr,
20
79
  branch: sampleBranch,
@@ -130,3 +189,13 @@ export const WithPhases = {
130
189
  ...defaultActions,
131
190
  },
132
191
  };
192
+ /** With file diffs — shows expandable file list with line-level changes. */
193
+ export const WithFileDiffs = {
194
+ args: {
195
+ data: {
196
+ ...fullData,
197
+ fileDiffs: sampleFileDiffs,
198
+ },
199
+ ...defaultActions,
200
+ },
201
+ };