@shepai/cli 1.140.0 → 1.141.0-pr451.4a6394d

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 (141) hide show
  1. package/dist/src/presentation/web/components/common/feature-drawer-tabs/event-log-viewer.js +12 -10
  2. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  3. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +1 -1
  4. package/dist/tsconfig.build.tsbuildinfo +1 -1
  5. package/package.json +1 -1
  6. package/web/.next/BUILD_ID +1 -1
  7. package/web/.next/build-manifest.json +2 -2
  8. package/web/.next/fallback-build-manifest.json +2 -2
  9. package/web/.next/prerender-manifest.json +3 -3
  10. package/web/.next/required-server-files.js +3 -3
  11. package/web/.next/required-server-files.json +3 -3
  12. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
  13. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  14. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +28 -28
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  19. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  25. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +28 -28
  28. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  31. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
  37. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  40. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/_global-error.html +2 -2
  43. package/web/.next/server/app/_global-error.rsc +1 -1
  44. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  45. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  46. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  47. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  49. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  50. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  52. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  53. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  55. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  57. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  59. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  61. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  62. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  63. package/web/.next/server/chunks/ssr/[root-of-the-server]__2bdf88a0._.js +1 -1
  64. package/web/.next/server/chunks/ssr/[root-of-the-server]__2bdf88a0._.js.map +1 -1
  65. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  66. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  67. package/web/.next/server/chunks/ssr/[root-of-the-server]__42faf5ae._.js +1 -1
  68. package/web/.next/server/chunks/ssr/[root-of-the-server]__42faf5ae._.js.map +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__685ee565._.js +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__685ee565._.js.map +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__74756aae._.js +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__74756aae._.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js +2 -2
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  83. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/_0c5f56e3._.js +2 -2
  85. package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
  87. package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
  89. package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/{_bbb3a0fc._.js → _4ed0097e._.js} +2 -2
  91. package/web/.next/server/chunks/ssr/{_bbb3a0fc._.js.map → _4ed0097e._.js.map} +1 -1
  92. package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
  93. package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
  94. package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
  95. package/web/.next/server/chunks/ssr/_64bdfc6f._.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/{_0a69ebd5._.js → _a06d9ccc._.js} +2 -2
  99. package/web/.next/server/chunks/ssr/{_0a69ebd5._.js.map → _a06d9ccc._.js.map} +1 -1
  100. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  101. package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
  102. package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  104. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  106. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  108. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  110. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/{src_presentation_web_340a9d64._.js → src_presentation_web_e43b70ee._.js} +2 -2
  119. package/web/.next/server/chunks/ssr/{src_presentation_web_340a9d64._.js.map → src_presentation_web_e43b70ee._.js.map} +1 -1
  120. package/web/.next/server/pages/500.html +2 -2
  121. package/web/.next/server/server-reference-manifest.js +1 -1
  122. package/web/.next/server/server-reference-manifest.json +44 -44
  123. package/web/.next/static/chunks/0303c78e39053f1b.js +1 -0
  124. package/web/.next/static/chunks/{523ad15a08ac9fe7.js → 1385263232ac9a7c.js} +1 -1
  125. package/web/.next/static/chunks/{2349b8618faac5df.js → 2e3e456f1f0b130f.js} +1 -1
  126. package/web/.next/static/chunks/{3c5c3a51c24cf5c8.js → 2f918f5f997c51c0.js} +1 -1
  127. package/web/.next/static/chunks/594ee90754746a9b.js +1 -0
  128. package/web/.next/static/chunks/{8ae10749f2e8db60.js → 6bb6e4eb62a7f549.js} +1 -1
  129. package/web/.next/static/chunks/{7b850f14e5ef6865.js → 7397ae0ab649be87.js} +1 -1
  130. package/web/.next/static/chunks/{ec05de0bd9d358e4.js → 7621e0f0aaa7ca78.js} +1 -1
  131. package/web/.next/static/chunks/{9eff18338e76d253.js → 79647f021bb186db.js} +1 -1
  132. package/web/.next/static/chunks/{41e43675a8864a3f.js → b1a97b21d18e885e.js} +1 -1
  133. package/web/.next/static/chunks/{5bea21d249dc35f8.js → b49df157363dfe58.js} +2 -2
  134. package/web/.next/static/chunks/{e65c4ae61b6f8045.js → bbba7015f02d903c.js} +1 -1
  135. package/web/.next/static/chunks/cb7bab8d1ddc7b1c.css +1 -0
  136. package/web/.next/static/chunks/1df0c0594135d736.css +0 -1
  137. package/web/.next/static/chunks/7ac8f98c0d991dda.js +0 -1
  138. package/web/.next/static/chunks/b705d6e7529f010b.js +0 -1
  139. /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → w7sNuk9lpcGwQGHFcsWww}/_buildManifest.js +0 -0
  140. /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → w7sNuk9lpcGwQGHFcsWww}/_clientMiddlewareManifest.json +0 -0
  141. /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → w7sNuk9lpcGwQGHFcsWww}/_ssgManifest.js +0 -0
