@shepai/cli 1.135.0 → 1.135.1

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 (164) hide show
  1. package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts +15 -0
  2. package/dist/packages/core/src/application/ports/output/services/tool-installer.service.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts +2 -1
  4. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +14 -0
  6. package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
  7. package/dist/src/presentation/web/app/actions/open-shell.js +32 -36
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/package.json +1 -1
  10. package/web/.next/BUILD_ID +1 -1
  11. package/web/.next/build-manifest.json +2 -2
  12. package/web/.next/fallback-build-manifest.json +2 -2
  13. package/web/.next/prerender-manifest.json +3 -3
  14. package/web/.next/required-server-files.js +2 -2
  15. package/web/.next/required-server-files.json +2 -2
  16. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +24 -24
  17. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +24 -24
  21. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +30 -30
  29. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  30. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +24 -24
  37. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  38. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  41. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  42. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +30 -30
  45. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  46. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +22 -22
  49. package/web/.next/server/app/(dashboard)/page.js +1 -1
  50. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  53. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  54. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/_global-error.html +2 -2
  57. package/web/.next/server/app/_global-error.rsc +1 -1
  58. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  59. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  63. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  64. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  66. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  67. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  69. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  71. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  73. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  75. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +1 -1
  76. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  78. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  79. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +1 -1
  80. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +1 -1
  82. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -1
  83. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c3ab8422._.js → [root-of-the-server]__31bc28da._.js} +2 -2
  84. package/web/.next/server/chunks/ssr/{[root-of-the-server]__bfba58e6._.js.map → [root-of-the-server]__31bc28da._.js.map} +1 -1
  85. package/web/.next/server/chunks/ssr/{[root-of-the-server]__755cfe02._.js → [root-of-the-server]__32ecbed9._.js} +2 -2
  86. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c3ab8422._.js.map → [root-of-the-server]__32ecbed9._.js.map} +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +1 -1
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a628fb91._.js → [root-of-the-server]__90ce4b6d._.js} +2 -2
  96. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a628fb91._.js.map → [root-of-the-server]__90ce4b6d._.js.map} +1 -1
  97. package/web/.next/server/chunks/ssr/{[root-of-the-server]__bfba58e6._.js → [root-of-the-server]__90f9ae71._.js} +2 -2
  98. package/web/.next/server/chunks/ssr/{[root-of-the-server]__755cfe02._.js.map → [root-of-the-server]__90f9ae71._.js.map} +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js +2 -2
  100. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +4 -0
  101. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6bb00d90._.js.map → [root-of-the-server]__aad040c0._.js.map} +1 -1
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +3 -0
  103. package/web/.next/server/chunks/ssr/{[root-of-the-server]__d61bd462._.js.map → [root-of-the-server]__b3dbadca._.js.map} +1 -1
  104. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  105. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/{_ae5a128f._.js → _76c02473._.js} +2 -2
  107. package/web/.next/server/chunks/ssr/{_ae5a128f._.js.map → _76c02473._.js.map} +1 -1
  108. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  109. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  111. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/_b6960ca0._.js +4 -0
  113. package/web/.next/server/chunks/ssr/_b6960ca0._.js.map +1 -0
  114. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  115. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  117. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/_f4036c66._.js +3 -0
  119. package/web/.next/server/chunks/ssr/{_030de84d._.js.map → _f4036c66._.js.map} +1 -1
  120. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  121. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/src_presentation_web_7f2bd8b5._.js +3 -0
  123. package/web/.next/server/chunks/ssr/{src_presentation_web_9892a559._.js.map → src_presentation_web_7f2bd8b5._.js.map} +1 -1
  124. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +2 -2
  125. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +1 -1
  127. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  129. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  131. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +2 -2
  133. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  135. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  137. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  138. package/web/.next/server/pages/500.html +2 -2
  139. package/web/.next/server/server-reference-manifest.js +1 -1
  140. package/web/.next/server/server-reference-manifest.json +38 -38
  141. package/web/.next/static/chunks/{719c03faf0ec8f46.js → 2b2bcf845ca00af0.js} +1 -1
  142. package/web/.next/static/chunks/{2ff6c45c7c4990ad.js → 4d4a06751c4a6dc5.js} +1 -1
  143. package/web/.next/static/chunks/56ce7ec52973f61f.js +2 -0
  144. package/web/.next/static/chunks/5dbecf32f1f3b9aa.js +1 -0
  145. package/web/.next/static/chunks/{b048ce1d60ba78d3.js → 7ad0e3ee269e90ca.js} +1 -1
  146. package/web/.next/static/chunks/{d61e3f9c7bf5d3e0.js → 7c62d50a59d1296b.js} +1 -1
  147. package/web/.next/static/chunks/{c97a630a84bf4e72.js → 7c858879658287c9.js} +1 -1
  148. package/web/.next/static/chunks/b6117e16e4642568.js +1 -0
  149. package/web/.next/static/chunks/{ee90fcb15170f7c6.js → c4dc75f937edf746.js} +1 -1
  150. package/web/.next/static/chunks/{94455b63375282ba.js → e804b8565e41d2d0.js} +1 -1
  151. package/web/.next/static/chunks/{eb897f7314326bf6.js → fbcce031d4f6a933.js} +1 -1
  152. package/web/.next/static/chunks/{562a11882c23704d.js → fc30f9f869b6d879.js} +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__2c791c42._.js +0 -4
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__2c791c42._.js.map +0 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -4
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__d61bd462._.js +0 -3
  157. package/web/.next/server/chunks/ssr/_030de84d._.js +0 -3
  158. package/web/.next/server/chunks/ssr/src_presentation_web_9892a559._.js +0 -3
  159. package/web/.next/static/chunks/265beea8a0313932.js +0 -2
  160. package/web/.next/static/chunks/7a9a3f8c16ca56ea.js +0 -1
  161. package/web/.next/static/chunks/823681f2da0c07bb.js +0 -1
  162. /package/web/.next/static/{jd0w-YdRRkneFka6Z9vac → eTSgKFGuzFHv4FcGxc30f}/_buildManifest.js +0 -0
  163. /package/web/.next/static/{jd0w-YdRRkneFka6Z9vac → eTSgKFGuzFHv4FcGxc30f}/_clientMiddlewareManifest.json +0 -0
  164. /package/web/.next/static/{jd0w-YdRRkneFka6Z9vac → eTSgKFGuzFHv4FcGxc30f}/_ssgManifest.js +0 -0
