@shepai/cli 1.81.0 → 1.82.0-pr253.ecbd0ca

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 (125) hide show
  1. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  2. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +3 -0
  3. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  4. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +8 -1
  5. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  6. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +1 -0
  7. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts +2 -0
  8. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +1 -1
  9. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +65 -0
  10. package/dist/tsconfig.build.tsbuildinfo +1 -1
  11. package/package.json +1 -1
  12. package/web/.next/BUILD_ID +1 -1
  13. package/web/.next/build-manifest.json +2 -2
  14. package/web/.next/fallback-build-manifest.json +2 -2
  15. package/web/.next/prerender-manifest.json +3 -3
  16. package/web/.next/required-server-files.js +1 -1
  17. package/web/.next/required-server-files.json +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  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 +14 -14
  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 +18 -18
  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]/page/server-reference-manifest.json +21 -21
  31. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  34. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  37. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/_global-error.html +2 -2
  40. package/web/.next/server/app/_global-error.rsc +1 -1
  41. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  47. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  49. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  50. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  52. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  54. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  56. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  58. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  59. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  60. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  61. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  62. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  63. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  64. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.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]__4be9a9bb._.js +1 -1
  67. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  68. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/_1e3cf73b._.js +1 -1
  76. package/web/.next/server/chunks/ssr/_1e3cf73b._.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/_63868199._.js +1 -1
  78. package/web/.next/server/chunks/ssr/_63868199._.js.map +1 -1
  79. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  80. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/{_a9bd20e7._.js → _9563a37e._.js} +2 -2
  82. package/web/.next/server/chunks/ssr/{_a9bd20e7._.js.map → _9563a37e._.js.map} +1 -1
  83. package/web/.next/server/chunks/ssr/{_443a73b8._.js → _9c4ccd3c._.js} +2 -2
  84. package/web/.next/server/chunks/ssr/{_443a73b8._.js.map → _9c4ccd3c._.js.map} +1 -1
  85. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js +1 -1
  86. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/{_acad3a0a._.js → _f8b5d93c._.js} +2 -2
  88. package/web/.next/server/chunks/ssr/{_acad3a0a._.js.map → _f8b5d93c._.js.map} +1 -1
  89. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  90. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/src_presentation_web_7efa14ca._.js +1 -1
  92. package/web/.next/server/chunks/ssr/src_presentation_web_7efa14ca._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  94. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  96. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  98. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/src_presentation_web_b59d79db._.js +1 -1
  100. package/web/.next/server/chunks/ssr/src_presentation_web_b59d79db._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -2
  102. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  104. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -2
  106. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  107. package/web/.next/server/pages/500.html +2 -2
  108. package/web/.next/server/server-reference-manifest.js +1 -1
  109. package/web/.next/server/server-reference-manifest.json +28 -28
  110. package/web/.next/static/chunks/{1145c07ed418ff5f.js → 1b97689878d85e89.js} +1 -1
  111. package/web/.next/static/chunks/1edbb960447a6b77.js +1 -0
  112. package/web/.next/static/chunks/{aa29aeb2773241a1.js → 283368c8a4d8430b.js} +1 -1
  113. package/web/.next/static/chunks/{0c048048cb2cfbaa.js → 5c9f19b4b6f7a828.js} +1 -1
  114. package/web/.next/static/chunks/{71939cdc18fa4e10.js → 60be99cd0e96954c.js} +1 -1
  115. package/web/.next/static/chunks/{c89e416ccf4e2f4a.js → 63098b44c9aae2c0.js} +2 -2
  116. package/web/.next/static/chunks/{0bdbe1cc9455ff91.js → 89e2999b0b070bb7.js} +1 -1
  117. package/web/.next/static/chunks/{58d2d89b83b2f777.js → a8beb7c4e4e7452d.js} +1 -1
  118. package/web/.next/static/chunks/ae01d2be1d0bad47.css +2 -0
  119. package/web/.next/static/chunks/{f9c2c44f843344ea.js → be063038a7dfbe4e.js} +1 -1
  120. package/web/.next/static/chunks/{735d7a295a2358aa.js → dcf7baf83946590f.js} +1 -1
  121. package/web/.next/static/chunks/0c6a84d6dc47ee76.js +0 -1
  122. package/web/.next/static/chunks/96bab6d3820504f3.css +0 -2
  123. /package/web/.next/static/{Bq92HGWK4ybMJvAQ3w10T → dA1SrRBjp-dLSoo1oCMdm}/_buildManifest.js +0 -0
  124. /package/web/.next/static/{Bq92HGWK4ybMJvAQ3w10T → dA1SrRBjp-dLSoo1oCMdm}/_clientMiddlewareManifest.json +0 -0
  125. /package/web/.next/static/{Bq92HGWK4ybMJvAQ3w10T → dA1SrRBjp-dLSoo1oCMdm}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"reject-agent-run.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/agents/reject-agent-run.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAC7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAS1G,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBANrB,kBAAkB,EAAE,mBAAmB,EAEvC,cAAc,EAAE,2BAA2B,EAE3C,iBAAiB,EAAE,kBAAkB,EAErC,qBAAqB,EAAE,sBAAsB;IAG1D,OAAO,CACX,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CAgHH"}