@@ -39,13 +39,16 @@ function LogLineRow({ line }) {
39
39
  function Timestamp({ value }) {
40
40
  if (!value)
41
41
  return null;
42
- const time = value.replace(/^.*T/, '').replace('Z', '');
43
- return (_jsx("span", { className: "text-muted-foreground/60 w-20 shrink-0 font-mono text-[10px]", children: time }));
42
+ // Show only MM:SS — compact, hours rarely change in a session
43
+ const full = value.replace(/^.*T/, '').replace('Z', '');
44
+ const parts = full.split(':');
45
+ const compact = parts.length >= 3 ? `${parts[1]}:${parts[2].split('.')[0]}` : full;
46
+ return (_jsx("span", { className: "text-muted-foreground/60 w-11 shrink-0 font-mono text-[10px]", children: compact }));
44
47
  }
45
48
  function PhaseBadge({ phase }) {
46
49
  if (!phase)
47
- return null;
48
- return (_jsx("span", { className: "bg-muted text-muted-foreground shrink-0 rounded px-1.5 py-0.5 font-mono text-[10px] font-medium", children: phase }));
50
+ return _jsx("span", { className: "w-20 shrink-0" });
51
+ return (_jsx("span", { className: "bg-muted text-muted-foreground w-20 shrink-0 truncate rounded px-1.5 py-0.5 font-mono text-[10px] font-medium", title: phase, children: phase }));
49
52
  }
50
53
  /* ---------------------------------------------------------------------------
51
54
  * Event-specific rows
@@ -54,7 +57,7 @@ function ToolCallRow({ line }) {
54
57
  const { toolName, args } = parseToolCall(line.message);
55
58
  // Try to extract a key detail from args for common tools
56
59
  const detail = getToolDetail(toolName, args);
57
- return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 border-b border-transparent px-3 py-1.5 transition-colors", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5", children: [_jsx(ToolIcon, { toolName: toolName }), _jsx("span", { className: "text-xs font-semibold text-violet-600 dark:text-violet-400", children: toolName }), detail ? (_jsx("span", { className: "text-muted-foreground min-w-0 truncate font-mono text-xs", children: detail })) : null] })] }));
60
+ return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 border-b border-transparent px-3 py-1.5 transition-colors", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5", children: [_jsx(ToolIcon, { toolName: toolName }), _jsx("span", { className: "text-xs font-semibold text-violet-600 dark:text-violet-400", children: toolName }), detail ? (_jsx("span", { className: "text-muted-foreground min-w-0 font-mono text-xs break-all", children: detail })) : null] })] }));
58
61
  }
59
62
  function ToolIcon({ toolName }) {
60
63
  const lower = toolName.toLowerCase();
@@ -80,8 +83,7 @@ function getToolDetail(toolName, args) {
80
83
  if (toolName === 'Grep' && parsed.pattern)
81
84
  return parsed.pattern;
82
85
  if (toolName === 'Bash' && parsed.command) {
83
- const cmd = parsed.command;
84
- return cmd.length > 80 ? `${cmd.slice(0, 80)}...` : cmd;
86
+ return parsed.command;
85
87
  }
86
88
  if (toolName === 'Task' && parsed.description)
87
89
  return parsed.description;
@@ -89,7 +91,7 @@ function getToolDetail(toolName, args) {
89
91
  catch {
90
92
  // Not JSON — show truncated raw args
91
93
  if (args.length > 0)
92
- return args.length > 80 ? `${args.slice(0, 80)}...` : args;
94
+ return args;
93
95
  }
94
96
  return null;
95
97
  }
@@ -105,10 +107,10 @@ function TokensRow({ line }) {
105
107
  return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 px-3 py-1.5 transition-colors", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5", children: [_jsx(Coins, { className: "mt-0.5 h-3 w-3 shrink-0 text-amber-500" }), _jsxs("span", { className: "text-muted-foreground text-xs", children: [_jsx("span", { className: "text-amber-600 dark:text-amber-400", children: inputTokens.toLocaleString() }), ' in / ', _jsx("span", { className: "text-amber-600 dark:text-amber-400", children: outputTokens.toLocaleString() }), ' out'] })] })] }));
106
108
  }
107
109
  function WorkerRow({ line }) {
108
- return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 bg-zinc-50 px-3 py-1.5 transition-colors dark:bg-zinc-900/50", children: [_jsx(Timestamp, { value: line.timestamp }), _jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5", children: [_jsx(Server, { className: "mt-0.5 h-3 w-3 shrink-0 text-zinc-500" }), _jsx("span", { className: "text-muted-foreground text-xs font-medium", children: line.message })] })] }));
110
+ return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 bg-zinc-50 px-3 py-1.5 transition-colors dark:bg-zinc-900/50", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5", children: [_jsx(Server, { className: "mt-0.5 h-3 w-3 shrink-0 text-zinc-500" }), _jsx("span", { className: "text-muted-foreground text-xs font-medium break-all", children: line.message })] })] }));
109
111
  }
110
112
  function InfoRow({ line }) {
111
- return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 px-3 py-1.5 transition-colors", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsx("span", { className: "text-muted-foreground min-w-0 text-xs", children: line.message })] }));
113
+ return (_jsxs("div", { className: "hover:bg-muted/50 flex items-start gap-2 px-3 py-1.5 transition-colors", children: [_jsx(Timestamp, { value: line.timestamp }), _jsx(PhaseBadge, { phase: line.phase }), _jsx("span", { className: "text-muted-foreground min-w-0 text-xs break-all", children: line.message })] }));
112
114
  }
113
115
  function RawRow({ line }) {
114
116
  return (_jsx("div", { className: "px-3 py-0.5", children: _jsx("span", { className: "text-muted-foreground/70 font-mono text-[11px] break-all whitespace-pre-wrap", children: line.raw }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"feature-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA4CnE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAqdA"}
1
+ {"version":3,"file":"feature-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA4CnE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAydA"}
@@ -109,7 +109,7 @@ export function FeatureNode({ data, selected, }) {
109
109
  ? 'cursor-pointer opacity-80 transition-opacity hover:opacity-100'
110
110
  : 'cursor-default'), children: data.deployment.status === DeploymentState.Booting ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin text-blue-500" })) : (_jsx(Globe, { className: "h-3 w-3 text-green-600" })) }) }), _jsx(TooltipContent, { side: "bottom", children: data.deployment.status === DeploymentState.Booting
111
111
  ? 'Deploying...'
112
- : (data.deployment.url ?? 'Live') })] }) })) : null, data.fastMode ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { "data-testid": "feature-node-fast-mode-badge", children: _jsx(Zap, { className: "h-3 w-3 text-amber-500" }) }) }), _jsx(TooltipContent, { side: "bottom", children: "Fast Mode" })] }) })) : null] }), data.state === 'deleting' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Loader2, { className: "h-3.5 w-3.5 shrink-0 animate-spin text-gray-400" }), _jsx("span", { className: "text-muted-foreground", children: "Deleting\u2026" })] })) : data.state === 'creating' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 animate-spin" }), _jsx("span", { className: "text-muted-foreground", children: getBadgeText(data) })] })) : data.state === 'running' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 animate-spin" }), _jsx("span", { className: "text-muted-foreground", children: getBadgeText(data) })] })) : data.state === 'action-required' ? (_jsxs(Button, { variant: "default", size: "xs", "aria-label": getActionRequiredLabel(data), "data-testid": "feature-node-approve-button",
112
+ : (data.deployment.url ?? 'Live') })] }) })) : null, data.fastMode ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { "data-testid": "feature-node-fast-mode-badge", children: _jsx(Zap, { className: "h-3 w-3 text-amber-500" }) }) }), _jsx(TooltipContent, { side: "bottom", children: "Fast Mode" })] }) })) : null] }), data.state === 'deleting' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Loader2, { className: "h-3.5 w-3.5 shrink-0 animate-spin text-gray-400" }), _jsx("span", { className: "text-muted-foreground", children: "Deleting\u2026" })] })) : data.state === 'creating' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 animate-spin text-teal-600 dark:text-teal-400" }), _jsx("span", { className: "font-medium text-teal-600 dark:text-teal-400", children: getBadgeText(data) })] })) : data.state === 'running' ? (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 animate-spin text-teal-600 dark:text-teal-400" }), _jsx("span", { className: "font-medium text-teal-600 dark:text-teal-400", children: getBadgeText(data) })] })) : data.state === 'action-required' ? (_jsxs(Button, { variant: "default", size: "xs", "aria-label": getActionRequiredLabel(data), "data-testid": "feature-node-approve-button",
113
113
  // eslint-disable-next-line @typescript-eslint/no-empty-function -- click bubbles to card's onNodeClick
114
114
  onClick: () => { }, className: "nodrag dark:bg-primary dark:text-primary-foreground dark:hover:bg-primary/90 cursor-pointer bg-neutral-900 text-[11px] text-white hover:bg-neutral-800", children: [_jsx(Eye, { className: "h-3 w-3" }), getActionRequiredLabel(data)] })) : data.state === 'error' && data.onRetry ? (_jsxs(Button, { variant: "outline", size: "xs", "aria-label": "Retry", "data-testid": "feature-node-retry-button", onClick: (e) => {
115
115
  e.stopPropagation();