@shepai/cli 1.129.2-pr414.a244c89 → 1.129.2

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 (143) hide show
  1. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  2. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +6 -21
  3. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts +0 -16
  4. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +1 -1
  5. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +0 -126
  6. package/dist/tsconfig.build.tsbuildinfo +1 -1
  7. package/package.json +1 -1
  8. package/web/.next/BUILD_ID +1 -1
  9. package/web/.next/build-manifest.json +2 -2
  10. package/web/.next/fallback-build-manifest.json +2 -2
  11. package/web/.next/prerender-manifest.json +3 -3
  12. package/web/.next/required-server-files.js +3 -3
  13. package/web/.next/required-server-files.json +3 -3
  14. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +24 -24
  15. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +24 -24
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +30 -30
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  27. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +24 -24
  30. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  33. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +30 -30
  36. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  37. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  38. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +22 -22
  39. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  42. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/_global-error.html +2 -2
  45. package/web/.next/server/app/_global-error.rsc +1 -1
  46. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  47. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  49. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  51. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  52. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  54. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  55. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  57. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  59. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  61. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  63. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +1 -1
  64. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +1 -1
  65. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -1
  66. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  67. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  68. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +1 -1
  69. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -1
  70. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +1 -1
  71. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js.map +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f886f77._.js +2 -2
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__60684242._.js +2 -2
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +1 -1
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js +2 -2
  92. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  93. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  94. package/web/.next/server/chunks/ssr/{_e1434c79._.js → _6f7bfa91._.js} +2 -2
  95. package/web/.next/server/chunks/ssr/{_e1434c79._.js.map → _6f7bfa91._.js.map} +1 -1
  96. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  97. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  99. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/_bda8a4be._.js +3 -0
  101. package/web/.next/server/chunks/ssr/{_5fb28e57._.js.map → _bda8a4be._.js.map} +1 -1
  102. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  103. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  105. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  107. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +2 -2
  109. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +1 -1
  111. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web_a6ae877a._.js +3 -0
  117. package/web/.next/server/chunks/ssr/{src_presentation_web_2fdcc9da._.js.map → src_presentation_web_a6ae877a._.js.map} +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +2 -2
  119. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  121. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.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/pages/500.html +2 -2
  125. package/web/.next/server/server-reference-manifest.js +1 -1
  126. package/web/.next/server/server-reference-manifest.json +38 -38
  127. package/web/.next/static/chunks/{f48057e0ef8a1769.js → 03b3edc6ec7acce0.js} +1 -1
  128. package/web/.next/static/chunks/{51b7b8bdb07f2ebf.js → 0f21da463e7b5fe5.js} +1 -1
  129. package/web/.next/static/chunks/{069841443403cfcc.js → 1ff1a21ebd0d3dce.js} +2 -2
  130. package/web/.next/static/chunks/{901929c364c0910e.js → 38eca63d40c799cd.js} +1 -1
  131. package/web/.next/static/chunks/{676c6d4741f6192d.js → 49cc0701d7c41ba6.js} +1 -1
  132. package/web/.next/static/chunks/{a22e9f6f61bf7c13.js → 4b6d766e61789186.js} +1 -1
  133. package/web/.next/static/chunks/{92f126f7bc731420.js → 5d14ca93cee50529.js} +2 -2
  134. package/web/.next/static/chunks/{1192d7345f9f2518.js → 94f33a53f1b81108.js} +1 -1
  135. package/web/.next/static/chunks/{3328e3a18a27d6a2.js → 987ffb823189289a.js} +1 -1
  136. package/web/.next/static/chunks/{b19d87b816606ee1.js → ad726954ef3ab226.js} +1 -1
  137. package/web/.next/static/chunks/{82c085fcdc2b24c4.js → ecd9562d3fd2944c.js} +1 -1
  138. package/web/.next/static/chunks/{e9d946d8d4227e83.js → ff5e04cd8c24dd59.js} +1 -1
  139. package/web/.next/server/chunks/ssr/_5fb28e57._.js +0 -3
  140. package/web/.next/server/chunks/ssr/src_presentation_web_2fdcc9da._.js +0 -3
  141. /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → FwKj7hWEdbpIR5DtG1GQJ}/_buildManifest.js +0 -0
  142. /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → FwKj7hWEdbpIR5DtG1GQJ}/_clientMiddlewareManifest.json +0 -0
  143. /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → FwKj7hWEdbpIR5DtG1GQJ}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/activity-tab.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,yCAAyC,CAAC;AA4EjD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC7C;AAmED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,CAAC,EAAE,qBAAqB,EAAE,GACjC,iBAAiB,EAAE,CAgErB;AA6BD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,2CAqE3F"}
