@sylphx/cli 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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.5.1",
18
+ version: "0.5.2",
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.8.0",
74
+ "@sylphx/sdk": "0.9.0",
75
75
  chalk: "^5.3.0",
76
76
  effect: "3.21.0",
77
77
  eventsource: "^2.0.2",
@@ -3993,10 +3993,11 @@ var init_ids = __esm({
3993
3993
 
3994
3994
  // ../contract/dist/schemas/auth.js
3995
3995
  import { Schema as Schema34 } from "effect";
3996
- var AuthTokens, SessionUser, SignInInput, SignInResult, SignUpInput, SignUpResult, SessionResult, AuthUser, LoginRequest, LoginResponse, RegisterRequest, RegisterResponse, AuthTokensResponse, TwoFactorVerifyRequest, UserFullProfile, DeviceInitRequest, DeviceInitResponse, DevicePollResponse, DeviceApproveRequest, DeviceApproveResponse, DeviceDenyRequest, DeviceDenyResponse, OAuthTokenAuthorizationCodeRequest, OAuthTokenRefreshRequest, OAuthTokenDeviceCodeRequest, OAuthTokenClientCredentialsRequest, OAuthTokenRequest, OAuthTokenResponse, OAuthClientCredentialsResponse, OAuthTokenErrorCode, OAuthTokenErrorResponse, OAuthRevokeRequest, OAuthRevokeResponse, OAuthIntrospectRequest, OAuthIntrospectResponse, PlatformSession, PlatformSessionsListResponse, PlatformSessionRevokeRequest, PlatformSessionRevokeResponse, PlatformSessionRevokeOtherResponse, PlatformSessionRevokeAllResponse, PlatformSessionRenameRequest, PlatformSessionRenameResponse, PlatformPasswordStatusResponse, PlatformPasswordSetRequest, PlatformPasswordSetResponse, PlatformPasswordChangeRequest, PlatformPasswordChangeResponse, AuthUserExportResponse, AuthUserDeleteRequest, AuthUserDeleteResponse, AuditScopeLiteral, PlatformAuditQueryRequest, PlatformAuditEvent, PlatformAuditQueryResponse, RateLimitScopeLiteral, RateLimitStrategyLiteral, NamespaceString, PlatformRateLimitStatusRequest, PlatformRateLimitStatusRow, PlatformRateLimitStatusResponse, PlatformRateLimitStrategiesListRequest, PlatformRateLimitStrategyRow, PlatformRateLimitStrategiesListResponse, PlatformRateLimitNamespaceParams, PlatformRateLimitStrategyUpsertRequest, PlatformRateLimitStrategyUpsertResponse, PlatformRateLimitStrategyDeleteRequest, PlatformRateLimitStrategyDeleteResponse, PasskeySignupChallengeRequest, PasskeySignupChallengeResponse, PasskeySignupVerifyRequest, PasskeySignupVerifyResponse, PasskeyPolicyViolationResponse, PrimaryAuthMethodResponse, OrgAuthPolicy, OrgAuthPolicyUpdateRequest;
3996
+ var AuthTokens, SessionUser, SignInInput, SignInResult, SignUpInput, SignUpResult, SessionResult, AuthUser, LoginRequest, LoginResponse, RegisterRequest, RegisterResponse, ResendEmailVerificationRequest, ResendEmailVerificationResponse, AuthTokensResponse, TwoFactorVerifyRequest, UserFullProfile, DeviceInitRequest, DeviceInitResponse, DevicePollResponse, DeviceApproveRequest, DeviceApproveResponse, DeviceDenyRequest, DeviceDenyResponse, OAuthTokenAuthorizationCodeRequest, OAuthTokenRefreshRequest, OAuthTokenDeviceCodeRequest, OAuthTokenClientCredentialsRequest, OAuthTokenRequest, OAuthTokenResponse, OAuthClientCredentialsResponse, OAuthTokenErrorCode, OAuthTokenErrorResponse, OAuthRevokeRequest, OAuthRevokeResponse, OAuthIntrospectRequest, OAuthIntrospectResponse, PlatformSession, PlatformSessionsListResponse, PlatformSessionRevokeRequest, PlatformSessionRevokeResponse, PlatformSessionRevokeOtherResponse, PlatformSessionRevokeAllResponse, PlatformSessionRenameRequest, PlatformSessionRenameResponse, PlatformPasswordStatusResponse, PlatformPasswordSetRequest, PlatformPasswordSetResponse, PlatformPasswordChangeRequest, PlatformPasswordChangeResponse, AuthUserExportResponse, AuthUserDeleteRequest, AuthUserDeleteResponse, AuditScopeLiteral, PlatformAuditQueryRequest, PlatformAuditEvent, PlatformAuditQueryResponse, RateLimitScopeLiteral, RateLimitStrategyLiteral, NamespaceString, PlatformRateLimitStatusRequest, PlatformRateLimitStatusRow, PlatformRateLimitStatusResponse, PlatformRateLimitStrategiesListRequest, PlatformRateLimitStrategyRow, PlatformRateLimitStrategiesListResponse, PlatformRateLimitNamespaceParams, PlatformRateLimitStrategyUpsertRequest, PlatformRateLimitStrategyUpsertResponse, PlatformRateLimitStrategyDeleteRequest, PlatformRateLimitStrategyDeleteResponse, PasskeySignupChallengeRequest, PasskeySignupChallengeResponse, PasskeySignupVerifyRequest, PasskeySignupVerifyResponse, PasskeyPolicyViolationResponse, PrimaryAuthMethodResponse, OrgAuthPolicy, OrgAuthPolicyUpdateRequest;
3997
3997
  var init_auth = __esm({
3998
3998
  "../contract/dist/schemas/auth.js"() {
3999
3999
  "use strict";
4000
+ init_primitives();
4000
4001
  init_ids();
4001
4002
  AuthTokens = Schema34.Struct({
4002
4003
  accessToken: Schema34.String,
@@ -4076,6 +4077,13 @@ var init_auth = __esm({
4076
4077
  name: Schema34.NullOr(Schema34.String)
4077
4078
  })
4078
4079
  });
4080
+ ResendEmailVerificationRequest = Schema34.Struct({
4081
+ email: Email
4082
+ });
4083
+ ResendEmailVerificationResponse = Schema34.Struct({
4084
+ success: Schema34.Literal(true),
4085
+ message: Schema34.String
4086
+ });
4079
4087
  AuthTokensResponse = Schema34.Struct({
4080
4088
  accessToken: Schema34.String,
4081
4089
  refreshToken: Schema34.String,
@@ -5307,7 +5315,7 @@ var init_database = __esm({
5307
5315
 
5308
5316
  // ../contract/dist/endpoints/databases.js
5309
5317
  import { Schema as Schema45 } from "effect";
5310
- var IdPath, BindingPath, KindQuery, CreateResourceBody, MetricsResponse, databasesEndpoints;
5318
+ var IdPath, BindingPath, KindQuery, CreateResourceBody, MetricsResponse, databasesEndpoints, resourcesEndpoints;
5311
5319
  var init_databases = __esm({
5312
5320
  "../contract/dist/endpoints/databases.js"() {
5313
5321
  "use strict";
@@ -5343,7 +5351,7 @@ var init_databases = __esm({
5343
5351
  query: KindQuery,
5344
5352
  response: Schema45.Struct({ data: Schema45.Array(Database) }),
5345
5353
  summary: "List resources (filter via ?kind=database|kv|blob|search|volume)",
5346
- tags: ["databases"]
5354
+ tags: ["resources"]
5347
5355
  }),
5348
5356
  create: defineEndpoint({
5349
5357
  method: "POST",
@@ -5351,7 +5359,7 @@ var init_databases = __esm({
5351
5359
  body: CreateResourceBody,
5352
5360
  response: Database,
5353
5361
  summary: "Provision a new resource (database|kv|blob|search|volume \u2014 async, 202)",
5354
- tags: ["databases"]
5362
+ tags: ["resources"]
5355
5363
  }),
5356
5364
  get: defineEndpoint({
5357
5365
  method: "GET",
@@ -5359,7 +5367,7 @@ var init_databases = __esm({
5359
5367
  params: IdPath,
5360
5368
  response: Database,
5361
5369
  summary: "Get a resource (includes live status)",
5362
- tags: ["databases"]
5370
+ tags: ["resources"]
5363
5371
  }),
5364
5372
  update: defineEndpoint({
5365
5373
  method: "PATCH",
@@ -5368,7 +5376,7 @@ var init_databases = __esm({
5368
5376
  body: Schema45.Record({ key: Schema45.String, value: Schema45.Unknown }),
5369
5377
  response: Database,
5370
5378
  summary: "Update resource name and/or config patch",
5371
- tags: ["databases"]
5379
+ tags: ["resources"]
5372
5380
  }),
5373
5381
  delete: defineEndpoint({
5374
5382
  method: "DELETE",
@@ -5376,7 +5384,7 @@ var init_databases = __esm({
5376
5384
  params: IdPath,
5377
5385
  response: Schema45.Struct({ success: Schema45.optional(Schema45.Boolean) }),
5378
5386
  summary: "Deprovision a resource (204 on success, 409 when bindings exist)",
5379
- tags: ["databases"]
5387
+ tags: ["resources"]
5380
5388
  }),
5381
5389
  metrics: defineEndpoint({
5382
5390
  method: "GET",
@@ -5384,7 +5392,7 @@ var init_databases = __esm({
5384
5392
  params: IdPath,
5385
5393
  response: MetricsResponse,
5386
5394
  summary: "Prometheus metrics snapshot (adapts by resource kind)",
5387
- tags: ["databases"]
5395
+ tags: ["resources"]
5388
5396
  }),
5389
5397
  backups: defineEndpoint({
5390
5398
  method: "GET",
@@ -5427,7 +5435,7 @@ var init_databases = __esm({
5427
5435
  params: IdPath,
5428
5436
  response: Schema45.Struct({ bindings: Schema45.Array(DatabaseResourceBinding) }),
5429
5437
  summary: "List environment bindings for a resource",
5430
- tags: ["databases"]
5438
+ tags: ["resources"]
5431
5439
  }),
5432
5440
  createBinding: defineEndpoint({
5433
5441
  method: "POST",
@@ -5436,7 +5444,7 @@ var init_databases = __esm({
5436
5444
  body: CreateBindingInput,
5437
5445
  response: DatabaseResourceBinding,
5438
5446
  summary: "Bind a resource to an environment",
5439
- tags: ["databases"]
5447
+ tags: ["resources"]
5440
5448
  }),
5441
5449
  deleteBinding: defineEndpoint({
5442
5450
  method: "DELETE",
@@ -5444,9 +5452,10 @@ var init_databases = __esm({
5444
5452
  params: BindingPath,
5445
5453
  response: Schema45.Struct({ success: Schema45.Boolean }),
5446
5454
  summary: "Unbind a resource from an environment",
5447
- tags: ["databases"]
5455
+ tags: ["resources"]
5448
5456
  })
5449
5457
  };
5458
+ resourcesEndpoints = databasesEndpoints;
5450
5459
  }
5451
5460
  });
5452
5461
 
@@ -9944,7 +9953,7 @@ var init_privacy = __esm({
9944
9953
 
9945
9954
  // ../contract/dist/schemas/project-manifest.js
9946
9955
  import { Schema as Schema80 } from "effect";
9947
- var Slug2, ManifestEnvName, ManifestRegion, MachineSize, BuildMachineSize, BuildpackName, ServiceType, DeployStrategy, WwwRedirect, ManifestProjectSection, ManifestBuildSection, ManifestDeploySection, ManifestServiceSection, ManifestEnvValue, ManifestDomainSection, PostgresTier, RedisTier, PostgresVersion, BlobVisibility, VolumeAccess, SearchTier, ManifestPostgresResource, ManifestRedisResource, ManifestBlobResource, ManifestVolumeResource, ManifestSearchResource, ManifestResourcesSection, ManifestCiSection, ManifestServiceOverride, ManifestEnvironmentOverride, ManifestEnvironmentsMap, SylphxManifest, SCALE_TO_ZERO_DEFAULTS;
9956
+ var Slug2, ManifestEnvName, ManifestRegion, MachineSize, BuildMachineSize, BuildpackName, ServiceType, DeployStrategy, WwwRedirect, ManifestProjectSection, ManifestBuildSection, ManifestDeploySection, ManifestServiceSection, ManifestEnvValue, ManifestDomainSection, PostgresTier, RedisTier, PostgresVersion, BlobVisibility, VolumeAccess, SearchTier, ManifestDatabaseEngine, ManifestSearchEngine, ManifestDatabaseResource, ManifestRedisResource, ManifestBlobResource, ManifestVolumeResource, ManifestSearchResource, ManifestResourcesSection, ManifestCiSection, ManifestServiceOverride, ManifestEnvironmentOverride, ManifestEnvironmentsMap, SylphxManifest, SCALE_TO_ZERO_DEFAULTS;
9948
9957
  var init_project_manifest = __esm({
9949
9958
  "../contract/dist/schemas/project-manifest.js"() {
9950
9959
  "use strict";
@@ -10068,7 +10077,11 @@ var init_project_manifest = __esm({
10068
10077
  BlobVisibility = Schema80.Literal("private", "public");
10069
10078
  VolumeAccess = Schema80.Literal("ReadWriteOnce", "ReadWriteMany");
10070
10079
  SearchTier = Schema80.Literal("micro", "standard");
10071
- ManifestPostgresResource = Schema80.Struct({
10080
+ ManifestDatabaseEngine = Schema80.Literal("postgres");
10081
+ ManifestSearchEngine = Schema80.Literal("typesense");
10082
+ ManifestDatabaseResource = Schema80.Struct({
10083
+ /** Capability-specific engine. PostgreSQL is the first supported database engine. */
10084
+ engine: Schema80.optional(ManifestDatabaseEngine),
10072
10085
  /** CNPG tier; IMMUTABLE after creation. */
10073
10086
  tier: PostgresTier,
10074
10087
  storage_gb: Schema80.optional(Schema80.Number.pipe(Schema80.int(), Schema80.between(1, 1e4))),
@@ -10094,10 +10107,14 @@ var init_project_manifest = __esm({
10094
10107
  mount: Schema80.String
10095
10108
  });
10096
10109
  ManifestSearchResource = Schema80.Struct({
10097
- tier: SearchTier
10110
+ /** Capability-specific engine. Typesense is the first supported search engine. */
10111
+ engine: Schema80.optional(ManifestSearchEngine),
10112
+ tier: SearchTier,
10113
+ storage_gb: Schema80.optional(Schema80.Number.pipe(Schema80.int(), Schema80.between(1, 1e4))),
10114
+ nodes: Schema80.optional(Schema80.Number.pipe(Schema80.int(), Schema80.between(1, 9)))
10098
10115
  });
10099
10116
  ManifestResourcesSection = Schema80.Struct({
10100
- postgres: Schema80.optional(ManifestPostgresResource),
10117
+ database: Schema80.optional(ManifestDatabaseResource),
10101
10118
  redis: Schema80.optional(ManifestRedisResource),
10102
10119
  blob: Schema80.optional(ManifestBlobResource),
10103
10120
  volume: Schema80.optional(Schema80.Array(ManifestVolumeResource)),
@@ -10975,7 +10992,7 @@ var init_secret = __esm({
10975
10992
  updatedAt: Schema91.String
10976
10993
  });
10977
10994
  CreateSecretInput = Schema91.Struct({
10978
- projectId: Schema91.String,
10995
+ projectId: ProjectId,
10979
10996
  key: SecretKey,
10980
10997
  value: SecretValue,
10981
10998
  description: Schema91.optional(Schema91.String),
@@ -11019,18 +11036,19 @@ var init_secrets = __esm({
11019
11036
  "../contract/dist/endpoints/secrets.js"() {
11020
11037
  "use strict";
11021
11038
  init_endpoint();
11039
+ init_ids();
11022
11040
  init_secret();
11023
11041
  ListQuery = Schema92.Struct({
11024
- projectId: Schema92.String,
11025
- environmentId: Schema92.optional(Schema92.String),
11042
+ projectId: ProjectId,
11043
+ environmentId: Schema92.optional(EnvironmentId),
11026
11044
  includeInactive: Schema92.optional(Schema92.String)
11027
11045
  });
11028
11046
  DetailQuery = Schema92.Struct({
11029
- id: Schema92.String,
11047
+ id: SecretId,
11030
11048
  reveal: Schema92.optional(Schema92.String)
11031
11049
  });
11032
- StatsQuery = Schema92.Struct({ projectId: Schema92.String });
11033
- DeleteBody = Schema92.Struct({ id: Schema92.String });
11050
+ StatsQuery = Schema92.Struct({ projectId: ProjectId });
11051
+ DeleteBody = Schema92.Struct({ id: SecretId });
11034
11052
  secretsEndpoints = {
11035
11053
  list: defineEndpoint({
11036
11054
  method: "GET",
@@ -11813,7 +11831,7 @@ var init_session_replay = __esm({
11813
11831
 
11814
11832
  // ../contract/dist/schemas/storage.js
11815
11833
  import { Schema as Schema96 } from "effect";
11816
- var FileId, FileInfo, UploadTokenInput, UploadTokenResult, UploadUrlInput, UploadUrlResult, ListFilesQuery, ListFilesResult, DeleteFileResult, SignedUrlInput, SignedUrlResult, StorageFileVersion, ListFileVersionsResult, RestoreVersionResult, SoftDeleteFileResult, RestoreFileResult;
11834
+ var FileId, FileInfo, UploadTokenInput, UploadTokenResult, UploadUrlInput, UploadUrlResult, ListFilesQuery, ListFilesResult, DeleteFileResult, SignedUrlInput, SignedUrlResult, StorageFileVersion, ListFileVersionsResult, RestoreVersionResult, RestoreFileResult;
11817
11835
  var init_storage = __esm({
11818
11836
  "../contract/dist/schemas/storage.js"() {
11819
11837
  "use strict";
@@ -11937,10 +11955,6 @@ var init_storage = __esm({
11937
11955
  success: Schema96.Literal(true),
11938
11956
  version: StorageFileVersion
11939
11957
  });
11940
- SoftDeleteFileResult = Schema96.Struct({
11941
- success: Schema96.Literal(true),
11942
- isDeleted: Schema96.Literal(true)
11943
- });
11944
11958
  RestoreFileResult = Schema96.Struct({
11945
11959
  success: Schema96.Literal(true),
11946
11960
  file: FileInfo
@@ -14758,21 +14772,45 @@ var init_resourceBindings = __esm({
14758
14772
  }
14759
14773
  });
14760
14774
 
14775
+ // ../management/dist/resources.js
14776
+ var resources_exports = {};
14777
+ __export(resources_exports, {
14778
+ get: () => get6,
14779
+ list: () => list18
14780
+ });
14781
+ var list18, get6;
14782
+ var init_resources2 = __esm({
14783
+ "../management/dist/resources.js"() {
14784
+ "use strict";
14785
+ init_dist();
14786
+ init_http();
14787
+ list18 = async (client, options = {}) => {
14788
+ const { method, path: path6 } = resourcesEndpoints.list;
14789
+ const res = await request(client, method, path6, options.kind ? { query: { kind: options.kind } } : void 0);
14790
+ return Array.isArray(res) ? res : res.data ?? [];
14791
+ };
14792
+ get6 = (client, id) => {
14793
+ const { method, path: path6 } = resourcesEndpoints.get;
14794
+ return request(client, method, interpolatePath(path6, { id }));
14795
+ };
14796
+ }
14797
+ });
14798
+
14761
14799
  // ../management/dist/runners.js
14762
14800
  var runners_exports = {};
14763
14801
  __export(runners_exports, {
14764
- list: () => list18,
14802
+ list: () => list19,
14765
14803
  listJobs: () => listJobs,
14766
14804
  register: () => register,
14767
14805
  unregister: () => unregister
14768
14806
  });
14769
- var register, list18, listJobs, unregister;
14807
+ var register, list19, listJobs, unregister;
14770
14808
  var init_runners2 = __esm({
14771
14809
  "../management/dist/runners.js"() {
14772
14810
  "use strict";
14773
14811
  init_http();
14774
14812
  register = (client, input) => request(client, "POST", "/runners", { body: input });
14775
- list18 = (client) => request(client, "GET", "/runners");
14813
+ list19 = (client) => request(client, "GET", "/runners");
14776
14814
  listJobs = (client, runnerId) => request(client, "GET", `/runners/${encodeURIComponent(runnerId)}/jobs`);
14777
14815
  unregister = (client, runnerId) => request(client, "DELETE", `/runners/${encodeURIComponent(runnerId)}`);
14778
14816
  }
@@ -14783,7 +14821,7 @@ var saml_exports = {};
14783
14821
  __export(saml_exports, {
14784
14822
  create: () => create11,
14785
14823
  delete: () => _delete12,
14786
- get: () => get6,
14824
+ get: () => get7,
14787
14825
  logs: () => logs2,
14788
14826
  metadata: () => metadata,
14789
14827
  nameIdFormats: () => nameIdFormats,
@@ -14793,13 +14831,13 @@ __export(saml_exports, {
14793
14831
  testConfig: () => testConfig,
14794
14832
  update: () => update4
14795
14833
  });
14796
- var get6, create11, update4, setStatus, _delete12, metadata, logs2, testConfig, templates, nameIdFormats, signatureAlgorithms;
14834
+ var get7, create11, update4, setStatus, _delete12, metadata, logs2, testConfig, templates, nameIdFormats, signatureAlgorithms;
14797
14835
  var init_saml3 = __esm({
14798
14836
  "../management/dist/saml.js"() {
14799
14837
  "use strict";
14800
14838
  init_dist();
14801
14839
  init_http();
14802
- get6 = (client, organizationId) => {
14840
+ get7 = (client, organizationId) => {
14803
14841
  const { method, path: path6 } = samlEndpoints.getProvider;
14804
14842
  return request(client, method, path6, { query: { organizationId } });
14805
14843
  };
@@ -14852,21 +14890,21 @@ var init_saml3 = __esm({
14852
14890
  var sandboxes_exports = {};
14853
14891
  __export(sandboxes_exports, {
14854
14892
  create: () => create12,
14855
- get: () => get7,
14856
- list: () => list19,
14893
+ get: () => get8,
14894
+ list: () => list20,
14857
14895
  terminate: () => terminate
14858
14896
  });
14859
- var create12, list19, get7, terminate;
14897
+ var create12, list20, get8, terminate;
14860
14898
  var init_sandboxes = __esm({
14861
14899
  "../management/dist/sandboxes.js"() {
14862
14900
  "use strict";
14863
14901
  init_http();
14864
14902
  create12 = (client, projectId, body) => request(client, "POST", `/projects/${encodeURIComponent(projectId)}/sandboxes`, { body });
14865
- list19 = async (client, projectId) => {
14903
+ list20 = async (client, projectId) => {
14866
14904
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/sandboxes`);
14867
14905
  return Array.isArray(res) ? res : res.sandboxes ?? [];
14868
14906
  };
14869
- get7 = (client, sandboxId) => request(client, "GET", `/sandboxes/${encodeURIComponent(sandboxId)}`);
14907
+ get8 = (client, sandboxId) => request(client, "GET", `/sandboxes/${encodeURIComponent(sandboxId)}`);
14870
14908
  terminate = async (client, sandboxId) => {
14871
14909
  await request(client, "DELETE", `/sandboxes/${encodeURIComponent(sandboxId)}`);
14872
14910
  };
@@ -14910,19 +14948,19 @@ var secrets_exports = {};
14910
14948
  __export(secrets_exports, {
14911
14949
  create: () => create13,
14912
14950
  delete: () => _delete13,
14913
- get: () => get8,
14914
- list: () => list20,
14951
+ get: () => get9,
14952
+ list: () => list21,
14915
14953
  rollback: () => rollback2,
14916
14954
  stats: () => stats5,
14917
14955
  update: () => update5
14918
14956
  });
14919
- var list20, get8, create13, update5, _delete13, rollback2, stats5;
14957
+ var list21, get9, create13, update5, _delete13, rollback2, stats5;
14920
14958
  var init_secrets2 = __esm({
14921
14959
  "../management/dist/secrets.js"() {
14922
14960
  "use strict";
14923
14961
  init_dist();
14924
14962
  init_http();
14925
- list20 = (client, projectId, options) => {
14963
+ list21 = (client, projectId, options) => {
14926
14964
  const { method, path: path6 } = secretsEndpoints.list;
14927
14965
  return request(client, method, path6, {
14928
14966
  query: {
@@ -14932,7 +14970,7 @@ var init_secrets2 = __esm({
14932
14970
  }
14933
14971
  });
14934
14972
  };
14935
- get8 = (client, id, options) => {
14973
+ get9 = (client, id, options) => {
14936
14974
  const { method, path: path6 } = secretsEndpoints.get;
14937
14975
  return request(client, method, path6, {
14938
14976
  query: { id, reveal: options?.reveal ? "true" : void 0 }
@@ -14989,20 +15027,20 @@ var services_exports = {};
14989
15027
  __export(services_exports, {
14990
15028
  delete: () => _delete14,
14991
15029
  deploy: () => deploy2,
14992
- get: () => get9,
14993
- list: () => list21
15030
+ get: () => get10,
15031
+ list: () => list22
14994
15032
  });
14995
- var list21, get9, deploy2, _delete14;
15033
+ var list22, get10, deploy2, _delete14;
14996
15034
  var init_services = __esm({
14997
15035
  "../management/dist/services.js"() {
14998
15036
  "use strict";
14999
15037
  init_environments2();
15000
15038
  init_http();
15001
- list21 = async (client, projectId) => {
15039
+ list22 = async (client, projectId) => {
15002
15040
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/services`);
15003
15041
  return Array.isArray(res) ? res : res.data ?? [];
15004
15042
  };
15005
- get9 = (client, projectId, name) => request(client, "GET", `/projects/${encodeURIComponent(projectId)}/services/${encodeURIComponent(name)}`);
15043
+ get10 = (client, projectId, name) => request(client, "GET", `/projects/${encodeURIComponent(projectId)}/services/${encodeURIComponent(name)}`);
15006
15044
  deploy2 = async (client, projectId, name, envType) => {
15007
15045
  const environmentId = await resolveId(client, projectId, envType);
15008
15046
  return request(client, "POST", `/projects/${encodeURIComponent(projectId)}/services/${encodeURIComponent(name)}/deploy`, { body: environmentId ? { environmentId } : {} });
@@ -15022,21 +15060,21 @@ var init_serviceTokenRequests = __esm({
15022
15060
  var serviceTokens_exports = {};
15023
15061
  __export(serviceTokens_exports, {
15024
15062
  create: () => create14,
15025
- get: () => get10,
15026
- list: () => list22,
15063
+ get: () => get11,
15064
+ list: () => list23,
15027
15065
  revoke: () => revoke,
15028
15066
  rotate: () => rotate2
15029
15067
  });
15030
- var list22, create14, get10, revoke, rotate2;
15068
+ var list23, create14, get11, revoke, rotate2;
15031
15069
  var init_serviceTokens = __esm({
15032
15070
  "../management/dist/serviceTokens.js"() {
15033
15071
  "use strict";
15034
15072
  init_http();
15035
- list22 = (client, orgId, options) => request(client, "GET", `/orgs/${encodeURIComponent(orgId)}/service-tokens`, {
15073
+ list23 = (client, orgId, options) => request(client, "GET", `/orgs/${encodeURIComponent(orgId)}/service-tokens`, {
15036
15074
  query: { includeRevoked: options?.includeRevoked ? "true" : void 0 }
15037
15075
  });
15038
15076
  create14 = (client, orgId, input) => request(client, "POST", `/orgs/${encodeURIComponent(orgId)}/service-tokens`, { body: input });
15039
- get10 = (client, orgId, tokenId) => request(client, "GET", `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}`);
15077
+ get11 = (client, orgId, tokenId) => request(client, "GET", `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}`);
15040
15078
  revoke = (client, orgId, tokenId) => request(client, "DELETE", `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}`);
15041
15079
  rotate2 = (client, orgId, tokenId) => request(client, "POST", `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}/rotate`);
15042
15080
  }
@@ -15046,16 +15084,16 @@ var init_serviceTokens = __esm({
15046
15084
  var sessionReplay_exports = {};
15047
15085
  __export(sessionReplay_exports, {
15048
15086
  delete: () => _delete15,
15049
- get: () => get11,
15050
- list: () => list23,
15087
+ get: () => get12,
15088
+ list: () => list24,
15051
15089
  stats: () => stats6
15052
15090
  });
15053
- var list23, stats6, get11, _delete15;
15091
+ var list24, stats6, get12, _delete15;
15054
15092
  var init_sessionReplay = __esm({
15055
15093
  "../management/dist/sessionReplay.js"() {
15056
15094
  "use strict";
15057
15095
  init_http();
15058
- list23 = (client, projectId, options) => request(client, "GET", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions`, {
15096
+ list24 = (client, projectId, options) => request(client, "GET", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions`, {
15059
15097
  query: {
15060
15098
  limit: options?.limit !== void 0 ? String(options.limit) : void 0,
15061
15099
  offset: options?.offset !== void 0 ? String(options.offset) : void 0,
@@ -15068,7 +15106,7 @@ var init_sessionReplay = __esm({
15068
15106
  }
15069
15107
  });
15070
15108
  stats6 = (client, projectId) => request(client, "GET", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions/stats`);
15071
- get11 = (client, projectId, sessionId) => request(client, "GET", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions/${encodeURIComponent(sessionId)}`);
15109
+ get12 = (client, projectId, sessionId) => request(client, "GET", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions/${encodeURIComponent(sessionId)}`);
15072
15110
  _delete15 = (client, projectId, sessionId) => request(client, "DELETE", `/session-replay/projects/${encodeURIComponent(projectId)}/sessions/${encodeURIComponent(sessionId)}`);
15073
15111
  }
15074
15112
  });
@@ -15078,14 +15116,14 @@ var storage_exports = {};
15078
15116
  __export(storage_exports, {
15079
15117
  create: () => create15,
15080
15118
  delete: () => _delete16,
15081
- list: () => list24
15119
+ list: () => list25
15082
15120
  });
15083
- var list24, create15, _delete16;
15121
+ var list25, create15, _delete16;
15084
15122
  var init_storage2 = __esm({
15085
15123
  "../management/dist/storage.js"() {
15086
15124
  "use strict";
15087
15125
  init_http();
15088
- list24 = async (client, projectId, envType) => {
15126
+ list25 = async (client, projectId, envType) => {
15089
15127
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/storage`);
15090
15128
  const arr = Array.isArray(res) ? res : [];
15091
15129
  return envType ? arr.filter((r) => !r.envType || r.envType === envType) : arr;
@@ -15100,17 +15138,17 @@ var tasks_exports = {};
15100
15138
  __export(tasks_exports, {
15101
15139
  create: () => create16,
15102
15140
  delete: () => _delete17,
15103
- get: () => get12,
15104
- list: () => list25,
15141
+ get: () => get13,
15142
+ list: () => list26,
15105
15143
  update: () => update6
15106
15144
  });
15107
- var list25, create16, get12, update6, _delete17;
15145
+ var list26, create16, get13, update6, _delete17;
15108
15146
  var init_tasks2 = __esm({
15109
15147
  "../management/dist/tasks.js"() {
15110
15148
  "use strict";
15111
15149
  init_environments2();
15112
15150
  init_http();
15113
- list25 = async (client, projectId, envType) => {
15151
+ list26 = async (client, projectId, envType) => {
15114
15152
  const envId = envType ? await resolveId(client, projectId, envType) : void 0;
15115
15153
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/tasks`, envId ? { query: { envId } } : {});
15116
15154
  return res.tasks ?? [];
@@ -15124,7 +15162,7 @@ var init_tasks2 = __esm({
15124
15162
  const res = await request(client, "POST", `/projects/${encodeURIComponent(projectId)}/tasks`, { body: { ...rest, envId } });
15125
15163
  return res.task;
15126
15164
  };
15127
- get12 = async (client, projectId, taskId) => {
15165
+ get13 = async (client, projectId, taskId) => {
15128
15166
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/tasks/${encodeURIComponent(taskId)}`);
15129
15167
  return res.task;
15130
15168
  };
@@ -15234,14 +15272,14 @@ var volumes_exports = {};
15234
15272
  __export(volumes_exports, {
15235
15273
  create: () => create17,
15236
15274
  delete: () => _delete18,
15237
- list: () => list26
15275
+ list: () => list27
15238
15276
  });
15239
- var list26, create17, _delete18;
15277
+ var list27, create17, _delete18;
15240
15278
  var init_volumes = __esm({
15241
15279
  "../management/dist/volumes.js"() {
15242
15280
  "use strict";
15243
15281
  init_http();
15244
- list26 = async (client, projectId) => {
15282
+ list27 = async (client, projectId) => {
15245
15283
  const res = await request(client, "GET", `/projects/${encodeURIComponent(projectId)}/volumes`);
15246
15284
  return Array.isArray(res) ? res : res.volumes ?? [];
15247
15285
  };
@@ -15335,6 +15373,7 @@ var init_dist2 = __esm({
15335
15373
  init_refresh2();
15336
15374
  init_remoteConfig();
15337
15375
  init_resourceBindings();
15376
+ init_resources2();
15338
15377
  init_runners2();
15339
15378
  init_saml3();
15340
15379
  init_sandboxes();
@@ -15770,12 +15809,13 @@ var init_config = __esm({
15770
15809
  });
15771
15810
 
15772
15811
  // src/lib/ids.ts
15773
- var asEnvId, asDeploymentId, asServiceId, asSecretId;
15812
+ var asEnvId, asDeploymentId, asProjectId, asServiceId, asSecretId;
15774
15813
  var init_ids2 = __esm({
15775
15814
  "src/lib/ids.ts"() {
15776
15815
  "use strict";
15777
15816
  asEnvId = (s) => s;
15778
15817
  asDeploymentId = (s) => s;
15818
+ asProjectId = (s) => s;
15779
15819
  asServiceId = (s) => s;
15780
15820
  asSecretId = (s) => s;
15781
15821
  }
@@ -16224,8 +16264,10 @@ var init_api = __esm({
16224
16264
  removeOrgMember: (orgId, userId) => withClient((c2) => organizations_exports.removeMember(c2, orgId, userId)),
16225
16265
  // ── Databases ──────────────────────────────────────────────────────────
16226
16266
  listDatabases: () => withClient((c2) => databases_exports.list(c2)),
16267
+ listResources: (kind) => withClient((c2) => resources_exports.list(c2, { kind })),
16227
16268
  createDatabase: (data) => withClient((c2) => databases_exports.create(c2, data)),
16228
16269
  getDatabase: (id) => withClient((c2) => databases_exports.get(c2, id)),
16270
+ getResource: (id) => withClient((c2) => resources_exports.get(c2, id)),
16229
16271
  deleteDatabase: (id) => withClient((c2) => databases_exports.delete(c2, id)),
16230
16272
  branchDatabase: (id, data) => withClient((c2) => databases_exports.branch(c2, id, data)),
16231
16273
  // ── Services ───────────────────────────────────────────────────────────
@@ -16855,6 +16897,10 @@ var ApiServiceLive = Layer2.succeed(ApiService, {
16855
16897
  try: () => withAuthedSdk((c2) => databases_exports.list(c2)),
16856
16898
  catch: mapApiError("db")
16857
16899
  }),
16900
+ listResources: (kind) => Effect6.tryPromise({
16901
+ try: () => withAuthedSdk((c2) => resources_exports.list(c2, { kind })),
16902
+ catch: mapApiError("resources")
16903
+ }),
16858
16904
  createDatabase: (data) => Effect6.tryPromise({
16859
16905
  try: () => withAuthedSdk((c2) => databases_exports.create(c2, data)),
16860
16906
  catch: mapApiError("db")
@@ -16863,6 +16909,10 @@ var ApiServiceLive = Layer2.succeed(ApiService, {
16863
16909
  try: () => withAuthedSdk((c2) => databases_exports.get(c2, id)),
16864
16910
  catch: mapApiError("db")
16865
16911
  }),
16912
+ getResource: (id) => Effect6.tryPromise({
16913
+ try: () => withAuthedSdk((c2) => resources_exports.get(c2, id)),
16914
+ catch: mapApiError("resources")
16915
+ }),
16866
16916
  deleteDatabase: (id) => Effect6.tryPromise({
16867
16917
  try: () => withAuthedSdk((c2) => databases_exports.delete(c2, id)),
16868
16918
  catch: mapApiError("db")
@@ -20525,9 +20575,9 @@ function renderManifestToml(manifest) {
20525
20575
  }
20526
20576
  if (manifest.resources) {
20527
20577
  const r = manifest.resources;
20528
- if (r.postgres) {
20529
- parts.push("[resources.postgres]");
20530
- parts.push(...kv(r.postgres));
20578
+ if (r.database) {
20579
+ parts.push("[resources.database]");
20580
+ parts.push(...kv(r.database));
20531
20581
  parts.push("");
20532
20582
  }
20533
20583
  if (r.redis) {
@@ -24684,8 +24734,8 @@ function flagsDeleteEffect(opts) {
24684
24734
  yield* requireAuthEffect;
24685
24735
  const api2 = yield* ApiService;
24686
24736
  const projectId = yield* resolveProjectEffect(opts.project);
24687
- const list27 = yield* api2.listFlags(projectId, { limit: 100 });
24688
- const match = list27.flags.find((f) => f.key === opts.key);
24737
+ const list28 = yield* api2.listFlags(projectId, { limit: 100 });
24738
+ const match = list28.flags.find((f) => f.key === opts.key);
24689
24739
  if (!match) {
24690
24740
  return yield* Effect35.fail(
24691
24741
  new CliCommandError({
@@ -24714,8 +24764,8 @@ function flagsToggleEffect(opts) {
24714
24764
  yield* requireAuthEffect;
24715
24765
  const api2 = yield* ApiService;
24716
24766
  const projectId = yield* resolveProjectEffect(opts.project);
24717
- const list27 = yield* api2.listFlags(projectId, { limit: 100 });
24718
- const match = list27.flags.find((f) => f.key === opts.key);
24767
+ const list28 = yield* api2.listFlags(projectId, { limit: 100 });
24768
+ const match = list28.flags.find((f) => f.key === opts.key);
24719
24769
  if (!match) {
24720
24770
  return yield* Effect35.fail(
24721
24771
  new CliCommandError({
@@ -29098,35 +29148,40 @@ import { Args as Args34, Command as Command48, Options as Options47 } from "@eff
29098
29148
  import { Console as Console48, Effect as Effect58 } from "effect";
29099
29149
  init_chalk();
29100
29150
  init_spinner();
29101
- var resourcesListEffect = Effect58.gen(function* () {
29102
- yield* requireAuthEffect;
29103
- const api2 = yield* ApiService;
29104
- const resources = yield* withSpinner("Fetching resources...", api2.listDatabases);
29105
- if (resources.length === 0) {
29106
- yield* Console48.log(chalk_default.dim(" No resources found."));
29107
- return;
29108
- }
29109
- yield* Console48.log("");
29110
- yield* Console48.log(
29111
- ` ${chalk_default.bold("NAME".padEnd(24))} ${"KIND".padEnd(12)} ${"STATUS".padEnd(14)} ID`
29112
- );
29113
- yield* Console48.log(` ${"\u2500".repeat(72)}`);
29114
- for (const r of resources) {
29115
- const statusColor2 = r.status === "ready" ? chalk_default.green((r.status ?? "unknown").padEnd(14)) : chalk_default.yellow((r.status ?? "unknown").padEnd(14));
29151
+ function resourcesListEffect(input = {}) {
29152
+ return Effect58.gen(function* () {
29153
+ yield* requireAuthEffect;
29154
+ const api2 = yield* ApiService;
29155
+ const resources = yield* withSpinner("Fetching resources...", api2.listResources(input.kind));
29156
+ if (resources.length === 0) {
29157
+ yield* Console48.log(chalk_default.dim(" No resources found."));
29158
+ return;
29159
+ }
29160
+ yield* Console48.log("");
29116
29161
  yield* Console48.log(
29117
- ` ${chalk_default.cyan(r.name.padEnd(24))} ${"database".padEnd(12)} ${statusColor2} ${chalk_default.dim(r.id)}`
29162
+ ` ${chalk_default.bold("NAME".padEnd(24))} ${"KIND".padEnd(12)} ${"STATUS".padEnd(14)} ID`
29118
29163
  );
29119
- }
29120
- yield* Console48.log("");
29121
- });
29164
+ yield* Console48.log(` ${"\u2500".repeat(72)}`);
29165
+ for (const r of resources) {
29166
+ const kind = (r.kind ?? "resource").padEnd(12);
29167
+ const status3 = r.status ?? r.reconcileStatus ?? "unknown";
29168
+ const statusColor2 = status3 === "ready" ? chalk_default.green(status3.padEnd(14)) : chalk_default.yellow(status3.padEnd(14));
29169
+ yield* Console48.log(
29170
+ ` ${chalk_default.cyan(r.name.padEnd(24))} ${kind} ${statusColor2} ${chalk_default.dim(r.id)}`
29171
+ );
29172
+ }
29173
+ yield* Console48.log("");
29174
+ });
29175
+ }
29122
29176
  function resourcesGetEffect(id) {
29123
29177
  return Effect58.gen(function* () {
29124
29178
  yield* requireAuthEffect;
29125
29179
  const api2 = yield* ApiService;
29126
- const r = yield* withSpinner(`Fetching resource ${id}...`, api2.getDatabase(id));
29180
+ const r = yield* withSpinner(`Fetching resource ${id}...`, api2.getResource(id));
29127
29181
  yield* Console48.log("");
29128
29182
  yield* Console48.log(` ${chalk_default.bold("Name:")} ${chalk_default.cyan(r.name)}`);
29129
29183
  yield* Console48.log(` ${chalk_default.bold("ID:")} ${r.id}`);
29184
+ if (r.kind) yield* Console48.log(` ${chalk_default.bold("Kind:")} ${r.kind}`);
29130
29185
  yield* Console48.log(
29131
29186
  ` ${chalk_default.bold("Status:")} ${r.status === "ready" ? chalk_default.green(r.status) : chalk_default.yellow(r.status ?? "unknown")}`
29132
29187
  );
@@ -29207,12 +29262,12 @@ var listCmd17 = Command48.make(
29207
29262
  "list",
29208
29263
  {
29209
29264
  kind: Options47.text("kind").pipe(
29210
- Options47.withDescription("Filter by kind: database, volume, storage"),
29265
+ Options47.withDescription("Filter by kind: database, kv, blob, search, volume"),
29211
29266
  Options47.optional
29212
29267
  )
29213
29268
  },
29214
- () => resourcesListEffect
29215
- ).pipe(Command48.withDescription("List managed resources (databases, volumes, storage)"));
29269
+ ({ kind }) => resourcesListEffect({ kind: kind._tag === "Some" ? kind.value : void 0 })
29270
+ ).pipe(Command48.withDescription("List managed resources (database, kv, blob, search, volume)"));
29216
29271
  var getCmd6 = Command48.make(
29217
29272
  "get",
29218
29273
  { id: Args34.text({ name: "id" }) },
@@ -31119,7 +31174,7 @@ function secretsSetEffect(opts) {
31119
31174
  Effect68.tryPromise({
31120
31175
  try: () => withAuthedSdk(
31121
31176
  (c2) => secrets_exports.create(c2, {
31122
- projectId,
31177
+ projectId: asProjectId(projectId),
31123
31178
  key: opts.key,
31124
31179
  value: opts.value,
31125
31180
  ...opts.description ? { description: opts.description } : {},