@shepai/cli 1.129.2-pr414.a244c89 → 1.129.2-pr415.e8b42a3
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.
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts +13 -0
- package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts +7 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +37 -1
- package/dist/src/presentation/web/app/actions/get-available-terminals.d.ts +8 -3
- package/dist/src/presentation/web/app/actions/get-available-terminals.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-available-terminals.js +14 -46
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +6 -21
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts +0 -16
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +0 -126
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +24 -24
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +24 -24
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +24 -24
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +22 -22
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__dcd4f847._.js → [root-of-the-server]__bc532286._.js} +2 -2
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e842eba._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__60684242._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__62cdea24._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__62cdea24._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
- package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_e1434c79._.js → _38d666eb._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_e1434c79._.js.map → _38d666eb._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_5fb28e57._.js → _5cc6b884._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_5fb28e57._.js.map → _5cc6b884._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_1cf7f742._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_2fdcc9da._.js.map → src_presentation_web_1cf7f742._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +38 -38
- package/web/.next/static/chunks/{069841443403cfcc.js → 2109939b818e8a21.js} +2 -2
- package/web/.next/static/chunks/{676c6d4741f6192d.js → 3b013cb80e3abe8d.js} +1 -1
- package/web/.next/static/chunks/{901929c364c0910e.js → 3db5579b21f4865e.js} +1 -1
- package/web/.next/static/chunks/{b19d87b816606ee1.js → 4a4322e31546aeb2.js} +1 -1
- package/web/.next/static/chunks/{92f126f7bc731420.js → 4d1d68d12435ab5e.js} +2 -2
- package/web/.next/static/chunks/{a22e9f6f61bf7c13.js → 5cf6bacf2a830ba1.js} +1 -1
- package/web/.next/static/chunks/{e9d946d8d4227e83.js → 68f633e5218bb175.js} +1 -1
- package/web/.next/static/chunks/{3328e3a18a27d6a2.js → 7d65e69aeeeb0685.js} +1 -1
- package/web/.next/static/chunks/87cedd21dc11fb2f.js +1 -0
- package/web/.next/static/chunks/{1192d7345f9f2518.js → d7e86e225826ded3.js} +1 -1
- package/web/.next/static/chunks/{82c085fcdc2b24c4.js → e83aac447467719e.js} +1 -1
- package/web/.next/static/chunks/{f48057e0ef8a1769.js → edb724ea4f507470.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2f886f77._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2f886f77._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f4a463ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_2fdcc9da._.js +0 -3
- package/web/.next/static/chunks/51b7b8bdb07f2ebf.js +0 -1
- /package/web/.next/server/chunks/{[root-of-the-server]__dcd4f847._.js.map → [root-of-the-server]__bc532286._.js.map} +0 -0
- /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → UBAo6avNyvCewhdD7bkhO}/_buildManifest.js +0 -0
- /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → UBAo6avNyvCewhdD7bkhO}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{BI_nIsDchXe-UwYQ69wzj → UBAo6avNyvCewhdD7bkhO}/_ssgManifest.js +0 -0
|
@@ -10,7 +10,7 @@ export type { IVersionService } from './version-service.interface.js';
|
|
|
10
10
|
export type { IWebServerService } from './web-server-service.interface.js';
|
|
11
11
|
export type { IWorktreeService, WorktreeInfo } from './worktree-service.interface.js';
|
|
12
12
|
export { WorktreeError, WorktreeErrorCode } from './worktree-service.interface.js';
|
|
13
|
-
export type { IToolInstallerService } from './tool-installer.service.js';
|
|
13
|
+
export type { IToolInstallerService, AvailableTerminalEntry } from './tool-installer.service.js';
|
|
14
14
|
export type { INotificationService } from './notification-service.interface.js';
|
|
15
15
|
export type { IGitPrService, CiStatus, CiStatusResult, DiffSummary, MergeStrategy, PrCreateResult, } from './git-pr-service.interface.js';
|
|
16
16
|
export { GitPrError, GitPrErrorCode } from './git-pr-service.interface.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC"}
|
package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* Implementations check tool availability and execute installations.
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolInstallationStatus, ToolInstallCommand } from '../../../../domain/generated/output.js';
|
|
8
|
+
export interface AvailableTerminalEntry {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
available: boolean;
|
|
12
|
+
}
|
|
8
13
|
/**
|
|
9
14
|
* Service interface for tool installation management.
|
|
10
15
|
*/
|
|
@@ -31,5 +36,13 @@ export interface IToolInstallerService {
|
|
|
31
36
|
* @returns ToolInstallationStatus with result of installation
|
|
32
37
|
*/
|
|
33
38
|
executeInstall(toolName: string, onOutput?: (data: string) => void): Promise<ToolInstallationStatus>;
|
|
39
|
+
/**
|
|
40
|
+
* List all terminal emulators supported on the current platform with availability status.
|
|
41
|
+
* Uses tool metadata loaded in the Node.js context (not bundled by Next.js),
|
|
42
|
+
* so this must be called via the DI container from server actions.
|
|
43
|
+
*
|
|
44
|
+
* @returns Array of terminal entries with id, name, and availability
|
|
45
|
+
*/
|
|
46
|
+
listAvailableTerminals(): Promise<AvailableTerminalEntry[]>;
|
|
34
47
|
}
|
|
35
48
|
//# sourceMappingURL=tool-installer.service.d.ts.map
|
package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-installer.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/tool-installer.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAErE;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAE/D;;;;;;OAMG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-installer.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/tool-installer.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAErE;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAE/D;;;;;;OAMG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;CAC7D"}
|
package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Automatic timeout handling with process termination
|
|
12
12
|
* - Immutable status objects via value object factory functions
|
|
13
13
|
*/
|
|
14
|
-
import type { IToolInstallerService } from '../../../application/ports/output/services/tool-installer.service.js';
|
|
14
|
+
import type { IToolInstallerService, AvailableTerminalEntry } from '../../../application/ports/output/services/tool-installer.service.js';
|
|
15
15
|
import type { ToolInstallationStatus, ToolInstallCommand } from '../../../domain/generated/output.js';
|
|
16
16
|
export declare class ToolInstallerServiceImpl implements IToolInstallerService {
|
|
17
17
|
/**
|
|
@@ -29,6 +29,12 @@ export declare class ToolInstallerServiceImpl implements IToolInstallerService {
|
|
|
29
29
|
* Streams stdout/stderr to optional callback and handles timeout automatically.
|
|
30
30
|
*/
|
|
31
31
|
executeInstall(toolName: string, onOutput?: (data: string) => void): Promise<ToolInstallationStatus>;
|
|
32
|
+
/**
|
|
33
|
+
* List all terminal emulators supported on the current platform with availability status.
|
|
34
|
+
* TOOL_METADATA is loaded in the Node.js CLI context, so this is safe to call from the
|
|
35
|
+
* DI container even when the Next.js standalone bundle cannot resolve tools/ via import.meta.url.
|
|
36
|
+
*/
|
|
37
|
+
listAvailableTerminals(): Promise<AvailableTerminalEntry[]>;
|
|
32
38
|
/**
|
|
33
39
|
* Create installation suggestions for a tool based on its metadata
|
|
34
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-installer.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/tool-installer/tool-installer.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tool-installer.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/tool-installer/tool-installer.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,qCAAqC,CAAC;AA2B7C,qBACa,wBAAyB,YAAW,qBAAqB;IACpE;;;OAGG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoC1E;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAqB9D;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAgFlC;;;;OAIG;IACG,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAuCjE;;OAEG;IACH,OAAO,CAAC,6BAA6B;CA4BtC"}
|
package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js
CHANGED
|
@@ -21,7 +21,7 @@ import { injectable } from 'tsyringe';
|
|
|
21
21
|
import { exec, spawn } from 'node:child_process';
|
|
22
22
|
import { platform } from 'node:os';
|
|
23
23
|
import { createAvailableStatus, createMissingStatus, createErrorStatus, } from '../../../domain/value-objects/tool-installation-status.js';
|
|
24
|
-
import { TOOL_METADATA } from './tool-metadata.js';
|
|
24
|
+
import { TOOL_METADATA, getTerminalEntries } from './tool-metadata.js';
|
|
25
25
|
import { checkBinaryExists } from './binary-exists.js';
|
|
26
26
|
/**
|
|
27
27
|
* Resolve binary name for the current platform.
|
|
@@ -172,6 +172,42 @@ let ToolInstallerServiceImpl = class ToolInstallerServiceImpl {
|
|
|
172
172
|
});
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* List all terminal emulators supported on the current platform with availability status.
|
|
177
|
+
* TOOL_METADATA is loaded in the Node.js CLI context, so this is safe to call from the
|
|
178
|
+
* DI container even when the Next.js standalone bundle cannot resolve tools/ via import.meta.url.
|
|
179
|
+
*/
|
|
180
|
+
async listAvailableTerminals() {
|
|
181
|
+
const currentPlatform = platform();
|
|
182
|
+
const entries = getTerminalEntries();
|
|
183
|
+
const results = [];
|
|
184
|
+
for (const [id, meta] of entries) {
|
|
185
|
+
if (meta.platforms &&
|
|
186
|
+
!meta.platforms.includes(currentPlatform)) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (id === 'system-terminal') {
|
|
190
|
+
results.unshift({ id: 'system', name: meta.name, available: true });
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const binary = typeof meta.binary === 'string' ? meta.binary : meta.binary[currentPlatform];
|
|
194
|
+
if (!binary)
|
|
195
|
+
continue;
|
|
196
|
+
let available = false;
|
|
197
|
+
if (meta.verifyCommand.startsWith('test ')) {
|
|
198
|
+
available = await runVerifyCommand(meta.verifyCommand);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const result = await checkBinaryExists(binary);
|
|
202
|
+
available = result.found;
|
|
203
|
+
}
|
|
204
|
+
results.push({ id, name: meta.name, available });
|
|
205
|
+
}
|
|
206
|
+
if (!results.some((r) => r.id === 'system')) {
|
|
207
|
+
results.unshift({ id: 'system', name: 'System Terminal', available: true });
|
|
208
|
+
}
|
|
209
|
+
return results;
|
|
210
|
+
}
|
|
175
211
|
/**
|
|
176
212
|
* Create installation suggestions for a tool based on its metadata
|
|
177
213
|
*/
|
|
@@ -4,9 +4,14 @@ export interface AvailableTerminal {
|
|
|
4
4
|
available: boolean;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
* Returns the list of terminal entries from
|
|
8
|
-
* current platform
|
|
9
|
-
*
|
|
7
|
+
* Returns the list of terminal entries from the DI container's IToolInstallerService,
|
|
8
|
+
* filtered to the current platform with availability checks.
|
|
9
|
+
*
|
|
10
|
+
* Using the DI container (not a direct import from tool-metadata) ensures that
|
|
11
|
+
* TOOL_METADATA is read from the correct tools/ directory path — it is loaded once
|
|
12
|
+
* in the Node.js CLI bootstrap context where import.meta.url resolves correctly.
|
|
13
|
+
* Direct imports of tool-metadata from Next.js server action bundles break in
|
|
14
|
+
* standalone production mode because import.meta.url points to the chunk file.
|
|
10
15
|
*/
|
|
11
16
|
export declare function getAvailableTerminals(): Promise<AvailableTerminal[]>;
|
|
12
17
|
//# sourceMappingURL=get-available-terminals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-available-terminals.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-available-terminals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-available-terminals.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-available-terminals.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAO1E"}
|
|
@@ -1,53 +1,21 @@
|
|
|
1
1
|
'use server';
|
|
2
|
-
import {
|
|
3
|
-
import { getTerminalEntries } from '../../../../../packages/core/src/infrastructure/services/tool-installer/tool-metadata.js';
|
|
4
|
-
import { checkBinaryExists } from '../../../../../packages/core/src/infrastructure/services/tool-installer/binary-exists.js';
|
|
2
|
+
import { resolve } from '../../lib/server-container.js';
|
|
5
3
|
/**
|
|
6
|
-
* Returns the list of terminal entries from
|
|
7
|
-
* current platform
|
|
8
|
-
*
|
|
4
|
+
* Returns the list of terminal entries from the DI container's IToolInstallerService,
|
|
5
|
+
* filtered to the current platform with availability checks.
|
|
6
|
+
*
|
|
7
|
+
* Using the DI container (not a direct import from tool-metadata) ensures that
|
|
8
|
+
* TOOL_METADATA is read from the correct tools/ directory path — it is loaded once
|
|
9
|
+
* in the Node.js CLI bootstrap context where import.meta.url resolves correctly.
|
|
10
|
+
* Direct imports of tool-metadata from Next.js server action bundles break in
|
|
11
|
+
* standalone production mode because import.meta.url points to the chunk file.
|
|
9
12
|
*/
|
|
10
13
|
export async function getAvailableTerminals() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
for (const [id, meta] of entries) {
|
|
15
|
-
// Skip terminals not supported on this platform
|
|
16
|
-
if (meta.platforms &&
|
|
17
|
-
!meta.platforms.includes(currentPlatform)) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
// System terminal is always available
|
|
21
|
-
if (id === 'system-terminal') {
|
|
22
|
-
results.unshift({ id: 'system', name: meta.name, available: true });
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
// Check binary availability
|
|
26
|
-
const binary = typeof meta.binary === 'string' ? meta.binary : meta.binary[currentPlatform];
|
|
27
|
-
if (!binary)
|
|
28
|
-
continue;
|
|
29
|
-
// For app-bundle terminals (Warp, iTerm2) that use verifyCommand instead of binary check
|
|
30
|
-
let available = false;
|
|
31
|
-
if (meta.verifyCommand.startsWith('test ')) {
|
|
32
|
-
// Use verifyCommand for app-bundle checks (e.g., "test -d /Applications/Warp.app")
|
|
33
|
-
try {
|
|
34
|
-
const { execSync } = await import('node:child_process');
|
|
35
|
-
execSync(meta.verifyCommand, { stdio: 'ignore' });
|
|
36
|
-
available = true;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
available = false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
const result = await checkBinaryExists(binary);
|
|
44
|
-
available = result.found;
|
|
45
|
-
}
|
|
46
|
-
results.push({ id, name: meta.name, available });
|
|
14
|
+
try {
|
|
15
|
+
const service = resolve('IToolInstallerService');
|
|
16
|
+
return await service.listAvailableTerminals();
|
|
47
17
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
results.unshift({ id: 'system', name: 'System Terminal', available: true });
|
|
18
|
+
catch {
|
|
19
|
+
return [{ id: 'system', name: 'System Terminal', available: true }];
|
|
51
20
|
}
|
|
52
|
-
return results;
|
|
53
21
|
}
|
package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
/**
|
|
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] }),
|
|
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,
|
|
326
|
-
|
|
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:
|
|
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;
|
package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js
CHANGED
|
@@ -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
|
-
};
|