@agentuity/cli 0.0.51 → 0.0.53
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/api.js +68 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.js +225 -0
- package/dist/auth.js.map +1 -0
- package/dist/banner.js +35 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli-logger.js +72 -0
- package/dist/cli-logger.js.map +1 -0
- package/dist/cli.js +822 -0
- package/dist/cli.js.map +1 -0
- package/dist/cmd/ai/capabilities/index.js +10 -0
- package/dist/cmd/ai/capabilities/index.js.map +1 -0
- package/dist/cmd/ai/capabilities/show.js +221 -0
- package/dist/cmd/ai/capabilities/show.js.map +1 -0
- package/dist/cmd/ai/index.js +11 -0
- package/dist/cmd/ai/index.js.map +1 -0
- package/dist/cmd/ai/prompt/index.js +10 -0
- package/dist/cmd/ai/prompt/index.js.map +1 -0
- package/dist/cmd/ai/prompt/llm.js +365 -0
- package/dist/cmd/ai/prompt/llm.js.map +1 -0
- package/dist/cmd/ai/schema/index.js +10 -0
- package/dist/cmd/ai/schema/index.js.map +1 -0
- package/dist/cmd/ai/schema/show.js +23 -0
- package/dist/cmd/ai/schema/show.js.map +1 -0
- package/dist/cmd/auth/api.js +85 -0
- package/dist/cmd/auth/api.js.map +1 -0
- package/dist/cmd/auth/index.js +13 -0
- package/dist/cmd/auth/index.js.map +1 -0
- package/dist/cmd/auth/login.js +84 -0
- package/dist/cmd/auth/login.js.map +1 -0
- package/dist/cmd/auth/logout.js +17 -0
- package/dist/cmd/auth/logout.js.map +1 -0
- package/dist/cmd/auth/signup.js +55 -0
- package/dist/cmd/auth/signup.js.map +1 -0
- package/dist/cmd/auth/ssh/add.js +239 -0
- package/dist/cmd/auth/ssh/add.js.map +1 -0
- package/dist/cmd/auth/ssh/api.js +53 -0
- package/dist/cmd/auth/ssh/api.js.map +1 -0
- package/dist/cmd/auth/ssh/delete.js +126 -0
- package/dist/cmd/auth/ssh/delete.js.map +1 -0
- package/dist/cmd/auth/ssh/index.js +11 -0
- package/dist/cmd/auth/ssh/index.js.map +1 -0
- package/dist/cmd/auth/ssh/list.js +70 -0
- package/dist/cmd/auth/ssh/list.js.map +1 -0
- package/dist/cmd/auth/whoami.js +68 -0
- package/dist/cmd/auth/whoami.js.map +1 -0
- package/dist/cmd/build/ast.js +608 -0
- package/dist/cmd/build/ast.js.map +1 -0
- package/dist/cmd/build/ast.test.js +389 -0
- package/dist/cmd/build/ast.test.js.map +1 -0
- package/dist/cmd/build/bundler.js +304 -0
- package/dist/cmd/build/bundler.js.map +1 -0
- package/dist/cmd/build/file.js +10 -0
- package/dist/cmd/build/file.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.js +167 -0
- package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +81 -0
- package/dist/cmd/build/index.js.map +1 -0
- package/dist/cmd/build/patch/_util.js +42 -0
- package/dist/cmd/build/patch/_util.js.map +1 -0
- package/dist/cmd/build/patch/aisdk.js +65 -0
- package/dist/cmd/build/patch/aisdk.js.map +1 -0
- package/dist/cmd/build/patch/index.js +97 -0
- package/dist/cmd/build/patch/index.js.map +1 -0
- package/dist/cmd/build/patch/llm.js +18 -0
- package/dist/cmd/build/patch/llm.js.map +1 -0
- package/dist/cmd/build/plugin.d.ts.map +1 -1
- package/dist/cmd/build/plugin.js +581 -0
- package/dist/cmd/build/plugin.js.map +1 -0
- package/dist/cmd/cloud/agents/index.js +133 -0
- package/dist/cmd/cloud/agents/index.js.map +1 -0
- package/dist/cmd/cloud/deploy.js +341 -0
- package/dist/cmd/cloud/deploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/index.js +20 -0
- package/dist/cmd/cloud/deployment/index.js.map +1 -0
- package/dist/cmd/cloud/deployment/list.js +89 -0
- package/dist/cmd/cloud/deployment/list.js.map +1 -0
- package/dist/cmd/cloud/deployment/remove.js +60 -0
- package/dist/cmd/cloud/deployment/remove.js.map +1 -0
- package/dist/cmd/cloud/deployment/rollback.js +80 -0
- package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
- package/dist/cmd/cloud/deployment/show.js +106 -0
- package/dist/cmd/cloud/deployment/show.js.map +1 -0
- package/dist/cmd/cloud/deployment/undeploy.js +45 -0
- package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/utils.js +10 -0
- package/dist/cmd/cloud/deployment/utils.js.map +1 -0
- package/dist/cmd/cloud/domain.js +77 -0
- package/dist/cmd/cloud/domain.js.map +1 -0
- package/dist/cmd/cloud/env/delete.js +50 -0
- package/dist/cmd/cloud/env/delete.js.map +1 -0
- package/dist/cmd/cloud/env/get.js +65 -0
- package/dist/cmd/cloud/env/get.js.map +1 -0
- package/dist/cmd/cloud/env/import.js +113 -0
- package/dist/cmd/cloud/env/import.js.map +1 -0
- package/dist/cmd/cloud/env/index.js +24 -0
- package/dist/cmd/cloud/env/index.js.map +1 -0
- package/dist/cmd/cloud/env/list.js +58 -0
- package/dist/cmd/cloud/env/list.js.map +1 -0
- package/dist/cmd/cloud/env/pull.js +81 -0
- package/dist/cmd/cloud/env/pull.js.map +1 -0
- package/dist/cmd/cloud/env/push.js +61 -0
- package/dist/cmd/cloud/env/push.js.map +1 -0
- package/dist/cmd/cloud/env/set.js +73 -0
- package/dist/cmd/cloud/env/set.js.map +1 -0
- package/dist/cmd/cloud/index.js +31 -0
- package/dist/cmd/cloud/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete.js +47 -0
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/get.js +65 -0
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/index.js +32 -0
- package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/keys.js +50 -0
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/repl.js +277 -0
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/search.js +72 -0
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/set.js +59 -0
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/stats.js +82 -0
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/util.js +19 -0
- package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete.js +56 -0
- package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
- package/dist/cmd/cloud/objectstore/get.js +64 -0
- package/dist/cmd/cloud/objectstore/get.js.map +1 -0
- package/dist/cmd/cloud/objectstore/index.js +28 -0
- package/dist/cmd/cloud/objectstore/index.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
- package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
- package/dist/cmd/cloud/objectstore/put.js +57 -0
- package/dist/cmd/cloud/objectstore/put.js.map +1 -0
- package/dist/cmd/cloud/objectstore/repl.js +219 -0
- package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
- package/dist/cmd/cloud/objectstore/url.js +55 -0
- package/dist/cmd/cloud/objectstore/url.js.map +1 -0
- package/dist/cmd/cloud/objectstore/util.js +18 -0
- package/dist/cmd/cloud/objectstore/util.js.map +1 -0
- package/dist/cmd/cloud/resource/add.js +70 -0
- package/dist/cmd/cloud/resource/add.js.map +1 -0
- package/dist/cmd/cloud/resource/delete.js +126 -0
- package/dist/cmd/cloud/resource/delete.js.map +1 -0
- package/dist/cmd/cloud/resource/index.js +12 -0
- package/dist/cmd/cloud/resource/index.js.map +1 -0
- package/dist/cmd/cloud/resource/list.js +89 -0
- package/dist/cmd/cloud/resource/list.js.map +1 -0
- package/dist/cmd/cloud/scp/download.js +72 -0
- package/dist/cmd/cloud/scp/download.js.map +1 -0
- package/dist/cmd/cloud/scp/index.js +10 -0
- package/dist/cmd/cloud/scp/index.js.map +1 -0
- package/dist/cmd/cloud/scp/upload.js +75 -0
- package/dist/cmd/cloud/scp/upload.js.map +1 -0
- package/dist/cmd/cloud/secret/delete.js +50 -0
- package/dist/cmd/cloud/secret/delete.js.map +1 -0
- package/dist/cmd/cloud/secret/get.js +69 -0
- package/dist/cmd/cloud/secret/get.js.map +1 -0
- package/dist/cmd/cloud/secret/import.js +88 -0
- package/dist/cmd/cloud/secret/import.js.map +1 -0
- package/dist/cmd/cloud/secret/index.js +24 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -0
- package/dist/cmd/cloud/secret/list.js +58 -0
- package/dist/cmd/cloud/secret/list.js.map +1 -0
- package/dist/cmd/cloud/secret/pull.js +81 -0
- package/dist/cmd/cloud/secret/pull.js.map +1 -0
- package/dist/cmd/cloud/secret/push.js +61 -0
- package/dist/cmd/cloud/secret/push.js.map +1 -0
- package/dist/cmd/cloud/secret/set.js +57 -0
- package/dist/cmd/cloud/secret/set.js.map +1 -0
- package/dist/cmd/cloud/session/get.d.ts.map +1 -1
- package/dist/cmd/cloud/session/get.js +155 -0
- package/dist/cmd/cloud/session/get.js.map +1 -0
- package/dist/cmd/cloud/session/index.js +11 -0
- package/dist/cmd/cloud/session/index.js.map +1 -0
- package/dist/cmd/cloud/session/list.js +132 -0
- package/dist/cmd/cloud/session/list.js.map +1 -0
- package/dist/cmd/cloud/session/logs.js +56 -0
- package/dist/cmd/cloud/session/logs.js.map +1 -0
- package/dist/cmd/cloud/ssh.js +67 -0
- package/dist/cmd/cloud/ssh.js.map +1 -0
- package/dist/cmd/dev/agents.js +103 -0
- package/dist/cmd/dev/agents.js.map +1 -0
- package/dist/cmd/dev/api.js +26 -0
- package/dist/cmd/dev/api.js.map +1 -0
- package/dist/cmd/dev/download.js +77 -0
- package/dist/cmd/dev/download.js.map +1 -0
- package/dist/cmd/dev/index.js +745 -0
- package/dist/cmd/dev/index.js.map +1 -0
- package/dist/cmd/dev/sync.js +229 -0
- package/dist/cmd/dev/sync.js.map +1 -0
- package/dist/cmd/dev/templates.js +75 -0
- package/dist/cmd/dev/templates.js.map +1 -0
- package/dist/cmd/index.js +49 -0
- package/dist/cmd/index.js.map +1 -0
- package/dist/cmd/profile/create.js +89 -0
- package/dist/cmd/profile/create.js.map +1 -0
- package/dist/cmd/profile/delete.js +63 -0
- package/dist/cmd/profile/delete.js.map +1 -0
- package/dist/cmd/profile/index.js +14 -0
- package/dist/cmd/profile/index.js.map +1 -0
- package/dist/cmd/profile/list.js +28 -0
- package/dist/cmd/profile/list.js.map +1 -0
- package/dist/cmd/profile/show.js +68 -0
- package/dist/cmd/profile/show.js.map +1 -0
- package/dist/cmd/profile/use.js +37 -0
- package/dist/cmd/profile/use.js.map +1 -0
- package/dist/cmd/project/create.js +92 -0
- package/dist/cmd/project/create.js.map +1 -0
- package/dist/cmd/project/delete.js +117 -0
- package/dist/cmd/project/delete.js.map +1 -0
- package/dist/cmd/project/download.js +217 -0
- package/dist/cmd/project/download.js.map +1 -0
- package/dist/cmd/project/index.js +12 -0
- package/dist/cmd/project/index.js.map +1 -0
- package/dist/cmd/project/list.js +51 -0
- package/dist/cmd/project/list.js.map +1 -0
- package/dist/cmd/project/show.js +54 -0
- package/dist/cmd/project/show.js.map +1 -0
- package/dist/cmd/project/template-flow.js +315 -0
- package/dist/cmd/project/template-flow.js.map +1 -0
- package/dist/cmd/project/templates.js +31 -0
- package/dist/cmd/project/templates.js.map +1 -0
- package/dist/cmd/repl/index.js +444 -0
- package/dist/cmd/repl/index.js.map +1 -0
- package/dist/cmd/version/index.js +29 -0
- package/dist/cmd/version/index.js.map +1 -0
- package/dist/command-prefix.js +37 -0
- package/dist/command-prefix.js.map +1 -0
- package/dist/config.js +536 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/box.js +382 -0
- package/dist/crypto/box.js.map +1 -0
- package/dist/crypto/box.test.js +317 -0
- package/dist/crypto/box.test.js.map +1 -0
- package/dist/download.js +64 -0
- package/dist/download.js.map +1 -0
- package/dist/env-util.js +219 -0
- package/dist/env-util.js.map +1 -0
- package/dist/env-util.test.js +146 -0
- package/dist/env-util.test.js.map +1 -0
- package/dist/errors.js +177 -0
- package/dist/errors.js.map +1 -0
- package/dist/explain.js +90 -0
- package/dist/explain.js.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/json.js +29 -0
- package/dist/json.js.map +1 -0
- package/dist/legacy-check.js +104 -0
- package/dist/legacy-check.js.map +1 -0
- package/dist/output.js +207 -0
- package/dist/output.js.map +1 -0
- package/dist/repl.js +1176 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime.js +19 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema-generator.js +289 -0
- package/dist/schema-generator.js.map +1 -0
- package/dist/schema-parser.js +145 -0
- package/dist/schema-parser.js.map +1 -0
- package/dist/sound.js +44 -0
- package/dist/sound.js.map +1 -0
- package/dist/steps.js +293 -0
- package/dist/steps.js.map +1 -0
- package/dist/terminal.js +130 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tui.js +1124 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.js +163 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/detectSubagent.js +25 -0
- package/dist/utils/detectSubagent.js.map +1 -0
- package/dist/utils/format.js +21 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/zip.js +33 -0
- package/dist/utils/zip.js.map +1 -0
- package/dist/version.js +24 -0
- package/dist/version.js.map +1 -0
- package/package.json +6 -6
- package/src/banner.ts +1 -1
- package/src/cmd/build/index.ts +18 -22
- package/src/cmd/build/plugin.ts +95 -64
- package/src/cmd/cloud/session/get.ts +20 -14
- package/src/cmd/cloud/session/list.ts +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createSubcommand } from '../../types';
|
|
2
|
+
import { fetchProfiles } from '../../config';
|
|
3
|
+
import { basename, dirname } from 'node:path';
|
|
4
|
+
import * as tui from '../../tui';
|
|
5
|
+
import { getCommand } from '../../command-prefix';
|
|
6
|
+
export const listCommand = createSubcommand({
|
|
7
|
+
name: 'list',
|
|
8
|
+
description: 'List all available profiles',
|
|
9
|
+
tags: ['read-only', 'fast'],
|
|
10
|
+
idempotent: true,
|
|
11
|
+
aliases: ['ls'],
|
|
12
|
+
examples: [getCommand('profile list'), getCommand('profile ls')],
|
|
13
|
+
async handler() {
|
|
14
|
+
const profiles = await fetchProfiles();
|
|
15
|
+
if (profiles.length === 0) {
|
|
16
|
+
tui.info('No profiles found');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('Available profiles:');
|
|
20
|
+
for (const profile of profiles) {
|
|
21
|
+
const marker = profile.selected ? '•' : ' ';
|
|
22
|
+
const name = tui.padRight(profile.name, 15, ' ');
|
|
23
|
+
const path = `${basename(dirname(profile.filename))}/${basename(profile.filename)}`;
|
|
24
|
+
console.log(`${marker} ${name} ${tui.muted(path)}`);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cmd/profile/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;IAC3C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6BAA6B;IAC1C,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAEhE,KAAK,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC9B,OAAO;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createSubcommand, ConfigSchema } from '../../types';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { fetchProfiles, loadConfig } from '../../config';
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import * as tui from '../../tui';
|
|
6
|
+
import { getCommand } from '../../command-prefix';
|
|
7
|
+
import { ErrorCode } from '../../errors';
|
|
8
|
+
const ProfileShowResponseSchema = ConfigSchema;
|
|
9
|
+
export const showCommand = createSubcommand({
|
|
10
|
+
name: 'show',
|
|
11
|
+
description: 'Show the configuration of a profile',
|
|
12
|
+
tags: ['read-only', 'fast'],
|
|
13
|
+
aliases: ['current'],
|
|
14
|
+
examples: [
|
|
15
|
+
getCommand('profile show'),
|
|
16
|
+
getCommand('profile show production'),
|
|
17
|
+
getCommand('profile show staging --json'),
|
|
18
|
+
],
|
|
19
|
+
schema: {
|
|
20
|
+
options: z.object({
|
|
21
|
+
json: z.boolean().optional().describe('Show the JSON config'),
|
|
22
|
+
}),
|
|
23
|
+
args: z
|
|
24
|
+
.object({
|
|
25
|
+
name: z.string().optional().describe('Profile name to show (optional)'),
|
|
26
|
+
})
|
|
27
|
+
.describe('Profile show arguments'),
|
|
28
|
+
response: ProfileShowResponseSchema,
|
|
29
|
+
},
|
|
30
|
+
idempotent: true,
|
|
31
|
+
async handler(ctx) {
|
|
32
|
+
const { logger, args, opts } = ctx;
|
|
33
|
+
try {
|
|
34
|
+
let current = false;
|
|
35
|
+
let name = args.name;
|
|
36
|
+
const profiles = await fetchProfiles();
|
|
37
|
+
if (!name) {
|
|
38
|
+
name = await tui.showProfileList(profiles, 'Select profile to show:');
|
|
39
|
+
}
|
|
40
|
+
const profile = profiles.find((p) => p.name === name);
|
|
41
|
+
if (!profile) {
|
|
42
|
+
return logger.fatal(`Profile "${name}" not found`, ErrorCode.RESOURCE_NOT_FOUND);
|
|
43
|
+
}
|
|
44
|
+
const profilePath = profile.filename;
|
|
45
|
+
current = profile.selected;
|
|
46
|
+
tui.info(`Profile: ${profilePath}`);
|
|
47
|
+
const content = await loadConfig(current ? undefined : profilePath);
|
|
48
|
+
if (opts?.json) {
|
|
49
|
+
console.log(JSON.stringify(content, null, 2));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
tui.newline();
|
|
53
|
+
const textContent = await readFile(profilePath, 'utf-8');
|
|
54
|
+
console.log(textContent);
|
|
55
|
+
}
|
|
56
|
+
return content;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
logger.fatal(`Failed to show profile: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
logger.fatal('Failed to show profile');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/cmd/profile/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createSubcommand } from '../../types';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { fetchProfiles, saveProfile } from '../../config';
|
|
4
|
+
import * as tui from '../../tui';
|
|
5
|
+
import { getCommand } from '../../command-prefix';
|
|
6
|
+
export const useCommand = createSubcommand({
|
|
7
|
+
name: 'use',
|
|
8
|
+
description: 'Switch to a different configuration profile',
|
|
9
|
+
tags: ['mutating', 'updates-resource', 'fast'],
|
|
10
|
+
aliases: ['switch'],
|
|
11
|
+
idempotent: true,
|
|
12
|
+
examples: [
|
|
13
|
+
getCommand('profile use production'),
|
|
14
|
+
getCommand('profile switch staging'),
|
|
15
|
+
getCommand('profile use'),
|
|
16
|
+
],
|
|
17
|
+
schema: {
|
|
18
|
+
args: z.object({
|
|
19
|
+
name: z.string().optional().describe('The name of the profile to use'),
|
|
20
|
+
}),
|
|
21
|
+
},
|
|
22
|
+
async handler(ctx) {
|
|
23
|
+
const { args } = ctx;
|
|
24
|
+
let { name } = args;
|
|
25
|
+
const profiles = await fetchProfiles();
|
|
26
|
+
if (!name) {
|
|
27
|
+
name = await tui.showProfileList(profiles, 'Select profile to use:');
|
|
28
|
+
}
|
|
29
|
+
const profile = profiles.find((p) => p.name === name);
|
|
30
|
+
if (!profile) {
|
|
31
|
+
tui.fatal(`Profile "${name}" not found`);
|
|
32
|
+
}
|
|
33
|
+
await saveProfile(profile.filename);
|
|
34
|
+
tui.success(`Switched to profile "${name}"`);
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/cmd/profile/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;IAC1C,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,6CAA6C;IAC1D,IAAI,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE;QACT,UAAU,CAAC,wBAAwB,CAAC;QACpC,UAAU,CAAC,wBAAwB,CAAC;QACpC,UAAU,CAAC,aAAa,CAAC;KACzB;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SACtE,CAAC;KACF;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEpB,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;QAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,WAAW,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC;IAC9C,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createSubcommand } from '../../types';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { runCreateFlow } from './template-flow';
|
|
4
|
+
import { getCommand } from '../../command-prefix';
|
|
5
|
+
const ProjectCreateResponseSchema = z.object({
|
|
6
|
+
success: z.boolean().describe('Whether the operation succeeded'),
|
|
7
|
+
name: z.string().describe('Project name'),
|
|
8
|
+
path: z.string().describe('Project directory path'),
|
|
9
|
+
projectId: z.string().optional().describe('Project ID if registered'),
|
|
10
|
+
template: z.string().describe('Template used'),
|
|
11
|
+
installed: z.boolean().describe('Whether dependencies were installed'),
|
|
12
|
+
built: z.boolean().describe('Whether the project was built'),
|
|
13
|
+
});
|
|
14
|
+
export const createProjectSubcommand = createSubcommand({
|
|
15
|
+
name: 'create',
|
|
16
|
+
description: 'Create a new project',
|
|
17
|
+
tags: ['mutating', 'creates-resource', 'slow', 'api-intensive', 'requires-auth'],
|
|
18
|
+
aliases: ['new', 'init'],
|
|
19
|
+
banner: true,
|
|
20
|
+
toplevel: true,
|
|
21
|
+
idempotent: false,
|
|
22
|
+
optional: { auth: true, org: true, region: true },
|
|
23
|
+
requires: { apiClient: true },
|
|
24
|
+
examples: [
|
|
25
|
+
getCommand('project create'),
|
|
26
|
+
getCommand('project create --name my-ai-agent'),
|
|
27
|
+
getCommand('project create --name customer-service-bot --dir ~/projects/agent'),
|
|
28
|
+
getCommand('project create --template basic --no-install'),
|
|
29
|
+
getCommand('project new --no-register'),
|
|
30
|
+
],
|
|
31
|
+
schema: {
|
|
32
|
+
options: z.object({
|
|
33
|
+
name: z.string().optional().describe('Project name'),
|
|
34
|
+
dir: z.string().optional().describe('Directory to create the project in'),
|
|
35
|
+
template: z.string().optional().describe('Template to use'),
|
|
36
|
+
templateDir: z
|
|
37
|
+
.string()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Local template directory for testing (e.g., ./packages/templates)'),
|
|
40
|
+
templateBranch: z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('GitHub branch to use for templates (default: main)'),
|
|
44
|
+
install: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.default(true)
|
|
48
|
+
.describe('Run bun install after creating the project (use --no-install to skip)'),
|
|
49
|
+
build: z
|
|
50
|
+
.boolean()
|
|
51
|
+
.optional()
|
|
52
|
+
.default(true)
|
|
53
|
+
.describe('Run bun run build after installing (use --no-build to skip)'),
|
|
54
|
+
confirm: z.boolean().optional().describe('Skip confirmation prompts'),
|
|
55
|
+
register: z
|
|
56
|
+
.boolean()
|
|
57
|
+
.default(true)
|
|
58
|
+
.optional()
|
|
59
|
+
.describe('Register the project, if authenticated (use --no-register to skip)'),
|
|
60
|
+
}),
|
|
61
|
+
response: ProjectCreateResponseSchema,
|
|
62
|
+
},
|
|
63
|
+
async handler(ctx) {
|
|
64
|
+
const { logger, opts, auth, config, apiClient, orgId, region } = ctx;
|
|
65
|
+
await runCreateFlow({
|
|
66
|
+
projectName: opts.name,
|
|
67
|
+
dir: opts.dir,
|
|
68
|
+
template: opts.template,
|
|
69
|
+
templateDir: opts.templateDir,
|
|
70
|
+
templateBranch: opts.templateBranch,
|
|
71
|
+
noInstall: opts.install === false,
|
|
72
|
+
noBuild: opts.build === false,
|
|
73
|
+
skipPrompts: opts.confirm === true,
|
|
74
|
+
logger,
|
|
75
|
+
auth: opts.register === true ? auth : undefined,
|
|
76
|
+
config: config,
|
|
77
|
+
apiClient,
|
|
78
|
+
orgId,
|
|
79
|
+
region,
|
|
80
|
+
});
|
|
81
|
+
// Return best-effort response (runCreateFlow doesn't return values)
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
name: opts.name || 'project',
|
|
85
|
+
path: opts.dir || process.cwd(),
|
|
86
|
+
template: opts.template || 'default',
|
|
87
|
+
installed: opts.install !== false,
|
|
88
|
+
built: opts.build !== false,
|
|
89
|
+
};
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cmd/project/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand } from '../../types';
|
|
3
|
+
import * as tui from '../../tui';
|
|
4
|
+
import { projectDelete, projectList } from '@agentuity/server';
|
|
5
|
+
import enquirer from 'enquirer';
|
|
6
|
+
import { getCommand } from '../../command-prefix';
|
|
7
|
+
export const deleteSubcommand = createSubcommand({
|
|
8
|
+
name: 'delete',
|
|
9
|
+
description: 'Delete a project',
|
|
10
|
+
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'],
|
|
11
|
+
aliases: ['rm', 'del'],
|
|
12
|
+
requires: { auth: true, apiClient: true },
|
|
13
|
+
idempotent: false,
|
|
14
|
+
examples: [
|
|
15
|
+
getCommand('project delete'),
|
|
16
|
+
getCommand('project delete proj_abc123def456'),
|
|
17
|
+
getCommand('project delete proj_abc123def456 --confirm'),
|
|
18
|
+
getCommand('project rm proj_abc123def456'),
|
|
19
|
+
getCommand('--explain project delete proj_abc123def456'),
|
|
20
|
+
getCommand('--dry-run project delete proj_abc123def456'),
|
|
21
|
+
],
|
|
22
|
+
schema: {
|
|
23
|
+
args: z.object({
|
|
24
|
+
id: z.string().optional().describe('the project id'),
|
|
25
|
+
}),
|
|
26
|
+
options: z.object({
|
|
27
|
+
confirm: z.boolean().optional().describe('Skip confirmation prompts'),
|
|
28
|
+
}),
|
|
29
|
+
response: z.object({
|
|
30
|
+
success: z.boolean().describe('Whether the deletion succeeded'),
|
|
31
|
+
projectIds: z.array(z.string()).describe('Deleted project IDs'),
|
|
32
|
+
count: z.number().describe('Number of projects deleted'),
|
|
33
|
+
}),
|
|
34
|
+
},
|
|
35
|
+
async handler(ctx) {
|
|
36
|
+
const { args, opts, apiClient } = ctx;
|
|
37
|
+
let projectIds = [];
|
|
38
|
+
if (args.id) {
|
|
39
|
+
// Command line argument provided
|
|
40
|
+
projectIds = [args.id];
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Check TTY before attempting to prompt
|
|
44
|
+
if (!process.stdin.isTTY) {
|
|
45
|
+
tui.fatal('--id is required in non-interactive mode');
|
|
46
|
+
}
|
|
47
|
+
// Fetch projects and prompt for selection
|
|
48
|
+
const projects = await tui.spinner({
|
|
49
|
+
message: 'Fetching projects',
|
|
50
|
+
clearOnSuccess: true,
|
|
51
|
+
callback: async () => {
|
|
52
|
+
return projectList(apiClient);
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
if (projects.length === 0) {
|
|
56
|
+
tui.info('No projects found to delete');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Sort projects by name
|
|
60
|
+
projects.sort((a, b) => a.name.localeCompare(b.name));
|
|
61
|
+
// Build choices for multi-select
|
|
62
|
+
const choices = projects.map((project) => ({
|
|
63
|
+
name: project.id,
|
|
64
|
+
message: `${project.name.padEnd(25)} ${tui.muted(project.id)} (${project.orgName})`,
|
|
65
|
+
}));
|
|
66
|
+
const response = await enquirer.prompt({
|
|
67
|
+
type: 'multiselect',
|
|
68
|
+
name: 'projects',
|
|
69
|
+
message: 'Select project(s) to delete:',
|
|
70
|
+
choices,
|
|
71
|
+
});
|
|
72
|
+
projectIds = response.projects;
|
|
73
|
+
}
|
|
74
|
+
if (projectIds.length === 0) {
|
|
75
|
+
tui.info('No projects selected for deletion');
|
|
76
|
+
return { success: false, projectIds: [], count: 0 };
|
|
77
|
+
}
|
|
78
|
+
const skipConfirm = opts?.confirm === true;
|
|
79
|
+
if (!process.stdout.isTTY && !skipConfirm) {
|
|
80
|
+
tui.fatal('no TTY and --confirm is false');
|
|
81
|
+
}
|
|
82
|
+
// Confirm deletion
|
|
83
|
+
if (!skipConfirm) {
|
|
84
|
+
const projectNames = projectIds.join(', ');
|
|
85
|
+
tui.warning(`You are about to delete: ${tui.bold(projectNames)}`);
|
|
86
|
+
const confirm = await enquirer.prompt({
|
|
87
|
+
type: 'confirm',
|
|
88
|
+
name: 'confirm',
|
|
89
|
+
message: `Are you sure you want to delete ${projectIds.length > 1 ? 'these projects' : 'this project'}?`,
|
|
90
|
+
initial: false,
|
|
91
|
+
});
|
|
92
|
+
if (!confirm.confirm) {
|
|
93
|
+
tui.info('Deletion cancelled');
|
|
94
|
+
return { success: false, projectIds: [], count: 0 };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const deleted = await tui.spinner({
|
|
98
|
+
message: `Deleting ${projectIds.length} project(s)`,
|
|
99
|
+
clearOnSuccess: true,
|
|
100
|
+
callback: async () => {
|
|
101
|
+
return projectDelete(apiClient, ...projectIds);
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
if (deleted.length > 0) {
|
|
105
|
+
tui.success(`Deleted ${deleted.length} project(s): ${deleted.join(', ')}`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
tui.error('Failed to delete projects');
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
success: deleted.length > 0,
|
|
112
|
+
projectIds: deleted,
|
|
113
|
+
count: deleted.length,
|
|
114
|
+
};
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/cmd/project/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { join, resolve } from 'node:path';
|
|
2
|
+
import { existsSync, mkdirSync, mkdtempSync, renameSync, readdirSync, cpSync, rmSync, createReadStream, } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { finished } from 'node:stream/promises';
|
|
5
|
+
import { createGunzip } from 'node:zlib';
|
|
6
|
+
import { extract } from 'tar-fs';
|
|
7
|
+
import * as tui from '../../tui';
|
|
8
|
+
import { downloadWithSpinner } from '../../download';
|
|
9
|
+
const GITHUB_REPO = 'agentuity/sdk';
|
|
10
|
+
const GITHUB_BRANCH = 'main';
|
|
11
|
+
async function cleanup(sourceDir, dest) {
|
|
12
|
+
if (!existsSync(sourceDir)) {
|
|
13
|
+
throw new Error(`Template directory not found: ${sourceDir}`);
|
|
14
|
+
}
|
|
15
|
+
tui.spinner(`📦 Copying template files...`, async () => {
|
|
16
|
+
// Copy all files from source to dest
|
|
17
|
+
const files = readdirSync(sourceDir);
|
|
18
|
+
for (const file of files) {
|
|
19
|
+
cpSync(join(sourceDir, file), join(dest, file), { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
// Rename gitignore -> .gitignore
|
|
22
|
+
const gi = join(dest, 'gitignore');
|
|
23
|
+
if (existsSync(gi)) {
|
|
24
|
+
renameSync(gi, join(dest, '.gitignore'));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export async function downloadTemplate(options) {
|
|
29
|
+
const { dest, template, templateDir, templateBranch, logger } = options;
|
|
30
|
+
mkdirSync(dest, { recursive: true });
|
|
31
|
+
// Copy from local directory if provided
|
|
32
|
+
if (templateDir) {
|
|
33
|
+
const sourceDir = resolve(join(templateDir, template.directory));
|
|
34
|
+
if (!existsSync(sourceDir)) {
|
|
35
|
+
throw new Error(`Template directory not found: ${sourceDir}`);
|
|
36
|
+
}
|
|
37
|
+
return cleanup(sourceDir, dest);
|
|
38
|
+
}
|
|
39
|
+
// Download from GitHub
|
|
40
|
+
const branch = templateBranch || GITHUB_BRANCH;
|
|
41
|
+
const templatePath = `templates/${template.directory}`;
|
|
42
|
+
const url = `https://codeload.github.com/${GITHUB_REPO}/tar.gz/${branch}`;
|
|
43
|
+
const tempDir = mkdtempSync(join(tmpdir(), 'agentuity-'));
|
|
44
|
+
const tarballPath = join(tempDir, 'download.tar.gz');
|
|
45
|
+
logger.debug('[download] URL:', url);
|
|
46
|
+
logger.debug('[download] Branch:', branch);
|
|
47
|
+
logger.debug('[download] Template path:', templatePath);
|
|
48
|
+
logger.debug('[download] Temp dir:', tempDir);
|
|
49
|
+
try {
|
|
50
|
+
// Step 1: Download tarball to temp file
|
|
51
|
+
// We download to a file first rather than piping directly to tar-fs
|
|
52
|
+
// because this avoids Bun/Node stream compatibility issues
|
|
53
|
+
await downloadWithSpinner({
|
|
54
|
+
url,
|
|
55
|
+
message: templateBranch
|
|
56
|
+
? `Downloading template files from branch ${branch}...`
|
|
57
|
+
: 'Downloading template files...',
|
|
58
|
+
}, async (stream) => {
|
|
59
|
+
// Collect all chunks from the download stream
|
|
60
|
+
const chunks = [];
|
|
61
|
+
for await (const chunk of stream) {
|
|
62
|
+
chunks.push(Buffer.from(chunk));
|
|
63
|
+
}
|
|
64
|
+
const buffer = Buffer.concat(chunks);
|
|
65
|
+
await Bun.write(tarballPath, buffer);
|
|
66
|
+
logger.debug('[download] Downloaded bytes:', buffer.length);
|
|
67
|
+
logger.debug('[download] Tarball path:', tarballPath);
|
|
68
|
+
});
|
|
69
|
+
// Step 2: Extract tarball
|
|
70
|
+
// We extract only the files within the template directory
|
|
71
|
+
// The tarball structure is: sdk-{branch}/templates/{template.directory}/...
|
|
72
|
+
const extractDir = join(tempDir, 'extract');
|
|
73
|
+
mkdirSync(extractDir, { recursive: true });
|
|
74
|
+
const prefix = `sdk-${branch}/${templatePath}/`;
|
|
75
|
+
logger.debug('[extract] Extract dir:', extractDir);
|
|
76
|
+
logger.debug('[extract] Filter prefix:', prefix);
|
|
77
|
+
// Track extraction stats for debugging
|
|
78
|
+
let ignoredCount = 0;
|
|
79
|
+
let extractedCount = 0;
|
|
80
|
+
// Track which entries we've mapped so we don't ignore them later
|
|
81
|
+
// Note: tar-fs calls map BEFORE ignore (despite what docs say)
|
|
82
|
+
const mappedEntries = new Set();
|
|
83
|
+
const extractor = extract(extractDir, {
|
|
84
|
+
// map callback: called FIRST, allows modifying the entry before extraction
|
|
85
|
+
// We strip the prefix so files are extracted to the root of extractDir
|
|
86
|
+
map: (header) => {
|
|
87
|
+
const originalName = header.name;
|
|
88
|
+
if (header.name.startsWith(prefix) && header.name.length > prefix.length) {
|
|
89
|
+
// This is a file/dir we want to extract - strip the prefix
|
|
90
|
+
header.name = header.name.substring(prefix.length);
|
|
91
|
+
mappedEntries.add(header.name); // Track that we mapped this
|
|
92
|
+
logger.debug('[extract] MAP:', originalName, '->', header.name);
|
|
93
|
+
logger.debug('[extract] EXTRACT:', originalName);
|
|
94
|
+
extractedCount++;
|
|
95
|
+
}
|
|
96
|
+
return header;
|
|
97
|
+
},
|
|
98
|
+
// ignore callback: called AFTER map, receives the MAPPED name
|
|
99
|
+
// Return true to skip the entry, false to extract it
|
|
100
|
+
ignore: (name, header) => {
|
|
101
|
+
if (!header) {
|
|
102
|
+
ignoredCount++;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
// If we already mapped this entry, don't ignore it
|
|
106
|
+
if (mappedEntries.has(header.name)) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
// Otherwise, ignore it
|
|
110
|
+
logger.debug('[extract] IGNORE:', header.name);
|
|
111
|
+
ignoredCount++;
|
|
112
|
+
return true;
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
// Pipe: tarball file -> gunzip -> tar extractor
|
|
116
|
+
createReadStream(tarballPath).pipe(createGunzip()).pipe(extractor);
|
|
117
|
+
await finished(extractor);
|
|
118
|
+
logger.debug('[extract] Extraction complete');
|
|
119
|
+
logger.debug('[extract] Ignored entries:', ignoredCount);
|
|
120
|
+
logger.debug('[extract] Extracted entries:', extractedCount);
|
|
121
|
+
// Step 3: Copy extracted files to destination
|
|
122
|
+
await cleanup(extractDir, dest);
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
// Clean up temp directory
|
|
126
|
+
logger.debug('[cleanup] Removing temp dir:', tempDir);
|
|
127
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export async function setupProject(options) {
|
|
131
|
+
const { dest, projectName, dirName, noInstall, noBuild, logger } = options;
|
|
132
|
+
// Replace {{PROJECT_NAME}} in files
|
|
133
|
+
tui.info(`🔧 Setting up ${projectName}...`);
|
|
134
|
+
await replaceInFiles(dest, projectName, dirName);
|
|
135
|
+
// Install dependencies
|
|
136
|
+
if (!noInstall) {
|
|
137
|
+
const exitCode = await tui.runCommand({
|
|
138
|
+
command: 'bun install',
|
|
139
|
+
cwd: dest,
|
|
140
|
+
cmd: ['bun', 'install'],
|
|
141
|
+
clearOnSuccess: true,
|
|
142
|
+
});
|
|
143
|
+
if (exitCode !== 0) {
|
|
144
|
+
logger.error('Failed to install dependencies');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Build project
|
|
148
|
+
if (!noBuild) {
|
|
149
|
+
const exitCode = await tui.runCommand({
|
|
150
|
+
command: 'bun run build',
|
|
151
|
+
cwd: dest,
|
|
152
|
+
cmd: ['bun', 'run', 'build'],
|
|
153
|
+
clearOnSuccess: true,
|
|
154
|
+
});
|
|
155
|
+
if (exitCode !== 0) {
|
|
156
|
+
logger.error('Failed to build project');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Initialize git repository if git is available
|
|
160
|
+
const gitPath = Bun.which('git');
|
|
161
|
+
if (gitPath) {
|
|
162
|
+
// Git is available, initialize repository
|
|
163
|
+
await tui.runCommand({
|
|
164
|
+
command: 'git init',
|
|
165
|
+
cwd: dest,
|
|
166
|
+
cmd: ['git', 'init'],
|
|
167
|
+
clearOnSuccess: true,
|
|
168
|
+
});
|
|
169
|
+
// Configure git user in CI environments (where git config may not be set)
|
|
170
|
+
if (process.env.CI) {
|
|
171
|
+
await tui.runCommand({
|
|
172
|
+
command: 'git config user.email',
|
|
173
|
+
cwd: dest,
|
|
174
|
+
cmd: ['git', 'config', 'user.email', 'agentuity@example.com'],
|
|
175
|
+
clearOnSuccess: true,
|
|
176
|
+
});
|
|
177
|
+
await tui.runCommand({
|
|
178
|
+
command: 'git config user.name',
|
|
179
|
+
cwd: dest,
|
|
180
|
+
cmd: ['git', 'config', 'user.name', 'Agentuity'],
|
|
181
|
+
clearOnSuccess: true,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// Add all files
|
|
185
|
+
await tui.runCommand({
|
|
186
|
+
command: 'git add .',
|
|
187
|
+
cwd: dest,
|
|
188
|
+
cmd: ['git', 'add', '.'],
|
|
189
|
+
clearOnSuccess: true,
|
|
190
|
+
});
|
|
191
|
+
// Create initial commit (disable GPG signing to avoid lock issues)
|
|
192
|
+
await tui.runCommand({
|
|
193
|
+
command: 'git commit -m "Initial Setup"',
|
|
194
|
+
cwd: dest,
|
|
195
|
+
cmd: ['git', '-c', 'commit.gpgsign=false', 'commit', '-m', 'Initial Setup'],
|
|
196
|
+
clearOnSuccess: true,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async function replaceInFiles(dir, projectName, dirName) {
|
|
201
|
+
const filesToReplace = ['package.json', 'README.md', 'AGENTS.md'];
|
|
202
|
+
for (const file of filesToReplace) {
|
|
203
|
+
const filePath = join(dir, file);
|
|
204
|
+
const bunFile = Bun.file(filePath);
|
|
205
|
+
if (await bunFile.exists()) {
|
|
206
|
+
let content = await bunFile.text();
|
|
207
|
+
// Replace human-readable name in most places
|
|
208
|
+
content = content.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
|
|
209
|
+
// Replace with directory name for package.json "name" field (npm package name)
|
|
210
|
+
if (file === 'package.json') {
|
|
211
|
+
content = content.replace(/"name":\s*".*?"/, `"name": "${dirName}"`);
|
|
212
|
+
}
|
|
213
|
+
await Bun.write(filePath, content);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/cmd/project/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createCommand } from '../../types';
|
|
2
|
+
import { createProjectSubcommand } from './create';
|
|
3
|
+
import { listSubcommand } from './list';
|
|
4
|
+
import { deleteSubcommand } from './delete';
|
|
5
|
+
import { showSubcommand } from './show';
|
|
6
|
+
export const command = createCommand({
|
|
7
|
+
name: 'project',
|
|
8
|
+
description: 'Project related commands',
|
|
9
|
+
tags: ['fast', 'requires-auth'],
|
|
10
|
+
subcommands: [createProjectSubcommand, listSubcommand, deleteSubcommand, showSubcommand],
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,0BAA0B;IACvC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/B,WAAW,EAAE,CAAC,uBAAuB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,CAAC;CACxF,CAAC,CAAC"}
|