1
+ {"version":3,"file":"reject-agent-run.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/agents/reject-agent-run.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAC7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAU1G,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBANrB,kBAAkB,EAAE,mBAAmB,EAEvC,cAAc,EAAE,2BAA2B,EAE3C,iBAAiB,EAAE,kBAAkB,EAErC,qBAAqB,EAAE,sBAAsB;IAG1D,OAAO,CACX,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CAmHH"}
@@ -23,6 +23,7 @@ import { readFileSync } from 'node:fs';
23
23
  import { join } from 'node:path';
24
24
  import { AgentRunStatus } from '../../../domain/generated/output.js';
25
25
  import { writeSpecFileAtomic } from '../../../infrastructure/services/agents/feature-agent/nodes/node-helpers.js';
26
+ import { recordLifecycleEvent } from '../../../infrastructure/services/agents/feature-agent/phase-timing-context.js';
26
27
  import { computeWorktreePath } from '../../../infrastructure/services/ide-launchers/compute-worktree-path.js';
27
28
  let RejectAgentRunUseCase = class RejectAgentRunUseCase {
28
29
  agentRunRepository;
@@ -101,6 +102,8 @@ let RejectAgentRunUseCase = class RejectAgentRunUseCase {
101
102
  catch {
102
103
  // Non-fatal
103
104
  }
105
+ // Record rejected lifecycle event
106
+ await recordLifecycleEvent('run:rejected', id, this.phaseTimingRepository);
104
107
  // Spawn worker with rejection payload
105
108
  const rejectionPayload = {
106
109
  rejected: true,
@@ -1 +1 @@
1
- {"version":3,"file":"feature-create-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAI5E,YAAY,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAE/F,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,EAAE,wBAAwB,2CAiY1B"}
1
+ {"version":3,"file":"feature-create-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAI5E,YAAY,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAE/F,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,EAAE,wBAAwB,2CAgZ1B"}
@@ -121,8 +121,15 @@ export function FeatureCreateDrawer({ open, onClose, onSubmit, repositoryPath, i
121
121
  const handleRemoveFile = useCallback((path) => {
122
122
  setAttachments((prev) => prev.filter((f) => f.path !== path));
123
123
  }, []);
124
+ const formRef = useRef(null);
125
+ const handleKeyDown = useCallback((e) => {
126
+ if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {
127
+ e.preventDefault();
128
+ formRef.current?.requestSubmit();
129
+ }
130
+ }, []);
124
131
  const hasFeatures = features && features.length > 0;
125
- return (_jsx(BaseDrawer, { open: open, onClose: attemptClose, size: "md", modal: false, dismissOnOutsideClick: true, "data-testid": "feature-create-drawer", header: _jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500" }), _jsx(DrawerTitle, { children: "NEW FEATURE" })] }), isSubmitting ? (_jsx(DrawerDescription, { asChild: true, children: _jsx("div", { children: _jsx(Badge, { variant: "secondary", children: "Creating..." }) }) })) : null] }), footer: _jsxs("div", { className: "flex flex-row justify-end gap-2", children: [_jsx(Button, { variant: "outline", onClick: attemptClose, disabled: isSubmitting, children: "Cancel" }), _jsx(Button, { type: "submit", form: "create-feature-form", disabled: !description.trim() || isSubmitting, children: isSubmitting ? 'Creating...' : '+ Create Feature' })] }), children: _jsx("div", { className: "overflow-y-auto p-4", children: _jsx(TooltipProvider, { delayDuration: 400, children: _jsxs("form", { id: "create-feature-form", onSubmit: handleSubmit, className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "feature-description", className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "DESCRIBE YOUR FEATURE" }), _jsxs("div", { className: "border-input focus-within:ring-ring/50 focus-within:border-ring overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow] focus-within:ring-[3px]", children: [_jsx(Textarea, { id: "feature-description", placeholder: "e.g. Add GitHub OAuth login with callback handling and token refresh...", value: description, onChange: (e) => setDescription(e.target.value), rows: 7, required: true, disabled: isSubmitting, className: "field-sizing-fixed min-h-42! resize-none rounded-none border-0 shadow-none focus-visible:ring-0" }), _jsxs("div", { className: "border-input flex items-center gap-3 border-t px-3 py-1.5", children: [_jsx(AgentModelPicker, { initialAgentType: overrideAgent ?? currentAgentType ?? 'claude-code', initialModel: overrideModel ?? currentModel ?? 'claude-sonnet-4-6', mode: "override", onAgentModelChange: (agent, model) => {
132
+ return (_jsx(BaseDrawer, { open: open, onClose: attemptClose, size: "md", modal: false, dismissOnOutsideClick: true, "data-testid": "feature-create-drawer", header: _jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500" }), _jsx(DrawerTitle, { children: "NEW FEATURE" })] }), isSubmitting ? (_jsx(DrawerDescription, { asChild: true, children: _jsx("div", { children: _jsx(Badge, { variant: "secondary", children: "Creating..." }) }) })) : null] }), footer: _jsxs("div", { className: "flex flex-row justify-end gap-2", children: [_jsx(Button, { variant: "outline", onClick: attemptClose, disabled: isSubmitting, children: "Cancel" }), _jsx(Button, { type: "submit", form: "create-feature-form", disabled: !description.trim() || isSubmitting, children: isSubmitting ? 'Creating...' : '+ Create Feature' })] }), children: _jsx("div", { className: "overflow-y-auto p-4", children: _jsx(TooltipProvider, { delayDuration: 400, children: _jsxs("form", { ref: formRef, id: "create-feature-form", onSubmit: handleSubmit, className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "feature-description", className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "DESCRIBE YOUR FEATURE" }), _jsxs("div", { className: "border-input focus-within:ring-ring/50 focus-within:border-ring overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow] focus-within:ring-[3px]", children: [_jsx(Textarea, { id: "feature-description", placeholder: "e.g. Add GitHub OAuth login with callback handling and token refresh...", value: description, onChange: (e) => setDescription(e.target.value), onKeyDown: handleKeyDown, rows: 7, required: true, disabled: isSubmitting, className: "field-sizing-fixed min-h-42! resize-none rounded-none border-0 shadow-none focus-visible:ring-0" }), _jsxs("div", { className: "border-input flex items-center gap-3 border-t px-3 py-1.5", children: [_jsx(AgentModelPicker, { initialAgentType: overrideAgent ?? currentAgentType ?? 'claude-code', initialModel: overrideModel ?? currentModel ?? 'claude-sonnet-4-6', mode: "override", onAgentModelChange: (agent, model) => {
126
133
  setOverrideAgent(agent);
127
134
  setOverrideModel(model);
128
135
  }, disabled: isSubmitting, className: "w-55" }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("div", { className: "ml-auto flex cursor-pointer items-center gap-2", children: [_jsx(Switch, { id: "fast-mode", checked: fast, onCheckedChange: setFast, disabled: isSubmitting }), _jsxs(Label, { htmlFor: "fast-mode", className: "flex cursor-pointer items-center gap-1 text-sm font-medium", children: [_jsx(Zap, { className: "h-3.5 w-3.5" }), "Fast Mode"] })] }) }), _jsx(TooltipContent, { side: "bottom", children: "Skip SDLC phases and implement directly from your prompt." })] })] })] })] }), hasFeatures && initialParentId !== undefined ? (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "parent-feature", className: "text-muted-foreground text-xs font-semibold tracking-wider", children: "PARENT FEATURE" }), _jsx(ParentFeatureCombobox, { features: features, value: parentId, onChange: setParentId, disabled: isSubmitting })] })) : null, _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "border-input flex items-center gap-4 rounded-md border px-3 py-2.5", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider", children: "APPROVE" }) }), _jsx(TooltipContent, { side: "bottom", children: "Auto-approve phase transitions without manual review." })] }), _jsx("div", { className: "flex flex-1 items-center gap-4", children: AUTO_APPROVE_OPTIONS.map((opt) => (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("div", { className: "flex cursor-pointer items-center gap-1.5", children: [_jsx(Switch, { id: `approve-${opt.id}`, size: "sm", checked: approvalGates[opt.id] ?? false, onCheckedChange: (v) => setApprovalGates((prev) => ({ ...prev, [opt.id]: v })), disabled: isSubmitting ||
