@sealant/sdk-next 0.40.0-next.788 → 0.40.0-next.790

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.
@@ -530,17 +530,20 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
530
530
  readonly resourceDomains: {
531
531
  readonly ensureResourceDomain: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"ensureResourceDomain", "POST", "/v1/resource-domains/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
532
532
  readonly key: import("effect/Schema").String;
533
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
533
534
  readonly budget: import("effect/Schema").optional<import("effect/Schema").Struct<Record<"cpuMillicores" | "memoryBytes" | "storageBytes", import("effect/Schema").Int>>>;
534
535
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
535
536
  readonly resourceDomainId: import("effect/Schema").String;
537
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
536
538
  readonly key: import("effect/Schema").String;
537
539
  readonly createdAt: import("effect/Schema").String;
538
540
  readonly created: import("effect/Schema").Boolean;
539
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
541
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainOwnerDiffersError | typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
540
542
  readonly getResourceDomain: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"getResourceDomain", "GET", "/v1/resource-domains/:resourceDomainId", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
541
543
  readonly resourceDomainId: import("effect/Schema").String;
542
544
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
543
545
  readonly resourceDomainId: import("effect/Schema").String;
546
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
544
547
  readonly key: import("effect/Schema").String;
545
548
  readonly createdAt: import("effect/Schema").String;
546
549
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
@@ -655,12 +658,17 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
655
658
  readonly dockerName: import("effect/Schema").String;
656
659
  readonly bytes: import("effect/Schema").NullOr<import("effect/Schema").Int>;
657
660
  }>>;
658
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
661
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
659
662
  readonly archiveResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"archiveResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/archive", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
660
663
  readonly resourceDomainId: import("effect/Schema").String;
661
664
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
662
665
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
663
666
  readonly instance: import("effect/Schema").Struct<{
667
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
668
+ readonly host: import("effect/Schema").String;
669
+ readonly port: import("effect/Schema").Int;
670
+ readonly callbackHost: import("effect/Schema").String;
671
+ }>>;
664
672
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
665
673
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
666
674
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -716,11 +724,16 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
716
724
  readonly dockerName: import("effect/Schema").String;
717
725
  readonly bytes: import("effect/Schema").NullOr<import("effect/Schema").Int>;
718
726
  }>>;
719
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
727
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
720
728
  readonly getResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"getResourceInstance", "GET", "/v1/resource-domains/:resourceDomainId/instances/:key", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
721
729
  readonly resourceDomainId: import("effect/Schema").String;
722
730
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
723
731
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
732
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
733
+ readonly host: import("effect/Schema").String;
734
+ readonly port: import("effect/Schema").Int;
735
+ readonly callbackHost: import("effect/Schema").String;
736
+ }>>;
724
737
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
725
738
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
726
739
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -769,7 +782,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
769
782
  readonly name: import("effect/Schema").String;
770
783
  readonly dockerName: import("effect/Schema").String;
771
784
  }>>;
772
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
785
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
773
786
  readonly linkResourceWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"linkResourceWorkspace", "PUT", "/v1/resource-domains/:resourceDomainId/workspace-links/:workspaceId", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
774
787
  readonly resourceDomainId: import("effect/Schema").String;
775
788
  readonly workspaceId: import("effect/Schema").String;
@@ -781,13 +794,18 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
781
794
  readonly worktreeKey: import("effect/Schema").brand<import("effect/Schema").String, "ResourceWorktreeKey">;
782
795
  readonly aliases: import("effect/Schema").NullOr<import("effect/Schema").$Record<import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">, import("effect/Schema").Literals<readonly ["project", "worktree"]>>>;
783
796
  readonly attachedExecutors: import("effect/Schema").Int;
784
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | typeof import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
797
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | typeof import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
785
798
  readonly listResourceInstances: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"listResourceInstances", "GET", "/v1/resource-domains/:resourceDomainId/instances", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
786
799
  readonly resourceDomainId: import("effect/Schema").String;
787
800
  }>>, import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
788
801
  readonly archived: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["true", "false"]>>;
789
802
  }>>, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
