@agentuity/cli 1.0.35 → 1.0.36
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/bin/cli.ts +43 -11
- package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -3
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +7 -5
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +9 -3
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.js +6 -3
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js +9 -3
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +3 -3
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.js +3 -1
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/search.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/search.js +6 -3
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +7 -5
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js +6 -3
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
- package/dist/cmd/cloud/region/index.d.ts.map +1 -1
- package/dist/cmd/cloud/region/index.js +3 -1
- package/dist/cmd/cloud/region/index.js.map +1 -1
- package/dist/cmd/cloud/region/list.d.ts +2 -0
- package/dist/cmd/cloud/region/list.d.ts.map +1 -0
- package/dist/cmd/cloud/region/list.js +55 -0
- package/dist/cmd/cloud/region/list.js.map +1 -0
- package/dist/cmd/cloud/task/create.d.ts.map +1 -1
- package/dist/cmd/cloud/task/create.js +19 -0
- package/dist/cmd/cloud/task/create.js.map +1 -1
- package/package.json +6 -6
- package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -3
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +7 -5
- package/src/cmd/cloud/keyvalue/delete.ts +9 -3
- package/src/cmd/cloud/keyvalue/get.ts +6 -3
- package/src/cmd/cloud/keyvalue/keys.ts +9 -3
- package/src/cmd/cloud/keyvalue/list-namespaces.ts +3 -3
- package/src/cmd/cloud/keyvalue/repl.ts +3 -1
- package/src/cmd/cloud/keyvalue/search.ts +6 -3
- package/src/cmd/cloud/keyvalue/set.ts +7 -5
- package/src/cmd/cloud/keyvalue/stats.ts +6 -3
- package/src/cmd/cloud/region/index.ts +3 -1
- package/src/cmd/cloud/region/list.ts +62 -0
- package/src/cmd/cloud/task/create.ts +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/region/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/region/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/region/list.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,cAAc,yCAkDzB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand } from '../../../types';
|
|
3
|
+
import { getCommand } from '../../../command-prefix';
|
|
4
|
+
import * as tui from '../../../tui';
|
|
5
|
+
const RegionSchema = z.object({
|
|
6
|
+
region: z.string().describe('Region code'),
|
|
7
|
+
description: z.string().describe('Human-readable region description'),
|
|
8
|
+
default: z.boolean().describe('Whether this is the default region'),
|
|
9
|
+
});
|
|
10
|
+
export const listSubcommand = createSubcommand({
|
|
11
|
+
name: 'list',
|
|
12
|
+
description: 'List available cloud regions',
|
|
13
|
+
aliases: ['ls'],
|
|
14
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
15
|
+
requires: { auth: true, regions: true },
|
|
16
|
+
idempotent: true,
|
|
17
|
+
examples: [
|
|
18
|
+
{ command: getCommand('cloud region list'), description: 'List all available regions' },
|
|
19
|
+
{
|
|
20
|
+
command: getCommand('cloud region ls'),
|
|
21
|
+
description: 'List all available regions (short alias)',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
command: getCommand('--json cloud region list'),
|
|
25
|
+
description: 'List regions in JSON format',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
schema: {
|
|
29
|
+
response: z.array(RegionSchema),
|
|
30
|
+
},
|
|
31
|
+
async handler(ctx) {
|
|
32
|
+
const { regions, options, config } = ctx;
|
|
33
|
+
const defaultRegion = config?.preferences?.region ?? null;
|
|
34
|
+
const result = regions.map((r) => ({
|
|
35
|
+
region: r.region,
|
|
36
|
+
description: r.description,
|
|
37
|
+
default: r.region === defaultRegion,
|
|
38
|
+
}));
|
|
39
|
+
if (!options.json) {
|
|
40
|
+
tui.info(`Regions (${regions.length})`);
|
|
41
|
+
const tableData = regions.map((r) => ({
|
|
42
|
+
Code: r.region,
|
|
43
|
+
Description: r.description,
|
|
44
|
+
Default: r.region === defaultRegion ? 'Yes' : '',
|
|
45
|
+
}));
|
|
46
|
+
tui.table(tableData, [
|
|
47
|
+
{ name: 'Code', alignment: 'left' },
|
|
48
|
+
{ name: 'Description', alignment: 'left' },
|
|
49
|
+
{ name: 'Default', alignment: 'center' },
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/region/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,8BAA8B;IAC3C,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC;IAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACvF;YACC,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC;YACtC,WAAW,EAAE,0CAA0C;SACvD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,0BAA0B,CAAC;YAC/C,WAAW,EAAE,6BAA6B;SAC1C;KACD;IACD,MAAM,EAAE;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;KAC/B;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;QAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,aAAa;SACnC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAExC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,CAAC,CAAC,MAAM;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAChD,CAAC,CAAC,CAAC;YAEJ,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;gBACnC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE;aACxC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/task/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/task/create.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,gBAAgB,sCAkP3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -16,6 +16,10 @@ const TaskCreateResponseSchema = z.object({
|
|
|
16
16
|
status: z.string().describe('Task status'),
|
|
17
17
|
priority: z.string().describe('Task priority'),
|
|
18
18
|
created_at: z.string().describe('Creation timestamp'),
|
|
19
|
+
tags: z
|
|
20
|
+
.array(z.object({ id: z.string(), name: z.string() }))
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Tags attached to the task'),
|
|
19
23
|
}),
|
|
20
24
|
attachment: z
|
|
21
25
|
.object({
|
|
@@ -42,6 +46,10 @@ export const createSubcommand = createCommand({
|
|
|
42
46
|
command: getCommand('cloud task create "Add dark mode" --type feature --created-id agent_001 --priority high --description "Implement dark mode toggle"'),
|
|
43
47
|
description: 'Create a feature with priority and description',
|
|
44
48
|
},
|
|
49
|
+
{
|
|
50
|
+
command: getCommand('cloud task create "Fix login bug" --type bug --tag sandbox --tag regression'),
|
|
51
|
+
description: 'Create a task with tags (auto-creates tags that do not exist)',
|
|
52
|
+
},
|
|
45
53
|
{
|
|
46
54
|
command: getCommand('cloud task create "Q1 Planning" --type epic --created-id agent_001 --metadata \'{"team":"engineering"}\''),
|
|
47
55
|
description: 'Create an epic with metadata',
|
|
@@ -83,6 +91,10 @@ export const createSubcommand = createCommand({
|
|
|
83
91
|
.describe('initial task status (default: open)'),
|
|
84
92
|
parentId: z.string().optional().describe('parent task ID for subtasks'),
|
|
85
93
|
assignedId: z.string().optional().describe('ID of the assigned agent or user'),
|
|
94
|
+
tag: z
|
|
95
|
+
.array(z.string())
|
|
96
|
+
.optional()
|
|
97
|
+
.describe('tag name to attach (repeatable, auto-creates missing tags)'),
|
|
86
98
|
metadata: z.string().optional().describe('JSON metadata object'),
|
|
87
99
|
file: z.string().optional().describe('file path to attach to the task'),
|
|
88
100
|
}),
|
|
@@ -165,6 +177,7 @@ export const createSubcommand = createCommand({
|
|
|
165
177
|
status: opts.status,
|
|
166
178
|
parent_id: opts.parentId,
|
|
167
179
|
assigned_id: opts.assignedId,
|
|
180
|
+
tag_ids: opts.tag,
|
|
168
181
|
metadata,
|
|
169
182
|
});
|
|
170
183
|
await cacheTaskId(ctx, task.id);
|
|
@@ -210,6 +223,9 @@ export const createSubcommand = createCommand({
|
|
|
210
223
|
if (task.description) {
|
|
211
224
|
tableData['Description'] = task.description;
|
|
212
225
|
}
|
|
226
|
+
if (task.tags?.length) {
|
|
227
|
+
tableData['Tags'] = task.tags.map((t) => t.name).join(', ');
|
|
228
|
+
}
|
|
213
229
|
if (project) {
|
|
214
230
|
tableData['Project'] = project.name;
|
|
215
231
|
}
|
|
@@ -227,6 +243,9 @@ export const createSubcommand = createCommand({
|
|
|
227
243
|
status: task.status,
|
|
228
244
|
priority: task.priority,
|
|
229
245
|
created_at: task.created_at,
|
|
246
|
+
...(task.tags?.length
|
|
247
|
+
? { tags: task.tags.map((t) => ({ id: t.id, name: t.name })) }
|
|
248
|
+
: {}),
|
|
230
249
|
},
|
|
231
250
|
...(attachmentInfo ? { attachment: attachmentInfo } : {}),
|
|
232
251
|
durationMs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/task/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/task/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACrD,IAAI,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aACrD,QAAQ,EAAE;aACV,QAAQ,CAAC,2BAA2B,CAAC;KACvC,CAAC;IACF,UAAU,EAAE,CAAC;SACX,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAClD,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACtD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC7C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,WAAW,EAAE,mBAAmB;IAChC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC;IAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IACzC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3B,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,qEAAqE,CAAC;YAC1F,WAAW,EAAE,mBAAmB;SAChC;QACD;YACC,OAAO,EAAE,UAAU,CAClB,oIAAoI,CACpI;YACD,WAAW,EAAE,gDAAgD;SAC7D;QACD;YACC,OAAO,EAAE,UAAU,CAClB,6EAA6E,CAC7E;YACD,WAAW,EAAE,+DAA+D;SAC5E;QACD;YACC,OAAO,EAAE,UAAU,CAClB,0GAA0G,CAC1G;YACD,WAAW,EAAE,8BAA8B;SAC3C;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACnD,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YACzF,SAAS,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACnF,WAAW,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACtE,WAAW,EAAE,CAAC;iBACZ,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CAAC,mEAAmE,CAAC;YAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAClF,WAAW,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/D,QAAQ,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,QAAQ,CAAC,+BAA+B,CAAC;YAC3C,MAAM,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;iBAC5D,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;YACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YAC9E,GAAG,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SACvE,CAAC;QACF,QAAQ,EAAE,wBAAwB;KAClC;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElD,uBAAuB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACpD,MAAM,WAAW,GAAI,IAAI,CAAC,WAAwB,IAAI,OAAO,CAAC;QAC9D,IAAI,OAAkE,CAAC;QACvE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,2EAA2E;YAC3E,OAAO,GAAG;gBACT,EAAE,EAAE,IAAI,CAAC,SAAS;gBAClB,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS;gBACxC,IAAI,EAAE,WAAW;aACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACP,2EAA2E;YAC3E,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,kBAAkB,CAAC;YAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3E,IAAI,IAAI,EAAE,CAAC;oBACV,OAAO,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACtD,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,2BAA2B;gBAC3B,IAAI,CAAC;oBACJ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACzC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvE,IAAI,IAAI,EAAE,CAAC;wBACV,OAAO,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;oBACtD,CAAC;oBACD,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1E,CAAC;gBAAC,MAAM,CAAC;oBACR,kEAAkE;gBACnE,CAAC;YACF,CAAC;QACF,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAiD,CAAC;QACtD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,6BAA6B;YAC7B,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YACnC,iEAAiE;YACjE,IAAI,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBACd,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;oBACxB,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,iCAAiC;YAClC,CAAC;YACD,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAgB;YAC3B,UAAU,EAAE,SAAS;YACrB,OAAO;YACP,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAwB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAoB;YACjC,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,QAAQ;SACR,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,cAA4D,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC5B,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE;gBACvD,QAAQ;gBACR,YAAY,EAAE,WAAW;gBACzB,IAAI;aACJ,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;gBACzD,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACnB,OAAO,EAAE;oBACR,cAAc,EAAE,WAAW;iBAC3B;gBACD,MAAM,EAAE,MAAM;aACd,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACxB,GAAG,CAAC,KAAK,CAAC,6BAA6B,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1E,cAAc,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAExC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,SAAS,GAA2B;gBACzC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;aACnD,CAAC;YAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7C,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvB,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACb,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACpB,SAAS,CAAC,YAAY,CAAC,GAAG,GAAG,cAAc,CAAC,QAAQ,KAAK,cAAc,CAAC,EAAE,GAAG,CAAC;YAC/E,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;oBACpB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;oBAC9D,CAAC,CAAC,EAAE,CAAC;aACN;YACD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,UAAU;SACV,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.36",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"prepublishOnly": "bun run clean && bun run build"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@agentuity/auth": "1.0.
|
|
45
|
-
"@agentuity/core": "1.0.
|
|
46
|
-
"@agentuity/server": "1.0.
|
|
44
|
+
"@agentuity/auth": "1.0.36",
|
|
45
|
+
"@agentuity/core": "1.0.36",
|
|
46
|
+
"@agentuity/server": "1.0.36",
|
|
47
47
|
"@datasert/cronjs-parser": "^1.4.0",
|
|
48
48
|
"@vitejs/plugin-react": "^5.1.2",
|
|
49
49
|
"acorn-loose": "^8.5.2",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"typescript": "^5.9.0",
|
|
61
61
|
"vite": "^7.2.7",
|
|
62
62
|
"zod": "^4.3.5",
|
|
63
|
-
"@agentuity/frontend": "1.0.
|
|
63
|
+
"@agentuity/frontend": "1.0.36"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@agentuity/test-utils": "1.0.
|
|
66
|
+
"@agentuity/test-utils": "1.0.36",
|
|
67
67
|
"@types/adm-zip": "^0.5.7",
|
|
68
68
|
"@types/bun": "latest",
|
|
69
69
|
"@types/tar-fs": "^2.0.4",
|
|
@@ -13,14 +13,14 @@ export const createNamespaceSubcommand = createCommand({
|
|
|
13
13
|
optional: { project: true },
|
|
14
14
|
examples: [
|
|
15
15
|
{
|
|
16
|
-
command: getCommand('kv create-namespace production'),
|
|
16
|
+
command: getCommand('cloud kv create-namespace production'),
|
|
17
17
|
description: 'Create production namespace',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
command: getCommand('kv create staging'),
|
|
20
|
+
command: getCommand('cloud kv create staging'),
|
|
21
21
|
description: 'Create staging namespace (using alias)',
|
|
22
22
|
},
|
|
23
|
-
{ command: getCommand('kv create cache'), description: 'Create cache namespace' },
|
|
23
|
+
{ command: getCommand('cloud kv create cache'), description: 'Create cache namespace' },
|
|
24
24
|
],
|
|
25
25
|
schema: {
|
|
26
26
|
args: z.object({
|
|
@@ -14,21 +14,23 @@ export const deleteNamespaceSubcommand = createCommand({
|
|
|
14
14
|
optional: { project: true },
|
|
15
15
|
examples: [
|
|
16
16
|
{
|
|
17
|
-
command: getCommand('kv delete-namespace staging'),
|
|
17
|
+
command: getCommand('cloud kv delete-namespace staging'),
|
|
18
18
|
description: 'Delete staging namespace (interactive)',
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
|
-
command: getCommand('kv rm-namespace cache --confirm'),
|
|
21
|
+
command: getCommand('cloud kv rm-namespace cache --confirm'),
|
|
22
22
|
description: 'Delete cache without confirmation',
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
command: getCommand('kv delete-namespace production --confirm'),
|
|
25
|
+
command: getCommand('cloud kv delete-namespace production --confirm'),
|
|
26
26
|
description: 'Force delete production',
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
29
|
schema: {
|
|
30
30
|
args: z.object({
|
|
31
31
|
name: z.string().min(1).max(64).describe('the namespace name'),
|
|
32
|
+
}),
|
|
33
|
+
options: z.object({
|
|
32
34
|
confirm: z
|
|
33
35
|
.boolean()
|
|
34
36
|
.optional()
|
|
@@ -43,10 +45,10 @@ export const deleteNamespaceSubcommand = createCommand({
|
|
|
43
45
|
},
|
|
44
46
|
|
|
45
47
|
async handler(ctx) {
|
|
46
|
-
const { args } = ctx;
|
|
48
|
+
const { args, opts } = ctx;
|
|
47
49
|
const kv = await createStorageAdapter(ctx);
|
|
48
50
|
|
|
49
|
-
if (!
|
|
51
|
+
if (!opts?.confirm) {
|
|
50
52
|
if (!process.stdin.isTTY) {
|
|
51
53
|
tui.fatal(
|
|
52
54
|
'No TTY and --confirm is not set. Refusing to delete',
|
|
@@ -19,10 +19,16 @@ export const deleteSubcommand = createCommand({
|
|
|
19
19
|
requires: { auth: true, region: true },
|
|
20
20
|
optional: { project: true },
|
|
21
21
|
examples: [
|
|
22
|
-
{ command: getCommand('kv delete production user:123'), description: 'Delete user data' },
|
|
23
|
-
{ command: getCommand('kv delete cache session:abc'), description: 'Delete cached session' },
|
|
24
22
|
{
|
|
25
|
-
command: getCommand('kv
|
|
23
|
+
command: getCommand('cloud kv delete production user:123'),
|
|
24
|
+
description: 'Delete user data',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
command: getCommand('cloud kv delete cache session:abc'),
|
|
28
|
+
description: 'Delete cached session',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
command: getCommand('cloud kv rm staging cache:homepage'),
|
|
26
32
|
description: 'Delete homepage cache (using alias)',
|
|
27
33
|
},
|
|
28
34
|
],
|
|
@@ -18,9 +18,12 @@ export const getSubcommand = createCommand({
|
|
|
18
18
|
requires: { auth: true, region: true },
|
|
19
19
|
optional: { project: true },
|
|
20
20
|
examples: [
|
|
21
|
-
{ command: getCommand('kv get production user:123'), description: 'Get user data' },
|
|
22
|
-
{ command: getCommand('kv get cache session:abc'), description: 'Get cached session' },
|
|
23
|
-
{
|
|
21
|
+
{ command: getCommand('cloud kv get production user:123'), description: 'Get user data' },
|
|
22
|
+
{ command: getCommand('cloud kv get cache session:abc'), description: 'Get cached session' },
|
|
23
|
+
{
|
|
24
|
+
command: getCommand('cloud kv get staging cache:homepage'),
|
|
25
|
+
description: 'Get homepage cache',
|
|
26
|
+
},
|
|
24
27
|
],
|
|
25
28
|
schema: {
|
|
26
29
|
args: z.object({
|
|
@@ -17,9 +17,15 @@ export const keysSubcommand = createCommand({
|
|
|
17
17
|
optional: { project: true },
|
|
18
18
|
idempotent: true,
|
|
19
19
|
examples: [
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
{
|
|
21
|
+
command: getCommand('cloud kv keys production'),
|
|
22
|
+
description: 'List all keys in production',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
command: getCommand('cloud kv ls cache'),
|
|
26
|
+
description: 'List all cached keys (using alias)',
|
|
27
|
+
},
|
|
28
|
+
{ command: getCommand('cloud kv list staging'), description: 'List all staging keys' },
|
|
23
29
|
],
|
|
24
30
|
schema: {
|
|
25
31
|
args: z.object({
|
|
@@ -13,9 +13,9 @@ export const listNamespacesSubcommand = createCommand({
|
|
|
13
13
|
requires: { auth: true, region: true },
|
|
14
14
|
optional: { project: true },
|
|
15
15
|
examples: [
|
|
16
|
-
{ command: getCommand('kv list-namespaces'), description: 'List all namespaces' },
|
|
17
|
-
{ command: getCommand('kv namespaces'), description: 'List namespaces (using alias)' },
|
|
18
|
-
{ command: getCommand('kv ns'), description: 'List namespaces (short alias)' },
|
|
16
|
+
{ command: getCommand('cloud kv list-namespaces'), description: 'List all namespaces' },
|
|
17
|
+
{ command: getCommand('cloud kv namespaces'), description: 'List namespaces (using alias)' },
|
|
18
|
+
{ command: getCommand('cloud kv ns'), description: 'List namespaces (short alias)' },
|
|
19
19
|
],
|
|
20
20
|
schema: {
|
|
21
21
|
options: z.object({
|
|
@@ -13,7 +13,9 @@ export const replSubcommand = createCommand({
|
|
|
13
13
|
idempotent: false,
|
|
14
14
|
requires: { auth: true, region: true },
|
|
15
15
|
optional: { project: true },
|
|
16
|
-
examples: [
|
|
16
|
+
examples: [
|
|
17
|
+
{ command: getCommand('cloud kv repl'), description: 'Start interactive KV session' },
|
|
18
|
+
],
|
|
17
19
|
|
|
18
20
|
async handler(ctx) {
|
|
19
21
|
showBanner(undefined, true);
|
|
@@ -25,14 +25,17 @@ export const searchSubcommand = createCommand({
|
|
|
25
25
|
idempotent: true,
|
|
26
26
|
examples: [
|
|
27
27
|
{
|
|
28
|
-
command: getCommand('kv search production user'),
|
|
28
|
+
command: getCommand('cloud kv search production user'),
|
|
29
29
|
description: 'Find all user-related keys',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
command: getCommand('kv search cache session'),
|
|
32
|
+
command: getCommand('cloud kv search cache session'),
|
|
33
33
|
description: 'Find all session keys in cache',
|
|
34
34
|
},
|
|
35
|
-
{
|
|
35
|
+
{
|
|
36
|
+
command: getCommand('cloud kv search staging config'),
|
|
37
|
+
description: 'Find all config keys',
|
|
38
|
+
},
|
|
36
39
|
],
|
|
37
40
|
schema: {
|
|
38
41
|
args: z.object({
|
|
@@ -24,16 +24,16 @@ export const setSubcommand = createCommand({
|
|
|
24
24
|
examples: [
|
|
25
25
|
{
|
|
26
26
|
command: getCommand(
|
|
27
|
-
'kv set production user:123 \'{"name":"Alice","email":"alice@example.com"}\''
|
|
27
|
+
'cloud kv set production user:123 \'{"name":"Alice","email":"alice@example.com"}\''
|
|
28
28
|
),
|
|
29
29
|
description: 'Store user data',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
command: getCommand('kv set cache session:abc "session-data-here" --ttl 3600'),
|
|
32
|
+
command: getCommand('cloud kv set cache session:abc "session-data-here" --ttl 3600'),
|
|
33
33
|
description: 'Store session with 1h TTL',
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
command: getCommand('kv set staging cache:homepage "<!DOCTYPE html>..." --ttl 600'),
|
|
36
|
+
command: getCommand('cloud kv set staging cache:homepage "<!DOCTYPE html>..." --ttl 600'),
|
|
37
37
|
description: 'Cache homepage for 10m',
|
|
38
38
|
},
|
|
39
39
|
],
|
|
@@ -42,6 +42,8 @@ export const setSubcommand = createCommand({
|
|
|
42
42
|
namespace: z.string().min(1).max(64).describe('the namespace name'),
|
|
43
43
|
key: z.string().min(1).max(64).describe('the key name'),
|
|
44
44
|
value: z.string().min(1).describe('the value'),
|
|
45
|
+
}),
|
|
46
|
+
options: z.object({
|
|
45
47
|
ttl: z.coerce
|
|
46
48
|
.number()
|
|
47
49
|
.refine((val) => val >= 0, {
|
|
@@ -54,11 +56,11 @@ export const setSubcommand = createCommand({
|
|
|
54
56
|
},
|
|
55
57
|
|
|
56
58
|
async handler(ctx) {
|
|
57
|
-
const { args, options } = ctx;
|
|
59
|
+
const { args, opts, options } = ctx;
|
|
58
60
|
const started = Date.now();
|
|
59
61
|
const storage = await createStorageAdapter(ctx);
|
|
60
62
|
const contentType = isPossiblyJSON(args.value) ? 'application/json' : 'text/plain';
|
|
61
|
-
const ttl =
|
|
63
|
+
const ttl = opts?.ttl;
|
|
62
64
|
await storage.set(args.namespace, args.key, args.value, {
|
|
63
65
|
contentType,
|
|
64
66
|
ttl,
|
|
@@ -40,12 +40,15 @@ export const statsSubcommand = createCommand({
|
|
|
40
40
|
optional: { project: true },
|
|
41
41
|
idempotent: true,
|
|
42
42
|
examples: [
|
|
43
|
-
{ command: getCommand('kv stats'), description: 'Show stats for all namespaces' },
|
|
43
|
+
{ command: getCommand('cloud kv stats'), description: 'Show stats for all namespaces' },
|
|
44
44
|
{
|
|
45
|
-
command: getCommand('kv stats production'),
|
|
45
|
+
command: getCommand('cloud kv stats production'),
|
|
46
46
|
description: 'Show stats for production namespace',
|
|
47
47
|
},
|
|
48
|
-
{
|
|
48
|
+
{
|
|
49
|
+
command: getCommand('cloud kv stats cache'),
|
|
50
|
+
description: 'Show stats for cache namespace',
|
|
51
|
+
},
|
|
49
52
|
],
|
|
50
53
|
schema: {
|
|
51
54
|
args: z.object({
|
|
@@ -3,6 +3,7 @@ import { createSubcommand, createCommand } from '../../../types';
|
|
|
3
3
|
import { getCommand } from '../../../command-prefix';
|
|
4
4
|
import { saveRegion, clearRegion } from '../../../config';
|
|
5
5
|
import * as tui from '../../../tui';
|
|
6
|
+
import { listSubcommand } from './list';
|
|
6
7
|
|
|
7
8
|
const selectCommand = createSubcommand({
|
|
8
9
|
name: 'select',
|
|
@@ -150,8 +151,9 @@ export const regionSubcommand = createCommand({
|
|
|
150
151
|
description: 'Manage default cloud region preference',
|
|
151
152
|
tags: ['fast'],
|
|
152
153
|
examples: [
|
|
154
|
+
{ command: getCommand('cloud region list'), description: 'List available regions' },
|
|
153
155
|
{ command: getCommand('cloud region select'), description: 'Set default region' },
|
|
154
156
|
{ command: getCommand('cloud region current'), description: 'Show current default' },
|
|
155
157
|
],
|
|
156
|
-
subcommands: [selectCommand, unselectCommand, currentCommand],
|
|
158
|
+
subcommands: [listSubcommand, selectCommand, unselectCommand, currentCommand],
|
|
157
159
|
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand } from '../../../types';
|
|
3
|
+
import { getCommand } from '../../../command-prefix';
|
|
4
|
+
import * as tui from '../../../tui';
|
|
5
|
+
|
|
6
|
+
const RegionSchema = z.object({
|
|
7
|
+
region: z.string().describe('Region code'),
|
|
8
|
+
description: z.string().describe('Human-readable region description'),
|
|
9
|
+
default: z.boolean().describe('Whether this is the default region'),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export const listSubcommand = createSubcommand({
|
|
13
|
+
name: 'list',
|
|
14
|
+
description: 'List available cloud regions',
|
|
15
|
+
aliases: ['ls'],
|
|
16
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
17
|
+
requires: { auth: true, regions: true },
|
|
18
|
+
idempotent: true,
|
|
19
|
+
examples: [
|
|
20
|
+
{ command: getCommand('cloud region list'), description: 'List all available regions' },
|
|
21
|
+
{
|
|
22
|
+
command: getCommand('cloud region ls'),
|
|
23
|
+
description: 'List all available regions (short alias)',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
command: getCommand('--json cloud region list'),
|
|
27
|
+
description: 'List regions in JSON format',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
schema: {
|
|
31
|
+
response: z.array(RegionSchema),
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
async handler(ctx) {
|
|
35
|
+
const { regions, options, config } = ctx;
|
|
36
|
+
const defaultRegion = config?.preferences?.region ?? null;
|
|
37
|
+
|
|
38
|
+
const result = regions.map((r) => ({
|
|
39
|
+
region: r.region,
|
|
40
|
+
description: r.description,
|
|
41
|
+
default: r.region === defaultRegion,
|
|
42
|
+
}));
|
|
43
|
+
|
|
44
|
+
if (!options.json) {
|
|
45
|
+
tui.info(`Regions (${regions.length})`);
|
|
46
|
+
|
|
47
|
+
const tableData = regions.map((r) => ({
|
|
48
|
+
Code: r.region,
|
|
49
|
+
Description: r.description,
|
|
50
|
+
Default: r.region === defaultRegion ? 'Yes' : '',
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
tui.table(tableData, [
|
|
54
|
+
{ name: 'Code', alignment: 'left' },
|
|
55
|
+
{ name: 'Description', alignment: 'left' },
|
|
56
|
+
{ name: 'Default', alignment: 'center' },
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return result;
|
|
61
|
+
},
|
|
62
|
+
});
|
|
@@ -18,6 +18,10 @@ const TaskCreateResponseSchema = z.object({
|
|
|
18
18
|
status: z.string().describe('Task status'),
|
|
19
19
|
priority: z.string().describe('Task priority'),
|
|
20
20
|
created_at: z.string().describe('Creation timestamp'),
|
|
21
|
+
tags: z
|
|
22
|
+
.array(z.object({ id: z.string(), name: z.string() }))
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Tags attached to the task'),
|
|
21
25
|
}),
|
|
22
26
|
attachment: z
|
|
23
27
|
.object({
|
|
@@ -47,6 +51,12 @@ export const createSubcommand = createCommand({
|
|
|
47
51
|
),
|
|
48
52
|
description: 'Create a feature with priority and description',
|
|
49
53
|
},
|
|
54
|
+
{
|
|
55
|
+
command: getCommand(
|
|
56
|
+
'cloud task create "Fix login bug" --type bug --tag sandbox --tag regression'
|
|
57
|
+
),
|
|
58
|
+
description: 'Create a task with tags (auto-creates tags that do not exist)',
|
|
59
|
+
},
|
|
50
60
|
{
|
|
51
61
|
command: getCommand(
|
|
52
62
|
'cloud task create "Q1 Planning" --type epic --created-id agent_001 --metadata \'{"team":"engineering"}\''
|
|
@@ -90,6 +100,10 @@ export const createSubcommand = createCommand({
|
|
|
90
100
|
.describe('initial task status (default: open)'),
|
|
91
101
|
parentId: z.string().optional().describe('parent task ID for subtasks'),
|
|
92
102
|
assignedId: z.string().optional().describe('ID of the assigned agent or user'),
|
|
103
|
+
tag: z
|
|
104
|
+
.array(z.string())
|
|
105
|
+
.optional()
|
|
106
|
+
.describe('tag name to attach (repeatable, auto-creates missing tags)'),
|
|
93
107
|
metadata: z.string().optional().describe('JSON metadata object'),
|
|
94
108
|
file: z.string().optional().describe('file path to attach to the task'),
|
|
95
109
|
}),
|
|
@@ -172,6 +186,7 @@ export const createSubcommand = createCommand({
|
|
|
172
186
|
status: opts.status as TaskStatus,
|
|
173
187
|
parent_id: opts.parentId,
|
|
174
188
|
assigned_id: opts.assignedId,
|
|
189
|
+
tag_ids: opts.tag,
|
|
175
190
|
metadata,
|
|
176
191
|
});
|
|
177
192
|
|
|
@@ -228,6 +243,10 @@ export const createSubcommand = createCommand({
|
|
|
228
243
|
tableData['Description'] = task.description;
|
|
229
244
|
}
|
|
230
245
|
|
|
246
|
+
if (task.tags?.length) {
|
|
247
|
+
tableData['Tags'] = task.tags.map((t) => t.name).join(', ');
|
|
248
|
+
}
|
|
249
|
+
|
|
231
250
|
if (project) {
|
|
232
251
|
tableData['Project'] = project.name;
|
|
233
252
|
}
|
|
@@ -248,6 +267,9 @@ export const createSubcommand = createCommand({
|
|
|
248
267
|
status: task.status,
|
|
249
268
|
priority: task.priority,
|
|
250
269
|
created_at: task.created_at,
|
|
270
|
+
...(task.tags?.length
|
|
271
|
+
? { tags: task.tags.map((t) => ({ id: t.id, name: t.name })) }
|
|
272
|
+
: {}),
|
|
251
273
|
},
|
|
252
274
|
...(attachmentInfo ? { attachment: attachmentInfo } : {}),
|
|
253
275
|
durationMs,
|