@shepai/cli 1.181.0 → 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.
- package/dist/src/presentation/cli/commands/app/del.command.d.ts +14 -0
- package/dist/src/presentation/cli/commands/app/del.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/del.command.js +58 -0
- package/dist/src/presentation/cli/commands/app/index.d.ts +20 -0
- package/dist/src/presentation/cli/commands/app/index.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/index.js +33 -0
- package/dist/src/presentation/cli/commands/app/ls.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/app/ls.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/ls.command.js +74 -0
- package/dist/src/presentation/cli/commands/app/new.command.d.ts +17 -0
- package/dist/src/presentation/cli/commands/app/new.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/new.command.js +58 -0
- package/dist/src/presentation/cli/commands/app/resolve-application.d.ts +10 -0
- package/dist/src/presentation/cli/commands/app/resolve-application.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/resolve-application.js +33 -0
- package/dist/src/presentation/cli/commands/app/show.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/app/show.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/app/show.command.js +95 -0
- package/dist/src/presentation/cli/index.js +2 -0
- package/dist/translations/ar/cli.json +63 -0
- package/dist/translations/de/cli.json +63 -0
- package/dist/translations/en/cli.json +63 -0
- package/dist/translations/es/cli.json +63 -0
- package/dist/translations/fr/cli.json +63 -0
- package/dist/translations/he/cli.json +63 -0
- package/dist/translations/pt/cli.json +63 -0
- package/dist/translations/ru/cli.json +63 -0
- package/dist/translations/uk/cli.json +63 -0
- 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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
- 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/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
- 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 +41 -41
- 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 +41 -41
- 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]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- 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)/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
- 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 +41 -41
- 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 +41 -41
- 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 +30 -30
- 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]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- 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 +7 -7
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
- 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/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/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js +1 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_da028026._.js → _177d29c6._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_da028026._.js.map → _177d29c6._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_5bb39227._.js → _21cc662b._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_5bb39227._.js.map → _21cc662b._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_655cc4fd._.js → _503102fc._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_655cc4fd._.js.map → _503102fc._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_e5753970._.js → _575fe3ee._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_e5753970._.js.map → _575fe3ee._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_fbf4db9c._.js → _a7184dfa._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_fbf4db9c._.js.map → _a7184dfa._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js +1 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js +1 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +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/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.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/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.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 +54 -54
- package/web/.next/static/chunks/{be165be5db7a6054.js → 2424ab50273fe1d9.js} +1 -1
- package/web/.next/static/chunks/{443c0073e58878d8.js → 33dc7a1041f4ab64.js} +1 -1
- package/web/.next/static/chunks/{53f9385d4a447ad4.js → 6afd16b2fe544054.js} +2 -2
- package/web/.next/static/chunks/{b40755bc75789277.js → 7604027076448f2b.js} +1 -1
- package/web/.next/static/chunks/{ae94e98b7163890b.js → 87a0df5389e06641.js} +1 -1
- package/web/.next/static/chunks/{e65f14d14ad46a32.js → 8c9016ab8c1f6204.js} +1 -1
- package/web/.next/static/chunks/94e8559ae19a16e1.js +1 -0
- package/web/.next/static/chunks/a0cfca1e5fd467e9.js +1 -0
- package/web/.next/static/chunks/{7a9d8b705c0f8d2d.js → a2531137c7d36d54.js} +1 -1
- package/web/.next/static/chunks/{6ad23a3ac827b65b.js → ac22076c64634ac1.js} +1 -1
- package/web/.next/static/chunks/{e11508a76f5fca98.js → b4aa3a83f2451e07.js} +1 -1
- package/web/.next/static/chunks/{5635fe220632fced.js → b87904ecdddde972.js} +1 -1
- package/web/.next/static/chunks/{15951ad67a810e2c.js → be2e80436bc15812.js} +3 -3
- package/web/.next/static/chunks/{fe29d30a75e697ed.js → ceff12f8a2e5bc08.js} +1 -1
- package/web/.next/static/chunks/de7de1db2a8788dd.js +1 -0
- package/web/.next/static/chunks/{d8e96baa3feb79cb.js → e4f0ca20b62bd66f.js} +1 -1
- package/web/.next/static/chunks/25bbd99fa3dcc0b2.js +0 -1
- package/web/.next/static/chunks/b6ddc3e5f64bef7f.js +0 -1
- package/web/.next/static/chunks/d7310881615cb55b.js +0 -1
- /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → EVCmRtpgNX9ebXGb-bV1G}/_buildManifest.js +0 -0
- /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → EVCmRtpgNX9ebXGb-bV1G}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → EVCmRtpgNX9ebXGb-bV1G}/_ssgManifest.js +0 -0
|
@@ -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 @@
|
|
|
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": {
|
|
@@ -478,6 +478,69 @@
|
|
|
478
478
|
"notFound": "Repository nicht gefunden: {{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": "Agentläufe verwalten und anzeigen",
|
|
483
546
|
"show": {
|