@agentuity/cli 0.0.41 → 0.0.42
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/banner.d.ts.map +1 -1
- package/dist/cmd/auth/login.d.ts.map +1 -1
- package/dist/cmd/bundle/ast.d.ts +2 -0
- package/dist/cmd/bundle/ast.d.ts.map +1 -1
- package/dist/cmd/bundle/plugin.d.ts.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/project/delete.d.ts.map +1 -1
- package/dist/cmd/project/list.d.ts.map +1 -1
- package/dist/cmd/project/show.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/banner.ts +7 -2
- package/src/cli.ts +1 -1
- package/src/cmd/auth/login.ts +2 -4
- package/src/cmd/bundle/ast.ts +169 -4
- package/src/cmd/bundle/plugin.ts +42 -1
- package/src/cmd/dev/index.ts +90 -8
- package/src/cmd/project/create.ts +1 -1
- package/src/cmd/project/delete.ts +43 -2
- package/src/cmd/project/list.ts +33 -2
- package/src/cmd/project/show.ts +35 -3
- package/src/cmd/project/template-flow.ts +11 -10
- package/src/config.ts +26 -3
- package/src/logger.ts +1 -1
- package/src/tui.ts +74 -47
- package/src/types.ts +29 -0
package/dist/banner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAwBjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cmd/auth/login.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cmd/auth/login.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,sCA+DvB,CAAC"}
|
package/dist/cmd/bundle/ast.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
import { BuildMetadata } from '../../types';
|
|
1
2
|
export declare function parseAgentMetadata(rootDir: string, filename: string, contents: string): [string, Map<string, string>];
|
|
3
|
+
export declare function parseRoute(rootDir: string, filename: string): Promise<BuildMetadata['routes']>;
|
|
2
4
|
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cmd/bundle/ast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cmd/bundle/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoK5C,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACd,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0E/B;AAID,wBAAsB,UAAU,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CA+IlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cmd/bundle/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cmd/bundle/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AA0GrC,QAAA,MAAM,gBAAgB,EAAE,SAgNvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,OAAO,mCAudlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/delete.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/delete.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,sCA+C3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/list.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,sCAqCzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/show.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/show.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,sCAqCzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-flow.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/template-flow.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIpD,UAAU,iBAAiB;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"template-flow.d.ts","sourceRoot":"","sources":["../../../src/cmd/project/template-flow.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIpD,UAAU,iBAAiB;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqM7E"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Config, Profile, AuthData } from './types';
|
|
2
|
-
import { ProjectSchema } from './types';
|
|
2
|
+
import { ProjectSchema, type BuildMetadata } from './types';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
export declare function getDefaultConfigDir(): string;
|
|
5
5
|
export declare function getDefaultConfigPath(): string;
|
|
@@ -20,5 +20,6 @@ type InitialProjectConfig = ProjectConfig & {
|
|
|
20
20
|
apiKey: string;
|
|
21
21
|
};
|
|
22
22
|
export declare function createProjectConfig(dir: string, config: InitialProjectConfig): Promise<void>;
|
|
23
|
+
export declare function loadBuildMetadata(dir: string): Promise<BuildMetadata>;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAgB,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAgB,aAAa,EAAuB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAmBlD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAkCxD;AASD,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsC5E;AA4CD,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAU5D;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAcxD;AA4BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0DzD;AAUD,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB3E;AAED,KAAK,oBAAoB,GAAG,aAAa,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,iBAWlF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB3E"}
|
package/dist/logger.d.ts
CHANGED
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA8G9C,qBAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA8G9C,qBAAa,MAAM;IACX,KAAK,EAAE,QAAQ,CAAC;IACvB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,UAAU,CAAQ;gBAGzB,KAAK,GAAE,QAAiB,EACxB,aAAa,GAAE,OAAe,EAC9B,WAAW,GAAE,WAAoB;IAQlC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIpC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKzC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,GAAG;IA0DX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK;CAIjD;AAED,eAAO,MAAM,MAAM,QAAqB,CAAC"}
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -215,4 +215,38 @@ export declare const ProjectSchema: z.ZodObject<{
|
|
|
215
215
|
projectId: z.ZodString;
|
|
216
216
|
orgId: z.ZodString;
|
|
217
217
|
}, z.core.$strip>;
|
|
218
|
+
export declare const BuildMetadataSchema: z.ZodObject<{
|
|
219
|
+
routes: z.ZodArray<z.ZodObject<{
|
|
220
|
+
id: z.ZodString;
|
|
221
|
+
filename: z.ZodString;
|
|
222
|
+
path: z.ZodString;
|
|
223
|
+
method: z.ZodEnum<{
|
|
224
|
+
get: "get";
|
|
225
|
+
post: "post";
|
|
226
|
+
put: "put";
|
|
227
|
+
delete: "delete";
|
|
228
|
+
patch: "patch";
|
|
229
|
+
}>;
|
|
230
|
+
version: z.ZodString;
|
|
231
|
+
type: z.ZodEnum<{
|
|
232
|
+
api: "api";
|
|
233
|
+
sms: "sms";
|
|
234
|
+
email: "email";
|
|
235
|
+
cron: "cron";
|
|
236
|
+
websocket: "websocket";
|
|
237
|
+
sse: "sse";
|
|
238
|
+
stream: "stream";
|
|
239
|
+
}>;
|
|
240
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
241
|
+
}, z.core.$strip>>;
|
|
242
|
+
agents: z.ZodArray<z.ZodObject<{
|
|
243
|
+
id: z.ZodString;
|
|
244
|
+
filename: z.ZodString;
|
|
245
|
+
name: z.ZodString;
|
|
246
|
+
version: z.ZodString;
|
|
247
|
+
identifier: z.ZodString;
|
|
248
|
+
description: z.ZodOptional<z.ZodString>;
|
|
249
|
+
}, z.core.$strip>>;
|
|
250
|
+
}, z.core.$strip>;
|
|
251
|
+
export type BuildMetadata = zod.infer<typeof BuildMetadataSchema>;
|
|
218
252
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/banner.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { getVersion } from './version';
|
|
2
2
|
|
|
3
|
+
function shouldUseColors(): boolean {
|
|
4
|
+
return !process.env.NO_COLOR && process.env.TERM !== 'dumb' && !!process.stdout.isTTY;
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
export function showBanner(version?: string): void {
|
|
4
8
|
const _version = version ?? getVersion();
|
|
5
|
-
const
|
|
6
|
-
const
|
|
9
|
+
const USE_COLORS = shouldUseColors();
|
|
10
|
+
const CYAN = USE_COLORS ? Bun.color('cyan', 'ansi-16m') : '';
|
|
11
|
+
const RESET = USE_COLORS ? '\x1b[0m' : '';
|
|
7
12
|
|
|
8
13
|
const width = 52; // Content width between pipes
|
|
9
14
|
const versionLabel = ' Version: '; // Include leading space
|
package/src/cli.ts
CHANGED
|
@@ -15,7 +15,7 @@ export async function createCLI(version: string): Promise<Command> {
|
|
|
15
15
|
|
|
16
16
|
program
|
|
17
17
|
.option('--config <path>', 'Config file path', '~/.config/agentuity/production.yaml')
|
|
18
|
-
.option('--log-level <level>', 'Log level', 'info')
|
|
18
|
+
.option('--log-level <level>', 'Log level', process.env.AGENTUITY_LOG_LEVEL ?? 'info')
|
|
19
19
|
.option('--log-timestamp', 'Show timestamps in log output', false)
|
|
20
20
|
.option('--no-log-prefix', 'Hide log level prefixes', false)
|
|
21
21
|
.option('--color-scheme <scheme>', 'Color scheme: light or dark');
|
package/src/cmd/auth/login.ts
CHANGED
|
@@ -16,10 +16,8 @@ export const loginCommand = createSubcommand({
|
|
|
16
16
|
const appUrl = getAppBaseURL(config);
|
|
17
17
|
|
|
18
18
|
try {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
await tui.spinner('Generating login one time code...', async () => {
|
|
22
|
-
otp = await generateLoginOTP(apiUrl, config);
|
|
19
|
+
const otp = await tui.spinner('Generating login one time code...', () => {
|
|
20
|
+
return generateLoginOTP(apiUrl, config);
|
|
23
21
|
});
|
|
24
22
|
|
|
25
23
|
if (!otp) {
|
package/src/cmd/bundle/ast.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as acornLoose from 'acorn-loose';
|
|
2
2
|
import { basename, dirname, relative } from 'node:path';
|
|
3
3
|
import { generate } from 'astring';
|
|
4
|
+
import { BuildMetadata } from '../../types';
|
|
4
5
|
|
|
5
6
|
interface ASTNode {
|
|
6
7
|
type: string;
|
|
@@ -12,9 +13,7 @@ interface ASTNodeIdentifier extends ASTNode {
|
|
|
12
13
|
|
|
13
14
|
interface ASTCallExpression extends ASTNode {
|
|
14
15
|
arguments: unknown[];
|
|
15
|
-
callee:
|
|
16
|
-
name: string;
|
|
17
|
-
};
|
|
16
|
+
callee: ASTMemberExpression;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
interface ASTPropertyNode {
|
|
@@ -31,10 +30,22 @@ interface ASTObjectExpression extends ASTNode {
|
|
|
31
30
|
properties: ASTPropertyNode[];
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
interface ASTLiteral {
|
|
33
|
+
interface ASTLiteral extends ASTNode {
|
|
35
34
|
value: string;
|
|
36
35
|
}
|
|
37
36
|
|
|
37
|
+
interface ASTMemberExpression extends ASTNode {
|
|
38
|
+
object: ASTNode;
|
|
39
|
+
property: ASTNode;
|
|
40
|
+
computed: boolean;
|
|
41
|
+
optional: boolean;
|
|
42
|
+
name?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
interface ASTExpressionStatement extends ASTNode {
|
|
46
|
+
expression: ASTCallExpression;
|
|
47
|
+
}
|
|
48
|
+
|
|
38
49
|
function parseObjectExpressionToMap(expr: ASTObjectExpression): Map<string, string> {
|
|
39
50
|
const result = new Map<string, string>();
|
|
40
51
|
for (const prop of expr.properties) {
|
|
@@ -98,6 +109,10 @@ function getAgentId(identifier: string): string {
|
|
|
98
109
|
return hash(projectId, identifier);
|
|
99
110
|
}
|
|
100
111
|
|
|
112
|
+
function generateRouteId(method: string, path: string): string {
|
|
113
|
+
return hash(projectId, method, path);
|
|
114
|
+
}
|
|
115
|
+
|
|
101
116
|
type AcornParseResultType = ReturnType<typeof acornLoose.parse>;
|
|
102
117
|
|
|
103
118
|
function augmentAgentMetadataNode(
|
|
@@ -229,3 +244,153 @@ export function parseAgentMetadata(
|
|
|
229
244
|
`error parsing: ${filename}. could not find an proper createAgent defined in this file`
|
|
230
245
|
);
|
|
231
246
|
}
|
|
247
|
+
|
|
248
|
+
type RouteDefinition = BuildMetadata['routes'];
|
|
249
|
+
|
|
250
|
+
export async function parseRoute(
|
|
251
|
+
rootDir: string,
|
|
252
|
+
filename: string
|
|
253
|
+
): Promise<BuildMetadata['routes']> {
|
|
254
|
+
const contents = await Bun.file(filename).text();
|
|
255
|
+
const version = hash(contents);
|
|
256
|
+
const ast = acornLoose.parse(contents, { ecmaVersion: 'latest', sourceType: 'module' });
|
|
257
|
+
let exportName: string | undefined;
|
|
258
|
+
let variableName: string | undefined;
|
|
259
|
+
for (const body of ast.body) {
|
|
260
|
+
if (body.type === 'ExportDefaultDeclaration') {
|
|
261
|
+
const identifier = body.declaration as ASTNodeIdentifier;
|
|
262
|
+
exportName = identifier.name;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (!exportName) {
|
|
267
|
+
throw new Error(`could not find default export for ${filename} using ${rootDir}`);
|
|
268
|
+
}
|
|
269
|
+
for (const body of ast.body) {
|
|
270
|
+
if (body.type === 'VariableDeclaration') {
|
|
271
|
+
for (const vardecl of body.declarations) {
|
|
272
|
+
if (vardecl.type === 'VariableDeclarator' && vardecl.id.type === 'Identifier') {
|
|
273
|
+
const identifier = vardecl.id as ASTNodeIdentifier;
|
|
274
|
+
if (identifier.name === exportName) {
|
|
275
|
+
if (vardecl.init?.type === 'CallExpression') {
|
|
276
|
+
const call = vardecl.init as ASTCallExpression;
|
|
277
|
+
if (call.callee.name === 'createRouter') {
|
|
278
|
+
variableName = identifier.name;
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (!variableName) {
|
|
288
|
+
throw new Error(
|
|
289
|
+
`error parsing: ${filename}. could not find an proper createRouter defined in this file`
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const rel = relative(rootDir, filename);
|
|
294
|
+
const name = basename(dirname(filename));
|
|
295
|
+
const routes: RouteDefinition = [];
|
|
296
|
+
const routePrefix = filename.includes('src/agents') ? '/agent' : '/api';
|
|
297
|
+
|
|
298
|
+
for (const body of ast.body) {
|
|
299
|
+
if (body.type === 'ExpressionStatement') {
|
|
300
|
+
const statement = body as ASTExpressionStatement;
|
|
301
|
+
const callee = statement.expression.callee;
|
|
302
|
+
if (callee.object.type === 'Identifier') {
|
|
303
|
+
const identifier = callee.object as ASTNodeIdentifier;
|
|
304
|
+
if (identifier.name === variableName) {
|
|
305
|
+
let method = (callee.property as ASTNodeIdentifier).name;
|
|
306
|
+
let type = 'api';
|
|
307
|
+
const action = statement.expression.arguments[0];
|
|
308
|
+
let suffix = '';
|
|
309
|
+
let config: Record<string, unknown> | undefined;
|
|
310
|
+
switch (method) {
|
|
311
|
+
case 'get':
|
|
312
|
+
case 'put':
|
|
313
|
+
case 'post':
|
|
314
|
+
case 'patch':
|
|
315
|
+
case 'delete': {
|
|
316
|
+
const theaction = action as ASTLiteral;
|
|
317
|
+
if (theaction.type === 'Literal') {
|
|
318
|
+
suffix = theaction.value;
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
case 'stream':
|
|
324
|
+
case 'sse':
|
|
325
|
+
case 'websocket': {
|
|
326
|
+
type = method;
|
|
327
|
+
method = 'post';
|
|
328
|
+
const theaction = action as ASTLiteral;
|
|
329
|
+
if (theaction.type === 'Literal') {
|
|
330
|
+
suffix = theaction.value;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
case 'sms': {
|
|
336
|
+
type = method;
|
|
337
|
+
method = 'post';
|
|
338
|
+
const theaction = action as ASTObjectExpression;
|
|
339
|
+
if (theaction.type === 'ObjectExpression') {
|
|
340
|
+
config = {};
|
|
341
|
+
theaction.properties.forEach((p) => {
|
|
342
|
+
if (p.value.type === 'Literal') {
|
|
343
|
+
const literal = p.value as ASTLiteral;
|
|
344
|
+
config![p.key.name] = literal.value;
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
const number = theaction.properties.find((p) => p.key.name === 'number');
|
|
348
|
+
if (number && number.value.type === 'Literal') {
|
|
349
|
+
const phoneNumber = number.value as ASTLiteral;
|
|
350
|
+
suffix = hash(phoneNumber.value);
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
case 'email': {
|
|
357
|
+
type = method;
|
|
358
|
+
method = 'post';
|
|
359
|
+
const theaction = action as ASTLiteral;
|
|
360
|
+
if (theaction.type === 'Literal') {
|
|
361
|
+
const email = theaction.value;
|
|
362
|
+
suffix = hash(email);
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
case 'cron': {
|
|
368
|
+
type = method;
|
|
369
|
+
method = 'post';
|
|
370
|
+
const theaction = action as ASTLiteral;
|
|
371
|
+
if (theaction.type === 'Literal') {
|
|
372
|
+
const number = theaction.value;
|
|
373
|
+
suffix = hash(number);
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
const thepath = `${routePrefix}/${name}/${suffix}`
|
|
380
|
+
.replaceAll(/\/{2,}/g, '/')
|
|
381
|
+
.replaceAll(/\/$/g, '');
|
|
382
|
+
routes.push({
|
|
383
|
+
id: generateRouteId(method, thepath),
|
|
384
|
+
method: method as 'get' | 'post' | 'put' | 'delete' | 'patch',
|
|
385
|
+
type: type as 'api' | 'sms' | 'email' | 'cron',
|
|
386
|
+
filename: rel,
|
|
387
|
+
path: thepath,
|
|
388
|
+
version,
|
|
389
|
+
config,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return routes;
|
|
396
|
+
}
|
package/src/cmd/bundle/plugin.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { BunPlugin } from 'bun';
|
|
2
2
|
import { dirname, basename, join } from 'node:path';
|
|
3
3
|
import { existsSync, writeFileSync } from 'node:fs';
|
|
4
|
-
import {
|
|
4
|
+
import type { BuildMetadata } from '../../types';
|
|
5
|
+
import { parseAgentMetadata, parseRoute } from './ast';
|
|
5
6
|
import { applyPatch, generatePatches } from './patch';
|
|
6
7
|
|
|
7
8
|
function toCamelCase(str: string): string {
|
|
@@ -115,6 +116,7 @@ const AgentuityBundler: BunPlugin = {
|
|
|
115
116
|
Map<string, string>
|
|
116
117
|
>();
|
|
117
118
|
const transpiler = new Bun.Transpiler({ loader: 'ts' });
|
|
119
|
+
let routeDefinitions: BuildMetadata['routes'] = [];
|
|
118
120
|
|
|
119
121
|
build.onResolve({ filter: /\/route\.ts$/, namespace: 'file' }, async (args) => {
|
|
120
122
|
if (args.path.startsWith(srcDir)) {
|
|
@@ -194,6 +196,9 @@ const AgentuityBundler: BunPlugin = {
|
|
|
194
196
|
.replace('/agents', '/agent')
|
|
195
197
|
.replace('./', '/');
|
|
196
198
|
|
|
199
|
+
const definitions = await parseRoute(rootDir, join(srcDir, route + '.ts'));
|
|
200
|
+
routeDefinitions = [...routeDefinitions, ...definitions];
|
|
201
|
+
|
|
197
202
|
let agentDetail: Record<string, string> = {};
|
|
198
203
|
|
|
199
204
|
if (hasAgent) {
|
|
@@ -264,6 +269,42 @@ const AgentuityBundler: BunPlugin = {
|
|
|
264
269
|
contents += `\n${inserts.join('\n')}`;
|
|
265
270
|
}
|
|
266
271
|
|
|
272
|
+
// generate the build metadata
|
|
273
|
+
const metadata: BuildMetadata = {
|
|
274
|
+
routes: routeDefinitions,
|
|
275
|
+
agents: [],
|
|
276
|
+
};
|
|
277
|
+
for (const [, v] of agentMetadata) {
|
|
278
|
+
if (!v.has('filename')) {
|
|
279
|
+
throw new Error('agent metadata is missing expected filename property');
|
|
280
|
+
}
|
|
281
|
+
if (!v.has('id')) {
|
|
282
|
+
throw new Error('agent metadata is missing expected id property');
|
|
283
|
+
}
|
|
284
|
+
if (!v.has('identifier')) {
|
|
285
|
+
throw new Error('agent metadata is missing expected identifier property');
|
|
286
|
+
}
|
|
287
|
+
if (!v.has('version')) {
|
|
288
|
+
throw new Error('agent metadata is missing expected version property');
|
|
289
|
+
}
|
|
290
|
+
if (!v.has('name')) {
|
|
291
|
+
throw new Error('agent metadata is missing expected name property');
|
|
292
|
+
}
|
|
293
|
+
metadata.agents.push({
|
|
294
|
+
filename: v.get('filename')!,
|
|
295
|
+
id: v.get('id')!,
|
|
296
|
+
identifier: v.get('identifier')!,
|
|
297
|
+
version: v.get('version')!,
|
|
298
|
+
name: v.get('name')!,
|
|
299
|
+
description: v.get('description') ?? '<no description provided>',
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
const metadataFilename = Bun.file(
|
|
304
|
+
join(build.config.outdir!, 'agentuity.metadata.json')
|
|
305
|
+
);
|
|
306
|
+
await metadataFilename.write(JSON.stringify(metadata));
|
|
307
|
+
|
|
267
308
|
return {
|
|
268
309
|
contents,
|
|
269
310
|
loader: 'ts',
|
package/src/cmd/dev/index.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { z } from 'zod';
|
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { bundle } from '../bundle/bundler';
|
|
5
5
|
import { existsSync, FSWatcher, watch } from 'node:fs';
|
|
6
|
+
import { loadBuildMetadata } from '../../config';
|
|
7
|
+
import type { BuildMetadata } from '../../types';
|
|
6
8
|
import * as tui from '../../tui';
|
|
7
9
|
|
|
8
10
|
export const command = createCommand({
|
|
@@ -38,14 +40,24 @@ export const command = createCommand({
|
|
|
38
40
|
process.exit(1);
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
const devmodebody =
|
|
43
|
+
const devmodebody =
|
|
44
|
+
tui.muted('Local: ') +
|
|
45
|
+
tui.link('http://127.0.0.1:3000') +
|
|
46
|
+
'\n\n' +
|
|
47
|
+
tui.muted('Press ') +
|
|
48
|
+
tui.bold('h') +
|
|
49
|
+
tui.muted(' for keyboard shortcuts');
|
|
50
|
+
|
|
51
|
+
function showBanner() {
|
|
52
|
+
tui.banner('⨺ Agentuity DevMode', devmodebody, {
|
|
53
|
+
padding: 2,
|
|
54
|
+
topSpacer: false,
|
|
55
|
+
bottomSpacer: false,
|
|
56
|
+
centerTitle: false,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
42
59
|
|
|
43
|
-
|
|
44
|
-
padding: 2,
|
|
45
|
-
topSpacer: false,
|
|
46
|
-
bottomSpacer: false,
|
|
47
|
-
centerTitle: false,
|
|
48
|
-
});
|
|
60
|
+
showBanner();
|
|
49
61
|
|
|
50
62
|
const env = { ...process.env };
|
|
51
63
|
env.AGENTUITY_SDK_DEV_MODE = 'true';
|
|
@@ -70,6 +82,7 @@ export const command = createCommand({
|
|
|
70
82
|
let shuttingDownForRestart = false;
|
|
71
83
|
let pendingRestart = false;
|
|
72
84
|
let building = false;
|
|
85
|
+
let metadata: BuildMetadata | undefined;
|
|
73
86
|
|
|
74
87
|
// Track restart timestamps to detect restart loops
|
|
75
88
|
const restartTimestamps: number[] = [];
|
|
@@ -216,6 +229,10 @@ export const command = createCommand({
|
|
|
216
229
|
return;
|
|
217
230
|
}
|
|
218
231
|
|
|
232
|
+
metadata = await loadBuildMetadata(agentuityDir);
|
|
233
|
+
|
|
234
|
+
env.AGENTUITY_LOG_LEVEL = logger.level;
|
|
235
|
+
|
|
219
236
|
logger.trace('Starting dev server: %s', appPath);
|
|
220
237
|
// Use shell to run in a process group for proper cleanup
|
|
221
238
|
// The 'exec' ensures the shell is replaced by the actual process
|
|
@@ -223,7 +240,7 @@ export const command = createCommand({
|
|
|
223
240
|
cwd: rootDir,
|
|
224
241
|
stdout: 'inherit',
|
|
225
242
|
stderr: 'inherit',
|
|
226
|
-
stdin: 'inherit',
|
|
243
|
+
stdin: process.stdin.isTTY ? 'ignore' : 'inherit', // Don't inherit stdin, we handle it ourselves
|
|
227
244
|
env,
|
|
228
245
|
});
|
|
229
246
|
|
|
@@ -303,6 +320,71 @@ export const command = createCommand({
|
|
|
303
320
|
await restart();
|
|
304
321
|
logger.trace('Initial restart completed, setting up watchers');
|
|
305
322
|
|
|
323
|
+
// Setup keyboard shortcuts (only if we have a TTY)
|
|
324
|
+
if (process.stdin.isTTY) {
|
|
325
|
+
logger.trace('Setting up keyboard shortcuts');
|
|
326
|
+
process.stdin.setRawMode(true);
|
|
327
|
+
process.stdin.resume();
|
|
328
|
+
process.stdin.setEncoding('utf8');
|
|
329
|
+
|
|
330
|
+
const showHelp = () => {
|
|
331
|
+
console.log('\n' + tui.bold('Keyboard Shortcuts:'));
|
|
332
|
+
console.log(tui.muted(' h') + ' - show this help');
|
|
333
|
+
console.log(tui.muted(' c') + ' - clear console');
|
|
334
|
+
console.log(tui.muted(' r') + ' - restart server');
|
|
335
|
+
console.log(tui.muted(' o') + ' - show routes');
|
|
336
|
+
console.log(tui.muted(' a') + ' - show agents');
|
|
337
|
+
console.log(tui.muted(' q') + ' - quit\n');
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
const showRoutes = () => {
|
|
341
|
+
tui.info('API Route Detail');
|
|
342
|
+
console.table(metadata?.routes, ['method', 'path', 'filename']);
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
const showAgents = () => {
|
|
346
|
+
tui.info('Agent Detail');
|
|
347
|
+
console.table(metadata?.agents, ['name', 'filename', 'description']);
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
process.stdin.on('data', (data) => {
|
|
351
|
+
const key = data.toString();
|
|
352
|
+
|
|
353
|
+
// Handle Ctrl+C
|
|
354
|
+
if (key === '\u0003') {
|
|
355
|
+
cleanup();
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Handle other shortcuts
|
|
360
|
+
switch (key) {
|
|
361
|
+
case 'h':
|
|
362
|
+
showHelp();
|
|
363
|
+
break;
|
|
364
|
+
case 'c':
|
|
365
|
+
console.clear();
|
|
366
|
+
showBanner();
|
|
367
|
+
break;
|
|
368
|
+
case 'r':
|
|
369
|
+
tui.info('Manually restarting server...');
|
|
370
|
+
restart();
|
|
371
|
+
break;
|
|
372
|
+
case 'o':
|
|
373
|
+
showRoutes();
|
|
374
|
+
break;
|
|
375
|
+
case 'a':
|
|
376
|
+
showAgents();
|
|
377
|
+
break;
|
|
378
|
+
case 'q':
|
|
379
|
+
tui.info('Shutting down...');
|
|
380
|
+
cleanup();
|
|
381
|
+
break;
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
logger.trace('✓ Keyboard shortcuts enabled');
|
|
386
|
+
}
|
|
387
|
+
|
|
306
388
|
// Patterns to ignore (generated files that change during build)
|
|
307
389
|
const ignorePatterns = [
|
|
308
390
|
/\.generated\.(js|ts|d\.ts)$/,
|
|
@@ -31,7 +31,7 @@ export const createProjectSubcommand = createSubcommand({
|
|
|
31
31
|
.optional()
|
|
32
32
|
.default(true)
|
|
33
33
|
.describe('Run bun run build after installing (use --no-build to skip)'),
|
|
34
|
-
confirm: z.boolean().optional().describe('
|
|
34
|
+
confirm: z.boolean().optional().describe('Skip confirmation prompts'),
|
|
35
35
|
register: z
|
|
36
36
|
.boolean()
|
|
37
37
|
.default(true)
|
|
@@ -1,13 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { createSubcommand } from '../../types';
|
|
3
|
+
import * as tui from '../../tui';
|
|
4
|
+
import { projectDelete } from '@agentuity/server';
|
|
5
|
+
import { getAPIBaseURL, APIClient } from '../../api';
|
|
2
6
|
|
|
3
7
|
export const deleteSubcommand = createSubcommand({
|
|
4
8
|
name: 'delete',
|
|
5
9
|
description: 'Delete a project',
|
|
6
10
|
aliases: ['rm', 'del'],
|
|
7
11
|
requiresAuth: true,
|
|
12
|
+
schema: {
|
|
13
|
+
args: z.object({
|
|
14
|
+
id: z.string().describe('the project id'),
|
|
15
|
+
}),
|
|
16
|
+
options: z.object({
|
|
17
|
+
confirm: z.boolean().optional().describe('Skip confirmation prompts'),
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
8
20
|
|
|
9
21
|
async handler(ctx) {
|
|
10
|
-
const {
|
|
11
|
-
|
|
22
|
+
const { args, opts, config } = ctx;
|
|
23
|
+
|
|
24
|
+
const apiUrl = getAPIBaseURL(config);
|
|
25
|
+
const client = new APIClient(apiUrl, config);
|
|
26
|
+
|
|
27
|
+
const skipConfirm = opts?.confirm === true;
|
|
28
|
+
|
|
29
|
+
if (!process.stdout.isTTY && !skipConfirm) {
|
|
30
|
+
tui.fatal('no TTY and --confirm is false');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (!skipConfirm) {
|
|
34
|
+
const ok = await tui.confirm('Are you sure you want to delete', false);
|
|
35
|
+
if (!ok) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const deleted = await tui.spinner('Deleting project', async () => {
|
|
41
|
+
const val = await projectDelete(client!, args.id);
|
|
42
|
+
if (val.length === 1 && val[0] === args.id) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (deleted) {
|
|
49
|
+
tui.success(`Project ${args.id} deleted`);
|
|
50
|
+
} else {
|
|
51
|
+
tui.warning(`${args.id} not found`);
|
|
52
|
+
}
|
|
12
53
|
},
|
|
13
54
|
});
|
package/src/cmd/project/list.ts
CHANGED
|
@@ -1,13 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { createSubcommand } from '../../types';
|
|
3
|
+
import * as tui from '../../tui';
|
|
4
|
+
import { projectList } from '@agentuity/server';
|
|
5
|
+
import { getAPIBaseURL, APIClient } from '../../api';
|
|
2
6
|
|
|
3
7
|
export const listSubcommand = createSubcommand({
|
|
4
8
|
name: 'list',
|
|
5
9
|
description: 'List all projects',
|
|
6
10
|
aliases: ['ls'],
|
|
7
11
|
requiresAuth: true,
|
|
12
|
+
schema: {
|
|
13
|
+
options: z.object({
|
|
14
|
+
format: z
|
|
15
|
+
.enum(['json', 'table'])
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('the output format: json, table (default)'),
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
8
20
|
|
|
9
21
|
async handler(ctx) {
|
|
10
|
-
const {
|
|
11
|
-
|
|
22
|
+
const { config, opts } = ctx;
|
|
23
|
+
|
|
24
|
+
const apiUrl = getAPIBaseURL(config);
|
|
25
|
+
const client = new APIClient(apiUrl, config);
|
|
26
|
+
|
|
27
|
+
const projects = await tui.spinner('Fetching projects', () => {
|
|
28
|
+
return projectList(client!);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// TODO: might want to sort by the last org_id we used
|
|
32
|
+
if (projects) {
|
|
33
|
+
projects.sort((a, b) => {
|
|
34
|
+
return a.name.localeCompare(b.name);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (opts?.format === 'json') {
|
|
39
|
+
console.log(JSON.stringify(projects, null, 2));
|
|
40
|
+
} else {
|
|
41
|
+
console.table(projects, ['id', 'name', 'orgName']);
|
|
42
|
+
}
|
|
12
43
|
},
|
|
13
44
|
});
|
package/src/cmd/project/show.ts
CHANGED
|
@@ -1,12 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { createSubcommand } from '../../types';
|
|
3
|
+
import * as tui from '../../tui';
|
|
4
|
+
import { projectGet } from '@agentuity/server';
|
|
5
|
+
import { getAPIBaseURL, APIClient } from '../../api';
|
|
2
6
|
|
|
3
7
|
export const showSubcommand = createSubcommand({
|
|
4
8
|
name: 'show',
|
|
5
|
-
|
|
9
|
+
aliases: ['get'],
|
|
10
|
+
description: 'Show project detail',
|
|
6
11
|
requiresAuth: true,
|
|
12
|
+
schema: {
|
|
13
|
+
args: z.object({
|
|
14
|
+
id: z.string().describe('the project id'),
|
|
15
|
+
}),
|
|
16
|
+
options: z.object({
|
|
17
|
+
format: z
|
|
18
|
+
.enum(['json', 'table'])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('the output format: json, table (default)'),
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
7
23
|
|
|
8
24
|
async handler(ctx) {
|
|
9
|
-
const {
|
|
10
|
-
|
|
25
|
+
const { opts, args, config } = ctx;
|
|
26
|
+
|
|
27
|
+
const apiUrl = getAPIBaseURL(config);
|
|
28
|
+
const client = new APIClient(apiUrl, config);
|
|
29
|
+
|
|
30
|
+
const project = await tui.spinner('Fetching project', () => {
|
|
31
|
+
return projectGet(client!, { id: args.id, mask: true });
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (!project) {
|
|
35
|
+
tui.fatal('Project not found');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (opts?.format === 'json') {
|
|
39
|
+
console.log(JSON.stringify(project, null, 2));
|
|
40
|
+
} else {
|
|
41
|
+
console.table([project], ['id', 'orgId']);
|
|
42
|
+
}
|
|
11
43
|
},
|
|
12
44
|
});
|
|
@@ -4,7 +4,7 @@ import { cwd } from 'node:process';
|
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import enquirer from 'enquirer';
|
|
6
6
|
import {
|
|
7
|
-
|
|
7
|
+
projectCreate,
|
|
8
8
|
projectExists,
|
|
9
9
|
listOrganizations,
|
|
10
10
|
type OrganizationList,
|
|
@@ -53,10 +53,8 @@ export async function runCreateFlow(options: CreateFlowOptions): Promise<void> {
|
|
|
53
53
|
tui.info(`📋 Loading templates from local directory: ${templateDir}...\n`);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
await tui.spinner('Fetching templates', async () => {
|
|
59
|
-
templates = await fetchTemplates(templateDir, templateBranch);
|
|
56
|
+
const templates = await tui.spinner('Fetching templates', async () => {
|
|
57
|
+
return fetchTemplates(templateDir, templateBranch);
|
|
60
58
|
});
|
|
61
59
|
|
|
62
60
|
if (templates.length === 0) {
|
|
@@ -73,13 +71,16 @@ export async function runCreateFlow(options: CreateFlowOptions): Promise<void> {
|
|
|
73
71
|
if (auth) {
|
|
74
72
|
const apiUrl = getAPIBaseURL(config);
|
|
75
73
|
client = new APIClient(apiUrl, config);
|
|
76
|
-
await tui.spinner('Fetching organizations', async () => {
|
|
74
|
+
orgs = await tui.spinner('Fetching organizations', async () => {
|
|
77
75
|
const resp = await listOrganizations(client!);
|
|
78
76
|
if (resp.data) {
|
|
79
|
-
|
|
77
|
+
return resp.data;
|
|
80
78
|
}
|
|
81
79
|
});
|
|
82
|
-
|
|
80
|
+
if (!orgs) {
|
|
81
|
+
tui.fatal('no organizations could be found for your login');
|
|
82
|
+
}
|
|
83
|
+
orgId = await tui.selectOrganization(orgs, config?.preferences?.orgId);
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
if (!projectName && !skipPrompts) {
|
|
@@ -201,7 +202,7 @@ export async function runCreateFlow(options: CreateFlowOptions): Promise<void> {
|
|
|
201
202
|
|
|
202
203
|
if (auth && client && orgId) {
|
|
203
204
|
await tui.spinner('Registering your project', async () => {
|
|
204
|
-
const res = await
|
|
205
|
+
const res = await projectCreate(client, {
|
|
205
206
|
name: projectName,
|
|
206
207
|
organization_id: orgId,
|
|
207
208
|
provider: 'bunjs',
|
|
@@ -213,7 +214,7 @@ export async function runCreateFlow(options: CreateFlowOptions): Promise<void> {
|
|
|
213
214
|
apiKey: res.data.api_key,
|
|
214
215
|
});
|
|
215
216
|
}
|
|
216
|
-
tui.fatal(res.message
|
|
217
|
+
tui.fatal(res.message ?? 'failed to register project');
|
|
217
218
|
});
|
|
218
219
|
}
|
|
219
220
|
|
package/src/config.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { join, extname, basename } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { mkdir, readdir, readFile, writeFile, chmod } from 'node:fs/promises';
|
|
5
5
|
import type { Config, Profile, AuthData } from './types';
|
|
6
|
-
import { ConfigSchema, ProjectSchema } from './types';
|
|
6
|
+
import { ConfigSchema, ProjectSchema, BuildMetadataSchema, type BuildMetadata } from './types';
|
|
7
7
|
import * as tui from './tui';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
|
|
@@ -350,11 +350,34 @@ type InitialProjectConfig = ProjectConfig & {
|
|
|
350
350
|
};
|
|
351
351
|
|
|
352
352
|
export async function createProjectConfig(dir: string, config: InitialProjectConfig) {
|
|
353
|
+
// Create a sanitized config without the apiKey for agentuity.json
|
|
354
|
+
const { apiKey, ...sanitizedConfig } = config;
|
|
355
|
+
|
|
353
356
|
const configPath = join(dir, 'agentuity.json');
|
|
354
357
|
const configFile = Bun.file(configPath);
|
|
355
|
-
await configFile.write(JSON.stringify(
|
|
358
|
+
await configFile.write(JSON.stringify(sanitizedConfig, null, 2));
|
|
356
359
|
|
|
357
360
|
const envPath = join(dir, '.env');
|
|
358
361
|
const envFile = Bun.file(envPath);
|
|
359
|
-
await envFile.write(`AGENTUITY_SDK_KEY=${
|
|
362
|
+
await envFile.write(`AGENTUITY_SDK_KEY=${apiKey}`);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export async function loadBuildMetadata(dir: string): Promise<BuildMetadata> {
|
|
366
|
+
const filename = join(dir, 'agentuity.metadata.json');
|
|
367
|
+
const file = Bun.file(filename);
|
|
368
|
+
if (!(await file.exists())) {
|
|
369
|
+
throw new Error(`couldn't find ${filename}`);
|
|
370
|
+
}
|
|
371
|
+
const buffer = await file.text();
|
|
372
|
+
const config = JSON.parse(buffer);
|
|
373
|
+
const result = BuildMetadataSchema.safeParse(config);
|
|
374
|
+
if (!result.success) {
|
|
375
|
+
tui.error(`Invalid build metadata at ${filename}:`);
|
|
376
|
+
for (const issue of result.error.issues) {
|
|
377
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
|
|
378
|
+
tui.bullet(`${path}: ${issue.message}`);
|
|
379
|
+
}
|
|
380
|
+
process.exit(1);
|
|
381
|
+
}
|
|
382
|
+
return result.data;
|
|
360
383
|
}
|
package/src/logger.ts
CHANGED
|
@@ -110,7 +110,7 @@ function getLogColors(scheme: ColorScheme): Record<LogLevel, LogColors> {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
export class Logger {
|
|
113
|
-
|
|
113
|
+
public level: LogLevel;
|
|
114
114
|
private showTimestamp: boolean;
|
|
115
115
|
private colorScheme: ColorScheme;
|
|
116
116
|
private colors: Record<LogLevel, LogColors>;
|
package/src/tui.ts
CHANGED
|
@@ -18,38 +18,58 @@ const ICONS = {
|
|
|
18
18
|
bullet: '•',
|
|
19
19
|
} as const;
|
|
20
20
|
|
|
21
|
+
function shouldUseColors(): boolean {
|
|
22
|
+
return !process.env.NO_COLOR && process.env.TERM !== 'dumb' && !!process.stdout.isTTY;
|
|
23
|
+
}
|
|
24
|
+
|
|
21
25
|
// Color definitions (light/dark adaptive) using Bun.color
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
26
|
+
function getColors() {
|
|
27
|
+
const USE_COLORS = shouldUseColors();
|
|
28
|
+
if (!USE_COLORS) {
|
|
29
|
+
return {
|
|
30
|
+
success: { light: '', dark: '' },
|
|
31
|
+
error: { light: '', dark: '' },
|
|
32
|
+
warning: { light: '', dark: '' },
|
|
33
|
+
info: { light: '', dark: '' },
|
|
34
|
+
muted: { light: '', dark: '' },
|
|
35
|
+
bold: { light: '', dark: '' },
|
|
36
|
+
link: { light: '', dark: '' },
|
|
37
|
+
reset: '',
|
|
38
|
+
} as const;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
success: {
|
|
43
|
+
light: Bun.color('#008000', 'ansi') || '\x1b[32m', // green
|
|
44
|
+
dark: Bun.color('#00FF00', 'ansi') || '\x1b[92m', // bright green
|
|
45
|
+
},
|
|
46
|
+
error: {
|
|
47
|
+
light: Bun.color('#CC0000', 'ansi') || '\x1b[31m', // red
|
|
48
|
+
dark: Bun.color('#FF5555', 'ansi') || '\x1b[91m', // bright red
|
|
49
|
+
},
|
|
50
|
+
warning: {
|
|
51
|
+
light: Bun.color('#B58900', 'ansi') || '\x1b[33m', // yellow
|
|
52
|
+
dark: Bun.color('#FFFF55', 'ansi') || '\x1b[93m', // bright yellow
|
|
53
|
+
},
|
|
54
|
+
info: {
|
|
55
|
+
light: Bun.color('#008B8B', 'ansi') || '\x1b[36m', // dark cyan
|
|
56
|
+
dark: Bun.color('#55FFFF', 'ansi') || '\x1b[96m', // bright cyan
|
|
57
|
+
},
|
|
58
|
+
muted: {
|
|
59
|
+
light: Bun.color('#808080', 'ansi') || '\x1b[90m', // gray
|
|
60
|
+
dark: Bun.color('#888888', 'ansi') || '\x1b[90m', // darker gray
|
|
61
|
+
},
|
|
62
|
+
bold: {
|
|
63
|
+
light: '\x1b[1m',
|
|
64
|
+
dark: '\x1b[1m',
|
|
65
|
+
},
|
|
66
|
+
link: {
|
|
67
|
+
light: '\x1b[34;4m', // blue underline (need ANSI for underline)
|
|
68
|
+
dark: '\x1b[94;4m', // bright blue underline
|
|
69
|
+
},
|
|
70
|
+
reset: '\x1b[0m',
|
|
71
|
+
} as const;
|
|
72
|
+
}
|
|
53
73
|
|
|
54
74
|
let currentColorScheme: ColorScheme = 'dark';
|
|
55
75
|
|
|
@@ -57,7 +77,8 @@ export function setColorScheme(scheme: ColorScheme): void {
|
|
|
57
77
|
currentColorScheme = scheme;
|
|
58
78
|
}
|
|
59
79
|
|
|
60
|
-
function getColor(colorKey: keyof typeof
|
|
80
|
+
function getColor(colorKey: keyof ReturnType<typeof getColors>): string {
|
|
81
|
+
const COLORS = getColors();
|
|
61
82
|
const color = COLORS[colorKey];
|
|
62
83
|
if (typeof color === 'string') {
|
|
63
84
|
return color;
|
|
@@ -70,7 +91,7 @@ function getColor(colorKey: keyof typeof COLORS): string {
|
|
|
70
91
|
*/
|
|
71
92
|
export function success(message: string): void {
|
|
72
93
|
const color = getColor('success');
|
|
73
|
-
const reset =
|
|
94
|
+
const reset = getColor('reset');
|
|
74
95
|
console.log(`${color}${ICONS.success} ${message}${reset}`);
|
|
75
96
|
}
|
|
76
97
|
|
|
@@ -79,7 +100,7 @@ export function success(message: string): void {
|
|
|
79
100
|
*/
|
|
80
101
|
export function error(message: string): void {
|
|
81
102
|
const color = getColor('error');
|
|
82
|
-
const reset =
|
|
103
|
+
const reset = getColor('reset');
|
|
83
104
|
console.error(`${color}${ICONS.error} ${message}${reset}`);
|
|
84
105
|
}
|
|
85
106
|
|
|
@@ -88,7 +109,7 @@ export function error(message: string): void {
|
|
|
88
109
|
*/
|
|
89
110
|
export function fatal(message: string): never {
|
|
90
111
|
const color = getColor('error');
|
|
91
|
-
const reset =
|
|
112
|
+
const reset = getColor('reset');
|
|
92
113
|
console.error(`${color}${ICONS.error} ${message}${reset}`);
|
|
93
114
|
process.exit(1);
|
|
94
115
|
}
|
|
@@ -98,7 +119,7 @@ export function fatal(message: string): never {
|
|
|
98
119
|
*/
|
|
99
120
|
export function warning(message: string, asError = false): void {
|
|
100
121
|
const color = asError ? getColor('error') : getColor('warning');
|
|
101
|
-
const reset =
|
|
122
|
+
const reset = getColor('reset');
|
|
102
123
|
console.log(`${color}${ICONS.warning} ${message}${reset}`);
|
|
103
124
|
}
|
|
104
125
|
|
|
@@ -107,7 +128,7 @@ export function warning(message: string, asError = false): void {
|
|
|
107
128
|
*/
|
|
108
129
|
export function info(message: string): void {
|
|
109
130
|
const color = getColor('info');
|
|
110
|
-
const reset =
|
|
131
|
+
const reset = getColor('reset');
|
|
111
132
|
console.log(`${color}${ICONS.info} ${message}${reset}`);
|
|
112
133
|
}
|
|
113
134
|
|
|
@@ -116,7 +137,7 @@ export function info(message: string): void {
|
|
|
116
137
|
*/
|
|
117
138
|
export function muted(text: string): string {
|
|
118
139
|
const color = getColor('muted');
|
|
119
|
-
const reset =
|
|
140
|
+
const reset = getColor('reset');
|
|
120
141
|
return `${color}${text}${reset}`;
|
|
121
142
|
}
|
|
122
143
|
|
|
@@ -125,7 +146,7 @@ export function muted(text: string): string {
|
|
|
125
146
|
*/
|
|
126
147
|
export function bold(text: string): string {
|
|
127
148
|
const color = getColor('bold');
|
|
128
|
-
const reset =
|
|
149
|
+
const reset = getColor('reset');
|
|
129
150
|
return `${color}${text}${reset}`;
|
|
130
151
|
}
|
|
131
152
|
|
|
@@ -134,7 +155,7 @@ export function bold(text: string): string {
|
|
|
134
155
|
*/
|
|
135
156
|
export function link(url: string): string {
|
|
136
157
|
const color = getColor('link');
|
|
137
|
-
const reset =
|
|
158
|
+
const reset = getColor('reset');
|
|
138
159
|
|
|
139
160
|
// Check if terminal supports hyperlinks (OSC 8)
|
|
140
161
|
if (supportsHyperlinks()) {
|
|
@@ -251,7 +272,7 @@ export function banner(title: string, body: string, options?: BannerOptions): vo
|
|
|
251
272
|
// Colors
|
|
252
273
|
const borderColor = getColor('muted');
|
|
253
274
|
const titleColor = getColor('info');
|
|
254
|
-
const reset =
|
|
275
|
+
const reset = getColor('reset');
|
|
255
276
|
|
|
256
277
|
// Build banner
|
|
257
278
|
const lines: string[] = [];
|
|
@@ -560,7 +581,7 @@ function stripAnsiCodes(str: string): string {
|
|
|
560
581
|
* Check if a string ends with ANSI reset code
|
|
561
582
|
*/
|
|
562
583
|
function endsWithReset(str: string): boolean {
|
|
563
|
-
return str.endsWith('\x1b[0m') || str.endsWith(
|
|
584
|
+
return str.endsWith('\x1b[0m') || str.endsWith(getColor('reset'));
|
|
564
585
|
}
|
|
565
586
|
|
|
566
587
|
/**
|
|
@@ -625,7 +646,7 @@ function wrapText(text: string, maxWidth: number): string[] {
|
|
|
625
646
|
if (leadingCodes && hasReset) {
|
|
626
647
|
for (let i = paragraphStart; i < allLines.length; i++) {
|
|
627
648
|
if (!endsWithReset(allLines[i])) {
|
|
628
|
-
allLines[i] +=
|
|
649
|
+
allLines[i] += getColor('reset');
|
|
629
650
|
}
|
|
630
651
|
}
|
|
631
652
|
}
|
|
@@ -702,7 +723,7 @@ export async function spinner<T>(
|
|
|
702
723
|
}
|
|
703
724
|
|
|
704
725
|
const message = options.message;
|
|
705
|
-
const reset =
|
|
726
|
+
const reset = getColor('reset');
|
|
706
727
|
|
|
707
728
|
// If no TTY, just execute the callback without animation
|
|
708
729
|
if (!process.stdout.isTTY) {
|
|
@@ -714,8 +735,6 @@ export async function spinner<T>(
|
|
|
714
735
|
? await options.callback()
|
|
715
736
|
: await options.callback;
|
|
716
737
|
|
|
717
|
-
const successColor = getColor('success');
|
|
718
|
-
console.log(`${successColor}${ICONS.success} ${message}${reset}`);
|
|
719
738
|
return result;
|
|
720
739
|
} catch (err) {
|
|
721
740
|
const errorColor = getColor('error');
|
|
@@ -886,7 +905,7 @@ export async function runCommand(options: CommandRunnerOptions): Promise<number>
|
|
|
886
905
|
? '\x1b[1m' + (Bun.color('#00008B', 'ansi') || '\x1b[34m')
|
|
887
906
|
: Bun.color('#FFFFFF', 'ansi') || '\x1b[97m'; // bold dark blue / white
|
|
888
907
|
const mutedColor = Bun.color('#808080', 'ansi') || '\x1b[90m';
|
|
889
|
-
const reset =
|
|
908
|
+
const reset = getColor('reset');
|
|
890
909
|
|
|
891
910
|
// Get terminal width
|
|
892
911
|
const termWidth = process.stdout.columns || 80;
|
|
@@ -1061,9 +1080,17 @@ export async function selectOrganization(
|
|
|
1061
1080
|
orgs: OrganizationList,
|
|
1062
1081
|
initial?: string
|
|
1063
1082
|
): Promise<string> {
|
|
1083
|
+
if (orgs.length === 0) {
|
|
1084
|
+
fatal(
|
|
1085
|
+
'You do not belong to any organizations.\n' +
|
|
1086
|
+
'Please contact support or create an organization at https://agentuity.com'
|
|
1087
|
+
);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1064
1090
|
if (orgs.length === 1) {
|
|
1065
1091
|
return orgs[0].id;
|
|
1066
1092
|
}
|
|
1093
|
+
|
|
1067
1094
|
const response = await enquirer.prompt<{ action: string }>({
|
|
1068
1095
|
type: 'select',
|
|
1069
1096
|
name: 'action',
|
package/src/types.ts
CHANGED
|
@@ -320,3 +320,32 @@ export const ProjectSchema = zod.object({
|
|
|
320
320
|
projectId: zod.string().describe('the project id'),
|
|
321
321
|
orgId: zod.string().describe('the organization id'),
|
|
322
322
|
});
|
|
323
|
+
|
|
324
|
+
export const BuildMetadataSchema = zod.object({
|
|
325
|
+
routes: zod.array(
|
|
326
|
+
zod.object({
|
|
327
|
+
id: zod.string().describe('the unique calculated id for the route'),
|
|
328
|
+
filename: zod.string().describe('the relative path for the file'),
|
|
329
|
+
path: zod.string().describe('the route path'),
|
|
330
|
+
method: zod.enum(['get', 'post', 'put', 'delete', 'patch']).describe('the HTTP method'),
|
|
331
|
+
version: zod.string().describe('the SHA256 content of the file'),
|
|
332
|
+
type: zod.enum(['api', 'sms', 'email', 'cron', 'websocket', 'sse', 'stream']),
|
|
333
|
+
config: zod
|
|
334
|
+
.record(zod.string(), zod.unknown())
|
|
335
|
+
.optional()
|
|
336
|
+
.describe('type specific configuration'),
|
|
337
|
+
})
|
|
338
|
+
),
|
|
339
|
+
agents: zod.array(
|
|
340
|
+
zod.object({
|
|
341
|
+
id: zod.string().describe('the unique calculated id for the route'),
|
|
342
|
+
filename: zod.string().describe('the relative path for the file'),
|
|
343
|
+
name: zod.string().describe('the name of the agent'),
|
|
344
|
+
version: zod.string().describe('the SHA256 content of the file'),
|
|
345
|
+
identifier: zod.string().describe('the folder for the agent'),
|
|
346
|
+
description: zod.string().optional().describe('the agent description'),
|
|
347
|
+
})
|
|
348
|
+
),
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
export type BuildMetadata = zod.infer<typeof BuildMetadataSchema>;
|