790
803
  readonly items: import("effect/Schema").$Array<import("effect/Schema").Struct<{
804
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
805
+ readonly host: import("effect/Schema").String;
806
+ readonly port: import("effect/Schema").Int;
807
+ readonly callbackHost: import("effect/Schema").String;
808
+ }>>;
791
809
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
792
810
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
793
811
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -837,13 +855,18 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
837
855
  readonly dockerName: import("effect/Schema").String;
838
856
  }>>;
839
857
  }>>;
840
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
858
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
841
859
  readonly stopResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
842
860
  readonly resourceDomainId: import("effect/Schema").String;
843
861
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
844
862
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
845
863
  readonly by: import("effect/Schema").String;
846
864
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
865
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
866
+ readonly host: import("effect/Schema").String;
867
+ readonly port: import("effect/Schema").Int;
868
+ readonly callbackHost: import("effect/Schema").String;
869
+ }>>;
847
870
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
848
871
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
849
872
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -892,14 +915,20 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
892
915
  readonly name: import("effect/Schema").String;
893
916
  readonly dockerName: import("effect/Schema").String;
894
917
  }>>;
895
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
918
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
896
919
  readonly upResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"upResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/up", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
897
920
  readonly resourceDomainId: import("effect/Schema").String;
898
921
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
899
922
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
900
923
  readonly spec: import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>;
901
924
  readonly cause: import("effect/Schema").Literals<readonly ["use", "person"]>;
925
+ readonly secretEnv: import("effect/Schema").optional<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").String>>;
902
926
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
927
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
928
+ readonly host: import("effect/Schema").String;
929
+ readonly port: import("effect/Schema").Int;
930
+ readonly callbackHost: import("effect/Schema").String;
931
+ }>>;
903
932
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
904
933
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
905
934
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -948,7 +977,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
948
977
  readonly name: import("effect/Schema").String;
949
978
  readonly dockerName: import("effect/Schema").String;
950
979
  }>>;
951
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceAliasTakenError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
980
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceAliasTakenError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
952
981
  };
953
982
  readonly runs: {
954
983
  readonly createRun: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"createRun", "POST", "/v1/runs/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -2898,17 +2927,20 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
2898
2927
  readonly resourceDomains: {
2899
2928
  readonly ensureResourceDomain: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"ensureResourceDomain", "POST", "/v1/resource-domains/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
2900
2929
  readonly key: import("effect/Schema").String;
2930
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
2901
2931
  readonly budget: import("effect/Schema").optional<import("effect/Schema").Struct<Record<"cpuMillicores" | "memoryBytes" | "storageBytes", import("effect/Schema").Int>>>;
2902
2932
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
2903
2933
  readonly resourceDomainId: import("effect/Schema").String;
2934
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
2904
2935
  readonly key: import("effect/Schema").String;
2905
2936
  readonly createdAt: import("effect/Schema").String;
2906
2937
  readonly created: import("effect/Schema").Boolean;
2907
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2938
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainOwnerDiffersError | typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2908
2939
  readonly getResourceDomain: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"getResourceDomain", "GET", "/v1/resource-domains/:resourceDomainId", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
2909
2940
  readonly resourceDomainId: import("effect/Schema").String;
2910
2941
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
2911
2942
  readonly resourceDomainId: import("effect/Schema").String;
2943
+ readonly ownerKind: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["project", "organization", "instance"]>>;
2912
2944
  readonly key: import("effect/Schema").String;
2913
2945
  readonly createdAt: import("effect/Schema").String;
2914
2946
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
@@ -3023,12 +3055,17 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3023
3055
  readonly dockerName: import("effect/Schema").String;
3024
3056
  readonly bytes: import("effect/Schema").NullOr<import("effect/Schema").Int>;
3025
3057
  }>>;
3026
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3058
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3027
3059
  readonly archiveResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"archiveResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/archive", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3028
3060
  readonly resourceDomainId: import("effect/Schema").String;
3029
3061
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3030
3062
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3031
3063
  readonly instance: import("effect/Schema").Struct<{
3064
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
3065
+ readonly host: import("effect/Schema").String;
3066
+ readonly port: import("effect/Schema").Int;
3067
+ readonly callbackHost: import("effect/Schema").String;
3068
+ }>>;
3032
3069
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3033
3070
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3034
3071
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -3084,11 +3121,16 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3084
3121
  readonly dockerName: import("effect/Schema").String;
3085
3122
  readonly bytes: import("effect/Schema").NullOr<import("effect/Schema").Int>;
3086
3123
  }>>;
