@shepai/cli 1.181.0-pr551.d179853 → 1.182.0

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 (213) hide show
  1. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +1 -1
  2. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +2 -9
  4. package/dist/src/presentation/cli/commands/app/del.command.d.ts +14 -0
  5. package/dist/src/presentation/cli/commands/app/del.command.d.ts.map +1 -0
  6. package/dist/src/presentation/cli/commands/app/del.command.js +58 -0
  7. package/dist/src/presentation/cli/commands/app/index.d.ts +20 -0
  8. package/dist/src/presentation/cli/commands/app/index.d.ts.map +1 -0
  9. package/dist/src/presentation/cli/commands/app/index.js +33 -0
  10. package/dist/src/presentation/cli/commands/app/ls.command.d.ts +11 -0
  11. package/dist/src/presentation/cli/commands/app/ls.command.d.ts.map +1 -0
  12. package/dist/src/presentation/cli/commands/app/ls.command.js +74 -0
  13. package/dist/src/presentation/cli/commands/app/new.command.d.ts +17 -0
  14. package/dist/src/presentation/cli/commands/app/new.command.d.ts.map +1 -0
  15. package/dist/src/presentation/cli/commands/app/new.command.js +58 -0
  16. package/dist/src/presentation/cli/commands/app/resolve-application.d.ts +10 -0
  17. package/dist/src/presentation/cli/commands/app/resolve-application.d.ts.map +1 -0
  18. package/dist/src/presentation/cli/commands/app/resolve-application.js +33 -0
  19. package/dist/src/presentation/cli/commands/app/show.command.d.ts +11 -0
  20. package/dist/src/presentation/cli/commands/app/show.command.d.ts.map +1 -0
  21. package/dist/src/presentation/cli/commands/app/show.command.js +95 -0
  22. package/dist/src/presentation/cli/index.js +2 -0
  23. package/dist/translations/ar/cli.json +63 -0
  24. package/dist/translations/de/cli.json +63 -0
  25. package/dist/translations/en/cli.json +63 -0
  26. package/dist/translations/es/cli.json +63 -0
  27. package/dist/translations/fr/cli.json +63 -0
  28. package/dist/translations/he/cli.json +63 -0
  29. package/dist/translations/pt/cli.json +63 -0
  30. package/dist/translations/ru/cli.json +63 -0
  31. package/dist/translations/uk/cli.json +63 -0
  32. package/dist/tsconfig.build.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/web/.next/BUILD_ID +1 -1
  35. package/web/.next/build-manifest.json +2 -2
  36. package/web/.next/fallback-build-manifest.json +2 -2
  37. package/web/.next/prerender-manifest.json +3 -3
  38. package/web/.next/required-server-files.js +2 -2
  39. package/web/.next/required-server-files.json +2 -2
  40. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
  41. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
  44. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
  47. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  50. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
  53. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  56. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  59. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
  62. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
  65. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  66. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  68. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
  74. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  77. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  80. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/_global-error.html +2 -2
  83. package/web/.next/server/app/_global-error.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  90. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +15 -15
  92. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  93. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
  95. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
  97. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
  99. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
  101. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
  103. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  105. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  106. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  108. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +2 -2
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/_0277d3b5._.js +1 -1
  131. package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/{_b5f27f0d._.js → _177d29c6._.js} +2 -2
  133. package/web/.next/server/chunks/ssr/{_b5f27f0d._.js.map → _177d29c6._.js.map} +1 -1
  134. package/web/.next/server/chunks/ssr/{_06824559._.js → _21cc662b._.js} +2 -2
  135. package/web/.next/server/chunks/ssr/{_06824559._.js.map → _21cc662b._.js.map} +1 -1
  136. package/web/.next/server/chunks/ssr/{_c18ba389._.js → _503102fc._.js} +2 -2
  137. package/web/.next/server/chunks/ssr/{_c18ba389._.js.map → _503102fc._.js.map} +1 -1
  138. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/{_3b3df45b._.js → _575fe3ee._.js} +2 -2
  141. package/web/.next/server/chunks/ssr/{_3b3df45b._.js.map → _575fe3ee._.js.map} +1 -1
  142. package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
  143. package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/{_14213445._.js → _a7184dfa._.js} +2 -2
  145. package/web/.next/server/chunks/ssr/{_14213445._.js.map → _a7184dfa._.js.map} +1 -1
  146. package/web/.next/server/chunks/ssr/_eff1b518._.js +1 -1
  147. package/web/.next/server/chunks/ssr/_eff1b518._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/_f227429a._.js +1 -1
  149. package/web/.next/server/chunks/ssr/_f227429a._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
  153. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  154. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  156. package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +1 -1
  157. package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +1 -1
  159. package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +1 -1
  161. package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
  163. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +1 -1
  165. package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +1 -1
  167. package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +1 -1
  169. package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -3
  175. package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  182. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +1 -1
  188. package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js.map +1 -1
  189. package/web/.next/server/pages/500.html +2 -2
  190. package/web/.next/server/server-reference-manifest.js +1 -1
  191. package/web/.next/server/server-reference-manifest.json +54 -54
  192. package/web/.next/static/chunks/{f46b5d956fd22a3d.js → 2424ab50273fe1d9.js} +1 -1
  193. package/web/.next/static/chunks/{364188ebe8b99f20.js → 33dc7a1041f4ab64.js} +1 -1
  194. package/web/.next/static/chunks/{f10c081a9f2a3545.js → 6afd16b2fe544054.js} +2 -2
  195. package/web/.next/static/chunks/{ec4509e254183bb7.js → 7604027076448f2b.js} +1 -1
  196. package/web/.next/static/chunks/{c408e0585eb62a7a.js → 87a0df5389e06641.js} +1 -1
  197. package/web/.next/static/chunks/{3fe66accbbdab69e.js → 8c9016ab8c1f6204.js} +1 -1
  198. package/web/.next/static/chunks/94e8559ae19a16e1.js +1 -0
  199. package/web/.next/static/chunks/a0cfca1e5fd467e9.js +1 -0
  200. package/web/.next/static/chunks/{4f6d96bfbae7edf6.js → a2531137c7d36d54.js} +1 -1
  201. package/web/.next/static/chunks/{97f05a2f577750fd.js → ac22076c64634ac1.js} +1 -1
  202. package/web/.next/static/chunks/{c6617621632e27ec.js → b4aa3a83f2451e07.js} +1 -1
  203. package/web/.next/static/chunks/{f173859b70ca33bf.js → b87904ecdddde972.js} +1 -1
  204. package/web/.next/static/chunks/{6afcb4db84eafeb0.js → be2e80436bc15812.js} +3 -3
  205. package/web/.next/static/chunks/{df28094b33bfda97.js → ceff12f8a2e5bc08.js} +1 -1
  206. package/web/.next/static/chunks/de7de1db2a8788dd.js +1 -0
  207. package/web/.next/static/chunks/{c62e0c838240b95c.js → e4f0ca20b62bd66f.js} +1 -1
  208. package/web/.next/static/chunks/2dbe2a1b8bff3c18.js +0 -1
  209. package/web/.next/static/chunks/3a301cd8961fc19b.js +0 -1
  210. package/web/.next/static/chunks/b037aa4cb484dea0.js +0 -1
  211. /package/web/.next/static/{ZrIx5c5d4ph6rB25FzMEY → EVCmRtpgNX9ebXGb-bV1G}/_buildManifest.js +0 -0
  212. /package/web/.next/static/{ZrIx5c5d4ph6rB25FzMEY → EVCmRtpgNX9ebXGb-bV1G}/_clientMiddlewareManifest.json +0 -0
  213. /package/web/.next/static/{ZrIx5c5d4ph6rB25FzMEY → EVCmRtpgNX9ebXGb-bV1G}/_ssgManifest.js +0 -0
