@bctrl/cli 0.1.3 → 0.1.4

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.
Files changed (42) hide show
  1. package/README.md +95 -95
  2. package/dist/api/auth.d.ts +5 -6
  3. package/dist/api/auth.js +4 -5
  4. package/dist/api/client.d.ts +1 -0
  5. package/dist/api/client.js +3 -0
  6. package/dist/api/errors.js +2 -2
  7. package/dist/bin/bctrl.js +0 -0
  8. package/dist/commands/ai/index.js +59 -102
  9. package/dist/commands/{browser → api-key}/index.d.ts +1 -1
  10. package/dist/commands/api-key/index.js +47 -0
  11. package/dist/commands/auth/login.js +2 -1
  12. package/dist/commands/auth/status.js +5 -0
  13. package/dist/commands/browser-extension/index.d.ts +3 -0
  14. package/dist/commands/browser-extension/index.js +86 -0
  15. package/dist/commands/file/index.js +9 -3
  16. package/dist/commands/{invocation → help}/index.d.ts +1 -1
  17. package/dist/commands/help/index.js +17 -0
  18. package/dist/commands/proxy/index.d.ts +3 -0
  19. package/dist/commands/proxy/index.js +66 -0
  20. package/dist/commands/run/index.js +205 -155
  21. package/dist/commands/runtime/index.js +274 -78
  22. package/dist/commands/shared/help.js +1 -1
  23. package/dist/commands/shared/rest.d.ts +1 -0
  24. package/dist/commands/shared/rest.js +14 -6
  25. package/dist/commands/space/index.js +17 -32
  26. package/dist/commands/space/list.d.ts +1 -11
  27. package/dist/commands/space/list.js +14 -23
  28. package/dist/commands/subaccount/index.js +29 -80
  29. package/dist/commands/tool/index.js +15 -7
  30. package/dist/commands/tool-call/index.js +6 -1
  31. package/dist/commands/toolset/index.js +6 -3
  32. package/dist/commands/usage/index.d.ts +3 -0
  33. package/dist/commands/usage/index.js +13 -0
  34. package/dist/commands/vault/index.js +104 -25
  35. package/dist/config/auth-store.d.ts +10 -12
  36. package/dist/config/auth-store.js +4 -5
  37. package/dist/generated/help.d.ts +132 -46
  38. package/dist/generated/help.js +192 -54
  39. package/dist/root.js +10 -4
  40. package/package.json +47 -45
  41. package/dist/commands/browser/index.js +0 -53
  42. package/dist/commands/invocation/index.js +0 -36