3087
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3124
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3088
3125
  readonly getResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"getResourceInstance", "GET", "/v1/resource-domains/:resourceDomainId/instances/:key", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3089
3126
  readonly resourceDomainId: import("effect/Schema").String;
3090
3127
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3091
3128
  }>>, never, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3129
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
3130
+ readonly host: import("effect/Schema").String;
3131
+ readonly port: import("effect/Schema").Int;
3132
+ readonly callbackHost: import("effect/Schema").String;
3133
+ }>>;
3092
3134
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3093
3135
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3094
3136
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -3137,7 +3179,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3137
3179
  readonly name: import("effect/Schema").String;
3138
3180
  readonly dockerName: import("effect/Schema").String;
3139
3181
  }>>;
3140
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3182
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3141
3183
  readonly linkResourceWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"linkResourceWorkspace", "PUT", "/v1/resource-domains/:resourceDomainId/workspace-links/:workspaceId", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3142
3184
  readonly resourceDomainId: import("effect/Schema").String;
3143
3185
  readonly workspaceId: import("effect/Schema").String;
@@ -3149,13 +3191,18 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3149
3191
  readonly worktreeKey: import("effect/Schema").brand<import("effect/Schema").String, "ResourceWorktreeKey">;
3150
3192
  readonly aliases: import("effect/Schema").NullOr<import("effect/Schema").$Record<import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">, import("effect/Schema").Literals<readonly ["project", "worktree"]>>>;
3151
3193
  readonly attachedExecutors: import("effect/Schema").Int;
3152
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | typeof import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3194
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | typeof import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3153
3195
  readonly listResourceInstances: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"listResourceInstances", "GET", "/v1/resource-domains/:resourceDomainId/instances", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3154
3196
  readonly resourceDomainId: import("effect/Schema").String;
3155
3197
  }>>, import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3156
3198
  readonly archived: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["true", "false"]>>;
3157
3199
  }>>, never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3158
3200
  readonly items: import("effect/Schema").$Array<import("effect/Schema").Struct<{
3201
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
3202
+ readonly host: import("effect/Schema").String;
3203
+ readonly port: import("effect/Schema").Int;
3204
+ readonly callbackHost: import("effect/Schema").String;
3205
+ }>>;
3159
3206
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3160
3207
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3161
3208
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -3205,13 +3252,18 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3205
3252
  readonly dockerName: import("effect/Schema").String;
3206
3253
  }>>;
3207
3254
  }>>;
3208
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3255
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3209
3256
  readonly stopResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3210
3257
  readonly resourceDomainId: import("effect/Schema").String;
3211
3258
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3212
3259
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3213
3260
  readonly by: import("effect/Schema").String;
3214
3261
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3262
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
3263
+ readonly host: import("effect/Schema").String;
3264
+ readonly port: import("effect/Schema").Int;
3265
+ readonly callbackHost: import("effect/Schema").String;
3266
+ }>>;
3215
3267
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3216
3268
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3217
3269
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -3260,14 +3312,20 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3260
3312
  readonly name: import("effect/Schema").String;
3261
3313
  readonly dockerName: import("effect/Schema").String;
3262
3314
  }>>;
3263
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3315
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceNotFoundError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3264
3316
  readonly upResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"upResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/up", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3265
3317
  readonly resourceDomainId: import("effect/Schema").String;
3266
3318
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3267
3319
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3268
3320
  readonly spec: import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>;
3269
3321
  readonly cause: import("effect/Schema").Literals<readonly ["use", "person"]>;
3322
+ readonly secretEnv: import("effect/Schema").optional<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").String>>;
3270
3323
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3324
+ readonly endpoint: import("effect/Schema").optional<import("effect/Schema").Struct<{
3325
+ readonly host: import("effect/Schema").String;
3326
+ readonly port: import("effect/Schema").Int;
3327
+ readonly callbackHost: import("effect/Schema").String;
3328
+ }>>;
3271
3329
  readonly resourceInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3272