@@ -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":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA+CD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CA0DxE"}
1
+ {"version":3,"file":"activity-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/activity-tab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAgDD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CA0DxE"}
@@ -16,6 +16,7 @@ const LIFECYCLE_EVENTS = {
16
16
  'run:failed': { label: 'failed', colorClass: 'text-red-600' },
17
17
  'run:stopped': { label: 'stopped', colorClass: 'text-amber-600' },
18
18
  'run:crashed': { label: 'crashed', colorClass: 'text-red-600' },
19
+ 'run:rejected': { label: 'rejected', colorClass: 'text-orange-600' },
19
20
  };
20
21
  function isLifecycleEvent(phase) {
21
22
  return phase.startsWith('run:');
@@ -15,6 +15,8 @@ export declare const Loading: Story;
15
15
  export declare const Empty: Story;
16
16
  /** Error state — inline error message. */
17
17
  export declare const Error: Story;
18
+ /** Rejection — shows rejected lifecycle event after an approval wait. */
19
+ export declare const WithRejection: Story;
18
20
  /** Approval wait indicators — phases with approval wait sub-rows. */
19
21
  export declare const WithApprovalWaits: Story;
20
22
  //# 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;AAmK1C,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,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,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;AAmK1C,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,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,KA+D3B,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,CAAC"}
@@ -216,6 +216,71 @@ export const Error = {
216
216
  error: 'Failed to load phase timings. Please try again.',
217
217
  },
218
218
  };