@@ -164,7 +164,7 @@ export interface IGitPrService {
164
164
  org?: string;
165
165
  }): Promise<string>;
166
166
  /**
167
- * Add a git remote to the local repository, or update its URL if it already exists.
167
+ * Add a git remote to the local repository.
168
168
  *
169
169
  * @param cwd - Working directory path
170
170
  * @param remoteName - Name for the remote (e.g. "origin")
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
@@ -755,15 +755,8 @@ let GitPrService = class GitPrService {
755
755
  try {
756
756
  await this.execFile('git', ['remote', 'add', remoteName, remoteUrl], { cwd });
757
757
  }
758
- catch {
759
- // Remote may already exist (e.g. gh repo clone auto-adds upstream for forks)
760
- // — update its URL instead of failing.
761
- try {
762
- await this.execFile('git', ['remote', 'set-url', remoteName, remoteUrl], { cwd });
763
- }
764
- catch (setUrlError) {
765
- throw this.parseGitError(setUrlError);
766
- }
758
+ catch (error) {
759
+ throw this.parseGitError(error);
767
760
  }
768
761
  }
769
762
  parseDiffStat(diffStat, logOutput) {
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Application Delete Command
3
+ *
4
+ * Soft-deletes an application and stops any active session.
5
+ *
6
+ * Usage: shep app del <id> [--force]
7
+ *
8
+ * @example
9
+ * $ shep app del a1b2c3d4
10
+ * $ shep app del a1b2c3d4 --force
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare function createDelCommand(): Command;
14
+ //# sourceMappingURL=del.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"del.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/del.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,IAAI,OAAO,CAyC1C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Application Delete Command
3
+ *
4
+ * Soft-deletes an application and stops any active session.
5
+ *
6
+ * Usage: shep app del <id> [--force]
7
+ *
8
+ * @example
9
+ * $ shep app del a1b2c3d4
10
+ * $ shep app del a1b2c3d4 --force
11
+ */
12
+ import { Command } from 'commander';
13
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
14
+ import { DeleteApplicationUseCase } from '../../../../../packages/core/src/application/use-cases/applications/delete-application.use-case.js';
15
+ import { colors, messages } from '../../ui/index.js';
16
+ import { confirm } from '@inquirer/prompts';
17
+ import { resolveApplication } from './resolve-application.js';
18
+ import { getCliI18n } from '../../i18n.js';
19
+ export function createDelCommand() {
20
+ const t = getCliI18n().t;
21
+ return new Command('del')
22
+ .description(t('cli:commands.app.del.description'))
23
+ .argument('<id>', t('cli:commands.app.del.idArgument'))
24
+ .option('-f, --force', t('cli:commands.app.del.forceOption'))
25
+ .action(async (id, options) => {
26
+ try {
27
+ const resolved = await resolveApplication(id);
28
+ if ('error' in resolved) {
29
+ messages.error(resolved.error);
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const app = resolved.application;
34
+ if (!options.force) {
35
+ const confirmed = await confirm({
36
+ message: t('cli:commands.app.del.confirmDelete', { name: app.name }),
37
+ default: false,
38
+ });
39
+ if (!confirmed) {
40
+ messages.info(t('cli:commands.app.del.cancelled'));
41
+ return;
42
+ }
43
+ }
44
+ const deleteUseCase = container.resolve(DeleteApplicationUseCase);
45
+ await deleteUseCase.execute(app.id);
46
+ messages.newline();
47
+ messages.success(t('cli:commands.app.del.appDeleted'));
48
+ console.log(` ${colors.muted(t('cli:commands.app.del.nameLabel'))} ${app.name}`);
49
+ console.log(` ${colors.muted(t('cli:commands.app.del.slugLabel'))} ${app.slug}`);
50
+ messages.newline();
51
+ }
52
+ catch (error) {
53
+ const err = error instanceof Error ? error : new Error(String(error));
54
+ messages.error(t('cli:commands.app.del.failedToDelete'), err);
55
+ process.exitCode = 1;
56
+ }
57
+ });
58
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * App Command
3
+ *
4
+ * Top-level app command with subcommands for managing applications.
5
+ *
6
+ * Usage:
7
+ * shep app [subcommand]
8
+ *
9
+ * Subcommands:
10
+ * shep app ls List applications
11
+ * shep app show <id> Display details of an application
12
+ * shep app new <desc> Create a new application
13
+ * shep app del <id> Delete an application
14
+ */
15
+ import { Command } from 'commander';
16
+ /**
17
+ * Create the app command with all subcommands
18
+ */
19
+ export declare function createAppCommand(): Command;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAU1C"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * App Command
3
+ *
4
+ * Top-level app command with subcommands for managing applications.
5
+ *
6
+ * Usage:
7
+ * shep app [subcommand]
8
+ *
9
+ * Subcommands:
10
+ * shep app ls List applications
11
+ * shep app show <id> Display details of an application
12
+ * shep app new <desc> Create a new application
13
+ * shep app del <id> Delete an application
14
+ */
15
+ import { Command } from 'commander';
16
+ import { createLsCommand } from './ls.command.js';
17
+ import { createShowCommand } from './show.command.js';
18
+ import { createNewCommand } from './new.command.js';
19
+ import { createDelCommand } from './del.command.js';
20
+ import { getCliI18n } from '../../i18n.js';
21
+ /**
22
+ * Create the app command with all subcommands
23
+ */
24
+ export function createAppCommand() {
25
+ const t = getCliI18n().t;
26
+ const app = new Command('app')
27
+ .description(t('cli:commands.app.description'))
28
+ .addCommand(createLsCommand())
29
+ .addCommand(createShowCommand())
30
+ .addCommand(createNewCommand())
31
+ .addCommand(createDelCommand());
32
+ return app;
33
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Application List Command
3
+ *
4
+ * List all applications in a formatted table.
5
+ *
6
+ * Usage:
7
+ * shep app ls
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createLsCommand(): Command;
11
+ //# sourceMappingURL=ls.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/ls.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,eAAe,IAAI,OAAO,CAkCzC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Application List Command
3
+ *
4
+ * List all applications in a formatted table.
5
+ *
6
+ * Usage:
7
+ * shep app ls
8
+ */
9
+ import { Command } from 'commander';
10
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
11
+ import { ListApplicationsUseCase } from '../../../../../packages/core/src/application/use-cases/applications/list-applications.use-case.js';
12
+ import { colors, messages, renderListView } from '../../ui/index.js';
13
+ import { getCliI18n } from '../../i18n.js';
14
+ /** Format a duration in ms to a compact human-readable string. */
15
+ function formatDuration(ms) {
16
+ const seconds = Math.floor(ms / 1000);
17
+ if (seconds < 60)
18
+ return `${seconds}s`;
19
+ const minutes = Math.floor(seconds / 60);
20
+ if (minutes < 60)
21
+ return `${minutes}m`;
22
+ const hours = Math.floor(minutes / 60);
23
+ const remMin = minutes % 60;
24
+ if (hours < 24)
25
+ return remMin > 0 ? `${hours}h ${remMin}m` : `${hours}h`;
26
+ const days = Math.floor(hours / 24);
27
+ return `${days}d`;
28
+ }
29
+ function colorStatus(status) {
30
+ switch (status) {
31
+ case 'Idle':
32
+ return colors.muted(status);
33
+ case 'Active':
34
+ return colors.success(status);
35
+ case 'Error':
36
+ return colors.warning(status);
37
+ default:
38
+ return colors.muted(status);
39
+ }
40
+ }
41
+ export function createLsCommand() {
42
+ const t = getCliI18n().t;
43
+ return new Command('ls').description(t('cli:commands.app.ls.description')).action(async () => {
44
+ try {
45
+ const useCase = container.resolve(ListApplicationsUseCase);
46
+ const applications = await useCase.execute();
47
+ const now = Date.now();
48
+ const rows = applications.map((app) => [
49
+ app.id.substring(0, 8),
50
+ app.name,
51
+ colorStatus(app.status),
52
+ app.repositoryPath,
53
+ colors.muted(`${formatDuration(now - new Date(app.createdAt).getTime())} ago`),
54
+ ]);
55
+ renderListView({
56
+ title: t('cli:commands.app.ls.title'),
57
+ columns: [
58
+ { label: t('cli:commands.app.ls.idColumn'), width: 10 },
59
+ { label: t('cli:commands.app.ls.nameColumn'), width: 28 },
60
+ { label: t('cli:commands.app.ls.statusColumn'), width: 10 },
61
+ { label: t('cli:commands.app.ls.pathColumn'), width: 36 },
62
+ { label: t('cli:commands.app.ls.createdColumn'), width: 12 },
63
+ ],
64
+ rows,
65
+ emptyMessage: t('cli:commands.app.ls.noApps'),
66
+ });
67
+ }
68
+ catch (error) {
69
+ const err = error instanceof Error ? error : new Error(String(error));
70
+ messages.error(t('cli:commands.app.ls.failedToList'), err);
71
+ process.exitCode = 1;
72
+ }
73
+ });
74
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Application New Command
3
+ *
4
+ * Creates a new application with optional initial prompt to kick off
5
+ * an interactive agent session.
6
+ *
7
+ * Usage:
8
+ * shep app new <description> [options]
9
+ *
10
+ * @example
11
+ * $ shep app new "Build a todo list app with React"
12
+ * $ shep app new "REST API for inventory management" --agent claude-code
13
+ * $ shep app new "Portfolio website" --model claude-opus-4-6
14
+ */
15
+ import { Command } from 'commander';
16
+ export declare function createNewCommand(): Command;
17
+ //# sourceMappingURL=new.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/new.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,gBAAgB,IAAI,OAAO,CAuD1C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Application New Command
3
+ *
4
+ * Creates a new application with optional initial prompt to kick off
5
+ * an interactive agent session.
6
+ *
7
+ * Usage:
8
+ * shep app new <description> [options]
9
+ *
10
+ * @example
11
+ * $ shep app new "Build a todo list app with React"
12
+ * $ shep app new "REST API for inventory management" --agent claude-code
13
+ * $ shep app new "Portfolio website" --model claude-opus-4-6
14
+ */
15
+ import { Command } from 'commander';
16
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
17
+ import { CreateApplicationUseCase } from '../../../../../packages/core/src/application/use-cases/applications/create-application.use-case.js';
18
+ import { colors, messages, spinner } from '../../ui/index.js';
19
+ import { getCliI18n } from '../../i18n.js';
20
+ export function createNewCommand() {
21
+ const t = getCliI18n().t;
22
+ return new Command('new')
23
+ .description(t('cli:commands.app.new.description'))
24
+ .argument('<description>', t('cli:commands.app.new.descriptionArgument'))
25
+ .option('--agent <type>', t('cli:commands.app.new.agentOption'))
26
+ .option('--model <model>', t('cli:commands.app.new.modelOption'))
27
+ .action(async (description, options) => {
28
+ try {
29
+ const useCase = container.resolve(CreateApplicationUseCase);
30
+ const result = await spinner(t('cli:commands.app.new.spinnerText'), () => useCase.execute({
31
+ description,
32
+ agentType: options.agent,
33
+ modelOverride: options.model,
34
+ initialPrompt: description,
35
+ }));
36
+ const { application } = result;
37
+ messages.newline();
38
+ messages.success(t('cli:commands.app.new.appCreated'));
39
+ console.log(` ${colors.muted(t('cli:commands.app.new.idLabel'))} ${colors.accent(application.id)}`);
40
+ console.log(` ${colors.muted(t('cli:commands.app.new.nameLabel'))} ${application.name}`);
41
+ console.log(` ${colors.muted(t('cli:commands.app.new.slugLabel'))} ${application.slug}`);
42
+ console.log(` ${colors.muted(t('cli:commands.app.new.pathLabel'))} ${result.repositoryPath}`);
43
+ console.log(` ${colors.muted(t('cli:commands.app.new.statusLabel'))} ${application.status}`);
44
+ if (application.agentType) {
45
+ console.log(` ${colors.muted(t('cli:commands.app.new.agentLabel'))} ${application.agentType}`);
46
+ }
47
+ if (application.modelOverride) {
48
+ console.log(` ${colors.muted(t('cli:commands.app.new.modelLabel'))} ${application.modelOverride}`);
49
+ }
50
+ messages.newline();
51
+ }
52
+ catch (error) {
53
+ const err = error instanceof Error ? error : new Error(String(error));
54
+ messages.error(t('cli:commands.app.new.failedToCreate'), err);
55
+ process.exitCode = 1;
56
+ }
57
+ });
58
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared helper: resolve an application by exact ID, prefix, or slug.
3
+ */
4
+ import type { Application } from '../../../../../packages/core/src/domain/generated/output.js';
5
+ export declare function resolveApplication(id: string): Promise<{
6
+ application: Application;
7
+ } | {
8
+ error: string;
9
+ }>;
10
+ //# sourceMappingURL=resolve-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-application.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/resolve-application.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAGhE,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6B3D"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared helper: resolve an application by exact ID, prefix, or slug.
3
+ */
4
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
5
+ import { getCliI18n } from '../../i18n.js';
6
+ export async function resolveApplication(id) {
7
+ const t = getCliI18n().t;
8
+ const repo = container.resolve('IApplicationRepository');
9
+ // Try exact ID match first
10
+ const exact = await repo.findById(id);
11
+ if (exact)
12
+ return { application: exact };
13
+ // Try slug match
14
+ const bySlug = await repo.findBySlug(id);
15
+ if (bySlug)
16
+ return { application: bySlug };
17
+ // Try prefix match on ID
18
+ if (id.length < 36) {
19
+ const all = await repo.list();
20
+ const matches = all.filter((a) => a.id.startsWith(id));
21
+ if (matches.length === 1)
22
+ return { application: matches[0] };
23
+ if (matches.length > 1) {
24
+ return {
25
+ error: t('cli:commands.app.resolve.multipleMatch', {
26
+ id,
27
+ matches: matches.map((m) => m.id.substring(0, 8)).join(', '),
28
+ }),
29
+ };
30
+ }
31
+ }
32
+ return { error: t('cli:commands.app.resolve.notFound', { id }) };
33
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Application Show Command
3
+ *
4
+ * Display details of a specific application.
5
+ *
6
+ * Usage:
7
+ * shep app show <id>
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createShowCommand(): Command;
11
+ //# sourceMappingURL=show.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/show.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,iBAAiB,IAAI,OAAO,CAwE3C"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Application Show Command
3
+ *
4
+ * Display details of a specific application.
5
+ *
6
+ * Usage:
7
+ * shep app show <id>
8
+ */
9
+ import { Command } from 'commander';
10
+ import { colors, messages, renderDetailView } from '../../ui/index.js';
11
+ import { resolveApplication } from './resolve-application.js';
12
+ import { getCliI18n } from '../../i18n.js';
13
+ function formatDate(date) {
14
+ if (!date)
15
+ return null;
16
+ try {
17
+ return new Date(date).toLocaleString();
18
+ }
19
+ catch {
20
+ return String(date);
21
+ }
22
+ }
23
+ export function createShowCommand() {
24
+ const t = getCliI18n().t;
25
+ return new Command('show')
26
+ .description(t('cli:commands.app.show.description'))
27
+ .argument('<id>', t('cli:commands.app.show.idArgument'))
28
+ .action(async (id) => {
29
+ try {
30
+ const resolved = await resolveApplication(id);
31
+ if ('error' in resolved) {
32
+ messages.error(resolved.error);
33
+ process.exitCode = 1;
34
+ return;
35
+ }
36
+ const app = resolved.application;
37
+ renderDetailView({
38
+ title: t('cli:commands.app.show.title', { name: app.name }),
39
+ sections: [
40
+ {
41
+ fields: [
42
+ { label: 'ID', value: app.id },
43
+ { label: t('cli:commands.app.show.nameLabel'), value: app.name },
44
+ { label: t('cli:commands.app.show.slugLabel'), value: app.slug },
45
+ { label: t('cli:commands.app.show.statusLabel'), value: app.status },
46
+ {
47
+ label: t('cli:commands.app.show.descriptionLabel'),
48
+ value: app.description,
49
+ },
50
+ {
51
+ label: t('cli:commands.app.show.pathLabel'),
52
+ value: app.repositoryPath,
53
+ },
54
+ ],
55
+ },
56
+ {
57
+ title: t('cli:commands.app.show.configTitle'),
58
+ fields: [
59
+ {
60
+ label: t('cli:commands.app.show.agentLabel'),
61
+ value: app.agentType ?? colors.muted('default'),
62
+ },
63
+ {
64
+ label: t('cli:commands.app.show.modelLabel'),
65
+ value: app.modelOverride ?? colors.muted('default'),
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ title: t('cli:commands.app.show.timestampsTitle'),
71
+ fields: [
72
+ {
73
+ label: t('cli:commands.app.show.createdLabel'),
74
+ value: formatDate(app.createdAt),
75
+ },
76
+ {
77
+ label: t('cli:commands.app.show.updatedLabel'),
78
+ value: formatDate(app.updatedAt),
79
+ },
80
+ {
81
+ label: t('cli:commands.app.show.deletedLabel'),
82
+ value: formatDate(app.deletedAt),
83
+ },
84
+ ],
85
+ },
86
+ ],
87
+ });
88
+ }
89
+ catch (error) {
90
+ const err = error instanceof Error ? error : new Error(String(error));
91
+ messages.error(t('cli:commands.app.show.failedToShow'), err);
92
+ process.exitCode = 1;
93
+ }
94
+ });
95
+ }
@@ -37,6 +37,7 @@ import { createRunCommand } from './commands/run.command.js';
37
37
  import { createAgentCommand } from './commands/agent/index.js';
38
38
  import { createFeatCommand } from './commands/feat/index.js';
39
39
  import { createRepoCommand } from './commands/repo/index.js';
40
+ import { createAppCommand } from './commands/app/index.js';
40
41
  import { createSessionCommand } from './commands/session/index.js';
41
42
  import { createIdeOpenCommand } from './commands/ide-open.command.js';
42
43
  import { createInstallCommand } from './commands/install.command.js';
@@ -117,6 +118,7 @@ async function bootstrap() {
117
118
  program.addCommand(createAgentCommand());
118
119
  program.addCommand(createFeatCommand());
119
120
  program.addCommand(createRepoCommand());
121
+ program.addCommand(createAppCommand());
120
122
  program.addCommand(createSessionCommand());
121
123
  program.addCommand(createIdeOpenCommand());
122
124
  program.addCommand(createInstallCommand());
@@ -478,6 +478,69 @@
478
478
  "notFound": "المستودع غير موجود: {{id}}"
479
479
  }
480
480
  },
481
+ "app": {
482
+ "description": "Manage applications",
483
+ "ls": {
484
+ "description": "List applications",
485
+ "title": "Applications",
486
+ "idColumn": "ID",
487
+ "nameColumn": "Name",
488
+ "statusColumn": "Status",
489
+ "pathColumn": "Path",
490
+ "createdColumn": "Created",
491
+ "noApps": "No applications found",
492
+ "failedToList": "Failed to list applications"
493
+ },
494
+ "show": {
495
+ "description": "Display details of an application",
496
+ "idArgument": "Application ID, slug, or prefix",
497
+ "title": "Application: {{name}}",
498
+ "nameLabel": "Name",
499
+ "slugLabel": "Slug",
500
+ "statusLabel": "Status",
501
+ "descriptionLabel": "Description",
502
+ "pathLabel": "Path",
503
+ "configTitle": "Configuration",
504
+ "agentLabel": "Agent",
505
+ "modelLabel": "Model",
506
+ "timestampsTitle": "Timestamps",
507
+ "createdLabel": "Created",
508
+ "updatedLabel": "Updated",
509
+ "deletedLabel": "Deleted",
510
+ "failedToShow": "Failed to show application"
511
+ },
512
+ "new": {
513
+ "description": "Create a new application",
514
+ "descriptionArgument": "Application description",
515
+ "agentOption": "Agent type override",
516
+ "modelOption": "LLM model override (e.g. claude-opus-4-6)",
517
+ "spinnerText": "Creating application",
518
+ "appCreated": "Application created",
519
+ "idLabel": "ID:",
520
+ "nameLabel": "Name:",
521
+ "slugLabel": "Slug:",
522
+ "pathLabel": "Path:",
523
+ "statusLabel": "Status:",
524
+ "agentLabel": "Agent:",
525
+ "modelLabel": "Model:",
526
+ "failedToCreate": "Failed to create application"
527
+ },
528
+ "del": {
529
+ "description": "Delete an application",
530
+ "idArgument": "Application ID, slug, or prefix",
531
+ "forceOption": "Skip confirmation prompt",
532
+ "confirmDelete": "Delete application \"{{name}}\"?",
533
+ "cancelled": "Cancelled",
534
+ "appDeleted": "Application deleted",
535
+ "nameLabel": "Name:",
536
+ "slugLabel": "Slug:",
537
+ "failedToDelete": "Failed to delete application"
538
+ },
539
+ "resolve": {
540
+ "multipleMatch": "Multiple applications match prefix \"{{id}}\": {{matches}}",
541
+ "notFound": "Application not found: {{id}}"
542
+ }
543
+ },
481
544
  "agent": {
482
545
  "description": "إدارة وعرض تشغيلات الوكيل",
483
546
  "show": {