@agentuity/cli 0.0.43 → 0.0.45
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/AGENTS.md +1 -1
- package/README.md +1 -1
- package/dist/api.d.ts +3 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/auth.d.ts +10 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/banner.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cmd/auth/api.d.ts +4 -4
- package/dist/cmd/auth/api.d.ts.map +1 -1
- package/dist/cmd/auth/index.d.ts.map +1 -1
- package/dist/cmd/auth/login.d.ts.map +1 -1
- package/dist/cmd/auth/signup.d.ts.map +1 -1
- package/dist/cmd/auth/ssh/add.d.ts +2 -0
- package/dist/cmd/auth/ssh/add.d.ts.map +1 -0
- package/dist/cmd/auth/ssh/api.d.ts +16 -0
- package/dist/cmd/auth/ssh/api.d.ts.map +1 -0
- package/dist/cmd/auth/ssh/delete.d.ts +2 -0
- package/dist/cmd/auth/ssh/delete.d.ts.map +1 -0
- package/dist/cmd/auth/ssh/index.d.ts +3 -0
- package/dist/cmd/auth/ssh/index.d.ts.map +1 -0
- package/dist/cmd/auth/ssh/list.d.ts +2 -0
- package/dist/cmd/auth/ssh/list.d.ts.map +1 -0
- package/dist/cmd/auth/whoami.d.ts.map +1 -1
- package/dist/cmd/bundle/ast.d.ts +14 -3
- package/dist/cmd/bundle/ast.d.ts.map +1 -1
- package/dist/cmd/bundle/ast.test.d.ts +2 -0
- package/dist/cmd/bundle/ast.test.d.ts.map +1 -0
- package/dist/cmd/bundle/bundler.d.ts +6 -1
- package/dist/cmd/bundle/bundler.d.ts.map +1 -1
- package/dist/cmd/bundle/file.d.ts.map +1 -1
- package/dist/cmd/bundle/fix-duplicate-exports.d.ts +2 -0
- package/dist/cmd/bundle/fix-duplicate-exports.d.ts.map +1 -0
- package/dist/cmd/bundle/fix-duplicate-exports.test.d.ts +2 -0
- package/dist/cmd/bundle/fix-duplicate-exports.test.d.ts.map +1 -0
- package/dist/cmd/bundle/plugin.d.ts +2 -0
- package/dist/cmd/bundle/plugin.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/domain.d.ts +17 -0
- package/dist/cmd/cloud/domain.d.ts.map +1 -0
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/resource/add.d.ts +2 -0
- package/dist/cmd/cloud/resource/add.d.ts.map +1 -0
- package/dist/cmd/cloud/resource/delete.d.ts +2 -0
- package/dist/cmd/cloud/resource/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/resource/index.d.ts +3 -0
- package/dist/cmd/cloud/resource/index.d.ts.map +1 -0
- package/dist/cmd/cloud/resource/list.d.ts +2 -0
- package/dist/cmd/cloud/resource/list.d.ts.map +1 -0
- package/dist/cmd/cloud/scp/download.d.ts +2 -0
- package/dist/cmd/cloud/scp/download.d.ts.map +1 -0
- package/dist/cmd/cloud/scp/index.d.ts +3 -0
- package/dist/cmd/cloud/scp/index.d.ts.map +1 -0
- package/dist/cmd/cloud/scp/upload.d.ts +2 -0
- package/dist/cmd/cloud/scp/upload.d.ts.map +1 -0
- package/dist/cmd/cloud/ssh.d.ts +2 -0
- package/dist/cmd/cloud/ssh.d.ts.map +1 -0
- package/dist/cmd/dev/api.d.ts +18 -0
- package/dist/cmd/dev/api.d.ts.map +1 -0
- package/dist/cmd/dev/download.d.ts +11 -0
- package/dist/cmd/dev/download.d.ts.map +1 -0
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/templates.d.ts +3 -0
- package/dist/cmd/dev/templates.d.ts.map +1 -0
- package/dist/cmd/env/delete.d.ts.map +1 -1
- package/dist/cmd/env/get.d.ts.map +1 -1
- package/dist/cmd/env/import.d.ts.map +1 -1
- package/dist/cmd/env/list.d.ts.map +1 -1
- package/dist/cmd/env/pull.d.ts.map +1 -1
- package/dist/cmd/env/push.d.ts.map +1 -1
- package/dist/cmd/env/set.d.ts.map +1 -1
- package/dist/cmd/profile/show.d.ts.map +1 -1
- package/dist/cmd/project/create.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 +4 -0
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/secret/delete.d.ts.map +1 -1
- package/dist/cmd/secret/get.d.ts.map +1 -1
- package/dist/cmd/secret/import.d.ts.map +1 -1
- package/dist/cmd/secret/list.d.ts.map +1 -1
- package/dist/cmd/secret/pull.d.ts.map +1 -1
- package/dist/cmd/secret/push.d.ts.map +1 -1
- package/dist/cmd/secret/set.d.ts.map +1 -1
- package/dist/config.d.ts +9 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/crypto/box.d.ts +65 -0
- package/dist/crypto/box.d.ts.map +1 -0
- package/dist/crypto/box.test.d.ts +2 -0
- package/dist/crypto/box.test.d.ts.map +1 -0
- package/dist/download.d.ts.map +1 -1
- package/dist/steps.d.ts +4 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/terminal.d.ts.map +1 -1
- package/dist/tui.d.ts +31 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/types.d.ts +249 -126
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/detectSubagent.d.ts +15 -0
- package/dist/utils/detectSubagent.d.ts.map +1 -0
- package/dist/utils/zip.d.ts +7 -0
- package/dist/utils/zip.d.ts.map +1 -0
- package/package.json +11 -3
- package/src/api-errors.md +2 -2
- package/src/api.ts +12 -7
- package/src/auth.ts +116 -7
- package/src/banner.ts +13 -6
- package/src/cli.ts +695 -63
- package/src/cmd/auth/api.ts +10 -16
- package/src/cmd/auth/index.ts +2 -1
- package/src/cmd/auth/login.ts +24 -8
- package/src/cmd/auth/signup.ts +15 -11
- package/src/cmd/auth/ssh/add.ts +263 -0
- package/src/cmd/auth/ssh/api.ts +94 -0
- package/src/cmd/auth/ssh/delete.ts +102 -0
- package/src/cmd/auth/ssh/index.ts +10 -0
- package/src/cmd/auth/ssh/list.ts +74 -0
- package/src/cmd/auth/whoami.ts +13 -13
- package/src/cmd/bundle/ast.test.ts +565 -0
- package/src/cmd/bundle/ast.ts +457 -44
- package/src/cmd/bundle/bundler.ts +255 -57
- package/src/cmd/bundle/file.ts +6 -12
- package/src/cmd/bundle/fix-duplicate-exports.test.ts +387 -0
- package/src/cmd/bundle/fix-duplicate-exports.ts +204 -0
- package/src/cmd/bundle/index.ts +9 -9
- package/src/cmd/bundle/patch/aisdk.ts +1 -1
- package/src/cmd/bundle/plugin.ts +373 -53
- package/src/cmd/cloud/deploy.ts +300 -93
- package/src/cmd/cloud/domain.ts +92 -0
- package/src/cmd/cloud/index.ts +4 -1
- package/src/cmd/cloud/resource/add.ts +56 -0
- package/src/cmd/cloud/resource/delete.ts +120 -0
- package/src/cmd/cloud/resource/index.ts +11 -0
- package/src/cmd/cloud/resource/list.ts +69 -0
- package/src/cmd/cloud/scp/download.ts +59 -0
- package/src/cmd/cloud/scp/index.ts +9 -0
- package/src/cmd/cloud/scp/upload.ts +62 -0
- package/src/cmd/cloud/ssh.ts +68 -0
- package/src/cmd/dev/api.ts +46 -0
- package/src/cmd/dev/download.ts +111 -0
- package/src/cmd/dev/index.ts +360 -34
- package/src/cmd/dev/templates.ts +84 -0
- package/src/cmd/env/delete.ts +5 -20
- package/src/cmd/env/get.ts +5 -18
- package/src/cmd/env/import.ts +5 -20
- package/src/cmd/env/list.ts +5 -18
- package/src/cmd/env/pull.ts +10 -23
- package/src/cmd/env/push.ts +5 -23
- package/src/cmd/env/set.ts +5 -20
- package/src/cmd/index.ts +2 -2
- package/src/cmd/profile/show.ts +15 -6
- package/src/cmd/project/create.ts +7 -2
- package/src/cmd/project/delete.ts +75 -18
- package/src/cmd/project/download.ts +2 -2
- package/src/cmd/project/list.ts +8 -8
- package/src/cmd/project/show.ts +3 -7
- package/src/cmd/project/template-flow.ts +170 -72
- package/src/cmd/secret/delete.ts +5 -20
- package/src/cmd/secret/get.ts +5 -18
- package/src/cmd/secret/import.ts +5 -20
- package/src/cmd/secret/list.ts +5 -18
- package/src/cmd/secret/pull.ts +10 -23
- package/src/cmd/secret/push.ts +5 -23
- package/src/cmd/secret/set.ts +5 -20
- package/src/config.ts +224 -24
- package/src/crypto/box.test.ts +431 -0
- package/src/crypto/box.ts +477 -0
- package/src/download.ts +1 -0
- package/src/env-util.test.ts +1 -1
- package/src/steps.ts +65 -6
- package/src/terminal.ts +24 -23
- package/src/tui.ts +192 -61
- package/src/types.ts +291 -201
- package/src/utils/detectSubagent.ts +31 -0
- package/src/utils/zip.ts +38 -0
- package/dist/cmd/example/create-user.d.ts +0 -2
- package/dist/cmd/example/create-user.d.ts.map +0 -1
- package/dist/cmd/example/create.d.ts +0 -2
- package/dist/cmd/example/create.d.ts.map +0 -1
- package/dist/cmd/example/deploy.d.ts +0 -2
- package/dist/cmd/example/deploy.d.ts.map +0 -1
- package/dist/cmd/example/index.d.ts +0 -2
- package/dist/cmd/example/index.d.ts.map +0 -1
- package/dist/cmd/example/list.d.ts +0 -2
- package/dist/cmd/example/list.d.ts.map +0 -1
- package/dist/cmd/example/optional-auth.d.ts +0 -3
- package/dist/cmd/example/optional-auth.d.ts.map +0 -1
- package/dist/cmd/example/run-command.d.ts +0 -2
- package/dist/cmd/example/run-command.d.ts.map +0 -1
- package/dist/cmd/example/sound.d.ts +0 -3
- package/dist/cmd/example/sound.d.ts.map +0 -1
- package/dist/cmd/example/spinner.d.ts +0 -2
- package/dist/cmd/example/spinner.d.ts.map +0 -1
- package/dist/cmd/example/steps.d.ts +0 -2
- package/dist/cmd/example/steps.d.ts.map +0 -1
- package/dist/cmd/example/version.d.ts +0 -2
- package/dist/cmd/example/version.d.ts.map +0 -1
- package/src/cmd/example/create-user.ts +0 -38
- package/src/cmd/example/create.ts +0 -31
- package/src/cmd/example/deploy.ts +0 -36
- package/src/cmd/example/index.ts +0 -29
- package/src/cmd/example/list.ts +0 -32
- package/src/cmd/example/optional-auth.ts +0 -38
- package/src/cmd/example/run-command.ts +0 -45
- package/src/cmd/example/sound.ts +0 -14
- package/src/cmd/example/spinner.ts +0 -44
- package/src/cmd/example/steps.ts +0 -66
- package/src/cmd/example/version.ts +0 -13
package/src/types.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Logger } from '@agentuity/core';
|
|
2
|
+
import { Deployment } from '@agentuity/server';
|
|
2
3
|
import type * as z from 'zod';
|
|
3
4
|
import { z as zod } from 'zod';
|
|
5
|
+
import type { APIClient } from './api';
|
|
6
|
+
|
|
7
|
+
export type { Logger };
|
|
4
8
|
|
|
5
9
|
export const ConfigSchema = zod.object({
|
|
6
10
|
name: zod.string().describe('Profile name'),
|
|
@@ -20,22 +24,41 @@ export const ConfigSchema = zod.object({
|
|
|
20
24
|
.describe('Development mode configuration'),
|
|
21
25
|
overrides: zod
|
|
22
26
|
.object({
|
|
23
|
-
api_url: zod
|
|
27
|
+
api_url: zod.url().default('https://api.agentuity.com').describe('Override API base URL'),
|
|
28
|
+
app_url: zod.url().default('https://app.agentuity.com').describe('Override app base URL'),
|
|
29
|
+
transport_url: zod
|
|
24
30
|
.url()
|
|
25
|
-
.
|
|
26
|
-
.describe('Override
|
|
27
|
-
|
|
31
|
+
.default('https://catalyst.agentuity.cloud')
|
|
32
|
+
.describe('Override transport URL'),
|
|
33
|
+
stream_url: zod
|
|
28
34
|
.url()
|
|
29
|
-
.
|
|
30
|
-
.describe('Override
|
|
31
|
-
|
|
35
|
+
.default('https://stream.agentuity.cloud')
|
|
36
|
+
.describe('Override stream URL'),
|
|
37
|
+
kv_url: zod
|
|
32
38
|
.url()
|
|
33
|
-
.
|
|
34
|
-
.describe('Override
|
|
35
|
-
|
|
39
|
+
.default('https://catalyst.agentuity.cloud')
|
|
40
|
+
.describe('Override keyvalue URL'),
|
|
41
|
+
object_url: zod
|
|
42
|
+
.url()
|
|
43
|
+
.default('https://catalyst.agentuity.cloud')
|
|
44
|
+
.describe('Override object store URL'),
|
|
45
|
+
vector_url: zod
|
|
46
|
+
.url()
|
|
47
|
+
.default('https://catalyst.agentuity.cloud')
|
|
48
|
+
.describe('Override vector store URL'),
|
|
49
|
+
catalyst_url: zod
|
|
50
|
+
.url()
|
|
51
|
+
.default('https://catalyst.agentuity.cloud')
|
|
52
|
+
.describe('Override catalyst URL'),
|
|
53
|
+
ion_url: zod
|
|
36
54
|
.url()
|
|
37
55
|
.optional()
|
|
38
|
-
.
|
|
56
|
+
.default('https://ion.agentuity.cloud')
|
|
57
|
+
.describe('Override ion URL'),
|
|
58
|
+
gravity_url: zod
|
|
59
|
+
.url()
|
|
60
|
+
.default('grpc://devmode.agentuity.com')
|
|
61
|
+
.describe('Override gravity URL'),
|
|
39
62
|
skip_version_check: zod.boolean().optional().describe('Skip CLI version check on startup'),
|
|
40
63
|
})
|
|
41
64
|
.optional()
|
|
@@ -50,6 +73,13 @@ export const ConfigSchema = zod.object({
|
|
|
50
73
|
})
|
|
51
74
|
.optional()
|
|
52
75
|
.describe('User preferences'),
|
|
76
|
+
gravity: zod
|
|
77
|
+
.object({
|
|
78
|
+
version: zod.string().optional().describe('The current gravity version'),
|
|
79
|
+
checked: zod.number().optional().describe('Last gravity check timestamp'),
|
|
80
|
+
})
|
|
81
|
+
.optional()
|
|
82
|
+
.describe('the gravity client information'),
|
|
53
83
|
});
|
|
54
84
|
|
|
55
85
|
export type Config = zod.infer<typeof ConfigSchema>;
|
|
@@ -73,6 +103,7 @@ export interface GlobalOptions {
|
|
|
73
103
|
logLevel: LogLevel;
|
|
74
104
|
logTimestamp?: boolean;
|
|
75
105
|
logPrefix?: boolean;
|
|
106
|
+
orgId?: string;
|
|
76
107
|
}
|
|
77
108
|
|
|
78
109
|
export interface CommandSchemas {
|
|
@@ -80,245 +111,278 @@ export interface CommandSchemas {
|
|
|
80
111
|
options?: z.ZodType;
|
|
81
112
|
}
|
|
82
113
|
|
|
114
|
+
export type ProjectConfig = zod.infer<typeof ProjectSchema>;
|
|
115
|
+
|
|
116
|
+
export type Requires = {
|
|
117
|
+
auth?: true;
|
|
118
|
+
project?: true;
|
|
119
|
+
apiClient?: true;
|
|
120
|
+
org?: true;
|
|
121
|
+
regions?: true;
|
|
122
|
+
region?: true;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export type Optional = {
|
|
126
|
+
auth?: true | string;
|
|
127
|
+
project?: true;
|
|
128
|
+
org?: true;
|
|
129
|
+
region?: true;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
type AddArgs<A extends z.ZodType | undefined> = A extends z.ZodType
|
|
133
|
+
? { args: z.infer<A> }
|
|
134
|
+
: Record<string, never>;
|
|
135
|
+
type AddOpts<O extends z.ZodType | undefined> = O extends z.ZodType
|
|
136
|
+
? { opts: z.infer<O> }
|
|
137
|
+
: Record<string, never>;
|
|
138
|
+
|
|
139
|
+
type AuthMode<R extends Requires | undefined, O extends Optional | undefined> = R extends {
|
|
140
|
+
auth: true;
|
|
141
|
+
}
|
|
142
|
+
? 'required'
|
|
143
|
+
: O extends { auth: true | string }
|
|
144
|
+
? 'optional'
|
|
145
|
+
: 'none';
|
|
146
|
+
|
|
147
|
+
type ProjectMode<R extends Requires | undefined, O extends Optional | undefined> = R extends {
|
|
148
|
+
project: true;
|
|
149
|
+
}
|
|
150
|
+
? 'required'
|
|
151
|
+
: O extends { project: true }
|
|
152
|
+
? 'optional'
|
|
153
|
+
: 'none';
|
|
154
|
+
|
|
155
|
+
type APIClientRequired<R extends Requires | undefined> = R extends { apiClient: true }
|
|
156
|
+
? true
|
|
157
|
+
: false;
|
|
158
|
+
|
|
159
|
+
type AddAuth<M extends 'required' | 'optional' | 'none'> = M extends 'required'
|
|
160
|
+
? { auth: AuthData }
|
|
161
|
+
: M extends 'optional'
|
|
162
|
+
? { auth: AuthData | undefined }
|
|
163
|
+
: Record<string, never>;
|
|
164
|
+
|
|
165
|
+
type AddProject<M extends 'required' | 'optional' | 'none'> = M extends 'required'
|
|
166
|
+
? { project: ProjectConfig; projectDir: string }
|
|
167
|
+
: M extends 'optional'
|
|
168
|
+
? { project?: ProjectConfig; projectDir: string }
|
|
169
|
+
: Record<string, never>;
|
|
170
|
+
|
|
171
|
+
type OrgMode<R extends Requires | undefined, O extends Optional | undefined> = R extends {
|
|
172
|
+
org: true;
|
|
173
|
+
}
|
|
174
|
+
? 'required'
|
|
175
|
+
: O extends { org: true }
|
|
176
|
+
? 'optional'
|
|
177
|
+
: 'none';
|
|
178
|
+
|
|
179
|
+
type AddOrg<M extends 'required' | 'optional' | 'none'> = M extends 'required'
|
|
180
|
+
? { orgId: string }
|
|
181
|
+
: M extends 'optional'
|
|
182
|
+
? { orgId?: string }
|
|
183
|
+
: Record<string, never>;
|
|
184
|
+
|
|
185
|
+
type RegionsRequired<R extends Requires | undefined> = R extends { regions: true } ? true : false;
|
|
186
|
+
|
|
187
|
+
type AddRegions<R extends boolean> = R extends true
|
|
188
|
+
? { regions: Array<{ region: string; description: string }> }
|
|
189
|
+
: Record<string, never>;
|
|
190
|
+
|
|
191
|
+
type RegionMode<R extends Requires | undefined, O extends Optional | undefined> = R extends {
|
|
192
|
+
region: true;
|
|
193
|
+
}
|
|
194
|
+
? 'required'
|
|
195
|
+
: O extends { region: true }
|
|
196
|
+
? 'optional'
|
|
197
|
+
: 'none';
|
|
198
|
+
|
|
199
|
+
type AddRegionOptional<M extends 'required' | 'optional' | 'none'> = M extends 'required'
|
|
200
|
+
? { region: string }
|
|
201
|
+
: M extends 'optional'
|
|
202
|
+
? { region?: string }
|
|
203
|
+
: Record<string, never>;
|
|
204
|
+
|
|
205
|
+
export type CommandContextFromSpecs<
|
|
206
|
+
R extends Requires | undefined,
|
|
207
|
+
O extends Optional | undefined,
|
|
208
|
+
A extends z.ZodType | undefined = undefined,
|
|
209
|
+
Op extends z.ZodType | undefined = undefined,
|
|
210
|
+
> = {
|
|
211
|
+
config: Config | null;
|
|
212
|
+
logger: Logger;
|
|
213
|
+
options: GlobalOptions;
|
|
214
|
+
} & AddArgs<A> &
|
|
215
|
+
AddOpts<Op> &
|
|
216
|
+
AddAuth<AuthMode<R, O>> &
|
|
217
|
+
AddProject<ProjectMode<R, O>> &
|
|
218
|
+
AddOrg<OrgMode<R, O>> &
|
|
219
|
+
AddRegions<RegionsRequired<R>> &
|
|
220
|
+
AddRegionOptional<RegionMode<R, O>> &
|
|
221
|
+
(APIClientRequired<R> extends true ? { apiClient: APIClient } : Record<string, never>);
|
|
222
|
+
|
|
83
223
|
export type CommandContext<
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
? {
|
|
91
|
-
config: Config | null;
|
|
92
|
-
logger: Logger;
|
|
93
|
-
options: GlobalOptions;
|
|
94
|
-
auth: AuthData;
|
|
95
|
-
args: z.infer<ArgsSchema>;
|
|
96
|
-
opts: z.infer<OptionsSchema>;
|
|
97
|
-
}
|
|
98
|
-
: {
|
|
99
|
-
config: Config | null;
|
|
100
|
-
logger: Logger;
|
|
101
|
-
options: GlobalOptions;
|
|
102
|
-
auth: AuthData;
|
|
103
|
-
args: z.infer<ArgsSchema>;
|
|
104
|
-
}
|
|
105
|
-
: OptionsSchema extends z.ZodType
|
|
106
|
-
? {
|
|
107
|
-
config: Config | null;
|
|
108
|
-
logger: Logger;
|
|
109
|
-
options: GlobalOptions;
|
|
110
|
-
auth: AuthData;
|
|
111
|
-
opts: z.infer<OptionsSchema>;
|
|
112
|
-
}
|
|
113
|
-
: {
|
|
114
|
-
config: Config | null;
|
|
115
|
-
logger: Logger;
|
|
116
|
-
options: GlobalOptions;
|
|
117
|
-
auth: AuthData;
|
|
118
|
-
}
|
|
119
|
-
: RequiresAuth extends 'optional'
|
|
120
|
-
? ArgsSchema extends z.ZodType
|
|
121
|
-
? OptionsSchema extends z.ZodType
|
|
122
|
-
? {
|
|
123
|
-
config: Config | null;
|
|
124
|
-
logger: Logger;
|
|
125
|
-
options: GlobalOptions;
|
|
126
|
-
auth: AuthData | undefined;
|
|
127
|
-
args: z.infer<ArgsSchema>;
|
|
128
|
-
opts: z.infer<OptionsSchema>;
|
|
129
|
-
}
|
|
130
|
-
: {
|
|
131
|
-
config: Config | null;
|
|
132
|
-
logger: Logger;
|
|
133
|
-
options: GlobalOptions;
|
|
134
|
-
auth: AuthData | undefined;
|
|
135
|
-
args: z.infer<ArgsSchema>;
|
|
136
|
-
}
|
|
137
|
-
: OptionsSchema extends z.ZodType
|
|
138
|
-
? {
|
|
139
|
-
config: Config | null;
|
|
140
|
-
logger: Logger;
|
|
141
|
-
options: GlobalOptions;
|
|
142
|
-
auth: AuthData | undefined;
|
|
143
|
-
opts: z.infer<OptionsSchema>;
|
|
144
|
-
}
|
|
145
|
-
: {
|
|
146
|
-
config: Config | null;
|
|
147
|
-
logger: Logger;
|
|
148
|
-
options: GlobalOptions;
|
|
149
|
-
auth: AuthData | undefined;
|
|
150
|
-
}
|
|
151
|
-
: ArgsSchema extends z.ZodType
|
|
152
|
-
? OptionsSchema extends z.ZodType
|
|
153
|
-
? {
|
|
154
|
-
config: Config | null;
|
|
155
|
-
logger: Logger;
|
|
156
|
-
options: GlobalOptions;
|
|
157
|
-
args: z.infer<ArgsSchema>;
|
|
158
|
-
opts: z.infer<OptionsSchema>;
|
|
159
|
-
}
|
|
160
|
-
: {
|
|
161
|
-
config: Config | null;
|
|
162
|
-
logger: Logger;
|
|
163
|
-
options: GlobalOptions;
|
|
164
|
-
args: z.infer<ArgsSchema>;
|
|
165
|
-
}
|
|
166
|
-
: OptionsSchema extends z.ZodType
|
|
167
|
-
? {
|
|
168
|
-
config: Config | null;
|
|
169
|
-
logger: Logger;
|
|
170
|
-
options: GlobalOptions;
|
|
171
|
-
opts: z.infer<OptionsSchema>;
|
|
172
|
-
}
|
|
173
|
-
: {
|
|
174
|
-
config: Config | null;
|
|
175
|
-
logger: Logger;
|
|
176
|
-
options: GlobalOptions;
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
// Helper to create subcommands with proper type inference
|
|
224
|
+
R extends Requires | undefined = undefined,
|
|
225
|
+
O extends Optional | undefined = undefined,
|
|
226
|
+
A extends z.ZodType | undefined = undefined,
|
|
227
|
+
Op extends z.ZodType | undefined = undefined,
|
|
228
|
+
> = CommandContextFromSpecs<R, O, A, Op>;
|
|
229
|
+
|
|
180
230
|
export function createSubcommand<
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
231
|
+
R extends Requires | undefined = undefined,
|
|
232
|
+
O extends Optional | undefined = undefined,
|
|
233
|
+
A extends z.ZodType | undefined = undefined,
|
|
234
|
+
Op extends z.ZodType | undefined = undefined,
|
|
185
235
|
>(definition: {
|
|
186
236
|
name: string;
|
|
187
237
|
description: string;
|
|
238
|
+
banner?: true;
|
|
188
239
|
aliases?: string[];
|
|
189
240
|
toplevel?: boolean;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
schema?:
|
|
193
|
-
?
|
|
194
|
-
? { args:
|
|
195
|
-
: { args:
|
|
196
|
-
:
|
|
197
|
-
? { options:
|
|
241
|
+
requires?: R;
|
|
242
|
+
optional?: O;
|
|
243
|
+
schema?: A extends z.ZodType
|
|
244
|
+
? Op extends z.ZodType
|
|
245
|
+
? { args: A; options: Op }
|
|
246
|
+
: { args: A }
|
|
247
|
+
: Op extends z.ZodType
|
|
248
|
+
? { options: Op }
|
|
198
249
|
: never;
|
|
199
|
-
handler(
|
|
200
|
-
ctx: CommandContext<
|
|
201
|
-
TRequiresAuth extends true
|
|
202
|
-
? true
|
|
203
|
-
: TOptionalAuth extends true | string
|
|
204
|
-
? 'optional'
|
|
205
|
-
: false,
|
|
206
|
-
TArgsSchema,
|
|
207
|
-
TOptionsSchema
|
|
208
|
-
>
|
|
209
|
-
): void | Promise<void>;
|
|
250
|
+
handler(ctx: CommandContext<R, O, A, Op>): void | Promise<void>;
|
|
210
251
|
}): SubcommandDefinition {
|
|
211
252
|
return definition as unknown as SubcommandDefinition;
|
|
212
253
|
}
|
|
213
254
|
|
|
214
|
-
// Helper to create commands with proper type inference
|
|
215
255
|
export function createCommand<
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
256
|
+
R extends Requires | undefined = undefined,
|
|
257
|
+
O extends Optional | undefined = undefined,
|
|
258
|
+
A extends z.ZodType | undefined = undefined,
|
|
259
|
+
Op extends z.ZodType | undefined = undefined,
|
|
220
260
|
>(definition: {
|
|
221
261
|
name: string;
|
|
222
262
|
description: string;
|
|
263
|
+
banner?: true;
|
|
223
264
|
aliases?: string[];
|
|
224
265
|
hidden?: boolean;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
schema?:
|
|
228
|
-
?
|
|
229
|
-
? { args:
|
|
230
|
-
: { args:
|
|
231
|
-
:
|
|
232
|
-
? { options:
|
|
266
|
+
requires?: R;
|
|
267
|
+
optional?: O;
|
|
268
|
+
schema?: A extends z.ZodType
|
|
269
|
+
? Op extends z.ZodType
|
|
270
|
+
? { args: A; options: Op }
|
|
271
|
+
: { args: A }
|
|
272
|
+
: Op extends z.ZodType
|
|
273
|
+
? { options: Op }
|
|
233
274
|
: never;
|
|
234
|
-
handler?(
|
|
235
|
-
ctx: CommandContext<
|
|
236
|
-
TRequiresAuth extends true
|
|
237
|
-
? true
|
|
238
|
-
: TOptionalAuth extends true | string
|
|
239
|
-
? 'optional'
|
|
240
|
-
: false,
|
|
241
|
-
TArgsSchema,
|
|
242
|
-
TOptionsSchema
|
|
243
|
-
>
|
|
244
|
-
): void | Promise<void>;
|
|
275
|
+
handler?(ctx: CommandContext<R, O, A, Op>): void | Promise<void>;
|
|
245
276
|
subcommands?: SubcommandDefinition[];
|
|
246
277
|
}): CommandDefinition {
|
|
247
278
|
return definition as unknown as CommandDefinition;
|
|
248
279
|
}
|
|
249
280
|
|
|
250
|
-
|
|
251
|
-
export type SubcommandDefinition =
|
|
252
|
-
| {
|
|
253
|
-
name: string;
|
|
254
|
-
description: string;
|
|
255
|
-
aliases?: string[];
|
|
256
|
-
toplevel?: boolean;
|
|
257
|
-
requiresAuth: true;
|
|
258
|
-
optionalAuth?: false | string;
|
|
259
|
-
schema?: CommandSchemas;
|
|
260
|
-
handler(ctx: CommandContext): void | Promise<void>;
|
|
261
|
-
}
|
|
281
|
+
type CommandDefBase =
|
|
262
282
|
| {
|
|
263
283
|
name: string;
|
|
264
284
|
description: string;
|
|
265
285
|
aliases?: string[];
|
|
266
|
-
|
|
267
|
-
requiresAuth?: false;
|
|
268
|
-
optionalAuth: true | string;
|
|
286
|
+
banner?: boolean;
|
|
269
287
|
schema?: CommandSchemas;
|
|
270
288
|
handler(ctx: CommandContext): void | Promise<void>;
|
|
289
|
+
subcommands?: SubcommandDefinition[];
|
|
271
290
|
}
|
|
272
291
|
| {
|
|
273
292
|
name: string;
|
|
274
293
|
description: string;
|
|
275
294
|
aliases?: string[];
|
|
276
|
-
|
|
277
|
-
requiresAuth?: false;
|
|
278
|
-
optionalAuth?: false;
|
|
295
|
+
banner?: boolean;
|
|
279
296
|
schema?: CommandSchemas;
|
|
280
|
-
handler
|
|
297
|
+
handler?: undefined;
|
|
298
|
+
subcommands: SubcommandDefinition[];
|
|
281
299
|
};
|
|
282
300
|
|
|
283
|
-
|
|
284
|
-
export type CommandDefinition =
|
|
301
|
+
type SubcommandDefBase =
|
|
285
302
|
| {
|
|
286
303
|
name: string;
|
|
287
304
|
description: string;
|
|
288
305
|
aliases?: string[];
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
optionalAuth?: false | string;
|
|
292
|
-
schema?: CommandSchemas;
|
|
293
|
-
handler?(ctx: CommandContext): void | Promise<void>;
|
|
294
|
-
subcommands?: SubcommandDefinition[];
|
|
295
|
-
}
|
|
296
|
-
| {
|
|
297
|
-
name: string;
|
|
298
|
-
description: string;
|
|
299
|
-
aliases?: string[];
|
|
300
|
-
hidden?: boolean;
|
|
301
|
-
requiresAuth?: false;
|
|
302
|
-
optionalAuth: true | string;
|
|
306
|
+
toplevel?: boolean;
|
|
307
|
+
banner?: boolean;
|
|
303
308
|
schema?: CommandSchemas;
|
|
304
|
-
handler
|
|
309
|
+
handler(ctx: CommandContext): void | Promise<void>;
|
|
305
310
|
subcommands?: SubcommandDefinition[];
|
|
306
311
|
}
|
|
307
312
|
| {
|
|
308
313
|
name: string;
|
|
309
314
|
description: string;
|
|
310
315
|
aliases?: string[];
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
optionalAuth?: false;
|
|
316
|
+
toplevel?: boolean;
|
|
317
|
+
banner?: boolean;
|
|
314
318
|
schema?: CommandSchemas;
|
|
315
|
-
handler
|
|
316
|
-
subcommands
|
|
319
|
+
handler?: undefined;
|
|
320
|
+
subcommands: SubcommandDefinition[];
|
|
317
321
|
};
|
|
318
322
|
|
|
323
|
+
export type CommandDefinition =
|
|
324
|
+
| (CommandDefBase & {
|
|
325
|
+
hidden?: boolean;
|
|
326
|
+
requires: Requires & { auth: true };
|
|
327
|
+
optional?: Optional & { auth?: never };
|
|
328
|
+
})
|
|
329
|
+
| (CommandDefBase & {
|
|
330
|
+
hidden?: boolean;
|
|
331
|
+
requires?: Requires & { auth?: never };
|
|
332
|
+
optional: Optional & { auth: true | string };
|
|
333
|
+
})
|
|
334
|
+
| (CommandDefBase & {
|
|
335
|
+
hidden?: boolean;
|
|
336
|
+
requires?: Requires & { auth?: never };
|
|
337
|
+
optional?: Optional & { auth?: never };
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
export type SubcommandDefinition =
|
|
341
|
+
| (SubcommandDefBase & {
|
|
342
|
+
requires: Requires & { auth: true };
|
|
343
|
+
optional?: Optional & { auth?: never };
|
|
344
|
+
})
|
|
345
|
+
| (SubcommandDefBase & {
|
|
346
|
+
requires?: Requires & { auth?: never };
|
|
347
|
+
optional: Optional & { auth: true | string };
|
|
348
|
+
})
|
|
349
|
+
| (SubcommandDefBase & {
|
|
350
|
+
requires?: Requires & { auth?: never };
|
|
351
|
+
optional?: Optional & { auth?: never };
|
|
352
|
+
});
|
|
353
|
+
|
|
319
354
|
export const ProjectSchema = zod.object({
|
|
320
355
|
projectId: zod.string().describe('the project id'),
|
|
321
356
|
orgId: zod.string().describe('the organization id'),
|
|
357
|
+
deployment: Deployment.optional().describe('the deployment configuration'),
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
const FileFields = {
|
|
361
|
+
filename: zod.string().describe('the relative path for the file'),
|
|
362
|
+
version: zod.string().describe('the SHA256 content of the file'),
|
|
363
|
+
identifier: zod.string().describe('the folder for the file'),
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
const BaseAgentFields = {
|
|
367
|
+
...FileFields,
|
|
368
|
+
id: zod.string().describe('the unique calculated id for the agent'),
|
|
369
|
+
name: zod.string().describe('the name of the agent'),
|
|
370
|
+
description: zod.string().optional().describe('the agent description'),
|
|
371
|
+
evals: zod
|
|
372
|
+
.array(
|
|
373
|
+
zod.object({
|
|
374
|
+
...FileFields,
|
|
375
|
+
name: zod.string().describe('the name of the eval'),
|
|
376
|
+
description: zod.string().optional().describe('the eval description'),
|
|
377
|
+
})
|
|
378
|
+
)
|
|
379
|
+
.optional()
|
|
380
|
+
.describe('the evals for the agent'),
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
const AgentSchema = zod.object({
|
|
384
|
+
...BaseAgentFields,
|
|
385
|
+
subagents: zod.array(zod.object(BaseAgentFields)).optional().describe('subagents of this agent'),
|
|
322
386
|
});
|
|
323
387
|
|
|
324
388
|
export const BuildMetadataSchema = zod.object({
|
|
@@ -336,16 +400,42 @@ export const BuildMetadataSchema = zod.object({
|
|
|
336
400
|
.describe('type specific configuration'),
|
|
337
401
|
})
|
|
338
402
|
),
|
|
339
|
-
agents: zod.array(
|
|
403
|
+
agents: zod.array(AgentSchema),
|
|
404
|
+
assets: zod.array(
|
|
340
405
|
zod.object({
|
|
341
|
-
id: zod.string().describe('the unique calculated id for the route'),
|
|
342
406
|
filename: zod.string().describe('the relative path for the file'),
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
description: zod.string().optional().describe('the agent description'),
|
|
407
|
+
kind: zod.string().describe('the type of asset'),
|
|
408
|
+
contentType: zod.string().describe('the content-type for the file'),
|
|
409
|
+
size: zod.number().describe('the size in bytes for the file'),
|
|
347
410
|
})
|
|
348
411
|
),
|
|
412
|
+
project: zod.object({
|
|
413
|
+
id: zod.string().describe('the project id'),
|
|
414
|
+
name: zod.string().describe('the name of the project (from package.json)'),
|
|
415
|
+
version: zod.string().optional().describe('the version of the project (from package.json)'),
|
|
416
|
+
}),
|
|
417
|
+
deployment: zod.object({
|
|
418
|
+
id: zod.string().describe('the deployment id'),
|
|
419
|
+
date: zod.string().describe('the date the deployment was created in UTC format'),
|
|
420
|
+
git: zod
|
|
421
|
+
.object({
|
|
422
|
+
repo: zod.string().optional().describe('the repository name'),
|
|
423
|
+
commit: zod.string().optional().describe('the git commit sha'),
|
|
424
|
+
message: zod.string().optional().describe('the git commit message'),
|
|
425
|
+
branch: zod.string().optional().describe('the git branch'),
|
|
426
|
+
tags: zod.array(zod.string()).optional().describe('the tags for the current branch'),
|
|
427
|
+
pr: zod.string().optional().describe('the pull request number'),
|
|
428
|
+
})
|
|
429
|
+
.optional()
|
|
430
|
+
.describe('git commit information'),
|
|
431
|
+
build: zod.object({
|
|
432
|
+
bun: zod.string().describe('the version of bun that was used to build the deployment'),
|
|
433
|
+
agentuity: zod.string().describe('the version of the agentuity runtime'),
|
|
434
|
+
arch: zod.string().describe('the machine architecture'),
|
|
435
|
+
platform: zod.string().describe('the machine os platform'),
|
|
436
|
+
}),
|
|
437
|
+
}),
|
|
349
438
|
});
|
|
350
439
|
|
|
351
440
|
export type BuildMetadata = zod.infer<typeof BuildMetadataSchema>;
|
|
441
|
+
export type Project = zod.infer<typeof ProjectSchema>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects if a file path represents a subagent based on path structure.
|
|
3
|
+
*
|
|
4
|
+
* Subagents follow the pattern: agents/parent/child/agent.ts or agents/parent/child/route.ts
|
|
5
|
+
* The path structure is currently hardcoded to 4 segments but could be made configurable later.
|
|
6
|
+
*
|
|
7
|
+
* @param filePath - The file path to analyze (can include leading './')
|
|
8
|
+
* @param srcDir - Optional source directory to strip from the path
|
|
9
|
+
* @returns Object with isSubagent flag and parentName if detected
|
|
10
|
+
*/
|
|
11
|
+
export function detectSubagent(
|
|
12
|
+
filePath: string,
|
|
13
|
+
srcDir?: string
|
|
14
|
+
): { isSubagent: boolean; parentName: string | null } {
|
|
15
|
+
let normalizedPath = filePath;
|
|
16
|
+
|
|
17
|
+
// Strip srcDir if provided
|
|
18
|
+
if (srcDir && normalizedPath.startsWith(srcDir)) {
|
|
19
|
+
normalizedPath = normalizedPath.replace(srcDir, '');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Strip leading './' and split into parts, filtering out empty segments
|
|
23
|
+
const pathParts = normalizedPath.replace(/^\.\//, '').split('/').filter(Boolean);
|
|
24
|
+
|
|
25
|
+
// Path structure assumption: ['agents', 'parent', 'child', 'agent.ts' | 'route.ts' | 'route']
|
|
26
|
+
// Currently hardcoded to 4 segments - consider making configurable in the future
|
|
27
|
+
const isSubagent = pathParts.length === 4 && pathParts[0] === 'agents';
|
|
28
|
+
const parentName = isSubagent ? pathParts[1] : null;
|
|
29
|
+
|
|
30
|
+
return { isSubagent, parentName };
|
|
31
|
+
}
|
package/src/utils/zip.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { relative } from 'node:path';
|
|
2
|
+
import { Glob } from 'bun';
|
|
3
|
+
import AdmZip from 'adm-zip';
|
|
4
|
+
|
|
5
|
+
interface Options {
|
|
6
|
+
progress?: (val: number) => void;
|
|
7
|
+
filter?: (filename: string, relative: string) => boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export async function zipDir(dir: string, outdir: string, options?: Options) {
|
|
11
|
+
const zip = new AdmZip();
|
|
12
|
+
const files = await Array.fromAsync(new Glob('**').scan({ cwd: dir, absolute: true }));
|
|
13
|
+
const total = files.length;
|
|
14
|
+
let count = 0;
|
|
15
|
+
for (const file of files) {
|
|
16
|
+
const rel = relative(dir, file);
|
|
17
|
+
let skip = false;
|
|
18
|
+
if (options?.filter) {
|
|
19
|
+
if (!options.filter(file, rel)) {
|
|
20
|
+
skip = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (!skip) {
|
|
24
|
+
zip.addLocalFile(file, undefined, rel);
|
|
25
|
+
}
|
|
26
|
+
count++;
|
|
27
|
+
if (options?.progress) {
|
|
28
|
+
const progress = Math.floor((count / total) * 100);
|
|
29
|
+
options.progress(progress);
|
|
30
|
+
await Bun.sleep(10); // give some time for the progress bar to render
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
await zip.writeZip(outdir);
|
|
34
|
+
if (options?.progress) {
|
|
35
|
+
options.progress(100);
|
|
36
|
+
await Bun.sleep(100); // give some time for the progress bar to render
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-user.d.ts","sourceRoot":"","sources":["../../../src/cmd/example/create-user.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,sCAkC/B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cmd/example/create.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,sCA2BxB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cmd/example/deploy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,sCAgC3B,CAAC"}
|