@kora-platform/cli 0.7.0-rc1 → 0.8.0-rc10

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 (49) hide show
  1. package/README.md +21 -0
  2. package/dist/api-client.d.ts +274 -106
  3. package/dist/api-client.js +192 -167
  4. package/dist/api-types.d.ts +301 -163
  5. package/dist/artifact-api-client.d.ts +28 -1
  6. package/dist/artifact-api-client.js +33 -0
  7. package/dist/artifact-commands.d.ts +5 -0
  8. package/dist/artifact-commands.js +177 -4
  9. package/dist/audit-commands.d.ts +12 -0
  10. package/dist/audit-commands.js +74 -0
  11. package/dist/auth-commands.d.ts +1 -0
  12. package/dist/auth-commands.js +195 -32
  13. package/dist/cli-errors.d.ts +7 -1
  14. package/dist/cli-errors.js +12 -1
  15. package/dist/command-builders.d.ts +1 -0
  16. package/dist/command-builders.js +1 -0
  17. package/dist/command-flags.d.ts +1 -0
  18. package/dist/command-flags.js +7 -0
  19. package/dist/command-groups.js +10 -12
  20. package/dist/command-registry.js +595 -277
  21. package/dist/commands.js +728 -636
  22. package/dist/environment-context.d.ts +9 -0
  23. package/dist/environment-context.js +32 -0
  24. package/dist/error-code.d.ts +2 -0
  25. package/dist/error-code.js +9 -0
  26. package/dist/{integration-commands.d.ts → extension-commands.d.ts} +3 -2
  27. package/dist/extension-commands.js +446 -0
  28. package/dist/files.d.ts +44 -4
  29. package/dist/files.js +349 -26
  30. package/dist/format.d.ts +6 -0
  31. package/dist/format.js +83 -1
  32. package/dist/runner.js +28 -10
  33. package/dist/schema-registry-data.d.ts +318 -571
  34. package/dist/schema-registry-data.js +356 -698
  35. package/dist/session-store.js +80 -0
  36. package/dist/session.d.ts +1 -0
  37. package/dist/transport-refresh.d.ts +10 -0
  38. package/dist/transport-refresh.js +51 -0
  39. package/dist/transport.d.ts +31 -0
  40. package/dist/transport.js +102 -36
  41. package/dist/types.d.ts +2 -1
  42. package/dist/workspace-source.d.ts +1 -0
  43. package/dist/workspace-source.js +13 -0
  44. package/package.json +2 -1
  45. package/dist/dotenv.d.ts +0 -1
  46. package/dist/dotenv.js +0 -26
  47. package/dist/integration-api-client.d.ts +0 -29
  48. package/dist/integration-api-client.js +0 -50
  49. package/dist/integration-commands.js +0 -208
