@sylphx/cli 0.7.3 → 0.7.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @sylphx/cli
2
2
 
3
+ ## 0.7.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`7106169`](https://github.com/SylphxAI/platform/commit/710616977c33872bf84b36991cc24e895df21db3)]:
8
+ - @sylphx/sdk@0.10.7
9
+
10
+ ## 0.7.4
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`90e15c8`](https://github.com/SylphxAI/platform/commit/90e15c8ae07469666fa6d4ed324f7a7473218004)]:
15
+ - @sylphx/sdk@0.10.6
16
+
3
17
  ## 0.7.3
4
18
 
5
19
  ### Patch Changes
package/dist/main.js CHANGED
@@ -15,7 +15,7 @@ var init_package = __esm({
15
15
  "package.json"() {
16
16
  package_default = {
17
17
  name: "@sylphx/cli",
18
- version: "0.7.3",
18
+ version: "0.7.5",
19
19
  description: "Sylphx Platform CLI \u2014 deploy and manage your applications from the terminal. 63 commands across deployment, logs, env vars, domains, databases, storage, monitoring, self-service (user), admin (users/quotas/audit/invitations/jwt-keys/project-migrate), and more.",
20
20
  type: "module",
21
21
  homepage: "https://sylphx.com",
@@ -71,7 +71,7 @@ var init_package = __esm({
71
71
  "@effect/cli": "0.75.1",
72
72
  "@effect/platform": "0.96.0",
73
73
  "@effect/platform-bun": "0.89.0",
74
- "@sylphx/sdk": "0.10.5",
74
+ "@sylphx/sdk": "0.10.7",
75
75
  chalk: "^5.3.0",
76
76
  effect: "3.21.0",
77
77
  eventsource: "^2.0.2",
@@ -1407,7 +1407,7 @@ var init_admin_audit2 = __esm({
1407
1407
  method: "GET",
1408
1408
  path: "/operator/audit/projects/:id/database/metrics",
1409
1409
  params: AdminAuditProjectParams,
1410
- // CNPG real-time metrics passthrough — upstream operator owns the shape.
1410
+ // Database real-time metrics passthrough — upstream operator owns the shape.
1411
1411
  response: AdminAuditUnknownResult,
1412
1412
  plane: "management",
1413
1413
  summary: "Database metrics",
@@ -1716,7 +1716,7 @@ var init_admin_branch_databases2 = __esm({
1716
1716
  response: AdminBranchDatabaseMutationResult,
1717
1717
  plane: "management",
1718
1718
  summary: "Schedule preview branch database teardown from the operator plane",
1719
- description: "Transitions the active branch database for a preview environment to `destroying`; the controller performs CNPG/Rook cleanup and stamps `destroyed`. Re-running while already destroying is idempotent. Requires service token scope `platform:branchdb:destroy` and emits an `audit_logs` row with `operation=branch_database_destroy`.",
1719
+ description: "Transitions the active branch database for a preview environment to `destroying`; the controller performs backend cleanup and stamps `destroyed`. Re-running while already destroying is idempotent. Requires service token scope `platform:branchdb:destroy` and emits an `audit_logs` row with `operation=branch_database_destroy`.",
1720
1720
  tags: ["admin-branch-databases"]
1721
1721
  })
1722
1722
  };
@@ -3001,7 +3001,7 @@ var init_admin_projects = __esm({
3001
3001
  role: Schema21.String,
3002
3002
  resourceId: Schema21.String,
3003
3003
  status: Schema21.NullOr(Schema21.String),
3004
- clusterName: Schema21.NullOr(Schema21.String)
3004
+ backendName: Schema21.NullOr(Schema21.String)
3005
3005
  });
3006
3006
  AdminPlatformResourcesResult = Schema21.Array(AdminPlatformResourceBinding);
3007
3007
  }
@@ -6009,9 +6009,7 @@ var init_database = __esm({
6009
6009
  connectionString: Schema48.optional(Schema48.String),
6010
6010
  storageGb: Schema48.optional(Schema48.Number),
6011
6011
  env: Schema48.optional(Schema48.String),
6012
- engine: Schema48.optional(Schema48.String),
6013
6012
  instances: Schema48.optional(Schema48.Number),
6014
- clusterName: Schema48.optional(Schema48.NullOr(Schema48.String)),
6015
6013
  branchName: Schema48.optional(Schema48.NullOr(Schema48.String)),
6016
6014
  provider: Schema48.optional(Schema48.String),
6017
6015
  backupRetentionDays: Schema48.optional(Schema48.Number),
@@ -6041,7 +6039,6 @@ var init_database = __esm({
6041
6039
  RestoreDatabaseResult = Schema48.Struct({
6042
6040
  restored: Schema48.Boolean,
6043
6041
  resourceId: Schema48.optional(Schema48.String),
6044
- clusterName: Schema48.optional(Schema48.String),
6045
6042
  targetTime: Schema48.optional(Schema48.String),
6046
6043
  message: Schema48.optional(Schema48.String)
6047
6044
  });
@@ -6055,7 +6052,7 @@ var init_database = __esm({
6055
6052
 
6056
6053
  // ../contract/dist/schemas/resources.js
6057
6054
  import { Schema as Schema49 } from "effect";
6058
- var ResourceTier, ResourceType, VolumeStatus, VolumeSharing, BindingRole, TierBadge, ResourcesOrgSlugParams, ResourcesResourceIdParams, DatabaseResource, CreateDatabaseResourceInput, UpdateDatabaseResourceInput, ListDatabaseResourcesResult, KvResource, CreateKvResourceInput, UpdateKvResourceInput, ListKvResourcesResult, BlobResource, CreateBlobResourceInput, UpdateBlobResourceInput, ListBlobResourcesResult, VolumeResource, CreateVolumeResourceInput, UpdateVolumeResourceInput, ListVolumeResourcesResult, ResourceBinding, CreateResourceBindingInput, ListResourceBindingsResult, SearchResource, SearchResourceWithApiKey, CreateSearchResourceInput, ListSearchResourcesResult, ManagedResource;
6055
+ var ResourceTier, ResourceType, VolumeStatus, VolumeSharing, BindingRole, TierBadge, ResourcesOrgSlugParams, ResourcesResourceIdParams, DatabaseResource, CreateDatabaseResourceInput, UpdateDatabaseResourceInput, ListDatabaseResourcesResult, KvResource, CreateKvResourceInput, UpdateKvResourceInput, ListKvResourcesResult, BlobResource, CreateBlobResourceInput, UpdateBlobResourceInput, ListBlobResourcesResult, VolumeResource, CreateVolumeResourceInput, UpdateVolumeResourceInput, ListVolumeResourcesResult, ResourceBinding, CreateResourceBindingInput, ListResourceBindingsResult, SearchResource, SearchResourceWithApiKey, CreateSearchResourceInput, ListSearchResourcesResult, CreateManagedDatabaseResourceInput, CreateManagedKvResourceInput, CreateManagedBlobResourceInput, CreateManagedSearchResourceInput, CreateManagedVolumeResourceInput, CreateManagedResourceInput, UpdateManagedResourceInput, ManagedResource;
6059
6056
  var init_resources = __esm({
6060
6057
  "../contract/dist/schemas/resources.js"() {
6061
6058
  "use strict";
@@ -6082,7 +6079,6 @@ var init_resources = __esm({
6082
6079
  port: Schema49.NullOr(Schema49.Number),
6083
6080
  dbUser: Schema49.String,
6084
6081
  dbName: Schema49.String,
6085
- clusterName: Schema49.NullOr(Schema49.String),
6086
6082
  branchName: Schema49.NullOr(Schema49.String),
6087
6083
  bindingCount: Schema49.Number,
6088
6084
  createdAt: Schema49.String,
@@ -6097,14 +6093,12 @@ var init_resources = __esm({
6097
6093
  * and stores this encrypted connection string directly.
6098
6094
  */
6099
6095
  connectionStringEncrypted: Schema49.optional(Schema49.String),
6100
- clusterName: Schema49.optional(Schema49.String),
6101
6096
  branchName: Schema49.optional(Schema49.String)
6102
6097
  });
6103
6098
  UpdateDatabaseResourceInput = Schema49.Struct({
6104
6099
  name: Schema49.optional(Schema49.String),
6105
6100
  provider: Schema49.optional(Schema49.String),
6106
6101
  connectionStringEncrypted: Schema49.optional(Schema49.String),
6107
- clusterName: Schema49.optional(Schema49.String),
6108
6102
  branchName: Schema49.optional(Schema49.String)
6109
6103
  });
6110
6104
  ListDatabaseResourcesResult = Schema49.Struct({
@@ -6251,6 +6245,61 @@ var init_resources = __esm({
6251
6245
  ListSearchResourcesResult = Schema49.Struct({
6252
6246
  resources: Schema49.Array(SearchResource)
6253
6247
  });
6248
+ CreateManagedDatabaseResourceInput = Schema49.Struct({
6249
+ name: Schema49.String,
6250
+ kind: Schema49.Literal("database"),
6251
+ provider: Schema49.optional(Schema49.String),
6252
+ tier: Schema49.optional(ResourceTier),
6253
+ env: Schema49.optional(Schema49.String),
6254
+ storageGb: Schema49.optional(Schema49.Number)
6255
+ });
6256
+ CreateManagedKvResourceInput = Schema49.Struct({
6257
+ name: Schema49.String,
6258
+ kind: Schema49.Literal("kv"),
6259
+ provider: Schema49.optional(Schema49.String),
6260
+ tier: Schema49.optional(ResourceTier),
6261
+ storageGb: Schema49.optional(Schema49.Number),
6262
+ maxMemoryMb: Schema49.optional(Schema49.Number)
6263
+ });
6264
+ CreateManagedBlobResourceInput = Schema49.Struct({
6265
+ name: Schema49.String,
6266
+ kind: Schema49.Literal("blob"),
6267
+ provider: Schema49.optional(Schema49.String),
6268
+ tier: Schema49.optional(ResourceTier),
6269
+ bucket: Schema49.optional(Schema49.String),
6270
+ endpoint: Schema49.optional(Schema49.NullOr(Schema49.String)),
6271
+ region: Schema49.optional(Schema49.NullOr(Schema49.String)),
6272
+ accessKeyEncrypted: Schema49.optional(Schema49.NullOr(Schema49.String)),
6273
+ secretKeyEncrypted: Schema49.optional(Schema49.NullOr(Schema49.String))
6274
+ });
6275
+ CreateManagedSearchResourceInput = Schema49.Struct({
6276
+ name: Schema49.String,
6277
+ kind: Schema49.Literal("search"),
6278
+ provider: Schema49.optional(Schema49.String),
6279
+ tier: Schema49.optional(ResourceTier),
6280
+ storageGb: Schema49.optional(Schema49.Number),
6281
+ nodes: Schema49.optional(Schema49.Number)
6282
+ });
6283
+ CreateManagedVolumeResourceInput = Schema49.Struct({
6284
+ name: Schema49.String,
6285
+ kind: Schema49.Literal("volume"),
6286
+ tier: Schema49.optional(ResourceTier),
6287
+ sharing: Schema49.optional(VolumeSharing),
6288
+ sizeGb: Schema49.optional(Schema49.Number),
6289
+ mountPath: Schema49.optional(Schema49.NullOr(Schema49.String))
6290
+ });
6291
+ CreateManagedResourceInput = Schema49.Union(CreateManagedDatabaseResourceInput, CreateManagedKvResourceInput, CreateManagedBlobResourceInput, CreateManagedSearchResourceInput, CreateManagedVolumeResourceInput);
6292
+ UpdateManagedResourceInput = Schema49.Struct({
6293
+ name: Schema49.optional(Schema49.String),
6294
+ storageGb: Schema49.optional(Schema49.Number),
6295
+ backupRetentionDays: Schema49.optional(Schema49.Number),
6296
+ maxMemoryMb: Schema49.optional(Schema49.Number),
6297
+ backupEnabled: Schema49.optional(Schema49.Boolean),
6298
+ memoryGb: Schema49.optional(Schema49.Number),
6299
+ nodes: Schema49.optional(Schema49.Number),
6300
+ sizeGb: Schema49.optional(Schema49.Number),
6301
+ mountPath: Schema49.optional(Schema49.NullOr(Schema49.String))
6302
+ });
6254
6303
  ManagedResource = Schema49.Struct({
6255
6304
  id: Schema49.String,
6256
6305
  orgId: Schema49.optional(Schema49.String),
@@ -6277,9 +6326,7 @@ var init_resources = __esm({
6277
6326
  maskedPublicConnectionString: Schema49.optional(Schema49.NullOr(Schema49.String)),
6278
6327
  storageGb: Schema49.optional(Schema49.Number),
6279
6328
  env: Schema49.optional(Schema49.String),
6280
- engine: Schema49.optional(Schema49.String),
6281
6329
  instances: Schema49.optional(Schema49.Number),
6282
- clusterName: Schema49.optional(Schema49.NullOr(Schema49.String)),
6283
6330
  branchName: Schema49.optional(Schema49.NullOr(Schema49.String)),
6284
6331
  backupRetentionDays: Schema49.optional(Schema49.Number),
6285
6332
  bucket: Schema49.optional(Schema49.String),
@@ -6304,7 +6351,7 @@ var init_resources = __esm({
6304
6351
 
6305
6352
  // ../contract/dist/endpoints/databases.js
6306
6353
  import { Schema as Schema50 } from "effect";
6307
- var IdPath, BindingPath, KindQuery, CreateResourceBody, MetricsResponse, resourcesEndpoints, databasesEndpoints;
6354
+ var IdPath, BindingPath, KindQuery, MetricsResponse, resourcesEndpoints, databasesEndpoints;
6308
6355
  var init_databases = __esm({
6309
6356
  "../contract/dist/endpoints/databases.js"() {
6310
6357
  "use strict";
@@ -6314,25 +6361,6 @@ var init_databases = __esm({
6314
6361
  IdPath = Schema50.Struct({ id: Schema50.String });
6315
6362
  BindingPath = Schema50.Struct({ id: Schema50.String, bindingId: Schema50.String });
6316
6363
  KindQuery = Schema50.Struct({ kind: Schema50.optional(ResourceType) });
6317
- CreateResourceBody = Schema50.Struct({
6318
- name: Schema50.String,
6319
- kind: ResourceType,
6320
- provider: Schema50.optional(Schema50.String),
6321
- tier: Schema50.optional(Schema50.String),
6322
- env: Schema50.optional(Schema50.String),
6323
- storageGb: Schema50.optional(Schema50.Number),
6324
- maxMemoryMb: Schema50.optional(Schema50.Number),
6325
- nodes: Schema50.optional(Schema50.Number),
6326
- bucket: Schema50.optional(Schema50.String),
6327
- endpoint: Schema50.optional(Schema50.NullOr(Schema50.String)),
6328
- region: Schema50.optional(Schema50.NullOr(Schema50.String)),
6329
- accessKeyEncrypted: Schema50.optional(Schema50.NullOr(Schema50.String)),
6330
- secretKeyEncrypted: Schema50.optional(Schema50.NullOr(Schema50.String)),
6331
- sharing: Schema50.optional(Schema50.Literal("single-writer", "shared")),
6332
- sizeGb: Schema50.optional(Schema50.NullOr(Schema50.Number)),
6333
- mountPath: Schema50.optional(Schema50.NullOr(Schema50.String)),
6334
- config: Schema50.optional(Schema50.Record({ key: Schema50.String, value: Schema50.Unknown }))
6335
- });
6336
6364
  MetricsResponse = Schema50.Record({ key: Schema50.String, value: Schema50.Unknown });
6337
6365
  resourcesEndpoints = {
6338
6366
  list: defineEndpoint({
@@ -6350,7 +6378,7 @@ var init_databases = __esm({
6350
6378
  method: "POST",
6351
6379
  path: "/resources",
6352
6380
  success: { status: 202 },
6353
- body: CreateResourceBody,
6381
+ body: CreateManagedResourceInput,
6354
6382
  response: ManagedResource,
6355
6383
  summary: "Provision a new resource (database|kv|blob|search|volume \u2014 async, 202)",
6356
6384
  tags: ["resources"]
@@ -6367,7 +6395,7 @@ var init_databases = __esm({
6367
6395
  method: "PATCH",
6368
6396
  path: "/resources/:id",
6369
6397
  params: IdPath,
6370
- body: Schema50.Record({ key: Schema50.String, value: Schema50.Unknown }),
6398
+ body: UpdateManagedResourceInput,
6371
6399
  response: ManagedResource,
6372
6400
  summary: "Update resource name and/or config patch",
6373
6401
  tags: ["resources"]
@@ -6421,7 +6449,7 @@ var init_databases = __esm({
6421
6449
  path: "/resources/:id/backups",
6422
6450
  params: IdPath,
6423
6451
  response: DatabaseBackupList,
6424
- summary: "List CNPG backups (database-only)",
6452
+ summary: "List managed database backups",
6425
6453
  tags: ["databases"]
6426
6454
  }),
6427
6455
  restore: defineEndpoint({
@@ -6439,7 +6467,7 @@ var init_databases = __esm({
6439
6467
  params: IdPath,
6440
6468
  body: RestoreDatabaseInput,
6441
6469
  response: RestoreDatabaseResult,
6442
- summary: "In-place PITR restore (delete + recreate from B2)",
6470
+ summary: "In-place point-in-time restore",
6443
6471
  tags: ["databases"]
6444
6472
  }),
6445
6473
  branch: defineEndpoint({
@@ -11004,11 +11032,11 @@ var init_project_manifest = __esm({
11004
11032
  ManifestDatabaseResource = Schema83.Struct({
11005
11033
  /** Capability-specific engine. PostgreSQL is the first supported database engine. */
11006
11034
  engine: Schema83.optional(ManifestDatabaseEngine),
11007
- /** CNPG tier; IMMUTABLE after creation. */
11035
+ /** Product tier; IMMUTABLE after creation. */
11008
11036
  tier: PostgresTier,
11009
11037
  storage_gb: Schema83.optional(Schema83.Number.pipe(Schema83.int(), Schema83.between(1, 1e4))),
11010
11038
  version: Schema83.optional(PostgresVersion),
11011
- /** Enable CNPG read-replica(s). */
11039
+ /** Enable read-replica(s). */
11012
11040
  replicas: Schema83.optional(Schema83.Number.pipe(Schema83.int(), Schema83.between(0, 5))),
11013
11041
  /** Branch-per-preview (P0 gap #4 sibling). */
11014
11042
  branch_on_preview: Schema83.optional(Schema83.Boolean)
@@ -16105,17 +16133,48 @@ __export(volumes_exports, {
16105
16133
  delete: () => _delete17,
16106
16134
  list: () => list27
16107
16135
  });
16136
+ function toVolume(resource) {
16137
+ return {
16138
+ id: resource.id,
16139
+ name: resource.name,
16140
+ sizeGb: resource.sizeGb ?? null,
16141
+ sharing: resource.sharing ?? "single-writer",
16142
+ tier: "standard",
16143
+ mountPath: resource.mountPath ?? null,
16144
+ status: resource.status === "active" || resource.status === "error" ? resource.status : "provisioning",
16145
+ createdAt: resource.createdAt ?? (/* @__PURE__ */ new Date(0)).toISOString()
16146
+ };
16147
+ }
16108
16148
  var list27, create18, _delete17;
16109
16149
  var init_volumes = __esm({
16110
16150
  "../management/dist/volumes.js"() {
16111
16151
  "use strict";
16152
+ init_dist();
16112
16153
  init_http();
16113
- list27 = async (client, projectId) => {
16114
- const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/volumes`);
16115
- return Array.isArray(res) ? res : res.volumes ?? [];
16154
+ list27 = async (client, _projectId) => {
16155
+ const { method, path: path6 } = resourcesEndpoints.list;
16156
+ const res = await request(client, method, path6, {
16157
+ query: { kind: "volume" }
16158
+ });
16159
+ return (Array.isArray(res) ? res : res.data ?? []).map(toVolume);
16160
+ };
16161
+ create18 = (client, _projectId, input) => {
16162
+ const { method, path: path6 } = resourcesEndpoints.create;
16163
+ return request(client, method, path6, {
16164
+ body: {
16165
+ kind: "volume",
16166
+ name: input.name,
16167
+ tier: "standard",
16168
+ sizeGb: input.sizeGb,
16169
+ sharing: input.sharing ?? "single-writer",
16170
+ ...input.mountPath ? { mountPath: input.mountPath } : {}
16171
+ }
16172
+ }).then((resource) => ({ volume: toVolume(resource) }));
16173
+ };
16174
+ _delete17 = (client, _projectId, volId) => {
16175
+ const { method, path: path6 } = resourcesEndpoints.delete;
16176
+ return request(client, method, interpolatePath(path6, { id: volId }));
16116
16177
  };
16117
- create18 = (client, projectId, input) => request(client, "POST", `/projects/${encodeURIComponent(projectId)}/volumes`, { body: input });
16118
- _delete17 = (client, projectId, volId) => request(client, "DELETE", `/projects/${encodeURIComponent(projectId)}/volumes/${encodeURIComponent(volId)}`);
16119
16178
  }
16120
16179
  });
16121
16180
 
@@ -34102,7 +34161,7 @@ function volumesListEffect(opts = {}) {
34102
34161
  );
34103
34162
  yield* Console63.log(` ${"\u2500".repeat(70)}`);
34104
34163
  for (const v of volumes) {
34105
- const statusColor2 = v.status === "ready" ? chalk_default.green((v.status ?? "unknown").padEnd(14)) : chalk_default.yellow((v.status ?? "unknown").padEnd(14));
34164
+ const statusColor2 = v.status === "active" ? chalk_default.green((v.status ?? "unknown").padEnd(14)) : chalk_default.yellow((v.status ?? "unknown").padEnd(14));
34106
34165
  const size = v.sizeGb ? `${v.sizeGb}Gi`.padEnd(8) : "\u2014".padEnd(8);
34107
34166
  yield* Console63.log(
34108
34167
  ` ${chalk_default.cyan(v.name.padEnd(24))} ${size} ${statusColor2} ${chalk_default.dim(v.id)}`
@@ -34145,7 +34204,7 @@ function volumesCreateEffect(input) {
34145
34204
  })
34146
34205
  );
34147
34206
  const vol = result.volume;
34148
- yield* Console63.log(chalk_default.green(`\u2713 Volume '${vol.name}' provisioned`));
34207
+ yield* Console63.log(chalk_default.green(`\u2713 Volume '${vol.name}' created`));
34149
34208
  yield* Console63.log("");
34150
34209
  yield* Console63.log(` ${chalk_default.dim("ID:")} ${vol.id}`);
34151
34210
  yield* Console63.log(` ${chalk_default.dim("Size:")} ${vol.sizeGb}Gi`);
@@ -34190,7 +34249,7 @@ var listCmd25 = Command63.make(
34190
34249
  project: project._tag === "Some" ? project.value : void 0,
34191
34250
  org: org._tag === "Some" ? org.value : void 0
34192
34251
  })
34193
- ).pipe(Command63.withDescription("List persistent volumes for the linked or explicit project"));
34252
+ ).pipe(Command63.withDescription("List durable filesystems for the linked or explicit project"));
34194
34253
  var createCmd14 = Command63.make(
34195
34254
  "create",
34196
34255
  {
@@ -34218,7 +34277,7 @@ var createCmd14 = Command63.make(
34218
34277
  project: project._tag === "Some" ? project.value : void 0,
34219
34278
  org: org._tag === "Some" ? org.value : void 0
34220
34279
  })
34221
- ).pipe(Command63.withDescription("Provision a persistent volume"));
34280
+ ).pipe(Command63.withDescription("Create a durable filesystem"));
34222
34281
  var rmCmd6 = Command63.make(
34223
34282
  "rm",
34224
34283
  {
@@ -34233,13 +34292,13 @@ var rmCmd6 = Command63.make(
34233
34292
  project: project._tag === "Some" ? project.value : void 0,
34234
34293
  org: org._tag === "Some" ? org.value : void 0
34235
34294
  })
34236
- ).pipe(Command63.withDescription("Delete a persistent volume"));
34295
+ ).pipe(Command63.withDescription("Delete a durable filesystem"));
34237
34296
  var volumesCommand = Command63.make(
34238
34297
  "volumes",
34239
34298
  {},
34240
34299
  () => Console63.log("Run `sylphx volumes --help` for usage")
34241
34300
  ).pipe(
34242
- Command63.withDescription("Manage persistent volumes"),
34301
+ Command63.withDescription("Manage durable filesystems"),
34243
34302
  Command63.withSubcommands([listCmd25, createCmd14, rmCmd6])
34244
34303
  );
34245
34304