1
+ {"version":3,"file":"activity-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/activity-tab.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,yCAAyC,CAAC;AAmEjD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC7C;AAmED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,CAAC,EAAE,qBAAqB,EAAE,GACjC,iBAAiB,EAAE,CAgErB;AA6BD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,2CAqE3F"}
@@ -24,18 +24,12 @@ function getEffectiveDuration(timing, now) {
24
24
  function hasRunningPhase(timings) {
25
25
  return timings.some((t) => !t.phase.startsWith('run:') && !t.completedAt && t.startedAt);
26
26
  }
27
- /** Returns true if any non-lifecycle phase is currently waiting for approval. */
28
- function hasWaitingForApprovalPhase(timings) {
29
- return timings.some((t) => !t.phase.startsWith('run:') && !!t.waitingApprovalAt && !t.approvalWaitMs);
30
- }
31
- /** Hook that ticks every second while there are running or approval-waiting phases. */
27
+ /** Hook that ticks every second while there are running phases. */
32
28
  function useTickingNow(timings) {
33
29
  const [now, setNow] = useState(Date.now);
34
30
  const intervalRef = useRef(null);
35
31
  useEffect(() => {
36
- const running = timings
37
- ? hasRunningPhase(timings) || hasWaitingForApprovalPhase(timings)
38
- : false;
32
+ const running = timings ? hasRunningPhase(timings) : false;
39
33
  if (running) {
40
34
  // Tick every second
41
35
  intervalRef.current = setInterval(() => setNow(Date.now()), 1000);
@@ -319,21 +313,12 @@ function NodeTimingRow({ timing, maxDurationMs, now, }) {
319
313
  backgroundImage: 'linear-gradient(90deg, transparent 0%, rgb(59 130 246) 50%, transparent 100%)',
320
314
  backgroundSize: '200% 100%',
321
315
  animation: 'shimmer 1.5s ease-in-out infinite',
322
- } })) : (_jsx("div", { className: `h-full rounded-full transition-all duration-300 ${barColorClass}`, style: { width: `${Math.min(barPercent, 100)}%` } })) }), _jsx("span", { className: "text-muted-foreground w-14 shrink-0 text-right text-sm font-medium tabular-nums", children: formatDuration(durationMs) })] }), _jsxs("div", { className: "ml-[28px] flex items-center gap-3 text-xs", children: [timing.startedAt ? (_jsx("span", { className: "text-muted-foreground/60 tabular-nums", children: formatTimestamp(timing.startedAt) })) : null, totalTokens != null && totalTokens > 0 ? (_jsxs("span", { className: "text-muted-foreground/70 inline-flex items-center gap-0.5", children: [_jsx(Zap, { className: "h-3 w-3 opacity-50" }), formatTokens(totalTokens)] })) : null, timing.costUsd != null && timing.costUsd > 0 ? (_jsxs("span", { className: "text-muted-foreground/70 inline-flex items-center gap-0.5", children: [_jsx(DollarSign, { className: "h-3 w-3 opacity-50" }), formatCost(timing.costUsd)] })) : null] }), (timing.approvalWaitMs != null && timing.approvalWaitMs > 0) ||
323
- (timing.waitingApprovalAt && !timing.approvalWaitMs) ? (_jsx(ApprovalWaitRow, { timing: timing, maxDurationMs: maxDurationMs, now: now })) : null] }));
316
+ } })) : (_jsx("div", { className: `h-full rounded-full transition-all duration-300 ${barColorClass}`, style: { width: `${Math.min(barPercent, 100)}%` } })) }), _jsx("span", { className: "text-muted-foreground w-14 shrink-0 text-right text-sm font-medium tabular-nums", children: formatDuration(durationMs) })] }), _jsxs("div", { className: "ml-[28px] flex items-center gap-3 text-xs", children: [timing.startedAt ? (_jsx("span", { className: "text-muted-foreground/60 tabular-nums", children: formatTimestamp(timing.startedAt) })) : null, totalTokens != null && totalTokens > 0 ? (_jsxs("span", { className: "text-muted-foreground/70 inline-flex items-center gap-0.5", children: [_jsx(Zap, { className: "h-3 w-3 opacity-50" }), formatTokens(totalTokens)] })) : null, timing.costUsd != null && timing.costUsd > 0 ? (_jsxs("span", { className: "text-muted-foreground/70 inline-flex items-center gap-0.5", children: [_jsx(DollarSign, { className: "h-3 w-3 opacity-50" }), formatCost(timing.costUsd)] })) : null] }), timing.approvalWaitMs != null && timing.approvalWaitMs > 0 ? (_jsx(ApprovalWaitRow, { timing: timing, maxDurationMs: maxDurationMs })) : null] }));
324
317
  }