@@ -6,15 +6,17 @@ const TOP_LEVEL_COMMANDS = [
6
6
  "status",
7
7
  "activity",
8
8
  "workflow",
9
+ "test",
9
10
  "release",
10
11
  "run",
12
+ "audit",
11
13
  "artifact",
12
14
  "task",
15
+ "deployment",
16
+ "environment",
13
17
  "org-model",
14
18
  "access",
15
- "integrations",
16
- "mcp",
17
- "skills",
19
+ "extensions",
18
20
  "secrets",
19
21
  "completion",
20
22
  "env",
@@ -29,9 +31,15 @@ export const CLI_ALIASES = Object.freeze({
29
31
  process: ["workflow"],
30
32
  project: ["org"],
31
33
  });
34
+ const releaseReadFlag = (description, required = false) => flag("release", description, { acceptsValue: true, ...(required ? { required: true } : {}), valueType: "string" });
35
+ const releaseEnvironmentReadFlag = (description) => flag("environment", description, { acceptsValue: true, valueType: "string" });
36
+ const releaseSnapshotReadFlags = (releaseDescription, environmentDescription) => [
37
+ releaseReadFlag(releaseDescription),
38
+ releaseEnvironmentReadFlag(environmentDescription)
39
+ ];
32
40
  const RAW_CLI_COMMANDS = [
33
41
  command(["help"], "Show human or machine-readable help for a command path.", {
34
- labels: ["read", "help"],
42
+ labels: ["read", "chat-read", "help"],
35
43
  args: [arg("command-path", "Optional command path to inspect.", false)],
36
44
  requiresActiveOrg: false
37
45
  }),
@@ -62,8 +70,24 @@ const RAW_CLI_COMMANDS = [
62
70
  command(["auth", "whoami"], "Show the current authenticated user and selected organization.", {
63
71
  labels: ["local", "auth"]
64
72
  }),
65
- command(["auth", "login"], "Start an interactive login flow and select the active organization.", {
66
- labels: ["credential", "auth"]
73
+ command(["auth", "login"], "Log in and select the active organization. Uses browser device approval with --device or when the terminal is not interactive.", {
74
+ labels: ["credential", "auth"],
75
+ flags: [
76
+ flag("base-url", "Platform base URL for this login.", {
77
+ acceptsValue: true,
78
+ valueType: "string"
79
+ }),
80
+ flag("device", "Use the browser device-approval flow instead of interactive email/password login.")
81
+ ]
82
+ }),
83
+ command(["auth", "signup"], "Create a local account and start a CLI session.", {
84
+ labels: ["credential", "auth"],
85
+ flags: [
86
+ flag("base-url", "Platform base URL for this signup.", {
87
+ acceptsValue: true,
88
+ valueType: "string"
89
+ })
90
+ ]
67
91
  }),
68
92
  command(["auth", "logout"], "Clear the current session and revoke the refresh token if possible.", {
69
93
  labels: ["credential", "auth"]
@@ -118,32 +142,19 @@ const RAW_CLI_COMMANDS = [
118
142
  labels: ["read", "org"],
119
143
  requiresActiveOrg: true
120
144
  }),
121
- command(["org", "import"], "Import an organization bundle from disk.", {
122
- labels: ["write", "org"],
123
- args: [arg("path", "Path to the import directory or file collection root.")],
124
- requiresActiveOrg: true
125
- }),
126
- command(["org", "bundle", "show"], "Show the current organization bundle snapshot.", {
127
- labels: ["read", "org"],
128
- flags: [flag("release", "Read a published bundle snapshot.", {
129
- acceptsValue: true,
130
- valueType: "string"
131
- })],
132
- requiresActiveOrg: true
133
- }),
134
- command(["org", "reset"], "Reset the draft project for the active organization.", {
145
+ command(["org", "reset"], "Reset release, runtime, project, and chat state for the active organization.", {
135
146
  labels: ["destructive", "org"],
136
147
  destructive: true,
137
148
  flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
138
149
  requiresActiveOrg: true
139
150
  }),
140
151
  command(["status"], "Show the current operator home/status summary.", {
141
- labels: ["read", "status"],
152
+ labels: ["read", "chat-read", "status"],
142
153
  aliases: [["home"]],
143
154
  requiresActiveOrg: true
144
155
  }),
145
156
  command(["activity", "list"], "List activity events, related tasks, and related runs.", {
146
- labels: ["read", "activity"],
157
+ labels: ["read", "activity", "chat-read"],
147
158
  flags: [
148
159
  flag("limit", "Maximum number of activity events to return.", {
149
160
  acceptsValue: true,
@@ -165,61 +176,50 @@ const RAW_CLI_COMMANDS = [
165
176
  flag("focus-value", "Focused entity name.", {
166
177
  acceptsValue: true,
167
178
  valueType: "string"
179
+ }),
180
+ flag("environment", "Filter by environment.", {
181
+ acceptsValue: true,
182
+ valueType: "string"
168
183
  })
169
184
  ],
170
185
  paginated: "limit",
171
186
  requiresActiveOrg: true
172
187
  }),
173
188
  command(["activity", "options"], "List valid activity focus filter options.", {
174
- labels: ["read", "activity"],
189
+ labels: ["read", "activity", "chat-read"],
175
190
  requiresActiveOrg: true
176
191
  }),
177
- command(["workflow", "list"], "List workflows.", {
178
- labels: ["read", "workflow"],
179
- aliases: [["process", "list"]],
180
- flags: [flag("release", "Read workflows from a published release.", {
181
- acceptsValue: true,
182
- valueType: "string"
183
- })],
192
+ command(["workflow", "list"], "List live deployed workflows, filter live deployments with --environment, or list workflows from a release with --release.", {
193
+ labels: ["read", "workflow"], aliases: [["process", "list"]],
194
+ examples: ["kora workflow list", "kora workflow list --environment <environment>", "kora workflow list --release <release>"],
195
+ flags: releaseSnapshotReadFlags("Read workflows from an immutable release instead of live deployments.", "Filter live deployed workflows to one environment's live deployment."),
184
196
  requiresActiveOrg: true
185
197
  }),
186
198
  command(["workflow", "get"], "Show workflow detail.", {
187
199
  labels: ["read", "workflow"],
188
200
  aliases: [["process", "get"]],
189
201
  args: [arg("name", "Workflow name.")],
190
- flags: [flag("release", "Read workflow detail from a published release.", {
191
- acceptsValue: true,
192
- valueType: "string"
193
- })],
202
+ flags: releaseSnapshotReadFlags("Read workflow detail from a release.", "Read workflow detail from an environment's live deployment release."),
194
203
  requiresActiveOrg: true
195
204
  }),
196
205
  command(["workflow", "version", "get"], "Show one workflow version.", {
197
206
  labels: ["read", "workflow"],
198
207
  aliases: [["process", "version", "get"]],
199
208
  args: [arg("name", "Workflow name."), arg("version", "Workflow version.")],
200
- flags: [flag("release", "Read workflow version from a published release.", {
201
- acceptsValue: true,
202
- valueType: "string"
203
- })],
209
+ flags: releaseSnapshotReadFlags("Read workflow version from a release.", "Read workflow version from an environment's live deployment release."),
204
210
  requiresActiveOrg: true
205
211
  }),
206
212
  command(["workflow", "dependencies"], "Show workflow dependency detail.", {
207
213
  labels: ["read", "workflow"],
208
214
  aliases: [["process", "dependencies"]],
209
215
  args: [arg("name", "Workflow name."), arg("version", "Workflow version.")],
210
- flags: [flag("release", "Read workflow dependencies from a published release.", {
211
- acceptsValue: true,
212
- valueType: "string"
213
- })],
216
+ flags: releaseSnapshotReadFlags("Read workflow dependencies from a release.", "Read workflow dependencies from an environment's live deployment release."),
214
217
  requiresActiveOrg: true
215
218
  }),
216
219
  command(["workflow", "context"], "Show workflow inspection context.", {
217
220
  labels: ["read", "workflow"],
218
221
  aliases: [["process", "context"]],
219
- flags: [flag("release", "Read workflow context from a published release.", {
220
- acceptsValue: true,
221
- valueType: "string"
222
- })],
222
+ flags: releaseSnapshotReadFlags("Read workflow context from a release.", "Read workflow context from an environment's live deployment release."),
223
223
  requiresActiveOrg: true
224
224
  }),
225
225
  command(["workflow", "start"], "Start a workflow.", {
@@ -237,7 +237,30 @@ const RAW_CLI_COMMANDS = [
237
237
  knownValues: ["manual", "message"],
238
238
  valueType: "string"
239
239
  }),
240
- flag("start-event-name", "Published workflow start-event name.", {
240
+ flag("start-event-name", "Workflow start-event name.", {
241
+ acceptsValue: true,
242
+ valueType: "string"
243
+ }),
244
+ flag("environment", "Environment whose live deployment starts the workflow.", {
245
+ acceptsValue: true,
246
+ valueType: "string"
247
+ })
248
+ ],
249
+ requiresActiveOrg: true
250
+ }),
251
+ command(["test", "node"], "Test one workflow node from source files without creating a release.", {
252
+ labels: ["execution", "chat-execution"],
253
+ args: [arg("workflow-name", "Workflow name."), arg("node-id", "Workflow node id.")],
254
+ flags: [
255
+ flag("workspace", "Path to the source workspace root.", {
256
+ acceptsValue: true,
257
+ valueType: "string"
258
+ }),
259
+ flag("input", "JSON input as @file.json or - for stdin.", {
260
+ acceptsValue: true,
261
+ valueType: "string"
262
+ }),
263
+ flag("environment", "Environment used to resolve scoped variables and extension installs.", {
241
264
  acceptsValue: true,
242
265
  valueType: "string"
243
266
  })
@@ -245,9 +268,8 @@ const RAW_CLI_COMMANDS = [
245
268
  requiresActiveOrg: true
246
269
  }),
247
270
  command(["release", "list"], "List releases.", {
248
- labels: ["read", "release"],
271
+ labels: ["read", "chat-read", "release"],
249
272
  flags: [
250
- flag("include-draft", "Include the draft release."),
251
273
  flag("limit", "Maximum number of releases to return.", {
252
274
  acceptsValue: true,
253
275
  valueType: "number"
@@ -257,51 +279,87 @@ const RAW_CLI_COMMANDS = [
257
279
  requiresActiveOrg: true
258
280
  }),
259
281
  command(["release", "get"], "Show release detail.", {
260
- labels: ["read", "release"],
282
+ labels: ["read", "chat-read", "release"],
261
283
  args: [arg("release-id", "Release id.")],
262
284
  requiresActiveOrg: true
263
285
  }),
264
- command(["release", "changes"], "Show draft changes.", {
265
- labels: ["read", "release"],
286
+ command(["release", "create"], "Create an immutable release artifact from source files; this mutates Platform state and is not a test command.", {
287
+ labels: ["write", "chat-write", "release"],
288
+ args: [arg("workspace", "Path to the source folder or zip archive.")],
289
+ flags: [],
266
290
  requiresActiveOrg: true
267
291
  }),
268
- command(["release", "deployment", "get"], "Show deployment detail for a release deployment id.", {
269
- labels: ["read", "release"],
270
- args: [arg("deployment-id", "Deployment id.")],
292
+ command(["release", "validate"], "Validate release readiness without deploying.", {
293
+ labels: ["read", "chat-read", "release"],
294
+ args: [arg("release-id", "Release id.")],
295
+ flags: [flag("environment", "Validate against one environment's configuration.", {
296
+ acceptsValue: true,
297
+ valueType: "string"
298
+ })],
271
299
  requiresActiveOrg: true
272
300
  }),
273
- command(["release", "publish"], "Publish the current draft release.", {
274
- labels: ["publish", "release"],
275
- flags: [flag("reason", "Human reason for the publication.", {
301
+ command(["release", "source"], "Write frozen release source files to a local directory.", {
302
+ labels: ["read", "chat-read", "release"],
303
+ args: [arg("release-id", "Release id.")],
304
+ flags: [flag("out", "Directory to write the release source into.", {
276
305
  acceptsValue: true,
306
+ required: true,
277
307
  valueType: "string"
278
308
  })],
279
309
  requiresActiveOrg: true
280
310
  }),
281
- command(["release", "retry"], "Retry a failed publication.", {
282
- labels: ["publish", "release"],
283
- args: [arg("release-id", "Release id.")],
311
+ command(["environment", "list"], "List environments.", {
312
+ labels: ["read", "chat-read", "environment"],
284
313
  requiresActiveOrg: true
285
314
  }),
286
- command(["release", "discard"], "Discard the current draft release.", {
287
- labels: ["destructive", "release"],
288
- destructive: true,
289
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
315
+ command(["environment", "get"], "Show environment detail.", {
316
+ labels: ["read", "chat-read", "environment"],
317
+ args: [arg("environment", "Environment key.")],
290
318
  requiresActiveOrg: true
291
319
  }),
292
- command(["release", "restore"], "Restore a published release into draft.", {
293
- labels: ["destructive", "release"],
294
- args: [arg("release-id", "Release id.")],
320
+ command(["environment", "create"], "Create an environment.", {
321
+ labels: ["write", "environment"],
322
+ args: [arg("environment", "Environment key.")],
323
+ flags: [
324
+ flag("name", "Display name.", {
325
+ acceptsValue: true,
326
+ valueType: "string"
327
+ }),
328
+ flag("copy-from", "Environment key or id to copy configuration from.", {
329
+ acceptsValue: true,
330
+ valueType: "string"
331
+ })
332
+ ],
333
+ requiresActiveOrg: true
334
+ }),
335
+ command(["environment", "rename"], "Rename an environment.", {
336
+ labels: ["write", "environment"],
337
+ args: [arg("environment", "Environment key."), arg("name", "New display name.")],
338
+ requiresActiveOrg: true
339
+ }),
340
+ command(["environment", "archive"], "Archive an environment.", {
341
+ labels: ["destructive", "environment"],
342
+ args: [arg("environment", "Environment key.")],
295
343
  destructive: true,
296
344
  flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
297
345
  requiresActiveOrg: true
298
346
  }),
299
- command(["release", "deactivate"], "Deactivate a published release.", {
300
- labels: ["destructive", "release"],
301
- args: [arg("release-id", "Release id.")],
347
+ command(["environment", "deploy"], "Deploy a release to an environment.", {
348
+ labels: ["write", "chat-write", "environment", "deployment", "release"],
349
+ args: [arg("environment", "Environment key."), arg("release", "Release id.")],
350
+ flags: [flag("policy", "Replacement policy for previous live deployment.", {
351
+ acceptsValue: true,
352
+ knownValues: ["drain", "terminate-running"],
353
+ valueType: "string"
354
+ })],
355
+ requiresActiveOrg: true
356
+ }),
357
+ command(["environment", "undeploy"], "Undeploy the live deployment from an environment.", {
358
+ labels: ["destructive", "environment", "deployment"],
359
+ args: [arg("environment", "Environment key.")],
302
360
  destructive: true,
303
361
  flags: [
304
- flag("policy", "Run deactivation policy.", {
362
+ flag("policy", "Undeploy policy.", {
305
363
  acceptsValue: true,
306
364
  knownValues: ["drain", "terminate-running"],
307
365
  valueType: "string"
@@ -310,9 +368,37 @@ const RAW_CLI_COMMANDS = [
310
368
  ],
311
369
  requiresActiveOrg: true
312
370
  }),
371
+ command(["deployment", "list"], "List environment deployments.", {
372
+ labels: ["read", "chat-read", "deployment"],
373
+ flags: [
374
+ flag("environment", "Filter by environment.", {
375
+ acceptsValue: true,
376
+ valueType: "string"
377
+ }),
378
+ flag("limit", "Maximum number of deployments to return.", {
379
+ acceptsValue: true,
380
+ valueType: "number"
381
+ })
382
+ ],
383
+ paginated: "limit",
384
+ requiresActiveOrg: true
385
+ }),
386
+ command(["deployment", "get"], "Show environment deployment detail.", {
387
+ labels: ["read", "chat-read", "deployment"],
388
+ args: [arg("deployment", "Deployment id.")],
389
+ flags: [flag("environment", "Validate deployment belongs to environment.", {
390
+ acceptsValue: true,
391
+ valueType: "string"
392
+ })],
393
+ requiresActiveOrg: true
394
+ }),
313
395
  command(["run", "list"], "List workflow runs.", {
314
- labels: ["read", "run"],
396
+ labels: ["read", "chat-read", "run"],
315
397
  flags: [
398
+ flag("environment", "Filter by environment.", {
399
+ acceptsValue: true,
400
+ valueType: "string"
401
+ }),
316
402
  flag("limit", "Maximum number of runs to return.", {
317
403
  acceptsValue: true,
318
404
  valueType: "number"
@@ -326,17 +412,17 @@ const RAW_CLI_COMMANDS = [
326
412
  requiresActiveOrg: true
327
413
  }),
328
414
  command(["run", "get"], "Show run detail.", {
329
- labels: ["read", "run"],
415
+ labels: ["read", "chat-read", "run"],
330
416
  args: [arg("workflow-id", "Workflow id.")],
331
417
  requiresActiveOrg: true
332
418
  }),
333
419
  command(["run", "state"], "Show run state.", {
334
- labels: ["read", "run"],
420
+ labels: ["read", "chat-read", "run"],
335
421
  args: [arg("workflow-id", "Workflow id.")],
336
422
  requiresActiveOrg: true
337
423
  }),
338
424
  command(["run", "steps"], "List run steps.", {
339
- labels: ["read", "run"],
425
+ labels: ["read", "chat-read", "run"],
340
426
  args: [arg("workflow-id", "Workflow id.")],
341
427
  flags: [
342
428
  flag("limit", "Maximum number of steps to return.", {
@@ -374,8 +460,57 @@ const RAW_CLI_COMMANDS = [
374
460
  flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
375
461
  requiresActiveOrg: true
376
462
  }),
377
- command(["artifact", "upload"], "Upload one local file as a managed workflow artifact.", {
378
- labels: ["execution", "artifact"],
463
+ command(["audit", "list"], "List organization audit events.", {
464
+ labels: ["read", "audit"],
465
+ flags: [
466
+ flag("action", "Filter by audit action.", {
467
+ acceptsValue: true,
468
+ valueType: "string"
469
+ }),
470
+ flag("actor", "Filter by actor id.", {
471
+ acceptsValue: true,
472
+ valueType: "string"
473
+ }),
474
+ flag("category", "Filter by audit category.", {
475
+ acceptsValue: true,
476
+ valueType: "string"
477
+ }),
478
+ flag("from", "Start timestamp in ISO-8601 format.", {
479
+ acceptsValue: true,
480
+ valueType: "string"
481
+ }),
482
+ flag("limit", "Maximum number of audit events to return.", {
483
+ acceptsValue: true,
484
+ valueType: "number"
485
+ }),
486
+ flag("outcome", "Filter by audit outcome.", {
487
+ acceptsValue: true,
488
+ knownValues: ["denied", "failed", "succeeded"],
489
+ valueType: "string"
490
+ }),
491
+ flag("resource-id", "Filter by audited resource id.", {
492
+ acceptsValue: true,
493
+ valueType: "string"
494
+ }),
495
+ flag("resource-type", "Filter by audited resource type.", {
496
+ acceptsValue: true,
497
+ valueType: "string"
498
+ }),
499
+ flag("to", "End timestamp in ISO-8601 format.", {
500
+ acceptsValue: true,
501
+ valueType: "string"
502
+ })
503
+ ],
504
+ paginated: "limit",
505
+ requiresActiveOrg: true
506
+ }),
507
+ command(["audit", "get"], "Show one organization audit event.", {
508
+ labels: ["read", "audit"],
509
+ args: [arg("event-id", "Audit event id.")],
510
+ requiresActiveOrg: true
511
+ }),
512
+ command(["artifact", "upload"], "Upload one local file as a managed runtime artifact.", {
513
+ labels: ["execution", "chat-execution", "artifact"],
379
514
  args: [arg("path", "Local file path to upload.")],
380
515
  flags: [
381
516
  flag("name", "Artifact display name. Defaults to the local file name.", {
@@ -404,7 +539,71 @@ const RAW_CLI_COMMANDS = [
404
539
  ],
405
540
  requiresActiveOrg: true
406
541
  }),
407
- command(["artifact", "download"], "Download one managed workflow artifact to a local file.", {
542
+ command(["artifact", "inventory"], "List organization runtime artifact inventory.", {
543
+ labels: ["read", "artifact"],
544
+ flags: [
545
+ flag("producer-type", "Filter by artifact producer type.", {
546
+ acceptsValue: true,
547
+ knownValues: ["workflow_capture", "upload", "review_upload", "workflow_node_test_capture"],
548
+ valueType: "string"
549
+ }),
550
+ flag("association-role", "Filter by artifact association role.", {
551
+ acceptsValue: true,
552
+ knownValues: ["input", "output", "review"],
553
+ valueType: "string"
554
+ }),
555
+ flag("association-kind", "Filter by artifact association kind.", {
556
+ acceptsValue: true,
557
+ knownValues: ["origin", "usage"],
558
+ valueType: "string"
559
+ }),
560
+ flag("run-id", "Filter by workflow run id.", {
561
+ acceptsValue: true,
562
+ valueType: "string"
563
+ }),
564
+ flag("workflow-id", "Filter by workflow definition id.", {
565
+ acceptsValue: true,
566
+ valueType: "string"
567
+ }),
568
+ flag("workflow-node-test-id", "Filter by workflow-node test id.", {
569
+ acceptsValue: true,
570
+ valueType: "string"
571
+ }),
572
+ flag("node-id", "Filter by node id.", {
573
+ acceptsValue: true,
574
+ valueType: "string"
575
+ }),
576
+ flag("media-type", "Filter by artifact media type.", {
577
+ acceptsValue: true,
578
+ valueType: "string"
579
+ }),
580
+ flag("lifecycle-status", "Filter by artifact lifecycle status.", {
581
+ acceptsValue: true,
582
+ knownValues: ["active", "archived", "purged", "all"],
583
+ valueType: "string"
584
+ }),
585
+ flag("created-after", "Filter to artifacts created at or after this ISO-8601 timestamp.", {
586
+ acceptsValue: true,
587
+ valueType: "string"
588
+ }),
589
+ flag("created-before", "Filter to artifacts created before this ISO-8601 timestamp.", {
590
+ acceptsValue: true,
591
+ valueType: "string"
592
+ }),
593
+ flag("limit", "Maximum number of artifacts to return.", {
594
+ acceptsValue: true,
595
+ valueType: "number"
596
+ })
597
+ ],
598
+ paginated: "limit",
599
+ requiresActiveOrg: true
600
+ }),
601
+ command(["artifact", "inspect"], "Inspect one runtime artifact and its associations.", {
602
+ labels: ["read", "artifact"],
603
+ args: [arg("artifact-id", "Artifact id.")],
604
+ requiresActiveOrg: true
605
+ }),
606
+ command(["artifact", "download"], "Download one managed runtime artifact to a local file.", {
408
607
  labels: ["execution", "artifact"],
409
608
  args: [arg("artifact-id", "Artifact id.")],
410
609
  flags: [
@@ -427,6 +626,23 @@ const RAW_CLI_COMMANDS = [
427
626
  ],
428
627
  requiresActiveOrg: true
429
628
  }),
629
+ command(["artifact", "archive"], "Archive one runtime artifact so it remains inspectable but cannot be downloaded or reused.", {
630
+ labels: ["execution", "artifact"],
631
+ args: [arg("artifact-id", "Artifact id.")],
632
+ requiresActiveOrg: true
633
+ }),
634
+ command(["artifact", "restore"], "Restore one archived runtime artifact to active use.", {
635
+ labels: ["execution", "artifact"],
636
+ args: [arg("artifact-id", "Artifact id.")],
637
+ requiresActiveOrg: true
638
+ }),
639
+ command(["artifact", "purge"], "Purge runtime artifact bytes while preserving provenance metadata.", {
640
+ labels: ["destructive", "artifact"],
641
+ args: [arg("artifact-id", "Artifact id.")],
642
+ destructive: true,
643
+ flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
644
+ requiresActiveOrg: true
645
+ }),
430
646
  command(["task", "list"], "List tasks.", {
431
647
  labels: ["read", "task"],
432
648
  aliases: [["inbox", "list"]],
@@ -474,71 +690,72 @@ const RAW_CLI_COMMANDS = [
474
690
  requiresActiveOrg: true
475
691
  }),
476
692
  command(["org-model", "people", "list"], "List modeled people.", {
693
+ flags: releaseSnapshotReadFlags("Read modeled people from a release.", "Read modeled people from an environment's live deployment release."),
477
694
  labels: ["read", "org-model"], requiresActiveOrg: true
478
695
  }),
479
696
  command(["org-model", "people", "get"], "Show one modeled person.", {
480
697
  labels: ["read", "org-model"],
481
698
  args: [arg("name", "Person name.")],
699
+ flags: releaseSnapshotReadFlags("Read modeled person detail from a release.", "Read modeled person detail from an environment's live deployment release."),
482
700
  requiresActiveOrg: true
483
701
  }),
484
702
  command(["org-model", "agents", "list"], "List modeled agents.", {
485
- labels: ["read", "org-model"], requiresActiveOrg: true
703
+ flags: releaseSnapshotReadFlags("Read modeled agents from a release.", "Read modeled agents from an environment's live deployment release."),
704
+ labels: ["read", "org-model"],
705
+ requiresActiveOrg: true
486
706
  }),
487
707
  command(["org-model", "agents", "get"], "Show one modeled agent.", {
488
708
  labels: ["read", "org-model"],
489
709
  args: [arg("name", "Agent name.")],
710
+ flags: releaseSnapshotReadFlags("Read modeled agent detail from a release.", "Read modeled agent detail from an environment's live deployment release."),
490
711
  requiresActiveOrg: true
491
712
  }),
492
713
  command(["org-model", "roles", "list"], "List modeled roles.", {
493
- labels: ["read", "org-model"], requiresActiveOrg: true
714
+ flags: releaseSnapshotReadFlags("Read modeled roles from a release.", "Read modeled roles from an environment's live deployment release."),
715
+ labels: ["read", "org-model"],
716
+ requiresActiveOrg: true
494
717
  }),
495
718
  command(["org-model", "roles", "get"], "Show one modeled role.", {
496
719
  labels: ["read", "org-model"],
497
720
  args: [arg("name", "Role name.")],
721
+ flags: releaseSnapshotReadFlags("Read modeled role detail from a release.", "Read modeled role detail from an environment's live deployment release."),
498
722
  requiresActiveOrg: true
499
723
  }),
500
724
  command(["org-model", "assignments", "list"], "List modeled assignments.", {
501
- labels: ["read", "org-model"], requiresActiveOrg: true
725
+ flags: releaseSnapshotReadFlags("Read modeled assignments from a release.", "Read modeled assignments from an environment's live deployment release."),
726
+ labels: ["read", "org-model"],
727
+ requiresActiveOrg: true
502
728
  }),
503
729
  command(["org-model", "assignments", "get"], "Show one modeled assignment group by role.", {
504
730
  labels: ["read", "org-model"],
505
731
  args: [arg("role-name", "Role name.")],
732
+ flags: releaseSnapshotReadFlags("Read modeled assignment detail from a release.", "Read modeled assignment detail from an environment's live deployment release."),
506
733
  requiresActiveOrg: true
507
734
  }),
508
735
  command(["org-model", "capabilities", "list"], "List capabilities.", {
509
- labels: ["read", "org-model"], requiresActiveOrg: true
736
+ flags: releaseSnapshotReadFlags("Read capabilities from a release.", "Read capabilities from an environment's live deployment release."),
737
+ labels: ["read", "org-model"],
738
+ requiresActiveOrg: true
510
739
  }),
511
740
  command(["org-model", "capabilities", "get"], "Show one capability.", {
512
741
  labels: ["read", "org-model"],
513
742
  args: [arg("name", "Capability name.")],
743
+ flags: releaseSnapshotReadFlags("Read capability detail from a release.", "Read capability detail from an environment's live deployment release."),
514
744
  requiresActiveOrg: true
515
745
  }),
516
746
  command(["org-model", "operations", "list"], "List operations.", {
517
- labels: ["read", "org-model"], requiresActiveOrg: true
518
- }),
519
- command(["org-model", "operations", "get"], "Show one operation.", {
747
+ flags: releaseSnapshotReadFlags("Read operations from a release.", "Read operations from an environment's live deployment release."),
520
748
  labels: ["read", "org-model"],
521
- args: [arg("name", "Operation name.")],
522
749
  requiresActiveOrg: true
523
750
  }),
524
- command(["org-model", "connectors", "list"], "List connectors.", {
525
- labels: ["read", "org-model"], requiresActiveOrg: true
526
- }),
527
- command(["org-model", "connectors", "get"], "Show one connector.", {
528
- labels: ["read", "org-model"],
529
- args: [arg("name", "Connector name.")],
530
- requiresActiveOrg: true
531
- }),
532
- command(["org-model", "mcp-servers", "list"], "List MCP servers.", {
533
- labels: ["read", "org-model"], requiresActiveOrg: true
534
- }),
535
- command(["org-model", "mcp-servers", "get"], "Show one MCP server.", {
751
+ command(["org-model", "operations", "get"], "Show one operation.", {
536
752
  labels: ["read", "org-model"],
537
- args: [arg("name", "MCP server name.")],
753
+ args: [arg("name", "Operation name.")],
754
+ flags: releaseSnapshotReadFlags("Read operation detail from a release.", "Read operation detail from an environment's live deployment release."),
538
755
  requiresActiveOrg: true
539
756
  }),
540
757
  command(["access", "members", "list"], "List organization members.", {
541
- labels: ["read", "access"],
758
+ labels: ["read", "chat-read", "access"],
542
759
  flags: [
543
760
  flag("limit", "Maximum number of members to return.", {
544
761
  acceptsValue: true,
@@ -553,7 +770,7 @@ const RAW_CLI_COMMANDS = [
553
770
  requiresActiveOrg: true
554
771
  }),
555
772
  command(["access", "members", "get"], "Show one organization member.", {
556
- labels: ["read", "access"],
773
+ labels: ["read", "chat-read", "access"],
557
774
  args: [arg("user-id", "User id.")],
558
775
  requiresActiveOrg: true
559
776
  }),
@@ -576,7 +793,7 @@ const RAW_CLI_COMMANDS = [
576
793
  requiresActiveOrg: true
577
794
  }),
578
795
  command(["access", "invites", "list"], "List organization invites.", {
579
- labels: ["read", "access"],
796
+ labels: ["read", "chat-read", "access"],
580
797
  flags: [
581
798
  flag("limit", "Maximum number of invites to return.", {
582
799
  acceptsValue: true,
@@ -591,12 +808,12 @@ const RAW_CLI_COMMANDS = [
591
808
  requiresActiveOrg: true
592
809
  }),
593
810
  command(["access", "invites", "get"], "Show one organization invite.", {
594
- labels: ["read", "access"],
811
+ labels: ["read", "chat-read", "access"],
595
812
  args: [arg("invite-id", "Invite id.")],
596
813
  requiresActiveOrg: true
597
814
  }),
598
815
  command(["access", "invites", "create"], "Create an organization invite.", {
599
- labels: ["write", "access"],
816
+ labels: ["write", "chat-write", "access"],
600
817
  flags: [
601
818
  flag("email", "Invitee email address.", {
602
819
  acceptsValue: true,
@@ -658,220 +875,264 @@ const RAW_CLI_COMMANDS = [
658
875
  flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
659
876
  requiresActiveOrg: true
660
877
  }),
661
- command(["integrations", "list"], "List backend-discovered integrations that can be used in this organization.", {
662
- labels: ["read", "integration"],
663
- requiresActiveOrg: true
664
- }),
665
- command(["integrations", "diagnostics"], "List backend-discovered integration setup diagnostics.", {
666
- labels: ["read", "integration"],
667
- requiresActiveOrg: true
668
- }),
669
- command(["integrations", "get"], "Show one backend-discovered integration.", {
670
- labels: ["read", "integration"],
671
- args: [arg("integration-id", "Integration id.")],
672
- requiresActiveOrg: true
673
- }),
674
- command(["integrations", "connections"], "List connected accounts for one backend-discovered integration.", {
675
- labels: ["read", "integration"],
676
- args: [arg("integration-id", "Integration id.")],
677
- requiresActiveOrg: true
678
- }),
679
- command(["integrations", "actions"], "List backend action descriptors for one integration.", {
680
- labels: ["read", "integration"],
681
- args: [arg("integration-id", "Integration id.")],
878
+ command(["extensions", "validate"], "Validate an extension package directory or archive-expanded root.", {
879
+ labels: ["read", "chat-read", "extension"],
880
+ args: [arg("path", "Path to an extension package directory.")],
881
+ flags: [
882
+ flag("subdir", "Validate a subdirectory from a zip archive.", {
883
+ acceptsValue: true,
884
+ valueType: "string"
885
+ })
886
+ ],
682
887
  requiresActiveOrg: true
683
888
  }),
684
- command(["integrations", "action"], "Run one CLI-safe backend action for an integration.", {
685
- labels: ["action", "integration"],
686
- args: [
687
- arg("integration-id", "Integration id."),
688
- arg("action-id", "Backend action id.")
689
- ],
889
+ command(["extensions", "export"], "Export extension package source files.", {
890
+ labels: ["read", "extension"],
690
891
  flags: [
691
- flag("connection", "Connection reference to bind to this action.", {
892
+ flag("install", "Export the revision currently used by an install id or slug.", {
692
893
  acceptsValue: true,
693
894
  valueType: "string"
694
895
  }),
695
- flag("input", "Structured JSON action input via @file.json or - for stdin.", {
896
+ flag("environment", "Target environment when exporting by install.", {
696
897
  acceptsValue: true,
697
898
  valueType: "string"
698
899
  }),
699
- flag("open", "Open returned external URLs in a browser."),
700
- flag("no-open", "Do not open returned external URLs in a browser.")
900
+ flag("revision", "Export a package revision by id.", {
901
+ acceptsValue: true,
902
+ valueType: "string"
903
+ }),
904
+ flag("package", "Export a package by name. Use with --latest.", {
905
+ acceptsValue: true,
906
+ valueType: "string"
907
+ }),
908
+ flag("latest", "Export the latest revision for --package."),
909
+ flag("out", "Directory to write the exported files and .kora/export.json metadata.", {
910
+ acceptsValue: true,
911
+ valueType: "string"
912
+ }),
913
+ flag("format", "Output format.", {
914
+ acceptsValue: true,
915
+ knownValues: ["json", "zip"],
916
+ valueType: "string"
917
+ })
701
918
  ],
702
919
  requiresActiveOrg: true
703
920
  }),
704
- command(["mcp", "list"], "List organization-managed MCP servers.", {
705
- labels: ["read", "mcp"],
706
- requiresActiveOrg: true
707
- }),
708
- command(["mcp", "get"], "Show one organization-managed MCP server.", {
709
- labels: ["read", "mcp"],
710
- args: [arg("server", "MCP server id or slug.")],
921
+ command(["extensions", "publish"], "Publish a validated extension package revision.", {
922
+ labels: ["write", "chat-write", "extension"],
923
+ args: [arg("path", "Path to an extension package directory.")],
924
+ flags: [
925
+ flag("subdir", "Publish a subdirectory from a zip archive.", {
926
+ acceptsValue: true,
927
+ valueType: "string"
928
+ })
929
+ ],
711
930
  requiresActiveOrg: true
712
931
  }),
713
- command(["mcp", "create"], "Create an organization-managed MCP server.", {
714
- labels: ["write", "mcp"],
932
+ command(["extensions", "install"], "Install a published extension package revision.", {
933
+ labels: ["write", "extension"],
934
+ args: [
935
+ arg("package-revision", "Extension package revision id."),
936
+ arg("slug", "Install slug.")
937
+ ],
715
938
  flags: [
716
- flag("name", "MCP server display name.", {
939
+ flag("environment", "Target environment.", {
717
940
  acceptsValue: true,
718
941
  required: true,
719
942
  valueType: "string"
720
943
  }),
721
- flag("slug", "MCP server slug.", {
944
+ flag("permissions", "Granted permissions JSON via @file.json or - for stdin.", {
945
+ acceptsValue: true,
946
+ valueType: "string"
947
+ })
948
+ ],
949
+ requiresActiveOrg: true
950
+ }),
951
+ command(["extensions", "grant"], "Replace the granted permissions for an extension install.", {
952
+ labels: ["write", "extension"],
953
+ args: [arg("install", "Extension install id or slug.")],
954
+ flags: [
955
+ flag("environment", "Target environment.", {
722
956
  acceptsValue: true,
723
957
  required: true,
724
958
  valueType: "string"
725
959
  }),
726
- flag("url", "Streamable HTTP MCP server URL.", {
960
+ flag("permissions", "Granted permissions JSON via @file.json or - for stdin.", {
727
961
  acceptsValue: true,
728
962
  required: true,
729
963
  valueType: "string"
730
964
  }),
731
- flag("auth-mode", "MCP auth mode.", {
965
+ flag("base-package-revision", "Expected current package revision id precondition.", {
732
966
  acceptsValue: true,
733
- knownValues: ["none", "oauth"],
734
967
  valueType: "string"
735
968
  }),
736
- flag("timeout-ms", "Connection timeout in milliseconds.", {
969
+ flag("base-updated-at", "Expected current install updatedAt precondition.", {
737
970
  acceptsValue: true,
738
- valueType: "number"
971
+ valueType: "string"
739
972
  })
740
973
  ],
741
974
  requiresActiveOrg: true
742
975
  }),
743
- command(["mcp", "update"], "Update an organization-managed MCP server.", {
744
- labels: ["write", "mcp"],
745
- args: [arg("server", "MCP server id or slug.")],
976
+ command(["extensions", "update"], "Update an extension install to another package revision.", {
977
+ labels: ["write", "extension"],
978
+ args: [arg("install", "Extension install id or slug.")],
746
979
  flags: [
747
- flag("name", "MCP server display name.", {
980
+ flag("environment", "Target environment.", {
748
981
  acceptsValue: true,
982
+ required: true,
749
983
  valueType: "string"
750
984
  }),
751
- flag("url", "Streamable HTTP MCP server URL.", {
985
+ flag("revision", "Target extension package revision id.", {
752
986
  acceptsValue: true,
987
+ required: true,
753
988
  valueType: "string"
754
989
  }),
755
- flag("auth-mode", "MCP auth mode.", {
990
+ flag("dry-run", "Plan the install update without mutating it."),
991
+ flag("base-package-revision", "Expected current package revision id precondition.", {
756
992
  acceptsValue: true,
757
- knownValues: ["none", "oauth"],
758
993
  valueType: "string"
759
994
  }),
760
- flag("disable", "Disable the MCP server until it is explicitly enabled again."),
761
- flag("enable", "Enable a disabled MCP server as draft; test it before use."),
762
- flag("timeout-ms", "Connection timeout in milliseconds.", {
995
+ flag("base-updated-at", "Expected current install updatedAt precondition.", {
763
996
  acceptsValue: true,
764
- valueType: "number"
997
+ valueType: "string"
765
998
  })
766
999
  ],
767
1000
  requiresActiveOrg: true
768
1001
  }),
769
- command(["mcp", "test"], "Test one organization-managed MCP server.", {
770
- labels: ["probe", "mcp"],
771
- args: [arg("server", "MCP server id or slug.")],
772
- requiresActiveOrg: true
773
- }),
774
- command(["mcp", "discover-tools"], "Discover tools for one organization-managed MCP server.", {
775
- labels: ["probe", "mcp"],
776
- args: [arg("server", "MCP server id or slug.")],
1002
+ command(["extensions", "built-ins", "list"], "List available built-in extensions.", {
1003
+ labels: ["read", "extension"],
1004
+ flags: [flag("environment", "Target environment.", {
1005
+ acceptsValue: true,
1006
+ valueType: "string"
1007
+ })],
777
1008
  requiresActiveOrg: true
778
1009
  }),
779
- command(["mcp", "connect"], "Start OAuth for one organization-managed MCP server.", {
780
- labels: ["credential", "mcp"],
781
- args: [arg("server", "MCP server id or slug.")],
1010
+ command(["extensions", "built-ins", "install"], "Install a built-in extension.", {
1011
+ labels: ["write", "extension"],
1012
+ args: [arg("built-in", "Built-in extension slug.")],
782
1013
  flags: [
783
- flag("open", "Open the authorization URL in a browser."),
784
- flag("no-open", "Do not open the authorization URL in a browser."),
785
- flag("wait", "Poll until the OAuth session is connected or failed.")
1014
+ flag("environment", "Target environment.", {
1015
+ acceptsValue: true,
1016
+ required: true,
1017
+ valueType: "string"
1018
+ }),
1019
+ flag("slug", "Install slug. Defaults to the built-in slug.", {
1020
+ acceptsValue: true,
1021
+ valueType: "string"
1022
+ }),
1023
+ flag("permissions", "Granted permissions JSON via @file.json or - for stdin.", {
1024
+ acceptsValue: true,
1025
+ valueType: "string"
1026
+ })
786
1027
  ],
787
1028
  requiresActiveOrg: true
788
1029
  }),
789
- command(["mcp", "oauth-status"], "Show OAuth status for one organization-managed MCP server.", {
790
- labels: ["read", "mcp"],
791
- args: [arg("server", "MCP server id or slug.")],
792
- requiresActiveOrg: true
793
- }),
794
- command(["mcp", "disconnect"], "Disconnect OAuth for one organization-managed MCP server.", {
795
- labels: ["destructive", "mcp"],
796
- args: [arg("server", "MCP server id or slug.")],
797
- destructive: true,
798
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
799
- requiresActiveOrg: true
800
- }),
801
- command(["mcp", "delete"], "Delete an organization-managed MCP server.", {
802
- labels: ["destructive", "mcp"],
803
- args: [arg("server", "MCP server id or slug.")],
804
- destructive: true,
805
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
806
- requiresActiveOrg: true
807
- }),
808
- command(["skills", "list"], "List organization-managed skill packages.", {
809
- labels: ["read", "skill"],
1030
+ command(["extensions", "list"], "List extension installs.", {
1031
+ labels: ["read", "chat-read", "extension"],
1032
+ flags: [flag("environment", "Target environment.", {
1033
+ acceptsValue: true,
1034
+ valueType: "string"
1035
+ })],
810
1036
  requiresActiveOrg: true
811
1037
  }),
812
- command(["skills", "get"], "Show one organization-managed skill package.", {
813
- labels: ["read", "skill"],
814
- args: [arg("skill", "Skill package id or slug.")],
1038
+ command(["extensions", "inspect"], "Show one extension install.", {
1039
+ labels: ["read", "chat-read", "extension"],
1040
+ args: [arg("install", "Extension install id or slug.")],
1041
+ flags: [flag("environment", "Target environment.", {
1042
+ acceptsValue: true,
1043
+ required: true,
1044
+ valueType: "string"
1045
+ })],
815
1046
  requiresActiveOrg: true
816
1047
  }),
817
- command(["skills", "create"], "Create an organization-managed skill package.", {
818
- labels: ["write", "skill"],
819
- flags: [
820
- flag("slug", "Skill package slug.", { acceptsValue: true, required: true, valueType: "string" }),
821
- flag("name", "Skill package display name.", { acceptsValue: true, required: true, valueType: "string" }),
822
- flag("description", "Skill package description.", { acceptsValue: true, valueType: "string" }),
823
- flag("dir", "Optional directory containing SKILL.md and related package files for the initial revision.", { acceptsValue: true, valueType: "string" })
824
- ],
1048
+ command(["extensions", "detail"], "Show extension install detail including registered functions, tools, and settings views.", {
1049
+ labels: ["read", "chat-read", "extension"],
1050
+ args: [arg("install", "Extension install id or slug.")],
1051
+ flags: [flag("environment", "Target environment.", {
1052
+ acceptsValue: true,
1053
+ required: true,
1054
+ valueType: "string"
1055
+ })],
825
1056
  requiresActiveOrg: true
826
1057
  }),
827
- command(["skills", "upload"], "Upload a new revision for an organization-managed skill package.", {
828
- labels: ["write", "skill"],
829
- args: [arg("skill", "Skill package id or slug.")],
830
- flags: [
831
- flag("dir", "Directory containing SKILL.md and related package files.", { acceptsValue: true, required: true, valueType: "string" })
832
- ],
1058
+ command(["extensions", "disable"], "Disable an extension install.", {
1059
+ labels: ["write", "extension"],
1060
+ args: [arg("install", "Extension install id or slug.")],
1061
+ flags: [flag("environment", "Target environment.", {
1062
+ acceptsValue: true,
1063
+ required: true,
1064
+ valueType: "string"
1065
+ })],
833
1066
  requiresActiveOrg: true
834
1067
  }),
835
- command(["skills", "download"], "Download a skill package revision to a directory.", {
836
- labels: ["output", "skill"],
837
- args: [arg("skill", "Skill package id or slug.")],
838
- flags: [
839
- flag("revision", "Revision number to download. Defaults to the current revision.", { acceptsValue: true, valueType: "number" }),
840
- flag("dir", "Destination directory.", { acceptsValue: true, required: true, valueType: "string" })
841
- ],
1068
+ command(["extensions", "enable"], "Enable an extension install.", {
1069
+ labels: ["write", "extension"],
1070
+ args: [arg("install", "Extension install id or slug.")],
1071
+ flags: [flag("environment", "Target environment.", {
1072
+ acceptsValue: true,
1073
+ required: true,
1074
+ valueType: "string"
1075
+ })],
842
1076
  requiresActiveOrg: true
843
1077
  }),
844
- command(["skills", "update"], "Update organization-managed skill package metadata.", {
845
- labels: ["write", "skill"],
846
- args: [arg("skill", "Skill package id or slug.")],
1078
+ command(["extensions", "delete"], "Delete an extension install.", {
1079
+ labels: ["destructive", "extension"],
1080
+ args: [arg("install", "Extension install id or slug.")],
1081
+ destructive: true,
847
1082
  flags: [
848
- flag("name", "Skill package display name.", { acceptsValue: true, valueType: "string" }),
849
- flag("description", "Skill package description.", { acceptsValue: true, valueType: "string" }),
850
- flag("disable", "Disable the skill package until it is explicitly enabled again."),
851
- flag("enable", "Enable a disabled skill package.")
1083
+ flag("environment", "Target environment.", {
1084
+ acceptsValue: true,
1085
+ required: true,
1086
+ valueType: "string"
1087
+ }),
1088
+ flag("yes", "Confirm the destructive operation without an interactive prompt.")
852
1089
  ],
853
1090
  requiresActiveOrg: true
854
1091
  }),
855
- command(["skills", "delete"], "Delete an organization-managed skill package.", {
856
- labels: ["destructive", "skill"],
857
- args: [arg("skill", "Skill package id or slug.")],
858
- destructive: true,
859
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
860
- requiresActiveOrg: true
861
- }),
862
1092
  command(["env", "list"], "List runtime variables.", {
863
1093
  labels: ["read", "env"],
1094
+ flags: [flag("environment", "Target environment.", {
1095
+ acceptsValue: true,
1096
+ valueType: "string"
1097
+ })],
864
1098
  requiresActiveOrg: true
865
1099
  }),
866
1100
  command(["env", "get"], "Show one runtime variable.", {
867
1101
  labels: ["read", "env"],
868
1102
  args: [arg("name", "Variable name.")],
1103
+ flags: [flag("environment", "Target environment.", {
1104
+ acceptsValue: true,
1105
+ required: true,
1106
+ valueType: "string"
1107
+ })],
1108
+ requiresActiveOrg: true
1109
+ }),
1110
+ command(["env", "set"], "Create or update one runtime variable without reading other values.", {
1111
+ labels: ["write", "chat-write", "env"],
1112
+ args: [arg("name", "Variable name.")],
1113
+ flags: [
1114
+ flag("environment", "Target environment.", {
1115
+ acceptsValue: true,
1116
+ required: true,
1117
+ valueType: "string"
1118
+ }),
1119
+ flag("value", "Variable value.", {
1120
+ acceptsValue: true,
1121
+ required: true,
1122
+ valueType: "string"
1123
+ })
1124
+ ],
869
1125
  requiresActiveOrg: true
870
1126
  }),
871
1127
  command(["env", "replace"], "Replace the full runtime environment from JSON.", {
872
1128
  labels: ["destructive", "env"],
873
1129
  destructive: true,
874
1130
  flags: [
1131
+ flag("environment", "Target environment.", {
1132
+ acceptsValue: true,
1133
+ required: true,
1134
+ valueType: "string"
1135
+ }),
875
1136
  flag("file", "Environment definition via @env.json or - for stdin.", {
876
1137
  acceptsValue: true,
877
1138
  required: true,
@@ -881,25 +1142,36 @@ const RAW_CLI_COMMANDS = [
881
1142
  ],
882
1143
  requiresActiveOrg: true
883
1144
  }),
884
- command(["env", "import"], "Import runtime variables from a .env file.", {
885
- labels: ["write", "env"],
886
- args: [arg("path-to-.env", "Path to a .env file.")],
887
- requiresActiveOrg: true
888
- }),
889
1145
  command(["secrets", "list"], "List organization secret names without values.", {
890
1146
  labels: ["read", "secret"],
1147
+ flags: [flag("environment", "Target environment.", {
1148
+ acceptsValue: true,
1149
+ valueType: "string"
1150
+ })],
891
1151
  requiresActiveOrg: true
892
1152
  }),
893
1153
  command(["secrets", "set"], "Create or replace one organization secret from stdin.", {
894
1154
  labels: ["credential", "secret"],
895
1155
  args: [arg("name", "Secret name.")],
1156
+ flags: [flag("environment", "Target environment.", {
1157
+ acceptsValue: true,
1158
+ required: true,
1159
+ valueType: "string"
1160
+ })],
896
1161
  requiresActiveOrg: true
897
1162
  }),
898
1163
  command(["secrets", "delete"], "Delete one organization secret.", {
899
1164
  labels: ["destructive", "secret"],
900
1165
  args: [arg("name", "Secret name.")],
901
1166
  destructive: true,
902
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
1167
+ flags: [
1168
+ flag("environment", "Target environment.", {
1169
+ acceptsValue: true,
1170
+ required: true,
1171
+ valueType: "string"
1172
+ }),
1173
+ flag("yes", "Confirm the destructive operation without an interactive prompt.")
1174
+ ],
903
1175
  requiresActiveOrg: true
904
1176
  }),
905
1177
  command(["chat", "health"], "Show chat health.", {
@@ -920,49 +1192,86 @@ const RAW_CLI_COMMANDS = [
920
1192
  flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
921
1193
  requiresActiveOrg: true
922
1194
  }),
923
- command(["chat", "changes"], "Show chat session changes.", {
924
- labels: ["local", "chat"],
925
- args: [arg("session-id", "Session id.")],
926
- requiresActiveOrg: true
1195
+ command(["schema", "list"], "List resource schemas exposed by the CLI.", {
1196
+ labels: ["read", "schema", "chat-read"],
1197
+ requiresActiveOrg: false
927
1198
  }),
928
- command(["chat", "validation"], "Show chat session validation.", {
929
- labels: ["local", "chat"],
930
- args: [arg("session-id", "Session id.")],
931
- requiresActiveOrg: true
1199
+ command(["schema", "get"], "Show one resource schema.", {
1200
+ labels: ["read", "schema", "chat-read"],
1201
+ args: [arg("resource-name", "Schema resource name.")],
1202
+ requiresActiveOrg: false
932
1203
  }),
933
- command(["chat", "draft", "get"], "Show the chat draft snapshot.", {
934
- labels: ["local", "chat"],
935
- args: [arg("session-id", "Session id.")],
1204
+ command(["admin", "usage", "summary"], "Show agent LLM usage totals for an organization.", {
1205
+ labels: ["admin", "read"],
1206
+ flags: [
1207
+ flag("from", "Start timestamp in ISO-8601 format.", {
1208
+ acceptsValue: true,
1209
+ valueType: "string"
1210
+ }),
1211
+ flag("to", "End timestamp in ISO-8601 format.", {
1212
+ acceptsValue: true,
1213
+ valueType: "string"
1214
+ })
1215
+ ],
936
1216
  requiresActiveOrg: true
937
1217
  }),
938
- command(["chat", "draft", "apply"], "Apply a chat draft.", {
939
- labels: ["destructive", "chat"],
940
- args: [arg("session-id", "Session id.")],
941
- destructive: true,
942
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
1218
+ command(["admin", "usage", "workflows"], "List agent LLM usage grouped by workflow.", {
1219
+ labels: ["admin", "read"],
1220
+ flags: [
1221
+ flag("from", "Start timestamp in ISO-8601 format.", {
1222
+ acceptsValue: true,
1223
+ valueType: "string"
1224
+ }),
1225
+ flag("to", "End timestamp in ISO-8601 format.", {
1226
+ acceptsValue: true,
1227
+ valueType: "string"
1228
+ }),
1229
+ flag("limit", "Maximum number of workflows to return.", {
1230
+ acceptsValue: true,
1231
+ valueType: "number"
1232
+ })
1233
+ ],
1234
+ paginated: "limit",
943
1235
  requiresActiveOrg: true
944
1236
  }),
945
- command(["chat", "draft", "refresh"], "Refresh a chat draft.", {
946
- labels: ["destructive", "chat"],
947
- args: [arg("session-id", "Session id.")],
948
- destructive: true,
949
- flags: [flag("yes", "Confirm the destructive operation without an interactive prompt.")],
1237
+ command(["admin", "usage", "tools"], "List agent tool calls grouped by tool.", {
1238
+ labels: ["admin", "read"],
1239
+ flags: [
1240
+ flag("from", "Start timestamp in ISO-8601 format.", {
1241
+ acceptsValue: true,
1242
+ valueType: "string"
1243
+ }),
1244
+ flag("to", "End timestamp in ISO-8601 format.", {
1245
+ acceptsValue: true,
1246
+ valueType: "string"
1247
+ }),
1248
+ flag("limit", "Maximum number of tools to return.", {
1249
+ acceptsValue: true,
1250
+ valueType: "number"
1251
+ })
1252
+ ],
1253
+ paginated: "limit",
950
1254
  requiresActiveOrg: true
951
1255
  }),
952
- command(["chat", "workspace-state"], "Show chat workspace state.", {
953
- labels: ["local", "chat"],
954
- args: [arg("session-id", "Session id.")],
1256
+ command(["admin", "usage", "events"], "List recent metered agent executions.", {
1257
+ labels: ["admin", "read"],
1258
+ flags: [
1259
+ flag("from", "Start timestamp in ISO-8601 format.", {
1260
+ acceptsValue: true,
1261
+ valueType: "string"
1262
+ }),
1263
+ flag("to", "End timestamp in ISO-8601 format.", {
1264
+ acceptsValue: true,
1265
+ valueType: "string"
1266
+ }),
1267
+ flag("limit", "Maximum number of events to return.", {
1268
+ acceptsValue: true,
1269
+ valueType: "number"
1270
+ })
1271
+ ],
1272
+ paginated: "limit",
955
1273
  requiresActiveOrg: true
956
1274
  }),
957
- command(["schema", "list"], "List resource schemas exposed by the CLI.", {
958
- labels: ["read", "schema"],
959
- requiresActiveOrg: false
960
- }),
961
- command(["schema", "get"], "Show one resource schema.", {
962
- labels: ["read", "schema"],
963
- args: [arg("resource-name", "Schema resource name.")],
964
- requiresActiveOrg: false
965
- }),
966
1275
  command(["admin", "org", "deleted", "list"], "List deleted organizations.", {
967
1276
  labels: ["admin"],
968
1277
  requiresActiveOrg: false
@@ -1067,7 +1376,7 @@ export function buildHelpJson(path, input = {}) {
1067
1376
  description: definition.description,
1068
1377
  destructive: definition.destructive,
1069
1378
  examples: definition.examples,
1070
- flags: definition.flags,
1379
+ flags: buildHelpFlags(definition.flags, Boolean(input.commandFilter)),
1071
1380
  name: definition.path.join(" "),
1072
1381
  paginated: definition.paginated,
1073
1382
  requiresActiveOrg: definition.requiresActiveOrg,
@@ -1082,7 +1391,7 @@ export function buildHelpJson(path, input = {}) {
1082
1391
  : describeCommandGroup(resolveCommandAliases(path)),
1083
1392
  destructive: false,
1084
1393
  examples: [],
1085
- flags: [flag("json", "Render help as machine-readable JSON.")],
1394
+ flags: buildHelpFlags([flag("json", "Render help as machine-readable JSON.")], false),
1086
1395
  name: path.length === 0 ? "kora" : resolveCommandAliases(path).join(" "),
1087
1396
  paginated: "none",
1088
1397
  requiresActiveOrg: false,
@@ -1093,3 +1402,12 @@ export function buildHelpJson(path, input = {}) {
1093
1402
  supportsJson: true
1094
1403
  };
1095
1404
  }
1405
+ function buildHelpFlags(flags, filtered) {
1406
+ return flags
1407
+ .filter((entry) => !filtered || !entry.hiddenWhenCommandFiltered)
1408
+ .map((entry) => {
1409
+ const { hiddenWhenCommandFiltered, ...helpFlag } = entry;
1410
+ void hiddenWhenCommandFiltered;
1411
+ return helpFlag;
1412
+ });
1413
+ }