@@ -1,44 +1,20 @@
1
1
  export declare const CLI_HELP_COMMANDS: {
2
- readonly "runtime.create": {
3
- readonly kind: "command";
4
- readonly command: "runtime.create";
2
+ readonly "runtimes.create": {
3
+ readonly kind: "topic";
4
+ readonly topic: "runtimes.create";
5
+ readonly aliases: readonly ["runtime.create", "bctrl runtime create"];
6
+ readonly title: "Create a runtime";
5
7
  readonly summary: "Create a browser runtime definition. This does not start the browser.";
6
- readonly usage: "bctrl runtime create [flags]";
7
- readonly flags: readonly [{
8
- readonly name: "--space";
9
- readonly value: "<id>";
10
- readonly description: "Owning space id.";
11
- readonly mapsTo: "input.spaceId";
12
- }, {
13
- readonly name: "--name";
14
- readonly value: "<name>";
15
- readonly description: "Runtime name.";
16
- readonly mapsTo: "input.name";
17
- }, {
18
- readonly name: "--config-file";
19
- readonly value: "<path>";
20
- readonly description: "Read runtime config JSON from a file.";
21
- readonly mapsTo: "input.config";
22
- }, {
23
- readonly name: "--metadata-file";
24
- readonly value: "<path>";
25
- readonly description: "Read runtime metadata JSON from a file.";
26
- readonly mapsTo: "input.metadata";
27
- }, {
28
- readonly name: "--input";
29
- readonly value: "<path>";
30
- readonly description: "Read the full JSON request body from a file, or - for stdin.";
31
- }];
32
8
  readonly input: {
33
9
  readonly fields: readonly [{
34
10
  readonly name: "spaceId";
35
- readonly type: "uuid";
36
- readonly required: true;
11
+ readonly type: "uuid | \"default\"";
12
+ readonly required: false;
37
13
  }, {
38
14
  readonly name: "type";
39
15
  readonly type: "\"browser\"";
40
16
  readonly values: readonly ["\"browser\""];
41
- readonly required: true;
17
+ readonly required: false;
42
18
  }, {
43
19
  readonly name: "name";
44
20
  readonly type: "string";
@@ -58,14 +34,18 @@ export declare const CLI_HELP_COMMANDS: {
58
34
  readonly name: "id";
59
35
  readonly type: "uuid";
60
36
  readonly required: true;
37
+ }, {
38
+ readonly name: "spaceId";
39
+ readonly type: "uuid";
40
+ readonly required: true;
61
41
  }, {
62
42
  readonly name: "name";
63
43
  readonly type: "string";
64
44
  readonly required: true;
65
45
  }, {
66
46
  readonly name: "type";
67
- readonly type: "\"browser\" | \"desktop\" | \"spreadsheet\"";
68
- readonly values: readonly ["\"browser\"", "\"desktop\"", "\"spreadsheet\""];
47
+ readonly type: "\"browser\"";
48
+ readonly values: readonly ["\"browser\""];
69
49
  readonly required: true;
70
50
  }, {
71
51
  readonly name: "status";
@@ -76,13 +56,17 @@ export declare const CLI_HELP_COMMANDS: {
76
56
  readonly name: "activeRunId";
77
57
  readonly type: "uuid | null";
78
58
  readonly required: true;
59
+ }, {
60
+ readonly name: "lastActivityAt";
61
+ readonly type: "datetime";
62
+ readonly required: false;
79
63
  }, {
80
64
  readonly name: "createdAt";
81
- readonly type: "string";
65
+ readonly type: "datetime";
82
66
  readonly required: true;
83
67
  }, {
84
68
  readonly name: "updatedAt";
85
- readonly type: "string";
69
+ readonly type: "datetime";
86
70
  readonly required: true;
87
71
  }, {
88
72
  readonly name: "config";
@@ -94,39 +78,141 @@ export declare const CLI_HELP_COMMANDS: {
94
78
  readonly required: false;
95
79
  }];
96
80
  };
81
+ readonly api: {
82
+ readonly method: "POST";
83
+ readonly path: "/v1/runtimes";
84
+ readonly operationId: "runtimes.create";
85
+ readonly requestFields: readonly ["spaceId", "type", "name", "config", "metadata"];
86
+ readonly responseFields: readonly ["id", "spaceId", "name", "type", "status", "activeRunId", "lastActivityAt", "createdAt", "updatedAt", "config", "metadata"];
87
+ };
88
+ readonly sdk: readonly [{
89
+ readonly language: "typescript";
90
+ readonly package: "@bctrl/sdk";
91
+ readonly method: "client.runtimes.create";
92
+ }];
93
+ readonly cli: {
94
+ readonly command: "bctrl runtime create";
95
+ readonly usage: "bctrl runtime create [flags]";
96
+ readonly flags: readonly [{
97
+ readonly name: "--space";
98
+ readonly value: "<id>";
99
+ readonly description: "Owning space id.";
100
+ }, {
101
+ readonly name: "--name";
102
+ readonly value: "<name>";
103
+ readonly description: "Runtime name.";
104
+ }, {
105
+ readonly name: "--profile";
106
+ readonly description: "Persist browser state across runtime starts.";
107
+ }, {
108
+ readonly name: "--proxy";
109
+ readonly value: "<id-or-url>";
110
+ readonly description: "Saved proxy id or inline custom proxy URL.";
111
+ }, {
112
+ readonly name: "--device";
113
+ readonly value: "<desktop|mobile>";
114
+ readonly description: "Fingerprint device filter.";
115
+ }, {
116
+ readonly name: "--os";
117
+ readonly value: "<windows|macos|android|ios>";
118
+ readonly description: "Fingerprint OS filter.";
119
+ }, {
120
+ readonly name: "--browser";
121
+ readonly value: "<chrome|edge|safari>";
122
+ readonly description: "Fingerprint browser filter.";
123
+ }, {
124
+ readonly name: "--browser-version";
125
+ readonly value: "<version>";
126
+ readonly description: "Fingerprint browser version filter.";
127
+ }, {
128
+ readonly name: "--locale";
129
+ readonly value: "<locale>";
130
+ readonly description: "Fingerprint locale/language filter; repeat to set an ordered language stack.";
131
+ }, {
132
+ readonly name: "--config-file";
133
+ readonly value: "<path>";
134
+ readonly description: "Read runtime config JSON from a file.";
135
+ }, {
136
+ readonly name: "--metadata-file";
137
+ readonly value: "<path>";
138
+ readonly description: "Read runtime metadata JSON from a file.";
139
+ }, {
140
+ readonly name: "--input";
141
+ readonly value: "<path>";
142
+ readonly description: "Read the full JSON request body from a file, or - for stdin.";
143
+ }];
144
+ };
97
145
  readonly examples: readonly [{
146
+ readonly audience: "cli";
98
147
  readonly command: "bctrl runtime create --space sp_123 --name checkout-test";
99
148
  }, {
149
+ readonly audience: "cli";
150
+ readonly command: "bctrl runtime create --name mobile-de --proxy pxy_123 --device mobile --os ios --browser safari --locale de-DE --locale de";
151
+ }, {
152
+ readonly audience: "cli";
100
153
  readonly command: "bctrl runtime create --input runtime.json";
101
154
  }];
102
155
  readonly next: readonly [{
156
+ readonly topic: "runtimes.start";
103
157
  readonly command: "bctrl runtime start <runtimeId>";
104
158
  }];
105
159
  };
106
- readonly "runtime.start": {
107
- readonly kind: "command";
108
- readonly command: "runtime.start";
160
+ readonly "runtimes.start": {
161
+ readonly kind: "topic";
162
+ readonly topic: "runtimes.start";
163
+ readonly aliases: readonly ["runtime.start", "bctrl runtime start"];
164
+ readonly title: "Start a runtime";
109
165
  readonly summary: "Start a runtime and open its active run.";
110
- readonly usage: "bctrl runtime start <runtimeId>";
111
166
  readonly output: {
112
167
  readonly fields: readonly [{
113
- readonly name: "runtime";
114
- readonly type: "object";
168
+ readonly name: "runtimeId";
169
+ readonly type: "uuid";
115
170
  readonly required: true;
116
171
  }, {
117
- readonly name: "run";
118
- readonly type: "object";
172
+ readonly name: "runId";
173
+ readonly type: "uuid";
119
174
  readonly required: true;
120
175
  }, {
121
- readonly name: "browser";
122
- readonly type: "object";
176
+ readonly name: "status";
177
+ readonly type: "\"active\" | \"stopped\" | \"failed\"";
178
+ readonly values: readonly ["\"active\"", "\"stopped\"", "\"failed\""];
179
+ readonly required: true;
180
+ }, {
181
+ readonly name: "connectUrl";
182
+ readonly type: "string";
183
+ readonly required: true;
184
+ }, {
185
+ readonly name: "protocol";
186
+ readonly type: "\"cdp\"";
187
+ readonly values: readonly ["\"cdp\""];
188
+ readonly required: true;
189
+ }, {
190
+ readonly name: "started";
191
+ readonly type: "boolean";
123
192
  readonly required: true;
124
193
  }];
125
194
  };
195
+ readonly api: {
196
+ readonly method: "POST";
197
+ readonly path: "/v1/runtimes/{runtimeId}/start";
198
+ readonly operationId: "runtimes.start";
199
+ readonly responseFields: readonly ["runtimeId", "runId", "status", "connectUrl", "protocol", "started"];
200
+ };
201
+ readonly sdk: readonly [{
202
+ readonly language: "typescript";
203
+ readonly package: "@bctrl/sdk";
204
+ readonly method: "client.runtimes.start";
205
+ }];
206
+ readonly cli: {
207
+ readonly command: "bctrl runtime start";
208
+ readonly usage: "bctrl runtime start <runtimeId>";
209
+ };
126
210
  readonly examples: readonly [{
211
+ readonly audience: "cli";
127
212
  readonly command: "bctrl runtime start rt_123";
128
213
  }];
129
214
  readonly next: readonly [{
215
+ readonly topic: "runs.activity.list";
130
216
  readonly command: "bctrl run events <runId>";
131
217
  }];
132
218
  };
@@ -1,47 +1,20 @@
1
1
  // Generated by scripts/generate/cli-help.mjs. Do not edit by hand.
2
2
  export const CLI_HELP_COMMANDS = {
3
- "runtime.create": {
4
- "kind": "command",
5
- "command": "runtime.create",
6
- "summary": "Create a browser runtime definition. This does not start the browser.",
7
- "usage": "bctrl runtime create [flags]",
8
- "flags": [
9
- {
10
- "name": "--space",
11
- "value": "<id>",
12
- "description": "Owning space id.",
13
- "mapsTo": "input.spaceId"
14
- },
15
- {
16
- "name": "--name",
17
- "value": "<name>",
18
- "description": "Runtime name.",
19
- "mapsTo": "input.name"
20
- },
21
- {
22
- "name": "--config-file",
23
- "value": "<path>",
24
- "description": "Read runtime config JSON from a file.",
25
- "mapsTo": "input.config"
26
- },
27
- {
28
- "name": "--metadata-file",
29
- "value": "<path>",
30
- "description": "Read runtime metadata JSON from a file.",
31
- "mapsTo": "input.metadata"
32
- },
33
- {
34
- "name": "--input",
35
- "value": "<path>",
36
- "description": "Read the full JSON request body from a file, or - for stdin."
37
- }
3
+ "runtimes.create": {
4
+ "kind": "topic",
5
+ "topic": "runtimes.create",
6
+ "aliases": [
7
+ "runtime.create",
8
+ "bctrl runtime create"
38
9
  ],
10
+ "title": "Create a runtime",
11
+ "summary": "Create a browser runtime definition. This does not start the browser.",
39
12
  "input": {
40
13
  "fields": [
41
14
  {
42
15
  "name": "spaceId",
43
- "type": "uuid",
44
- "required": true
16
+ "type": "uuid | \"default\"",
17
+ "required": false
45
18
  },
46
19
  {
47
20
  "name": "type",
@@ -49,7 +22,7 @@ export const CLI_HELP_COMMANDS = {
49
22
  "values": [
50
23
  "\"browser\""
51
24
  ],
52
- "required": true
25
+ "required": false
53
26
  },
54
27
  {
55
28
  "name": "name",
@@ -75,6 +48,11 @@ export const CLI_HELP_COMMANDS = {
75
48
  "type": "uuid",
76
49
  "required": true
77
50
  },
51
+ {
52
+ "name": "spaceId",
53
+ "type": "uuid",
54
+ "required": true
55
+ },
78
56
  {
79
57
  "name": "name",
80
58
  "type": "string",
@@ -82,11 +60,9 @@ export const CLI_HELP_COMMANDS = {
82
60
  },
83
61
  {
84
62
  "name": "type",
85
- "type": "\"browser\" | \"desktop\" | \"spreadsheet\"",
63
+ "type": "\"browser\"",
86
64
  "values": [
87
- "\"browser\"",
88
- "\"desktop\"",
89
- "\"spreadsheet\""
65
+ "\"browser\""
90
66
  ],
91
67
  "required": true
92
68
  },
@@ -105,14 +81,19 @@ export const CLI_HELP_COMMANDS = {
105
81
  "type": "uuid | null",
106
82
  "required": true
107
83
  },
84
+ {
85
+ "name": "lastActivityAt",
86
+ "type": "datetime",
87
+ "required": false
88
+ },
108
89
  {
109
90
  "name": "createdAt",
110
- "type": "string",
91
+ "type": "datetime",
111
92
  "required": true
112
93
  },
113
94
  {
114
95
  "name": "updatedAt",
115
- "type": "string",
96
+ "type": "datetime",
116
97
  "required": true
117
98
  },
118
99
  {
@@ -127,51 +108,208 @@ export const CLI_HELP_COMMANDS = {
127
108
  }
128
109
  ]
129
110
  },
111
+ "api": {
112
+ "method": "POST",
113
+ "path": "/v1/runtimes",
114
+ "operationId": "runtimes.create",
115
+ "requestFields": [
116
+ "spaceId",
117
+ "type",
118
+ "name",
119
+ "config",
120
+ "metadata"
121
+ ],
122
+ "responseFields": [
123
+ "id",
124
+ "spaceId",
125
+ "name",
126
+ "type",
127
+ "status",
128
+ "activeRunId",
129
+ "lastActivityAt",
130
+ "createdAt",
131
+ "updatedAt",
132
+ "config",
133
+ "metadata"
134
+ ]
135
+ },
136
+ "sdk": [
137
+ {
138
+ "language": "typescript",
139
+ "package": "@bctrl/sdk",
140
+ "method": "client.runtimes.create"
141
+ }
142
+ ],
143
+ "cli": {
144
+ "command": "bctrl runtime create",
145
+ "usage": "bctrl runtime create [flags]",
146
+ "flags": [
147
+ {
148
+ "name": "--space",
149
+ "value": "<id>",
150
+ "description": "Owning space id."
151
+ },
152
+ {
153
+ "name": "--name",
154
+ "value": "<name>",
155
+ "description": "Runtime name."
156
+ },
157
+ {
158
+ "name": "--profile",
159
+ "description": "Persist browser state across runtime starts."
160
+ },
161
+ {
162
+ "name": "--proxy",
163
+ "value": "<id-or-url>",
164
+ "description": "Saved proxy id or inline custom proxy URL."
165
+ },
166
+ {
167
+ "name": "--device",
168
+ "value": "<desktop|mobile>",
169
+ "description": "Fingerprint device filter."
170
+ },
171
+ {
172
+ "name": "--os",
173
+ "value": "<windows|macos|android|ios>",
174
+ "description": "Fingerprint OS filter."
175
+ },
176
+ {
177
+ "name": "--browser",
178
+ "value": "<chrome|edge|safari>",
179
+ "description": "Fingerprint browser filter."
180
+ },
181
+ {
182
+ "name": "--browser-version",
183
+ "value": "<version>",
184
+ "description": "Fingerprint browser version filter."
185
+ },
186
+ {
187
+ "name": "--locale",
188
+ "value": "<locale>",
189
+ "description": "Fingerprint locale/language filter; repeat to set an ordered language stack."
190
+ },
191
+ {
192
+ "name": "--config-file",
193
+ "value": "<path>",
194
+ "description": "Read runtime config JSON from a file."
195
+ },
196
+ {
197
+ "name": "--metadata-file",
198
+ "value": "<path>",
199
+ "description": "Read runtime metadata JSON from a file."
200
+ },
201
+ {
202
+ "name": "--input",
203
+ "value": "<path>",
204
+ "description": "Read the full JSON request body from a file, or - for stdin."
205
+ }
206
+ ]
207
+ },
130
208
  "examples": [
131
209
  {
210
+ "audience": "cli",
132
211
  "command": "bctrl runtime create --space sp_123 --name checkout-test"
133
212
  },
134
213
  {
214
+ "audience": "cli",
215
+ "command": "bctrl runtime create --name mobile-de --proxy pxy_123 --device mobile --os ios --browser safari --locale de-DE --locale de"
216
+ },
217
+ {
218
+ "audience": "cli",
135
219
  "command": "bctrl runtime create --input runtime.json"
136
220
  }
137
221
  ],
138
222
  "next": [
139
223
  {
224
+ "topic": "runtimes.start",
140
225
  "command": "bctrl runtime start <runtimeId>"
141
226
  }
142
227
  ]
143
228
  },
144
- "runtime.start": {
145
- "kind": "command",
146
- "command": "runtime.start",
229
+ "runtimes.start": {
230
+ "kind": "topic",
231
+ "topic": "runtimes.start",
232
+ "aliases": [
233
+ "runtime.start",
234
+ "bctrl runtime start"
235
+ ],
236
+ "title": "Start a runtime",
147
237
  "summary": "Start a runtime and open its active run.",
148
- "usage": "bctrl runtime start <runtimeId>",
149
238
  "output": {
150
239
  "fields": [
151
240
  {
152
- "name": "runtime",
153
- "type": "object",
241
+ "name": "runtimeId",
242
+ "type": "uuid",
154
243
  "required": true
155
244
  },
156
245
  {
157
- "name": "run",
158
- "type": "object",
246
+ "name": "runId",
247
+ "type": "uuid",
159
248
  "required": true
160
249
  },
161
250
  {
162
- "name": "browser",
163
- "type": "object",
251
+ "name": "status",
252
+ "type": "\"active\" | \"stopped\" | \"failed\"",
253
+ "values": [
254
+ "\"active\"",
255
+ "\"stopped\"",
256
+ "\"failed\""
257
+ ],
258
+ "required": true
259
+ },
260
+ {
261
+ "name": "connectUrl",
262
+ "type": "string",
263
+ "required": true
264
+ },
265
+ {
266
+ "name": "protocol",
267
+ "type": "\"cdp\"",
268
+ "values": [
269
+ "\"cdp\""
270
+ ],
271
+ "required": true
272
+ },
273
+ {
274
+ "name": "started",
275
+ "type": "boolean",
164
276
  "required": true
165
277
  }
166
278
  ]
167
279
  },
280
+ "api": {
281
+ "method": "POST",
282
+ "path": "/v1/runtimes/{runtimeId}/start",
283
+ "operationId": "runtimes.start",
284
+ "responseFields": [
285
+ "runtimeId",
286
+ "runId",
287
+ "status",
288
+ "connectUrl",
289
+ "protocol",
290
+ "started"
291
+ ]
292
+ },
293
+ "sdk": [
294
+ {
295
+ "language": "typescript",
296
+ "package": "@bctrl/sdk",
297
+ "method": "client.runtimes.start"
298
+ }
299
+ ],
300
+ "cli": {
301
+ "command": "bctrl runtime start",
302
+ "usage": "bctrl runtime start <runtimeId>"
303
+ },
168
304
  "examples": [
169
305
  {
306
+ "audience": "cli",
170
307
  "command": "bctrl runtime start rt_123"
171
308
  }
172
309
  ],
173
310
  "next": [
174
311
  {
312
+ "topic": "runs.activity.list",
175
313
  "command": "bctrl run events <runId>"
176
314
  }
177
315
  ]
package/dist/root.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import { Command } from 'commander';
2
2
  import { createAiCommand } from './commands/ai/index.js';
3
+ import { createApiKeyCommand } from './commands/api-key/index.js';
3
4
  import { createAuthCommand } from './commands/auth/index.js';
4
- import { createBrowserCommand } from './commands/browser/index.js';
5
+ import { createBrowserExtensionCommand } from './commands/browser-extension/index.js';
5
6
  import { createFileCommand } from './commands/file/index.js';
6
- import { createInvocationCommand } from './commands/invocation/index.js';
7
+ import { createHelpCommand } from './commands/help/index.js';
8
+ import { createProxyCommand } from './commands/proxy/index.js';
7
9
  import { createRunCommand } from './commands/run/index.js';
8
10
  import { createRuntimeCommand } from './commands/runtime/index.js';
9
11
  import { createSpaceCommand } from './commands/space/index.js';
@@ -11,6 +13,7 @@ import { createSubaccountCommand } from './commands/subaccount/index.js';
11
13
  import { createToolCommand } from './commands/tool/index.js';
12
14
  import { createToolCallCommand } from './commands/tool-call/index.js';
13
15
  import { createToolsetCommand } from './commands/toolset/index.js';
16
+ import { createUsageCommand } from './commands/usage/index.js';
14
17
  import { createVaultCommand } from './commands/vault/index.js';
15
18
  import { createVersionCommand } from './commands/version/version.js';
16
19
  export function createRootCommand(factory) {
@@ -25,16 +28,19 @@ export function createRootCommand(factory) {
25
28
  command.addCommand(createVersionCommand(factory));
26
29
  command.addCommand(createAuthCommand(factory));
27
30
  command.addCommand(createAiCommand(factory));
28
- command.addCommand(createBrowserCommand(factory));
31
+ command.addCommand(createApiKeyCommand(factory));
32
+ command.addCommand(createBrowserExtensionCommand(factory));
29
33
  command.addCommand(createFileCommand(factory));
30
- command.addCommand(createInvocationCommand(factory));
34
+ command.addCommand(createHelpCommand(factory));
31
35
  command.addCommand(createRunCommand(factory));
32
36
  command.addCommand(createRuntimeCommand(factory));
37
+ command.addCommand(createProxyCommand(factory));
33
38
  command.addCommand(createSpaceCommand(factory));
34
39
  command.addCommand(createSubaccountCommand(factory));
35
40
  command.addCommand(createToolCommand(factory));
36
41
  command.addCommand(createToolsetCommand(factory));
37
42
  command.addCommand(createToolCallCommand(factory));
43
+ command.addCommand(createUsageCommand(factory));
38
44
  command.addCommand(createVaultCommand(factory));
39
45
  return command;
40
46
  }