325
- function ApprovalWaitRow({ timing, maxDurationMs, now, }) {
326
- // isWaiting = approval requested but not yet resolved (live state)
327
- const isWaiting = !!timing.waitingApprovalAt && !timing.approvalWaitMs;
328
- const waitMs = isWaiting
329
- ? Math.max(0, now - new Date(String(timing.waitingApprovalAt)).getTime())
330
- : (timing.approvalWaitMs ?? 0);
318
+ function ApprovalWaitRow({ timing, maxDurationMs, }) {
319
+ const waitMs = timing.approvalWaitMs ?? 0;
331
320
  const barPercent = maxDurationMs > 0 ? Math.max(2, (waitMs / maxDurationMs) * 100) : 2;
332
- return (_jsxs("div", { "data-testid": `approval-wait-${timing.phase}`, className: "ml-[26px] flex items-center gap-2 rounded-md bg-amber-50/50 px-1.5 py-1 dark:bg-amber-950/20", children: [_jsx(Timer, { className: `h-3.5 w-3.5 shrink-0 text-amber-500 ${isWaiting ? 'animate-pulse' : ''}` }), _jsx("span", { className: "text-muted-foreground w-16 shrink-0 text-xs", children: isWaiting ? 'awaiting' : 'approval' }), _jsx("div", { className: "bg-muted relative h-1.5 min-w-0 flex-1 overflow-hidden rounded-full", children: isWaiting ? (_jsx("div", { className: "absolute inset-0 rounded-full", style: {
333
- backgroundImage: 'linear-gradient(90deg, transparent 0%, rgb(245 158 11) 50%, transparent 100%)',
334
- backgroundSize: '200% 100%',
335
- animation: 'shimmer 1.5s ease-in-out infinite',
336
- } })) : (_jsx("div", { className: "h-full rounded-full bg-amber-500", style: { width: `${Math.min(barPercent, 100)}%` } })) }), _jsx("span", { className: "text-muted-foreground w-14 shrink-0 text-right text-xs tabular-nums", children: formatDuration(waitMs) })] }));
321
+ return (_jsxs("div", { "data-testid": `approval-wait-${timing.phase}`, className: "ml-[26px] flex items-center gap-2 rounded-md bg-amber-50/50 px-1.5 py-1 dark:bg-amber-950/20", children: [_jsx(Timer, { className: "h-3.5 w-3.5 shrink-0 text-amber-500" }), _jsx("span", { className: "text-muted-foreground w-16 shrink-0 text-xs", children: "approval" }), _jsx("div", { className: "bg-muted h-1.5 min-w-0 flex-1 overflow-hidden rounded-full", children: _jsx("div", { className: "h-full rounded-full bg-amber-500", style: { width: `${Math.min(barPercent, 100)}%` } }) }), _jsx("span", { className: "text-muted-foreground w-14 shrink-0 text-right text-xs tabular-nums", children: formatDuration(waitMs) })] }));
337
322
  }
338
323
  function SummaryTotals({ totalExecMs, totalWaitMs, totalInputTokens, totalOutputTokens, totalCostUsd, }) {
339
324
  const totalTokens = totalInputTokens + totalOutputTokens;
@@ -32,20 +32,4 @@ export declare const WithApprovalWaits: Story;
32
32
  * Shows the full pattern: start → work → rejected → resumed → work → rejected → resumed → completed
33
33
  */
34
34
  export declare const FullLifecycle: Story;
35
- /**
36
- * Waiting for approval (live) — simulates the case where the agent has completed
37
- * a phase and is currently waiting for user approval. The "awaiting" sub-row shows
38
- * a pulsing amber indicator with a live-ticking timer.
39
- *
40
- * This covers the bug where the second merge iteration (after rejection + fixes)
41
- * did not show any approval wait indicator.
42
- */
43
- export declare const WaitingForApproval: Story;
44
- /**
45
- * Second iteration waiting for approval — simulates the exact reported bug:
46
- * after rejecting the merge step, the agent fixed things and is now waiting
47
- * for merge approval again in iteration 2. The activity tab must show the
48
- * "awaiting" indicator for merge:2.
49
- */
50
- export declare const SecondIterationWaitingForApproval: Story;
51
35
  //# sourceMappingURL=activity-tab.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAsM1C,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,KAsE3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAwEhC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAiI3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAoChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,EAAE,KA0E/C,CAAC"}
1
+ {"version":3,"file":"activity-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAsM1C,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,KAsE3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAwEhC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAiI3B,CAAC"}
@@ -570,129 +570,3 @@ export const FullLifecycle = {
570
570
  error: null,
571
571
  },
572
572
  };
573
- /**
574
- * Waiting for approval (live) — simulates the case where the agent has completed
575
- * a phase and is currently waiting for user approval. The "awaiting" sub-row shows
576
- * a pulsing amber indicator with a live-ticking timer.
577
- *
578
- * This covers the bug where the second merge iteration (after rejection + fixes)
579
- * did not show any approval wait indicator.
580
- */
581
- export const WaitingForApproval = {
582
- args: {
583
- timings: [
584
- {
585
- agentRunId: 'run-1',
586
- phase: 'run:started',
587
- startedAt: new Date(Date.now() - 120000).toISOString(),
588
- durationMs: 0,
589
- },
590
- {
591
- agentRunId: 'run-1',
592
- phase: 'analyze',
593
- startedAt: new Date(Date.now() - 119000).toISOString(),
594
- completedAt: new Date(Date.now() - 105000).toISOString(),
595
- durationMs: 14000,
596
- },
597
- {
598
- agentRunId: 'run-1',
599
- phase: 'implement',
600
- startedAt: new Date(Date.now() - 105000).toISOString(),
601
- completedAt: new Date(Date.now() - 60000).toISOString(),
602
- durationMs: 45000,
603
- },
604
- {
605
- agentRunId: 'run-1',
606
- phase: 'merge',
607
- startedAt: new Date(Date.now() - 60000).toISOString(),
608
- completedAt: new Date(Date.now() - 30000).toISOString(),
609
- durationMs: 30000,
610
- // waitingApprovalAt set but approvalWaitMs absent = currently waiting
611
- waitingApprovalAt: new Date(Date.now() - 30000).toISOString(),
612
- },
613
- ],
614
- loading: false,
615
- error: null,
616
- },
617
- };
618
- /**
619
- * Second iteration waiting for approval — simulates the exact reported bug:
620
- * after rejecting the merge step, the agent fixed things and is now waiting
621
- * for merge approval again in iteration 2. The activity tab must show the
622
- * "awaiting" indicator for merge:2.
623
- */
624
- export const SecondIterationWaitingForApproval = {
625
- args: {
626
- timings: [
627
- // Iteration 1
628
- {
629
- agentRunId: 'run-1',
630
- phase: 'run:started',
631
- startedAt: new Date(Date.now() - 300000).toISOString(),
632
- durationMs: 0,
633
- },
634
- {
635
- agentRunId: 'run-1',
636
- phase: 'analyze',
637
- startedAt: new Date(Date.now() - 299000).toISOString(),
638
- completedAt: new Date(Date.now() - 285000).toISOString(),
639
- durationMs: 14000,
640
- },
641
- {
642
- agentRunId: 'run-1',
643
- phase: 'implement',
644
- startedAt: new Date(Date.now() - 285000).toISOString(),
645
- completedAt: new Date(Date.now() - 240000).toISOString(),
646
- durationMs: 45000,
647
- },
648
- {
649
- agentRunId: 'run-1',
650
- phase: 'merge',
651
- startedAt: new Date(Date.now() - 240000).toISOString(),
652
- completedAt: new Date(Date.now() - 210000).toISOString(),
653
- durationMs: 30000,
654
- waitingApprovalAt: new Date(Date.now() - 210000).toISOString(),
655
- approvalWaitMs: 15000,
656
- },
657
- {
658
- agentRunId: 'run-1',
659
- phase: 'run:rejected',
660
- startedAt: new Date(Date.now() - 195000).toISOString(),
661
- durationMs: 0,
662
- },
663
- // Iteration 2
664
- {
665
- agentRunId: 'run-1',
666
- phase: 'run:resumed',
667
- startedAt: new Date(Date.now() - 180000).toISOString(),
668
- durationMs: 0,
669
- },
670
- {
671
- agentRunId: 'run-1',
672
- phase: 'implement:2',
673
- startedAt: new Date(Date.now() - 180000).toISOString(),
674
- completedAt: new Date(Date.now() - 60000).toISOString(),
675
- durationMs: 120000,
676
- },
677
- {
678
- agentRunId: 'run-1',
679
- phase: 'merge:2',
680
- startedAt: new Date(Date.now() - 60000).toISOString(),
681
- completedAt: new Date(Date.now() - 30000).toISOString(),
682
- durationMs: 30000,
683
- // Currently waiting — approvalWaitMs absent
684
- waitingApprovalAt: new Date(Date.now() - 30000).toISOString(),
685
- },
686
- ],
687
- rejectionFeedback: [
688
- {
689
- iteration: 1,
690
- message: 'The PR has merge conflicts — rebase on main first',
691
- phase: 'merge',
692
- timestamp: new Date(Date.now() - 195000).toISOString(),
693
- },
694
- ],
695
- loading: false,
696
- error: null,
697
- },
698
- };