@@ -10,6 +10,12 @@ export interface AvailableTerminalEntry {
10
10
  name: string;
11
11
  available: boolean;
12
12
  }
13
+ export interface TerminalOpenConfig {
14
+ /** Platform-resolved openDirectory command string, still containing {dir} placeholder */
15
+ openDirectory: string;
16
+ /** Whether to spawn with shell: true */
17
+ shell: boolean;
18
+ }
13
19
  /**
14
20
  * Service interface for tool installation management.
15
21
  */
@@ -44,5 +50,14 @@ export interface IToolInstallerService {
44
50
  * @returns Array of terminal entries with id, name, and availability
45
51
  */
46
52
  listAvailableTerminals(): Promise<AvailableTerminalEntry[]>;
53
+ /**
54
+ * Get the open-directory configuration for a terminal by its tool ID.
55
+ * Returns the platform-resolved openDirectory command and shell preference.
56
+ * Safe to call from Next.js server actions via DI (no import.meta.url dependency).
57
+ *
58
+ * @param terminalId - Tool ID (e.g. 'warp', 'iterm2', 'system-terminal')
59
+ * @returns Config with openDirectory command and shell flag, or null if not found
60
+ */
61
+ getTerminalOpenConfig(terminalId: string): TerminalOpenConfig | null;
47
62
  }
48
63
  //# sourceMappingURL=tool-installer.service.d.ts.map
@@ -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,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"}
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,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;CAChB;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;IAE5D;;;;;;;OAOG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACtE"}
@@ -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, AvailableTerminalEntry } from '../../../application/ports/output/services/tool-installer.service.js';
14
+ import type { IToolInstallerService, AvailableTerminalEntry, TerminalOpenConfig } 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
  /**
@@ -35,6 +35,7 @@ export declare class ToolInstallerServiceImpl implements IToolInstallerService {
35
35
  * DI container even when the Next.js standalone bundle cannot resolve tools/ via import.meta.url.
36
36
  */
37
37
  listAvailableTerminals(): Promise<AvailableTerminalEntry[]>;
38
+ getTerminalOpenConfig(terminalId: string): TerminalOpenConfig | null;
38
39
  /**
39
40
  * Create installation suggestions for a tool based on its metadata
40
41
  */
@@ -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,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"}
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,EACtB,kBAAkB,EACnB,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,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAiBpE;;OAEG;IACH,OAAO,CAAC,6BAA6B;CA4BtC"}
@@ -208,6 +208,20 @@ let ToolInstallerServiceImpl = class ToolInstallerServiceImpl {
208
208
  }
209
209
  return results;
210
210
  }
