@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,51 @@
|
|
|
1
|
+
import { createSubcommand } from '../../types';
|
|
2
|
+
import * as tui from '../../tui';
|
|
3
|
+
import { projectList } from '@agentuity/server';
|
|
4
|
+
import { getCommand } from '../../command-prefix';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
const ProjectListResponseSchema = z.array(z.object({
|
|
7
|
+
id: z.string().describe('Project ID'),
|
|
8
|
+
name: z.string().describe('Project name'),
|
|
9
|
+
orgId: z.string().describe('Organization ID'),
|
|
10
|
+
orgName: z.string().describe('Organization name'),
|
|
11
|
+
}));
|
|
12
|
+
export const listSubcommand = createSubcommand({
|
|
13
|
+
name: 'list',
|
|
14
|
+
description: 'List all projects',
|
|
15
|
+
tags: ['read-only', 'slow', 'requires-auth'],
|
|
16
|
+
aliases: ['ls'],
|
|
17
|
+
requires: { auth: true, apiClient: true },
|
|
18
|
+
idempotent: true,
|
|
19
|
+
schema: {
|
|
20
|
+
response: ProjectListResponseSchema,
|
|
21
|
+
},
|
|
22
|
+
examples: [
|
|
23
|
+
getCommand('project list'),
|
|
24
|
+
getCommand('--json project list'),
|
|
25
|
+
getCommand('project ls'),
|
|
26
|
+
],
|
|
27
|
+
async handler(ctx) {
|
|
28
|
+
const { apiClient, options } = ctx;
|
|
29
|
+
const projects = await tui.spinner({
|
|
30
|
+
message: 'Fetching projects',
|
|
31
|
+
clearOnSuccess: true,
|
|
32
|
+
callback: () => {
|
|
33
|
+
return projectList(apiClient);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// TODO: might want to sort by the last org_id we used
|
|
37
|
+
if (projects) {
|
|
38
|
+
projects.sort((a, b) => {
|
|
39
|
+
return a.name.localeCompare(b.name);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (options.json) {
|
|
43
|
+
console.log(JSON.stringify(projects, null, 2));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
tui.table(projects, ['id', 'name', 'orgName']);
|
|
47
|
+
}
|
|
48
|
+
return projects ?? [];
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cmd/project/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CACxC,CAAC,CAAC,MAAM,CAAC;IACR,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACjD,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mBAAmB;IAChC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC;IAC5C,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IACzC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE;QACP,QAAQ,EAAE,yBAAyB;KACnC;IACD,QAAQ,EAAE;QACT,UAAU,CAAC,cAAc,CAAC;QAC1B,UAAU,CAAC,qBAAqB,CAAC;QACjC,UAAU,CAAC,YAAY,CAAC;KACxB;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAEnC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAClC,OAAO,EAAE,mBAAmB;YAC5B,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,GAAG,EAAE;gBACd,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;SACD,CAAC,CAAC;QAEH,sDAAsD;QACtD,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtB,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,QAAQ,IAAI,EAAE,CAAC;IACvB,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand } from '../../types';
|
|
3
|
+
import * as tui from '../../tui';
|
|
4
|
+
import { projectGet } from '@agentuity/server';
|
|
5
|
+
import { getCommand } from '../../command-prefix';
|
|
6
|
+
const ProjectShowResponseSchema = z.object({
|
|
7
|
+
id: z.string().describe('Project ID'),
|
|
8
|
+
orgId: z.string().describe('Organization ID'),
|
|
9
|
+
name: z.string().optional().describe('Project name'),
|
|
10
|
+
secrets: z.record(z.string(), z.string()).optional().describe('Project secrets (masked)'),
|
|
11
|
+
env: z.record(z.string(), z.string()).optional().describe('Environment variables'),
|
|
12
|
+
});
|
|
13
|
+
export const showSubcommand = createSubcommand({
|
|
14
|
+
name: 'show',
|
|
15
|
+
aliases: ['get'],
|
|
16
|
+
description: 'Show project detail',
|
|
17
|
+
tags: ['read-only', 'fast', 'requires-auth', 'requires-project'],
|
|
18
|
+
requires: { auth: true, apiClient: true },
|
|
19
|
+
examples: [
|
|
20
|
+
getCommand('project show proj_abc123def456'),
|
|
21
|
+
getCommand('--json project show proj_abc123def456'),
|
|
22
|
+
getCommand('project get proj_abc123def456'),
|
|
23
|
+
],
|
|
24
|
+
schema: {
|
|
25
|
+
args: z.object({
|
|
26
|
+
id: z.string().describe('the project id'),
|
|
27
|
+
}),
|
|
28
|
+
response: ProjectShowResponseSchema,
|
|
29
|
+
},
|
|
30
|
+
idempotent: true,
|
|
31
|
+
async handler(ctx) {
|
|
32
|
+
const { args, apiClient, options } = ctx;
|
|
33
|
+
const project = await tui.spinner('Fetching project', () => {
|
|
34
|
+
return projectGet(apiClient, { id: args.id, mask: true });
|
|
35
|
+
});
|
|
36
|
+
if (!project) {
|
|
37
|
+
tui.fatal('Project not found');
|
|
38
|
+
}
|
|
39
|
+
if (options.json) {
|
|
40
|
+
console.log(JSON.stringify(project, null, 2));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
tui.table([project], ['id', 'orgId']);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
id: project.id,
|
|
47
|
+
orgId: project.orgId,
|
|
48
|
+
name: undefined,
|
|
49
|
+
secrets: project.secrets,
|
|
50
|
+
env: project.env,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/cmd/project/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { basename, resolve } from 'node:path';
|
|
2
|
+
import { existsSync, readdirSync, rmSync, statSync } from 'node:fs';
|
|
3
|
+
import { cwd } from 'node:process';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import enquirer from 'enquirer';
|
|
6
|
+
import { projectCreate, projectExists, listResources, projectEnvUpdate, getServiceUrls, APIClient as ServerAPIClient, Resources, createResources, } from '@agentuity/server';
|
|
7
|
+
import * as tui from '../../tui';
|
|
8
|
+
import { playSound } from '../../sound';
|
|
9
|
+
import { fetchTemplates } from './templates';
|
|
10
|
+
import { downloadTemplate, setupProject } from './download';
|
|
11
|
+
import { ErrorCode } from '../../errors';
|
|
12
|
+
import { createProjectConfig } from '../../config';
|
|
13
|
+
import { findEnvFile, readEnvFile, filterAgentuitySdkKeys, splitEnvAndSecrets, } from '../../env-util';
|
|
14
|
+
export async function runCreateFlow(options) {
|
|
15
|
+
const { projectName: initialProjectName, dir: targetDir, template: initialTemplate, templateDir, templateBranch, skipPrompts, logger, auth, config, orgId: selectedOrgId, region, apiClient, } = options;
|
|
16
|
+
// Fetch available templates
|
|
17
|
+
if (templateDir) {
|
|
18
|
+
tui.info(`📋 Loading templates from local directory: ${templateDir}...\n`);
|
|
19
|
+
}
|
|
20
|
+
const templates = await tui.spinner({
|
|
21
|
+
message: 'Fetching templates',
|
|
22
|
+
clearOnSuccess: true,
|
|
23
|
+
callback: async () => {
|
|
24
|
+
return fetchTemplates(templateDir, templateBranch);
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
if (templates.length === 0) {
|
|
28
|
+
logger.fatal('No templates available', ErrorCode.RESOURCE_NOT_FOUND);
|
|
29
|
+
}
|
|
30
|
+
// Get project name
|
|
31
|
+
let projectName = initialProjectName;
|
|
32
|
+
// Organization is now automatically selected by the CLI framework via optional: { org: true }
|
|
33
|
+
const orgId = selectedOrgId;
|
|
34
|
+
let catalystClient;
|
|
35
|
+
if (auth) {
|
|
36
|
+
const serviceUrls = getServiceUrls();
|
|
37
|
+
const catalystUrl = config?.overrides?.catalyst_url ?? serviceUrls.catalyst;
|
|
38
|
+
catalystClient = new ServerAPIClient(catalystUrl, logger, auth.apiKey);
|
|
39
|
+
}
|
|
40
|
+
if (!projectName && !skipPrompts) {
|
|
41
|
+
const response = await enquirer.prompt({
|
|
42
|
+
type: 'input',
|
|
43
|
+
name: 'name',
|
|
44
|
+
message: 'What is the name of your project?',
|
|
45
|
+
initial: 'My First Agent',
|
|
46
|
+
validate: async (value) => {
|
|
47
|
+
if (!value || value.trim().length === 0) {
|
|
48
|
+
return 'Project name is required';
|
|
49
|
+
}
|
|
50
|
+
if (apiClient && auth && orgId) {
|
|
51
|
+
const exists = await projectExists(apiClient, {
|
|
52
|
+
name: value,
|
|
53
|
+
organization_id: orgId,
|
|
54
|
+
});
|
|
55
|
+
if (exists) {
|
|
56
|
+
return `Project with name '${value}' already exists in this organization`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
projectName = response.name;
|
|
63
|
+
}
|
|
64
|
+
projectName = projectName || 'My First Agent';
|
|
65
|
+
// Generate disk-friendly directory name
|
|
66
|
+
const dirName = projectName === '.' ? '.' : sanitizeDirectoryName(projectName);
|
|
67
|
+
// Determine destination directory
|
|
68
|
+
// Expand ~ to home directory
|
|
69
|
+
let expandedTargetDir = targetDir;
|
|
70
|
+
if (expandedTargetDir?.startsWith('~')) {
|
|
71
|
+
expandedTargetDir = expandedTargetDir.replace(/^~/, homedir());
|
|
72
|
+
}
|
|
73
|
+
const baseDir = expandedTargetDir ? resolve(expandedTargetDir) : process.cwd();
|
|
74
|
+
const dest = dirName === '.' ? baseDir : resolve(baseDir, dirName);
|
|
75
|
+
const destExists = existsSync(dest);
|
|
76
|
+
const destIsDir = destExists ? statSync(dest).isDirectory() : false;
|
|
77
|
+
const destEmpty = destIsDir ? readdirSync(dest).length === 0 : !destExists;
|
|
78
|
+
if (destExists && !destEmpty && dirName !== '.') {
|
|
79
|
+
// In TTY mode, ask if they want to overwrite
|
|
80
|
+
if (process.stdin.isTTY && !skipPrompts) {
|
|
81
|
+
tui.warning(`Directory ${dest} already exists and is not empty.`, true);
|
|
82
|
+
const response = await enquirer.prompt({
|
|
83
|
+
type: 'confirm',
|
|
84
|
+
name: 'overwrite',
|
|
85
|
+
message: 'Delete and overwrite the directory?',
|
|
86
|
+
initial: false,
|
|
87
|
+
});
|
|
88
|
+
if (!response.overwrite) {
|
|
89
|
+
tui.info('Operation cancelled');
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
// Extra safety: refuse to delete root or home directories
|
|
93
|
+
const home = homedir();
|
|
94
|
+
if (dest === '/' || dest === home) {
|
|
95
|
+
logger.fatal(`Refusing to delete protected path: ${dest}`, ErrorCode.VALIDATION_FAILED);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
rmSync(dest, { recursive: true, force: true });
|
|
99
|
+
tui.success(`Deleted ${dest}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
logger.fatal(`Directory ${dest} already exists and is not empty.`, ErrorCode.RESOURCE_ALREADY_EXISTS);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Step 5: Select template
|
|
106
|
+
let selectedTemplate;
|
|
107
|
+
if (initialTemplate) {
|
|
108
|
+
const found = templates.find((t) => t.id === initialTemplate);
|
|
109
|
+
if (!found) {
|
|
110
|
+
logger.fatal(`Template "${initialTemplate}" not found`, ErrorCode.RESOURCE_NOT_FOUND);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
selectedTemplate = found;
|
|
114
|
+
}
|
|
115
|
+
else if (skipPrompts) {
|
|
116
|
+
selectedTemplate = templates[0];
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const response = await enquirer.prompt({
|
|
120
|
+
type: 'select',
|
|
121
|
+
name: 'template',
|
|
122
|
+
message: 'Select a template:',
|
|
123
|
+
choices: templates.map((t) => ({
|
|
124
|
+
name: t.id,
|
|
125
|
+
message: `${t.name.padEnd(15, ' ')} ${tui.muted(t.description)}`,
|
|
126
|
+
})),
|
|
127
|
+
});
|
|
128
|
+
const found = templates.find((t) => t.id === response.template);
|
|
129
|
+
if (!found) {
|
|
130
|
+
logger.fatal('Template selection failed', ErrorCode.USER_CANCELLED);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
selectedTemplate = found;
|
|
134
|
+
}
|
|
135
|
+
tui.info(`✨ Using template: ${tui.bold(selectedTemplate.name)}`);
|
|
136
|
+
// Download template
|
|
137
|
+
await downloadTemplate({
|
|
138
|
+
dest,
|
|
139
|
+
template: selectedTemplate,
|
|
140
|
+
templateDir,
|
|
141
|
+
templateBranch,
|
|
142
|
+
logger,
|
|
143
|
+
});
|
|
144
|
+
// Setup project (replace placeholders, install deps, build)
|
|
145
|
+
await setupProject({
|
|
146
|
+
dest,
|
|
147
|
+
projectName: projectName === '.' ? basename(dest) : projectName,
|
|
148
|
+
dirName: dirName === '.' ? basename(dest) : dirName,
|
|
149
|
+
noInstall: options.noInstall,
|
|
150
|
+
noBuild: options.noBuild,
|
|
151
|
+
logger,
|
|
152
|
+
});
|
|
153
|
+
const resourceConfig = Resources.parse({});
|
|
154
|
+
if (auth && apiClient && catalystClient && orgId && region) {
|
|
155
|
+
// Fetch resources for selected org and region using Catalyst API
|
|
156
|
+
const resources = await tui.spinner({
|
|
157
|
+
message: 'Fetching resources',
|
|
158
|
+
clearOnSuccess: true,
|
|
159
|
+
callback: async () => {
|
|
160
|
+
return listResources(catalystClient, orgId, region);
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
logger.debug(`Resources for org ${orgId} in region ${region}:`, resources);
|
|
164
|
+
const choices = await enquirer.prompt([
|
|
165
|
+
{
|
|
166
|
+
type: 'select',
|
|
167
|
+
name: 'db_action',
|
|
168
|
+
message: 'Create SQL Database?',
|
|
169
|
+
choices: [
|
|
170
|
+
{ name: 'Create New', message: 'Create a new (free)' },
|
|
171
|
+
{ name: 'Skip', message: 'Skip or Setup later' },
|
|
172
|
+
...resources.db.map((db) => ({
|
|
173
|
+
name: db.name,
|
|
174
|
+
message: `Use database: ${db.name}`,
|
|
175
|
+
})),
|
|
176
|
+
],
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'select',
|
|
180
|
+
name: 's3_action',
|
|
181
|
+
message: 'Create Storage Bucket?',
|
|
182
|
+
choices: [
|
|
183
|
+
{ name: 'Create New', message: 'Create a new (free)' },
|
|
184
|
+
{ name: 'Skip', message: 'Skip or Setup later' },
|
|
185
|
+
...resources.s3.map((db) => ({
|
|
186
|
+
name: db.bucket_name,
|
|
187
|
+
message: `Use bucket: ${db.bucket_name}`,
|
|
188
|
+
})),
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
]);
|
|
192
|
+
switch (choices.s3_action) {
|
|
193
|
+
case 'Create New': {
|
|
194
|
+
const created = await tui.spinner({
|
|
195
|
+
message: 'Provisioning New Bucket',
|
|
196
|
+
clearOnSuccess: true,
|
|
197
|
+
callback: async () => {
|
|
198
|
+
return createResources(catalystClient, orgId, region, [{ type: 's3' }]);
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
resourceConfig.storage = created[0].name;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'Skip': {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
default: {
|
|
208
|
+
resourceConfig.storage = choices.s3_action;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
switch (choices.db_action) {
|
|
213
|
+
case 'Create New': {
|
|
214
|
+
const created = await tui.spinner({
|
|
215
|
+
message: 'Provisioning New SQL Database',
|
|
216
|
+
clearOnSuccess: true,
|
|
217
|
+
callback: async () => {
|
|
218
|
+
return createResources(catalystClient, orgId, region, [{ type: 'db' }]);
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
resourceConfig.db = created[0].name;
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case 'Skip': {
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
default: {
|
|
228
|
+
resourceConfig.db = choices.db_action;
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (auth && apiClient && orgId) {
|
|
234
|
+
let projectId;
|
|
235
|
+
await tui.spinner({
|
|
236
|
+
message: 'Registering your project',
|
|
237
|
+
clearOnSuccess: true,
|
|
238
|
+
callback: async () => {
|
|
239
|
+
const project = await projectCreate(apiClient, {
|
|
240
|
+
name: projectName,
|
|
241
|
+
orgId,
|
|
242
|
+
cloudRegion: region ?? 'usc',
|
|
243
|
+
});
|
|
244
|
+
projectId = project.id;
|
|
245
|
+
return createProjectConfig(dest, {
|
|
246
|
+
projectId: project.id,
|
|
247
|
+
orgId,
|
|
248
|
+
sdkKey: project.sdkKey,
|
|
249
|
+
deployment: {
|
|
250
|
+
resources: resourceConfig,
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
// After registration, push any existing env/secrets from .env.production
|
|
256
|
+
if (projectId) {
|
|
257
|
+
await tui.spinner({
|
|
258
|
+
message: 'Syncing environment variables',
|
|
259
|
+
clearOnSuccess: true,
|
|
260
|
+
callback: async () => {
|
|
261
|
+
try {
|
|
262
|
+
const envFilePath = await findEnvFile(dest);
|
|
263
|
+
const localEnv = await readEnvFile(envFilePath);
|
|
264
|
+
const filteredEnv = filterAgentuitySdkKeys(localEnv);
|
|
265
|
+
if (Object.keys(filteredEnv).length > 0) {
|
|
266
|
+
const { env, secrets } = splitEnvAndSecrets(filteredEnv);
|
|
267
|
+
await projectEnvUpdate(apiClient, {
|
|
268
|
+
id: projectId,
|
|
269
|
+
env,
|
|
270
|
+
secrets,
|
|
271
|
+
});
|
|
272
|
+
logger.debug(`Synced ${Object.keys(filteredEnv).length} environment variables to cloud`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
// Non-fatal: just log the error
|
|
277
|
+
logger.debug('Failed to sync environment variables:', error);
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Show completion message
|
|
284
|
+
tui.success('✨ Project created successfully!\n');
|
|
285
|
+
tui.info('Next steps:');
|
|
286
|
+
if (dirName !== '.') {
|
|
287
|
+
const dirDisplay = cwd() === targetDir ? basename(dirName) : dest;
|
|
288
|
+
tui.newline();
|
|
289
|
+
console.log(` 1. ${tui.bold(`cd ${dirDisplay}`)}`);
|
|
290
|
+
console.log(` 2. ${tui.bold('bun run dev')}`);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
console.log(` ${tui.bold('bun run dev')}`);
|
|
294
|
+
}
|
|
295
|
+
playSound();
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Sanitize a project name to create a safe directory/package name
|
|
299
|
+
* - Converts to lowercase
|
|
300
|
+
* - Replaces spaces and underscores with hyphens
|
|
301
|
+
* - Removes unsafe characters
|
|
302
|
+
* - Ensures it starts with a letter or number
|
|
303
|
+
*/
|
|
304
|
+
function sanitizeDirectoryName(name) {
|
|
305
|
+
return name
|
|
306
|
+
.toLowerCase()
|
|
307
|
+
.trim()
|
|
308
|
+
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
309
|
+
.replace(/_+/g, '-') // Replace underscores with hyphens
|
|
310
|
+
.replace(/[^a-z0-9-]/g, '') // Remove non-alphanumeric except hyphens
|
|
311
|
+
.replace(/-+/g, '-') // Collapse multiple hyphens
|
|
312
|
+
.replace(/^-+|-+$/g, '') // Remove leading/trailing hyphens
|
|
313
|
+
.replace(/^[^a-z0-9]+/, ''); // Remove leading non-alphanumeric
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=template-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-flow.js","sourceRoot":"","sources":["../../../src/cmd/project/template-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACN,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,IAAI,eAAe,EAC5B,SAAS,EACT,eAAe,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACN,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AAqBxB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC7D,MAAM,EACL,WAAW,EAAE,kBAAkB,EAC/B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,eAAe,EACzB,WAAW,EACX,cAAc,EACd,WAAW,EACX,MAAM,EACN,IAAI,EACJ,MAAM,EACN,KAAK,EAAE,aAAa,EACpB,MAAM,EACN,SAAS,GACT,GAAG,OAAO,CAAC;IAEZ,4BAA4B;IAC5B,IAAI,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,8CAA8C,WAAW,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;QACnC,OAAO,EAAE,oBAAoB;QAC7B,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;YACpB,OAAO,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;KACD,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED,mBAAmB;IACnB,IAAI,WAAW,GAAG,kBAAkB,CAAC;IAErC,8FAA8F;IAC9F,MAAM,KAAK,GAAG,aAAa,CAAC;IAC5B,IAAI,cAA2C,CAAC;IAEhD,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,EAAE,SAAS,EAAE,YAAY,IAAI,WAAW,CAAC,QAAQ,CAAC;QAC5E,cAAc,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAmB;YACxD,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;gBACjC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,OAAO,0BAA0B,CAAC;gBACnC,CAAC;gBACD,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;wBAC7C,IAAI,EAAE,KAAK;wBACX,eAAe,EAAE,KAAK;qBACtB,CAAC,CAAC;oBACH,IAAI,MAAM,EAAE,CAAC;wBACZ,OAAO,sBAAsB,KAAK,uCAAuC,CAAC;oBAC3E,CAAC;gBACF,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;SACD,CAAC,CAAC;QACH,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,WAAW,GAAG,WAAW,IAAI,gBAAgB,CAAC;IAE9C,wCAAwC;IACxC,MAAM,OAAO,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAE/E,kCAAkC;IAClC,6BAA6B;IAC7B,IAAI,iBAAiB,GAAG,SAAS,CAAC;IAClC,IAAI,iBAAiB,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/E,MAAM,IAAI,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3E,IAAI,UAAU,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACjD,6CAA6C;QAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,mCAAmC,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAyB;gBAC9D,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,qCAAqC;gBAC9C,OAAO,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YAED,0DAA0D;YAC1D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,sCAAsC,IAAI,EAAE,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACxF,OAAO;YACR,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,KAAK,CACX,aAAa,IAAI,mCAAmC,EACpD,SAAS,CAAC,uBAAuB,CACjC,CAAC;QACH,CAAC;IACF,CAAC;IAED,0BAA0B;IAC1B,IAAI,gBAA8B,CAAC;IACnC,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,aAAa,eAAe,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACtF,OAAO;QACR,CAAC;QACD,gBAAgB,GAAG,KAAK,CAAC;IAC1B,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACxB,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;YAC5D,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC,CAAC,EAAE;gBACV,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;aAChE,CAAC,CAAC;SACH,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YACpE,OAAO;QACR,CAAC;QACD,gBAAgB,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjE,oBAAoB;IACpB,MAAM,gBAAgB,CAAC;QACtB,IAAI;QACJ,QAAQ,EAAE,gBAAgB;QAC1B,WAAW;QACX,cAAc;QACd,MAAM;KACN,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,YAAY,CAAC;QAClB,IAAI;QACJ,WAAW,EAAE,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;QAC/D,OAAO,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO;QACnD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM;KACN,CAAC,CAAC;IAEH,MAAM,cAAc,GAAmB,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,IAAI,IAAI,SAAS,IAAI,cAAc,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5D,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,oBAAoB;YAC7B,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACpB,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACrD,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,cAAc,MAAM,GAAG,EAAE,SAAS,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAGlC;YACF;gBACC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE;oBACR,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE;oBACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;oBAChD,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,OAAO,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE;qBACnC,CAAC,CAAC;iBACH;aACD;YACD;gBACC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE;oBACR,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE;oBACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;oBAChD,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,EAAE,CAAC,WAAW;wBACpB,OAAO,EAAE,eAAe,EAAE,CAAC,WAAW,EAAE;qBACxC,CAAC,CAAC;iBACH;aACD;SACD,CAAC,CAAC;QACH,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,KAAK,YAAY,CAAC,CAAC,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;oBACjC,OAAO,EAAE,yBAAyB;oBAClC,cAAc,EAAE,IAAI;oBACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACpB,OAAO,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,MAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1E,CAAC;iBACD,CAAC,CAAC;gBACH,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzC,MAAM;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACb,MAAM;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACT,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC3C,MAAM;YACP,CAAC;QACF,CAAC;QACD,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,KAAK,YAAY,CAAC,CAAC,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;oBACjC,OAAO,EAAE,+BAA+B;oBACxC,cAAc,EAAE,IAAI;oBACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACpB,OAAO,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,MAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1E,CAAC;iBACD,CAAC,CAAC;gBACH,cAAc,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpC,MAAM;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACb,MAAM;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACT,cAAc,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;gBACtC,MAAM;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,SAA6B,CAAC;QAElC,MAAM,GAAG,CAAC,OAAO,CAAC;YACjB,OAAO,EAAE,0BAA0B;YACnC,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;oBAC9C,IAAI,EAAE,WAAW;oBACjB,KAAK;oBACL,WAAW,EAAE,MAAM,IAAI,KAAK;iBAC5B,CAAC,CAAC;gBACH,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;gBACvB,OAAO,mBAAmB,CAAC,IAAI,EAAE;oBAChC,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,KAAK;oBACL,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE;wBACX,SAAS,EAAE,cAAc;qBACzB;iBACD,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;QAEH,yEAAyE;QACzE,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,OAAO,CAAC;gBACjB,OAAO,EAAE,+BAA+B;gBACxC,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACpB,IAAI,CAAC;wBACJ,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;wBAChD,MAAM,WAAW,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;wBAErD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;4BACzD,MAAM,gBAAgB,CAAC,SAAS,EAAE;gCACjC,EAAE,EAAE,SAAmB;gCACvB,GAAG;gCACH,OAAO;6BACP,CAAC,CAAC;4BACH,MAAM,CAAC,KAAK,CACX,UAAU,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,iCAAiC,CAC1E,CAAC;wBACH,CAAC;oBACF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,gCAAgC;wBAChC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;gBACF,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,0BAA0B;IAC1B,GAAG,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,SAAS,EAAE,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,IAAY;IAC1C,OAAO,IAAI;SACT,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,8BAA8B;SACnD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,mCAAmC;SACvD,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,yCAAyC;SACpE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,4BAA4B;SAChD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,kCAAkC;SAC1D,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,kCAAkC;AACjE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const GITHUB_REPO = 'agentuity/sdk';
|
|
2
|
+
const GITHUB_BRANCH = 'main';
|
|
3
|
+
const TEMPLATES_JSON_PATH = 'templates/templates.json';
|
|
4
|
+
export async function fetchTemplates(localDir, branch) {
|
|
5
|
+
// Load from local directory if provided
|
|
6
|
+
if (localDir) {
|
|
7
|
+
const { join } = await import('node:path');
|
|
8
|
+
const { resolve } = await import('node:path');
|
|
9
|
+
const manifestPath = resolve(join(localDir, 'templates.json'));
|
|
10
|
+
const file = Bun.file(manifestPath);
|
|
11
|
+
if (!(await file.exists())) {
|
|
12
|
+
throw new Error(`templates.json not found at ${manifestPath}`);
|
|
13
|
+
}
|
|
14
|
+
const manifest = (await file.json());
|
|
15
|
+
return manifest.templates;
|
|
16
|
+
}
|
|
17
|
+
// Fetch from GitHub
|
|
18
|
+
const branchToUse = branch || GITHUB_BRANCH;
|
|
19
|
+
const url = `https://raw.githubusercontent.com/${GITHUB_REPO}/${branchToUse}/${TEMPLATES_JSON_PATH}`;
|
|
20
|
+
const headers = {};
|
|
21
|
+
if (process.env.GITHUB_TOKEN) {
|
|
22
|
+
headers['Authorization'] = `token ${process.env.GITHUB_TOKEN}`;
|
|
23
|
+
}
|
|
24
|
+
const response = await fetch(url, { headers });
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`Failed to fetch templates: ${response.statusText}`);
|
|
27
|
+
}
|
|
28
|
+
const manifest = (await response.json());
|
|
29
|
+
return manifest.templates;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/cmd/project/templates.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAavD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAiB,EAAE,MAAe;IACtE,wCAAwC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAsB,CAAC;QAC1D,OAAO,QAAQ,CAAC,SAAS,CAAC;IAC3B,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,GAAG,GAAG,qCAAqC,WAAW,IAAI,WAAW,IAAI,mBAAmB,EAAE,CAAC;IAErG,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;IAC9D,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC3B,CAAC"}
|