3330
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3273
3331
  readonly alias: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceAlias">;
@@ -3316,7 +3374,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3316
3374
  readonly name: import("effect/Schema").String;
3317
3375
  readonly dockerName: import("effect/Schema").String;
3318
3376
  }>>;
3319
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceAliasTakenError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3377
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceArchivedError | typeof import("@sealant/api-contracts").ResourceInstanceAliasTakenError | typeof import("@sealant/api-contracts").ResourceDomainNotActiveError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3320
3378
  };
3321
3379
  readonly runs: {
3322
3380
  readonly createRun: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"createRun", "POST", "/v1/runs/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -1136,14 +1136,16 @@ export declare const archiveSshKeyOp: (sshKeyId: string, ownerUserId: string) =>
1136
1136
  readonly fingerprint: string;
1137
1137
  readonly createdAt: string;
1138
1138
  }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").SshKeyInternalServerError | import("@sealant/api-contracts").SshKeyNotFoundError, SealantApiClient>;
1139
- export declare const ensureResourceDomainOp: (key: string, budget?: ResourceDomainBudgetLimits) => Effect.Effect<{
1139
+ export declare const ensureResourceDomainOp: (key: string, budget?: ResourceDomainBudgetLimits, ownerKind?: "project" | "organization" | "instance") => Effect.Effect<{
1140
1140
  readonly resourceDomainId: string;
1141
+ readonly ownerKind?: "instance" | "organization" | "project" | undefined;
1141
1142
  readonly key: string;
1142
1143
  readonly createdAt: string;
1143
1144
  readonly created: boolean;
1144
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | Schema.SchemaError, SealantApiClient>;
1145
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainBudgetDiffersError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainOwnerDiffersError | Schema.SchemaError, SealantApiClient>;
1145
1146
  export declare const getResourceDomainOp: (resourceDomainId: string) => Effect.Effect<{
1146
1147
  readonly resourceDomainId: string;
1148
+ readonly ownerKind?: "instance" | "organization" | "project" | undefined;
1147
1149
  readonly key: string;
1148
1150
  readonly createdAt: string;
1149
1151
  }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | Schema.SchemaError, SealantApiClient>;
@@ -1221,6 +1223,11 @@ export declare const setResourceDomainBudgetOp: (resourceDomainId: string, paylo
1221
1223
  };
1222
1224
  }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainBudgetRevisionConflictError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | Schema.SchemaError, SealantApiClient>;
1223
1225
  export declare const upResourceInstanceOp: (resourceDomainId: string, key: string, payload: UpResourceInstanceRequest) => Effect.Effect<{
1226
+ readonly endpoint?: {
1227
+ readonly host: string;
1228
+ readonly port: number;
1229
+ readonly callbackHost: string;
1230
+ } | undefined;
1224
1231
  readonly resourceInstanceId: string & import("effect/Brand").Brand<"ResourceInstanceId">;
1225
1232
  readonly key: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
1226
1233
  readonly alias: string & import("effect/Brand").Brand<"ResourceInstanceAlias">;
@@ -1269,8 +1276,13 @@ export declare const upResourceInstanceOp: (resourceDomainId: string, key: strin
1269
1276
  readonly name: string;
1270
1277
  readonly dockerName: string;
1271
1278
  }[];
1272
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotActiveError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceAliasTakenError | import("@sealant/api-contracts").ResourceInstanceArchivedError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1279
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotActiveError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceAliasTakenError | import("@sealant/api-contracts").ResourceInstanceArchivedError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1273
1280
  export declare const getResourceInstanceOp: (resourceDomainId: string, key: string) => Effect.Effect<{
1281
+ readonly endpoint?: {
1282
+ readonly host: string;
1283
+ readonly port: number;
1284
+ readonly callbackHost: string;
1285
+ } | undefined;
1274
1286
  readonly resourceInstanceId: string & import("effect/Brand").Brand<"ResourceInstanceId">;
1275
1287
  readonly key: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
1276
1288
  readonly alias: string & import("effect/Brand").Brand<"ResourceInstanceAlias">;
@@ -1319,9 +1331,14 @@ export declare const getResourceInstanceOp: (resourceDomainId: string, key: stri
1319
1331
  readonly name: string;
1320
1332
  readonly dockerName: string;
1321
1333
  }[];
1322
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1334
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1323
1335
  export declare const listResourceInstancesOp: (resourceDomainId: string, archived: boolean) => Effect.Effect<{
1324
1336
  readonly items: readonly {
1337
+ readonly endpoint?: {
1338
+ readonly host: string;
1339
+ readonly port: number;
1340
+ readonly callbackHost: string;
1341
+ } | undefined;
1325
1342
  readonly resourceInstanceId: string & import("effect/Brand").Brand<"ResourceInstanceId">;
1326
1343
  readonly key: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
1327
1344
  readonly alias: string & import("effect/Brand").Brand<"ResourceInstanceAlias">;
@@ -1371,8 +1388,13 @@ export declare const listResourceInstancesOp: (resourceDomainId: string, archive
1371
1388
  readonly dockerName: string;
1372
1389
  }[];
1373
1390
  }[];
1374
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | Schema.SchemaError, SealantApiClient>;
1391
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError, SealantApiClient>;
1375
1392
  export declare const stopResourceInstanceOp: (resourceDomainId: string, key: string, by: string) => Effect.Effect<{
1393
+ readonly endpoint?: {
1394
+ readonly host: string;
1395
+ readonly port: number;
1396
+ readonly callbackHost: string;
1397
+ } | undefined;
1376
1398
  readonly resourceInstanceId: string & import("effect/Brand").Brand<"ResourceInstanceId">;
1377
1399
  readonly key: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
1378
1400
  readonly alias: string & import("effect/Brand").Brand<"ResourceInstanceAlias">;
@@ -1421,9 +1443,14 @@ export declare const stopResourceInstanceOp: (resourceDomainId: string, key: str
1421
1443
  readonly name: string;
1422
1444
  readonly dockerName: string;
1423
1445
  }[];
1424
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceArchivedError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1446
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceArchivedError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1425
1447
  export declare const archiveResourceInstanceOp: (resourceDomainId: string, key: string) => Effect.Effect<{
1426
1448
  readonly instance: {
1449
+ readonly endpoint?: {
1450
+ readonly host: string;
1451
+ readonly port: number;
1452
+ readonly callbackHost: string;
1453
+ } | undefined;
1427
1454
  readonly resourceInstanceId: string & import("effect/Brand").Brand<"ResourceInstanceId">;
1428
1455
  readonly key: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
1429
1456
  readonly alias: string & import("effect/Brand").Brand<"ResourceInstanceAlias">;
@@ -1479,7 +1506,7 @@ export declare const archiveResourceInstanceOp: (resourceDomainId: string, key:
1479
1506
  readonly dockerName: string;
1480
1507
  readonly bytes: number | null;
1481
1508
  }[];
1482
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1509
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1483
1510
  export declare const linkResourceWorkspaceOp: (resourceDomainId: string, workspaceId: string, worktreeKey: string, aliases?: Readonly<Record<string, "project" | "worktree">>) => Effect.Effect<{
1484
1511
  readonly workspaceId: string;
1485
1512
  readonly worktreeKey: string & import("effect/Brand").Brand<"ResourceWorktreeKey">;
@@ -1487,7 +1514,7 @@ export declare const linkResourceWorkspaceOp: (resourceDomainId: string, workspa
1487
1514
  readonly [x: string & import("effect/Brand").Brand<"ResourceInstanceAlias">]: "project" | "worktree";
1488
1515
  } | null;
1489
1516
  readonly attachedExecutors: number;
1490
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotActiveError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError | import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1517
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotActiveError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | import("@sealant/api-contracts").ResourceWorkspaceLinkedElsewhereError | import("@sealant/api-contracts").ResourceWorkspaceNotFoundError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1491
1518
  export declare const archiveResourceDomainOp: (resourceDomainId: string) => Effect.Effect<{
1492
1519
  readonly volumes: readonly {
1493
1520
  readonly instanceKey: string & import("effect/Brand").Brand<"ResourceInstanceKey">;
@@ -1495,4 +1522,4 @@ export declare const archiveResourceDomainOp: (resourceDomainId: string) => Effe
1495
1522
  readonly dockerName: string;
1496
1523
  readonly bytes: number | null;
1497
1524
  }[];
1498
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError, SealantApiClient>;
1525
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError, SealantApiClient>;
@@ -88,8 +88,12 @@ export const createSshKeyOp = (payload) => Effect.flatMap(SealantApiClient, (cli
88
88
  export const listSshKeysOp = (ownerUserId) => Effect.flatMap(SealantApiClient, (client) => client.sshKeys.listSshKeys({ query: { ownerUserId } }));
89
89
  export const archiveSshKeyOp = (sshKeyId, ownerUserId) => Effect.flatMap(SealantApiClient, (client) => client.sshKeys.archiveSshKey({ params: { sshKeyId }, query: { ownerUserId } }));
90
90
  // ---- resource domains (the SDK's scopes) ----
91
- export const ensureResourceDomainOp = (key, budget) => Effect.flatMap(SealantApiClient, (client) => client.resourceDomains.ensureResourceDomain({
92
- payload: budget === undefined ? { key } : { key, budget },
91
+ export const ensureResourceDomainOp = (key, budget, ownerKind) => Effect.flatMap(SealantApiClient, (client) => client.resourceDomains.ensureResourceDomain({
92
+ payload: {
93
+ key,
94
+ ...(budget === undefined ? {} : { budget }),
95
+ ...(ownerKind === undefined ? {} : { ownerKind }),
96
+ },
93
97
  }));
94
98
  export const getResourceDomainOp = (resourceDomainId) => Effect.flatMap(SealantApiClient, (client) => client.resourceDomains.getResourceDomain({ params: { resourceDomainId } }));
95
99
  export const grantResourceDomainMemberOp = (resourceDomainId, userId, payload) => Effect.flatMap(SealantApiClient, (client) => client.resourceDomains.grantResourceDomainMember({
@@ -6,6 +6,13 @@ import { type SealantInternalConfig } from "./internal/config.js";
6
6
  * `ResourceInstanceSpecRefusedError`, naming each).
7
7
  */
8
8
  export interface ScopeInstanceSpec {
9
+ /** Caller-only reach requires an organization or instance scope, null idle stop and no worktree. */
10
+ readonly reach?: {
11
+ readonly kind: "caller";
12
+ readonly caller: string;
13
+ readonly port: number;
14
+ readonly callbackPort: number;
15
+ };
9
16
  /** The DNS name a linked workspace reaches it by (`db`). */
10
17
  readonly alias: string;
11
18
  /** Null: every linked workspace reaches it. Set: only workspaces linked with this worktree key. */
@@ -14,12 +21,13 @@ export interface ScopeInstanceSpec {
14
21
  readonly image: string;
15
22
  /** Replaces the image's CMD; its ENTRYPOINT always runs. */
16
23
  readonly command: ReadonlyArray<string> | null;
17
- /** Plain env. Not for secrets: put a secret in an exec's stdin. */
24
+ /** Plain env. Caller instances receive secrets through up's write-only secretEnv option. */
18
25
  readonly env: Readonly<Record<string, string>>;
19
- /** Named volumes; every image `VOLUME` gets one too. None is ever deleted by Sealant. */
26
+ /** Retained named volumes. Caller instances must declare every image VOLUME and storageBytes. */
20
27
  readonly volumes: ReadonlyArray<{
21
28
  readonly name: string;
22
29
  readonly mountPath: string;
30
+ readonly storageBytes?: number;
23
31
  }>;
24
32
  readonly limits: {
25
33
  readonly cpuMillicores: number;
@@ -33,8 +41,8 @@ export interface ScopeInstanceSpec {
33
41
  readonly argv: ReadonlyArray<string>;
34
42
  readonly user: string | null;
35
43
  };
36
- /** Seconds with no live linked workspace reaching it before Sealant stops it. */
37
- readonly idleStopAfterSeconds: number;
44
+ /** Workspace idle timeout. Caller-only instances require null and never idle-stop. */
45
+ readonly idleStopAfterSeconds: number | null;
38
46
  }
39
47
  export type ScopeInstanceStopReason = {
40
48
  readonly kind: "idle";
@@ -74,6 +82,12 @@ export type ScopeInstanceState = {
74
82
  readonly at: Date;
75
83
  };
76
84
  export interface ScopeInstance {
85
+ /** Reachable only by the configured server caller. */
86
+ readonly endpoint?: {
87
+ readonly host: string;
88
+ readonly port: number;
89
+ readonly callbackHost: string;
90
+ };
77
91
  /** `rin:<uuid>`. */
78
92
  readonly id: string;
79
93
  readonly key: string;
@@ -119,7 +133,11 @@ export interface ScopeInstances {
119
133
  */
120
134
  up(key: string, spec: ScopeInstanceSpec, options: {
121
135
  readonly cause: "use" | "person";
136
+ /** Omission retains secrets; an explicit map replaces them. Requires Core's credentials key. */
137
+ readonly secretEnv?: Readonly<Record<string, string>>;
122
138
  }): Promise<ScopeInstance>;
139
+ /** Download a stopped named volume as an uncompressed tar stream. No volume is deleted. */
140
+ backup(key: string, volume: string): Promise<ReadableStream<Uint8Array>>;
123
141
  /** Rejects with 404 `ResourceInstanceNotFoundError` when the scope has none by this key. */
124
142
  get(key: string): Promise<ScopeInstance>;
125
143
  /** The scope's instances; `archived: true` lists the archived ones, whose volumes are kept. */
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * A scope's long-running instances (a project's Postgres, Redis or any image), the workspaces that
3
- * reach them, and the scope's archive. Instances run on Docker only: on any other runtime every
4
- * call rejects with 409 `ResourceRuntimeUnsupportedError` (`resources run on Docker; this Sealant
5
- * runs <runtime>`).
3
+ * reach them, and the scope's archive. Organization and installation scopes use caller-only
4
+ * reach on Docker or Kubernetes. Other providers reject with `ResourceRuntimeUnsupportedError`.
6
5
  */
7
- import { RESOURCE_INSTANCE_EXEC, } from "@sealant/api-contracts";
6
+ import { RESOURCE_INSTANCE_EXEC, RESOURCE_INSTANCE_BACKUP, } from "@sealant/api-contracts";
8
7
  import { archiveResourceDomainOp, archiveResourceInstanceOp, getResourceInstanceOp, linkResourceWorkspaceOp, listResourceInstancesOp, stopResourceInstanceOp, upResourceInstanceOp, } from "./effect/operations.js";
9
8
  import { SealantApiError, SealantBudgetExceededError, SealantError } from "./errors.js";
10
9
  import { resolveRequestPriority } from "./internal/config.js";
@@ -31,6 +30,7 @@ const toState = (state) => {
31
30
  };
32
31
  const toInstance = (wire) => ({
33
32
  id: wire.resourceInstanceId,
33
+ ...(wire.endpoint === undefined ? {} : { endpoint: wire.endpoint }),
34
34
  key: wire.key,
35
35
  alias: wire.alias,
36
36
  worktreeKey: wire.worktreeKey,
@@ -138,7 +138,30 @@ const exec = async (config, scopeId, key, options) => {
138
138
  };
139
139
  export const makeScopeInstances = (runtime, config, scopeId) => ({
140
140
  instances: {
141
- up: async (key, spec, { cause }) => toInstance(await runtime.run(upResourceInstanceOp(scopeId, key, { spec: { ...spec }, cause }))),
141
+ up: async (key, spec, { cause, secretEnv }) => toInstance(await runtime.run(upResourceInstanceOp(scopeId, key, {
142
+ spec: { ...spec },
143
+ cause,
144
+ ...(secretEnv === undefined ? {} : { secretEnv }),
145
+ }))),
146
+ backup: async (key, volume) => {
147
+ const path = RESOURCE_INSTANCE_BACKUP.path
148
+ .replace(":resourceDomainId", encodeURIComponent(scopeId))
149
+ .replace(":key", encodeURIComponent(key))
150
+ .replace(":volume", encodeURIComponent(volume));
151
+ const response = await (config.fetch ?? fetch)(new URL(path, config.baseUrl), {
152
+ headers: {
153
+ "x-sealant-request-priority": resolveRequestPriority(config.requestPriority),
154
+ ...(config.apiKey === undefined ? {} : { authorization: `Bearer ${config.apiKey}` }),
155
+ },
156
+ });
157
+ if (!response.ok)
158
+ throw new SealantApiError("The stopped-volume backup was refused.", {
159
+ status: response.status,
160
+ });
161
+ if (response.body === null)
162
+ throw new SealantError("The backup response has no stream.");
163
+ return response.body;
164
+ },
142
165
  get: async (key) => toInstance(await runtime.run(getResourceInstanceOp(scopeId, key))),
143
166
  list: async (options) => (await runtime.run(listResourceInstancesOp(scopeId, options?.archived === true))).items.map(toInstance),
144
167
  stop: async (key, reason) => toInstance(await runtime.run(stopResourceInstanceOp(scopeId, key, reason.by))),
package/dist/scopes.d.ts CHANGED
@@ -11,6 +11,8 @@ import type { SdkRuntime } from "./effect/runtime.js";
11
11
  import type { SealantInternalConfig } from "./internal/config.js";
12
12
  import { type ScopeArchivedVolume, type ScopeInstances, type ScopeWorkspaces } from "./scope-instances.js";
13
13
  export interface ScopeInfo {
14
+ /** The application key identifies this owner. Older servers omit it and mean project. */
15
+ readonly ownerKind?: "project" | "organization" | "instance";
14
16
  /** `rdm:<uuid>`. No person field of the API accepts it. */
15
17
  readonly id: string;
16
18
  /** `<application>:<name>`, unique across every application. */
@@ -126,6 +128,7 @@ export interface ScopesNamespace {
126
128
  */
127
129
  ensure(options: {
128
130
  readonly key: string;
131
+ readonly ownerKind?: "project" | "organization" | "instance";
129
132
  readonly budget?: ScopeBudgetLimits;
130
133
  }): Promise<EnsuredScope>;
131
134
  get(scopeId: string): Promise<ScopeInfo>;
package/dist/scopes.js CHANGED
@@ -12,14 +12,15 @@ import { ensureResourceDomainOp, getResourceDomainBudgetOp, getResourceDomainMem
12
12
  import { makeScopeInstances, } from "./scope-instances.js";
13
13
  const toScope = (wire) => ({
14
14
  id: wire.resourceDomainId,
15
+ ...(wire.ownerKind === undefined ? {} : { ownerKind: wire.ownerKind }),
15
16
  key: wire.key,
16
17
  createdAt: wire.createdAt,
17
18
  });
18
19
  export const makeScopes = (runtime, config) => {
19
20
  const get = async (scopeId) => toScope(await runtime.run(getResourceDomainOp(scopeId)));
20
21
  return {
21
- ensure: async ({ key, budget }) => {
22
- const wire = await runtime.run(ensureResourceDomainOp(key, budget));
22
+ ensure: async ({ key, budget, ownerKind }) => {
23
+ const wire = await runtime.run(ensureResourceDomainOp(key, budget, ownerKind));
23
24
  return { ...toScope(wire), created: wire.created };
24
25
  },
25
26
  get,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealant/sdk-next",
3
- "version": "0.40.0-next.788",
3
+ "version": "0.40.0-next.790",
4
4
  "description": "The fluent public SDK for Sealant — create a workspace, run a harness, replay the record.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,12 +26,12 @@
26
26
  "node": ">=20"
27
27
  },
28
28
  "dependencies": {
29
- "@sealant/api-contracts": "npm:@sealant/api-contracts-next@0.40.0-next.788"
29
+ "@sealant/api-contracts": "npm:@sealant/api-contracts-next@0.40.0-next.790"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "effect": "^4.0.5"
33
33
  },
34
- "gitHead": "f6502cc9da8bd88164ccc17146ac9a9ed5bcdd3f",
34
+ "gitHead": "67830c522d414c65ba5ee22db29bac4b0fa31fc4",
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  }