211
+ getTerminalOpenConfig(terminalId) {
212
+ const meta = TOOL_METADATA[terminalId];
213
+ if (!meta?.openDirectory)
214
+ return null;
215
+ const openDirectory = typeof meta.openDirectory === 'string'
216
+ ? meta.openDirectory
217
+ : (meta.openDirectory[platform()] ?? Object.values(meta.openDirectory)[0]);
218
+ if (!openDirectory)
219
+ return null;
220
+ return {
221
+ openDirectory,
222
+ shell: meta.spawnOptions?.shell === true,
223
+ };
224
+ }
211
225
  /**
212
226
  * Create installation suggestions for a tool based on its metadata
213
227
  */
@@ -1 +1 @@
1
- {"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"AA+BA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2E9E"}
1
+ {"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"AA0BA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4E9E"}
@@ -5,13 +5,7 @@ import { isAbsolute } from 'node:path';
5
5
  import { spawn } from 'node:child_process';
6
6
  import { getSettings } from '../../../../../packages/core/src/infrastructure/services/settings.service.js';
7
7
  import { computeWorktreePath } from '../../../../../packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js';
8
- import { getTerminalEntries } from '../../../../../packages/core/src/infrastructure/services/tool-installer/tool-metadata.js';
9
- /** Resolves a platform-keyed value to the current platform string. */
10
- function resolvePlatformValue(value) {
11
- if (typeof value === 'string')
12
- return value;
13
- return value[platform()] ?? Object.values(value)[0];
14
- }
8
+ import { resolve } from '../../lib/server-container.js';
15
9
  // Fallback commands for the "system" terminal when no tool metadata entry exists.
16
10
  // Uses a record lookup instead of if/else to prevent the bundler from
17
11
  // tree-shaking platform branches at build time. Turbopack evaluates
@@ -38,39 +32,41 @@ export async function openShell(input) {
38
32
  if (!existsSync(targetPath)) {
39
33
  return { success: false, error: `Path does not exist: ${targetPath}` };
40
34
  }
41
- // Try to find the terminal in tool metadata for non-system terminals
35
+ // Try to find the terminal in tool metadata via DI container.
36
+ // Using DI (not a direct import from tool-metadata) ensures that
37
+ // TOOL_METADATA is read from the correct tools/ directory path — it is loaded once
38
+ // in the Node.js CLI bootstrap context where import.meta.url resolves correctly.
39
+ // Direct imports of tool-metadata break in standalone production builds.
42
40
  if (terminalPref !== 'system') {
43
- const entries = getTerminalEntries();
44
- const terminalEntry = entries.find(([id]) => id === terminalPref);
45
- if (terminalEntry) {
46
- const [, meta] = terminalEntry;
47
- if (meta.openDirectory) {
48
- const openCmd = resolvePlatformValue(meta.openDirectory);
49
- if (openCmd.includes('{dir}')) {
50
- const resolved = openCmd.replace('{dir}', targetPath);
51
- const useShell = meta.spawnOptions?.shell === true;
52
- if (useShell) {
53
- const child = spawn(resolved, [], {
54
- detached: true,
55
- stdio: 'ignore',
56
- shell: true,
57
- });
58
- child.on('error', () => undefined);
59
- child.unref();
60
- }
61
- else {
62
- const [command, ...args] = resolved.split(/\s+/);
63
- const child = spawn(command, args, {
64
- detached: true,
65
- stdio: 'ignore',
66
- });
67
- child.on('error', () => undefined);
68
- child.unref();
69
- }
70
- return { success: true, path: targetPath, shell };
41
+ try {
42
+ const service = resolve('IToolInstallerService');
43
+ const config = service.getTerminalOpenConfig(terminalPref);
44
+ if (config?.openDirectory.includes('{dir}')) {
45
+ const resolved = config.openDirectory.replace('{dir}', targetPath);
46
+ if (config.shell) {
47
+ const child = spawn(resolved, [], {
48
+ detached: true,
49
+ stdio: 'ignore',
50
+ shell: true,
51
+ });
52
+ child.on('error', () => undefined);
53
+ child.unref();
54
+ }
55
+ else {
56
+ const [command, ...args] = resolved.split(/\s+/);
57
+ const child = spawn(command, args, {
58
+ detached: true,
59
+ stdio: 'ignore',
60
+ });
61
+ child.on('error', () => undefined);
62
+ child.unref();
71
63
  }
64
+ return { success: true, path: targetPath, shell };
72
65
  }
73
66
  }
67
+ catch {
68
+ // DI container not available — fall through to system terminal
69
+ }
74
70
  }
75
71
  // Fallback to system terminal
76
72
  const entry = SYSTEM_TERMINAL_COMMANDS[platform()];