219
+ /** Rejection — shows rejected lifecycle event after an approval wait. */
220
+ export const WithRejection = {
221
+ args: {
222
+ timings: [
223
+ {
224
+ agentRunId: 'run-1',
225
+ phase: 'run:started',
226
+ startedAt: '2025-01-15T10:00:00Z',
227
+ durationMs: 0,
228
+ },
229
+ {
230
+ agentRunId: 'run-1',
231
+ phase: 'analyze',
232
+ startedAt: '2025-01-15T10:00:01Z',
233
+ completedAt: '2025-01-15T10:00:15Z',
234
+ durationMs: 14000,
235
+ },
236
+ {
237
+ agentRunId: 'run-1',
238
+ phase: 'requirements',
239
+ startedAt: '2025-01-15T10:00:15Z',
240
+ completedAt: '2025-01-15T10:01:45Z',
241
+ durationMs: 90000,
242
+ waitingApprovalAt: '2025-01-15T10:01:00Z',
243
+ approvalWaitMs: 30000,
244
+ },
245
+ {
246
+ agentRunId: 'run-1',
247
+ phase: 'run:rejected',
248
+ startedAt: '2025-01-15T10:01:45Z',
249
+ durationMs: 0,
250
+ },
251
+ {
252
+ agentRunId: 'run-1',
253
+ phase: 'run:resumed',
254
+ startedAt: '2025-01-15T10:02:00Z',
255
+ durationMs: 0,
256
+ },
257
+ {
258
+ agentRunId: 'run-1',
259
+ phase: 'requirements:2',
260
+ startedAt: '2025-01-15T10:02:01Z',
261
+ completedAt: '2025-01-15T10:03:30Z',
262
+ durationMs: 89000,
263
+ waitingApprovalAt: '2025-01-15T10:03:00Z',
264
+ approvalWaitMs: 15000,
265
+ },
266
+ {
267
+ agentRunId: 'run-1',
268
+ phase: 'research',
269
+ startedAt: '2025-01-15T10:03:30Z',
270
+ completedAt: '2025-01-15T10:05:00Z',
271
+ durationMs: 90000,
272
+ },
273
+ {
274
+ agentRunId: 'run-1',
275
+ phase: 'run:completed',
276
+ startedAt: '2025-01-15T10:05:00Z',
277
+ durationMs: 0,
278
+ },
279
+ ],
280
+ loading: false,
281
+ error: null,
282
+ },
283
+ };
219
284
  /** Approval wait indicators — phases with approval wait sub-rows. */
220
285
  export const WithApprovalWaits = {
221
286
  args: {