@agentuity/cli 0.0.55 → 0.0.57
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/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -2
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/schema/generate.d.ts +3 -0
- package/dist/cmd/ai/schema/generate.d.ts.map +1 -0
- package/dist/cmd/ai/schema/generate.js +50 -0
- package/dist/cmd/ai/schema/generate.js.map +1 -0
- package/dist/cmd/ai/schema/index.d.ts.map +1 -1
- package/dist/cmd/ai/schema/index.js +2 -1
- package/dist/cmd/ai/schema/index.js.map +1 -1
- package/dist/cmd/build/ast.d.ts +4 -10
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +110 -91
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/ast.test.js +135 -370
- package/dist/cmd/build/ast.test.js.map +1 -1
- package/dist/cmd/build/bundler.d.ts +25 -2
- package/dist/cmd/build/bundler.d.ts.map +1 -1
- package/dist/cmd/build/bundler.js +138 -43
- package/dist/cmd/build/bundler.js.map +1 -1
- package/dist/cmd/build/plugin.d.ts.map +1 -1
- package/dist/cmd/build/plugin.js +16 -8
- package/dist/cmd/build/plugin.js.map +1 -1
- package/dist/cmd/build/workbench-templates.d.ts +4 -0
- package/dist/cmd/build/workbench-templates.d.ts.map +1 -0
- package/dist/cmd/build/workbench-templates.js +49 -0
- package/dist/cmd/build/workbench-templates.js.map +1 -0
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +11 -3
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/deployment/show.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/show.js +73 -20
- package/dist/cmd/cloud/deployment/show.js.map +1 -1
- package/dist/cmd/cloud/session/get.d.ts.map +1 -1
- package/dist/cmd/cloud/session/get.js +77 -17
- package/dist/cmd/cloud/session/get.js.map +1 -1
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +2 -0
- package/dist/cmd/index.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +1 -0
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/config.d.ts +27 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -3
- package/dist/config.js.map +1 -1
- package/dist/schema-generator.d.ts +1 -1
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-parser.d.ts +2 -1
- package/dist/schema-parser.d.ts.map +1 -1
- package/dist/schema-parser.js +18 -2
- package/dist/schema-parser.js.map +1 -1
- package/dist/steps.d.ts +2 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +26 -3
- package/dist/steps.js.map +1 -1
- package/dist/types.d.ts +39 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -75
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
- package/src/cli.ts +49 -2
- package/src/cmd/ai/schema/generate.ts +64 -0
- package/src/cmd/ai/schema/index.ts +2 -1
- package/src/cmd/build/ast.test.ts +157 -549
- package/src/cmd/build/ast.ts +130 -116
- package/src/cmd/build/bundler.ts +157 -42
- package/src/cmd/build/plugin.ts +18 -9
- package/src/cmd/build/workbench-templates.ts +52 -0
- package/src/cmd/cloud/deploy.ts +11 -3
- package/src/cmd/cloud/deployment/show.ts +60 -17
- package/src/cmd/cloud/session/get.ts +91 -19
- package/src/cmd/index.ts +2 -0
- package/src/cmd/project/template-flow.ts +1 -0
- package/src/config.ts +44 -5
- package/src/schema-generator.ts +1 -1
- package/src/schema-parser.ts +19 -4
- package/src/steps.ts +27 -4
- package/src/types.ts +5 -84
package/dist/types.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Deployment } from '@agentuity/server';
|
|
1
|
+
import { Deployment, BuildMetadataSchema as ServerBuildMetadataSchema } from '@agentuity/server';
|
|
2
2
|
import { z as zod } from 'zod';
|
|
3
|
+
export { Deployment };
|
|
3
4
|
export const ConfigSchema = zod.object({
|
|
4
5
|
name: zod.string().describe('Profile name'),
|
|
5
6
|
auth: zod
|
|
@@ -84,80 +85,8 @@ export function createCommand(definition) {
|
|
|
84
85
|
export const ProjectSchema = zod.object({
|
|
85
86
|
projectId: zod.string().describe('the project id'),
|
|
86
87
|
orgId: zod.string().describe('the organization id'),
|
|
88
|
+
region: zod.string().describe('the region identifier that the project is deployed into'),
|
|
87
89
|
deployment: Deployment.optional().describe('the deployment configuration'),
|
|
88
90
|
});
|
|
89
|
-
const
|
|
90
|
-
filename: zod.string().describe('the relative path for the file'),
|
|
91
|
-
version: zod.string().describe('the SHA256 content of the file'),
|
|
92
|
-
identifier: zod.string().describe('the folder for the file'),
|
|
93
|
-
};
|
|
94
|
-
const EvalSchema = zod.object({
|
|
95
|
-
...FileFields,
|
|
96
|
-
id: zod.string().describe('the unique calculated id for the eval'),
|
|
97
|
-
evalId: zod.string().describe('the unique id for eval for the project across deployments'),
|
|
98
|
-
name: zod.string().describe('the name of the eval'),
|
|
99
|
-
description: zod.string().optional().describe('the eval description'),
|
|
100
|
-
agentIdentifier: zod.string().describe('the identifier of the agent'),
|
|
101
|
-
projectId: zod.string().describe('the project id'),
|
|
102
|
-
});
|
|
103
|
-
const BaseAgentFields = {
|
|
104
|
-
...FileFields,
|
|
105
|
-
id: zod.string().describe('the unique calculated id for the agent'),
|
|
106
|
-
agentId: zod.string().describe('the unique id for agent for the project across deployments'),
|
|
107
|
-
projectId: zod.string().describe('the project id'),
|
|
108
|
-
name: zod.string().describe('the name of the agent'),
|
|
109
|
-
description: zod.string().optional().describe('the agent description'),
|
|
110
|
-
evals: zod.array(EvalSchema).optional().describe('the evals for the agent'),
|
|
111
|
-
};
|
|
112
|
-
const AgentSchema = zod.object({
|
|
113
|
-
...BaseAgentFields,
|
|
114
|
-
subagents: zod.array(zod.object(BaseAgentFields)).optional().describe('subagents of this agent'),
|
|
115
|
-
});
|
|
116
|
-
export const BuildMetadataSchema = zod.object({
|
|
117
|
-
routes: zod.array(zod.object({
|
|
118
|
-
id: zod.string().describe('the unique calculated id for the route'),
|
|
119
|
-
filename: zod.string().describe('the relative path for the file'),
|
|
120
|
-
path: zod.string().describe('the route path'),
|
|
121
|
-
method: zod.enum(['get', 'post', 'put', 'delete', 'patch']).describe('the HTTP method'),
|
|
122
|
-
version: zod.string().describe('the SHA256 content of the file'),
|
|
123
|
-
type: zod.enum(['api', 'sms', 'email', 'cron', 'websocket', 'sse', 'stream']),
|
|
124
|
-
config: zod
|
|
125
|
-
.record(zod.string(), zod.unknown())
|
|
126
|
-
.optional()
|
|
127
|
-
.describe('type specific configuration'),
|
|
128
|
-
})),
|
|
129
|
-
agents: zod.array(AgentSchema),
|
|
130
|
-
assets: zod.array(zod.object({
|
|
131
|
-
filename: zod.string().describe('the relative path for the file'),
|
|
132
|
-
kind: zod.string().describe('the type of asset'),
|
|
133
|
-
contentType: zod.string().describe('the content-type for the file'),
|
|
134
|
-
size: zod.number().describe('the size in bytes for the file'),
|
|
135
|
-
})),
|
|
136
|
-
project: zod.object({
|
|
137
|
-
id: zod.string().describe('the project id'),
|
|
138
|
-
name: zod.string().describe('the name of the project (from package.json)'),
|
|
139
|
-
version: zod.string().optional().describe('the version of the project (from package.json)'),
|
|
140
|
-
}),
|
|
141
|
-
deployment: zod.object({
|
|
142
|
-
id: zod.string().describe('the deployment id'),
|
|
143
|
-
date: zod.string().describe('the date the deployment was created in UTC format'),
|
|
144
|
-
git: zod
|
|
145
|
-
.object({
|
|
146
|
-
repo: zod.string().optional().describe('the repository name'),
|
|
147
|
-
commit: zod.string().optional().describe('the git commit sha'),
|
|
148
|
-
message: zod.string().optional().describe('the git commit message'),
|
|
149
|
-
branch: zod.string().optional().describe('the git branch'),
|
|
150
|
-
tags: zod.array(zod.string()).optional().describe('the tags for the current branch'),
|
|
151
|
-
pr: zod.string().optional().describe('the pull request number'),
|
|
152
|
-
})
|
|
153
|
-
.optional()
|
|
154
|
-
.describe('git commit information'),
|
|
155
|
-
build: zod.object({
|
|
156
|
-
bun: zod.string().describe('the version of bun that was used to build the deployment'),
|
|
157
|
-
agentuity: zod.string().describe('the version of the agentuity runtime'),
|
|
158
|
-
arch: zod.string().describe('the machine architecture'),
|
|
159
|
-
platform: zod.string().describe('the machine os platform'),
|
|
160
|
-
}),
|
|
161
|
-
}),
|
|
162
|
-
});
|
|
91
|
+
export const BuildMetadataSchema = ServerBuildMetadataSchema;
|
|
163
92
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.57",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"prepublishOnly": "bun run clean && bun run build"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@agentuity/core": "0.0.
|
|
39
|
-
"@agentuity/server": "0.0.
|
|
38
|
+
"@agentuity/core": "0.0.57",
|
|
39
|
+
"@agentuity/server": "0.0.57",
|
|
40
40
|
"@terascope/fetch-github-release": "^2.2.1",
|
|
41
41
|
"acorn-loose": "^8.5.2",
|
|
42
42
|
"adm-zip": "^0.5.16",
|
package/src/cli.ts
CHANGED
|
@@ -420,6 +420,8 @@ async function registerSubcommand(
|
|
|
420
420
|
): Promise<void> {
|
|
421
421
|
const cmd = parent.command(subcommand.name, { hidden }).description(subcommand.description);
|
|
422
422
|
|
|
423
|
+
cmd.helpOption('-h, --help', 'Display help');
|
|
424
|
+
|
|
423
425
|
if (subcommand.aliases) {
|
|
424
426
|
cmd.aliases(subcommand.aliases);
|
|
425
427
|
}
|
|
@@ -492,9 +494,45 @@ async function registerSubcommand(
|
|
|
492
494
|
cmd.option(flagSpec, desc);
|
|
493
495
|
}
|
|
494
496
|
} else if (opt.type === 'number') {
|
|
495
|
-
|
|
497
|
+
const numDefault = opt.hasDefault
|
|
498
|
+
? typeof opt.defaultValue === 'function'
|
|
499
|
+
? opt.defaultValue()
|
|
500
|
+
: opt.defaultValue
|
|
501
|
+
: undefined;
|
|
502
|
+
const numDesc =
|
|
503
|
+
opt.hasDefault && numDefault !== undefined
|
|
504
|
+
? `${desc} (default: ${numDefault})`
|
|
505
|
+
: desc;
|
|
506
|
+
cmd.option(`${flagSpec} <${opt.name}>`, numDesc, parseFloat);
|
|
507
|
+
} else if (opt.type === 'array') {
|
|
508
|
+
const arrayDefault = opt.hasDefault
|
|
509
|
+
? typeof opt.defaultValue === 'function'
|
|
510
|
+
? opt.defaultValue()
|
|
511
|
+
: opt.defaultValue
|
|
512
|
+
: undefined;
|
|
513
|
+
const arrayDesc =
|
|
514
|
+
opt.hasDefault && Array.isArray(arrayDefault) && arrayDefault.length > 0
|
|
515
|
+
? `${desc} (default: ${JSON.stringify(arrayDefault)})`
|
|
516
|
+
: desc;
|
|
517
|
+
cmd.option(
|
|
518
|
+
`${flagSpec} <${opt.name}>`,
|
|
519
|
+
arrayDesc,
|
|
520
|
+
(value: string, previous: string[]) => (previous ?? []).concat([value])
|
|
521
|
+
);
|
|
496
522
|
} else {
|
|
497
|
-
|
|
523
|
+
const strDefault = opt.hasDefault
|
|
524
|
+
? typeof opt.defaultValue === 'function'
|
|
525
|
+
? opt.defaultValue()
|
|
526
|
+
: opt.defaultValue
|
|
527
|
+
: undefined;
|
|
528
|
+
let strDesc = desc;
|
|
529
|
+
if (opt.enumValues && opt.enumValues.length > 0) {
|
|
530
|
+
strDesc += ` (${opt.enumValues.join(', ')})`;
|
|
531
|
+
}
|
|
532
|
+
if (opt.hasDefault && strDefault !== undefined) {
|
|
533
|
+
strDesc += ` (default: ${JSON.stringify(strDefault)})`;
|
|
534
|
+
}
|
|
535
|
+
cmd.option(`${flagSpec} <${opt.name}>`, strDesc);
|
|
498
536
|
}
|
|
499
537
|
}
|
|
500
538
|
}
|
|
@@ -1001,10 +1039,19 @@ export async function registerCommands(
|
|
|
1001
1039
|
.command(cmdDef.name, { hidden: cmdDef.hidden })
|
|
1002
1040
|
.description(cmdDef.description);
|
|
1003
1041
|
|
|
1042
|
+
cmd.helpOption('-h, --help', 'Display help');
|
|
1043
|
+
|
|
1004
1044
|
if (cmdDef.aliases) {
|
|
1005
1045
|
cmd.aliases(cmdDef.aliases);
|
|
1006
1046
|
}
|
|
1007
1047
|
|
|
1048
|
+
// Add examples to help text
|
|
1049
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1050
|
+
const examples = (cmdDef as any).examples as string[] | undefined;
|
|
1051
|
+
if (examples && examples.length > 0) {
|
|
1052
|
+
cmd.addHelpText('after', '\nExamples:\n' + examples.map((ex) => ` ${ex}`).join('\n'));
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1008
1055
|
if (cmdDef.handler) {
|
|
1009
1056
|
cmd.action(async () => {
|
|
1010
1057
|
if (cmdDef.banner) {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand, type CommandContext } from '../../../types';
|
|
3
|
+
import { getCommand } from '../../../command-prefix';
|
|
4
|
+
import { ProjectSchema } from '../../../types';
|
|
5
|
+
|
|
6
|
+
interface MergedSchema {
|
|
7
|
+
type?: string;
|
|
8
|
+
properties?: Record<string, unknown>;
|
|
9
|
+
required?: string[];
|
|
10
|
+
additionalProperties?: boolean | Record<string, unknown>;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const generateSubcommand = createSubcommand({
|
|
15
|
+
name: 'generate',
|
|
16
|
+
description: 'Generate a JSON schema for the agentuity.json config file',
|
|
17
|
+
tags: ['read-only', 'fast'],
|
|
18
|
+
idempotent: true,
|
|
19
|
+
examples: [getCommand('schema generate')],
|
|
20
|
+
async handler(_ctx: CommandContext) {
|
|
21
|
+
const o = z.toJSONSchema(ProjectSchema);
|
|
22
|
+
const { $schema, allOf, ...rest } = o;
|
|
23
|
+
|
|
24
|
+
// Merge allOf schemas into a single schema
|
|
25
|
+
let mergedSchema: MergedSchema = { ...rest };
|
|
26
|
+
if (allOf && Array.isArray(allOf)) {
|
|
27
|
+
const properties: Record<string, unknown> = {};
|
|
28
|
+
const required: string[] = [];
|
|
29
|
+
|
|
30
|
+
for (const subSchema of allOf) {
|
|
31
|
+
if (subSchema.properties) {
|
|
32
|
+
Object.assign(properties, subSchema.properties);
|
|
33
|
+
}
|
|
34
|
+
if (subSchema.required && Array.isArray(subSchema.required)) {
|
|
35
|
+
required.push(...subSchema.required);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
mergedSchema = {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties,
|
|
42
|
+
required: [...new Set(required)],
|
|
43
|
+
additionalProperties: false,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!mergedSchema.properties) {
|
|
48
|
+
mergedSchema.properties = {};
|
|
49
|
+
}
|
|
50
|
+
mergedSchema.properties['$schema'] = {
|
|
51
|
+
type: 'string',
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const schema = {
|
|
55
|
+
$schema,
|
|
56
|
+
$id: 'https://agentuity.dev/schema/cli/v1/agentuity.json',
|
|
57
|
+
$comment: 'The agentuity.json configuration schema',
|
|
58
|
+
...mergedSchema,
|
|
59
|
+
};
|
|
60
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export default generateSubcommand;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { CommandDefinition } from '../../../types';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import { showSubcommand } from './show';
|
|
4
|
+
import { generateSubcommand } from './generate';
|
|
4
5
|
|
|
5
6
|
export const schemaCommand: CommandDefinition = createCommand({
|
|
6
7
|
name: 'schema',
|
|
7
8
|
description: 'Output CLI schema in machine-readable format',
|
|
8
9
|
tags: ['read-only', 'fast'],
|
|
9
|
-
subcommands: [showSubcommand],
|
|
10
|
+
subcommands: [showSubcommand, generateSubcommand],
|
|
10
11
|
});
|
|
11
12
|
|
|
12
13
|
export default schemaCommand;
|