@valon-technologies/gestalt 0.0.1-alpha.35 → 0.0.1-alpha.36

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valon-technologies/gestalt",
3
- "version": "0.0.1-alpha.35",
3
+ "version": "0.0.1-alpha.36",
4
4
  "description": "TypeScript SDK for Gestalt executable providers",
5
5
  "type": "module",
6
6
  "repository": {
package/src/api.ts CHANGED
@@ -7,6 +7,9 @@ export interface Subject {
7
7
  id: string;
8
8
  credentialSubjectId: string;
9
9
  email: string;
10
+ kind?: string | undefined;
11
+ displayName?: string | undefined;
12
+ authSource?: string | undefined;
10
13
  }
11
14
 
12
15
  /**
@@ -169,11 +172,17 @@ export function request(
169
172
  id: subject.id ?? "",
170
173
  credentialSubjectId: subject.credentialSubjectId ?? "",
171
174
  email: subject.email ?? "",
175
+ kind: subject.kind,
176
+ displayName: subject.displayName,
177
+ authSource: subject.authSource,
172
178
  },
173
179
  agentSubject: {
174
180
  id: agentSubject.id ?? "",
175
181
  credentialSubjectId: agentSubject.credentialSubjectId ?? "",
176
182
  email: agentSubject.email ?? "",
183
+ kind: agentSubject.kind,
184
+ displayName: agentSubject.displayName,
185
+ authSource: agentSubject.authSource,
177
186
  },
178
187
  credential: {
179
188
  mode: credential.mode ?? "",
@@ -6,16 +6,25 @@ import {
6
6
  type Client,
7
7
  type ServiceImpl,
8
8
  } from "@connectrpc/connect";
9
+ import { EmptySchema } from "@bufbuild/protobuf/wkt";
9
10
 
10
11
  import {
12
+ ActionSchema,
13
+ AddRelationshipRequestSchema,
11
14
  AddRelationshipResponseSchema,
15
+ AuthorizationModelSchema,
16
+ AuthorizationModelResourceTypeFilterSchema,
12
17
  AuthorizationModelRefSchema,
13
18
  AuthorizationModelResourceTypeSchema,
19
+ CheckAccessManyRequestSchema,
14
20
  CheckAccessManyResponseSchema,
21
+ CheckAccessRequestSchema,
15
22
  CheckAccessResponseSchema,
16
23
  DefaultAccessPolicy as ProtoDefaultAccessPolicy,
24
+ DeleteRelationshipRequestSchema,
17
25
  DeleteRelationshipResponseSchema,
18
26
  GetActiveModelRefResponseSchema,
27
+ ListActiveModelResourceTypesRequestSchema,
19
28
  ListRelationshipsRequestSchema,
20
29
  ListActiveModelResourceTypesResponseSchema,
21
30
  ListRelationshipsResponseSchema,
@@ -27,7 +36,9 @@ import {
27
36
  RelationshipTargetType as ProtoRelationshipTargetType,
28
37
  RelationshipTupleSchema,
29
38
  ResourceSchema,
39
+ SetActiveModelRequestSchema,
30
40
  SetActiveModelResponseSchema,
41
+ SetAuthorizationStateRequestSchema,
31
42
  SetAuthorizationStateResponseSchema,
32
43
  SourceLayer as ProtoSourceLayer,
33
44
  SubjectSchema,
@@ -35,12 +46,18 @@ import {
35
46
  SubjectSetTypeSchema,
36
47
  AuthorizationProvider as AuthorizationProviderService,
37
48
  type AddRelationshipRequest as ProtoAddRelationshipRequest,
49
+ type AddRelationshipResponse as ProtoAddRelationshipResponse,
38
50
  type AuthorizationModel as ProtoAuthorizationModel,
39
51
  type AuthorizationModelResourceType as ProtoAuthorizationModelResourceType,
40
52
  type CheckAccessManyRequest as ProtoCheckAccessManyRequest,
53
+ type CheckAccessManyResponse as ProtoCheckAccessManyResponse,
41
54
  type CheckAccessRequest as ProtoCheckAccessRequest,
55
+ type CheckAccessResponse as ProtoCheckAccessResponse,
42
56
  type DeleteRelationshipRequest as ProtoDeleteRelationshipRequest,
57
+ type DeleteRelationshipResponse as ProtoDeleteRelationshipResponse,
58
+ type GetActiveModelRefResponse as ProtoGetActiveModelRefResponse,
43
59
  type ListActiveModelResourceTypesRequest as ProtoListActiveModelResourceTypesRequest,
60
+ type ListActiveModelResourceTypesResponse as ProtoListActiveModelResourceTypesResponse,
44
61
  type ListRelationshipsRequest as ProtoListRelationshipsRequest,
45
62
  type ListRelationshipsResponse as ProtoListRelationshipsResponse,
46
63
  type ModelAllowedTarget as ProtoModelAllowedTarget,
@@ -48,13 +65,16 @@ import {
48
65
  type RelationshipFilter as ProtoRelationshipFilter,
49
66
  type RelationshipTarget as ProtoRelationshipTarget,
50
67
  type RelationshipTuple as ProtoRelationshipTuple,
68
+ type SetActiveModelResponse as ProtoSetActiveModelResponse,
51
69
  type SetActiveModelRequest as ProtoSetActiveModelRequest,
70
+ type SetAuthorizationStateResponse as ProtoSetAuthorizationStateResponse,
52
71
  type SetAuthorizationStateRequest as ProtoSetAuthorizationStateRequest,
53
72
  type SubjectSet as ProtoSubjectSet,
54
73
  } from "./internal/gen/v1/authorization_pb.ts";
55
74
  import { errorMessage, type MaybePromise } from "./api.ts";
56
75
  import { ProviderBase, type ProviderBaseOptions } from "./provider.ts";
57
76
  import {
77
+ dateFromTimestamp,
58
78
  jsonObjectFromStruct,
59
79
  structFromObject,
60
80
  timestampFromDate,
@@ -264,9 +284,29 @@ export interface ListActiveModelResourceTypesResponse {
264
284
  }
265
285
 
266
286
  export interface Authorization {
287
+ checkAccess(request: CheckAccessRequest): Promise<CheckAccessResponse>;
288
+ checkAccessMany(
289
+ request: CheckAccessManyRequest,
290
+ ): Promise<CheckAccessManyResponse>;
267
291
  listRelationships(
268
292
  request: ListRelationshipsRequest,
269
293
  ): Promise<ListRelationshipsResponse>;
294
+ addRelationship(
295
+ request: AddRelationshipRequest,
296
+ ): Promise<AddRelationshipResponse>;
297
+ deleteRelationship(
298
+ request: DeleteRelationshipRequest,
299
+ ): Promise<DeleteRelationshipResponse>;
300
+ setAuthorizationState(
301
+ request: SetAuthorizationStateRequest,
302
+ ): Promise<SetAuthorizationStateResponse>;
303
+ getActiveModelRef(): Promise<GetActiveModelRefResponse>;
304
+ setActiveModel(
305
+ request: SetActiveModelRequest,
306
+ ): Promise<SetActiveModelResponse>;
307
+ listActiveModelResourceTypes(
308
+ request: ListActiveModelResourceTypesRequest,
309
+ ): Promise<ListActiveModelResourceTypesResponse>;
270
310
  }
271
311
 
272
312
  class AuthorizationImpl implements Authorization {
@@ -283,6 +323,20 @@ class AuthorizationImpl implements Authorization {
283
323
  this.client = createClient(AuthorizationProviderService, transport);
284
324
  }
285
325
 
326
+ async checkAccess(request: CheckAccessRequest): Promise<CheckAccessResponse> {
327
+ return checkAccessResponseFromProto(
328
+ await this.client.checkAccess(checkAccessRequestToProto(request)),
329
+ );
330
+ }
331
+
332
+ async checkAccessMany(
333
+ request: CheckAccessManyRequest,
334
+ ): Promise<CheckAccessManyResponse> {
335
+ return checkAccessManyResponseFromProto(
336
+ await this.client.checkAccessMany(checkAccessManyRequestToProto(request)),
337
+ );
338
+ }
339
+
286
340
  async listRelationships(
287
341
  request: ListRelationshipsRequest,
288
342
  ): Promise<ListRelationshipsResponse> {
@@ -290,6 +344,56 @@ class AuthorizationImpl implements Authorization {
290
344
  await this.client.listRelationships(listRelationshipsRequestToProto(request)),
291
345
  );
292
346
  }
347
+
348
+ async addRelationship(
349
+ request: AddRelationshipRequest,
350
+ ): Promise<AddRelationshipResponse> {
351
+ return addRelationshipResponseFromProto(
352
+ await this.client.addRelationship(addRelationshipRequestToProto(request)),
353
+ );
354
+ }
355
+
356
+ async deleteRelationship(
357
+ request: DeleteRelationshipRequest,
358
+ ): Promise<DeleteRelationshipResponse> {
359
+ return deleteRelationshipResponseFromProto(
360
+ await this.client.deleteRelationship(deleteRelationshipRequestToProto(request)),
361
+ );
362
+ }
363
+
364
+ async setAuthorizationState(
365
+ request: SetAuthorizationStateRequest,
366
+ ): Promise<SetAuthorizationStateResponse> {
367
+ return setAuthorizationStateResponseFromProto(
368
+ await this.client.setAuthorizationState(
369
+ setAuthorizationStateRequestToProto(request),
370
+ ),
371
+ );
372
+ }
373
+
374
+ async getActiveModelRef(): Promise<GetActiveModelRefResponse> {
375
+ return getActiveModelRefResponseFromProto(
376
+ await this.client.getActiveModelRef(create(EmptySchema)),
377
+ );
378
+ }
379
+
380
+ async setActiveModel(
381
+ request: SetActiveModelRequest,
382
+ ): Promise<SetActiveModelResponse> {
383
+ return setActiveModelResponseFromProto(
384
+ await this.client.setActiveModel(setActiveModelRequestToProto(request)),
385
+ );
386
+ }
387
+
388
+ async listActiveModelResourceTypes(
389
+ request: ListActiveModelResourceTypesRequest,
390
+ ): Promise<ListActiveModelResourceTypesResponse> {
391
+ return listActiveModelResourceTypesResponseFromProto(
392
+ await this.client.listActiveModelResourceTypes(
393
+ listActiveModelResourceTypesRequestToProto(request),
394
+ ),
395
+ );
396
+ }
293
397
  }
294
398
 
295
399
  let sharedAuthorization:
@@ -529,6 +633,30 @@ function checkAccessRequestFromProto(
529
633
  };
530
634
  }
531
635
 
636
+ function checkAccessRequestToProto(value: CheckAccessRequest) {
637
+ return create(CheckAccessRequestSchema, {
638
+ subject: subjectToProto(value.subject),
639
+ action: value.action
640
+ ? create(ActionSchema, {
641
+ name: value.action.name ?? "",
642
+ properties: value.action.properties === undefined
643
+ ? undefined
644
+ : structFromObject(value.action.properties),
645
+ })
646
+ : undefined,
647
+ resource: resourceToProto(value.resource),
648
+ });
649
+ }
650
+
651
+ function checkAccessResponseFromProto(
652
+ value: ProtoCheckAccessResponse,
653
+ ): CheckAccessResponse {
654
+ return {
655
+ allowed: value.allowed,
656
+ modelId: value.modelId,
657
+ };
658
+ }
659
+
532
660
  function checkAccessResponseToProto(value: CheckAccessResponse | undefined) {
533
661
  if (!value) {
534
662
  throw new ConnectError(
@@ -550,6 +678,20 @@ function checkAccessManyRequestFromProto(
550
678
  };
551
679
  }
552
680
 
681
+ function checkAccessManyRequestToProto(value: CheckAccessManyRequest) {
682
+ return create(CheckAccessManyRequestSchema, {
683
+ requests: (value.requests ?? []).map(checkAccessRequestToProto),
684
+ });
685
+ }
686
+
687
+ function checkAccessManyResponseFromProto(
688
+ value: ProtoCheckAccessManyResponse,
689
+ ): CheckAccessManyResponse {
690
+ return {
691
+ decisions: value.decisions.map(checkAccessResponseFromProto),
692
+ };
693
+ }
694
+
553
695
  function checkAccessManyResponseToProto(
554
696
  value: CheckAccessManyResponse | undefined,
555
697
  ) {
@@ -616,6 +758,20 @@ function addRelationshipRequestFromProto(
616
758
  };
617
759
  }
618
760
 
761
+ function addRelationshipRequestToProto(value: AddRelationshipRequest) {
762
+ return create(AddRelationshipRequestSchema, {
763
+ relationship: relationshipToProto(value.relationship),
764
+ });
765
+ }
766
+
767
+ function addRelationshipResponseFromProto(
768
+ value: ProtoAddRelationshipResponse,
769
+ ): AddRelationshipResponse {
770
+ return {
771
+ relationship: relationshipFromProto(value.relationship),
772
+ };
773
+ }
774
+
619
775
  function addRelationshipResponseToProto(
620
776
  value: AddRelationshipResponse | undefined,
621
777
  ) {
@@ -640,6 +796,18 @@ function deleteRelationshipRequestFromProto(
640
796
  };
641
797
  }
642
798
 
799
+ function deleteRelationshipRequestToProto(value: DeleteRelationshipRequest) {
800
+ return create(DeleteRelationshipRequestSchema, {
801
+ relationshipTuple: relationshipTupleToProto(value.relationshipTuple),
802
+ });
803
+ }
804
+
805
+ function deleteRelationshipResponseFromProto(
806
+ _value: ProtoDeleteRelationshipResponse,
807
+ ): DeleteRelationshipResponse {
808
+ return {};
809
+ }
810
+
643
811
  function setAuthorizationStateRequestFromProto(
644
812
  value: ProtoSetAuthorizationStateRequest,
645
813
  ): SetAuthorizationStateRequest {
@@ -649,6 +817,23 @@ function setAuthorizationStateRequestFromProto(
649
817
  };
650
818
  }
651
819
 
820
+ function setAuthorizationStateRequestToProto(
821
+ value: SetAuthorizationStateRequest,
822
+ ) {
823
+ return create(SetAuthorizationStateRequestSchema, {
824
+ model: authorizationModelToProto(value.model),
825
+ relationships: (value.relationships ?? []).map(relationshipToProtoRequired),
826
+ });
827
+ }
828
+
829
+ function setAuthorizationStateResponseFromProto(
830
+ value: ProtoSetAuthorizationStateResponse,
831
+ ): SetAuthorizationStateResponse {
832
+ return {
833
+ activeModel: authorizationModelRefFromProto(value.activeModel),
834
+ };
835
+ }
836
+
652
837
  function setAuthorizationStateResponseToProto(
653
838
  value: SetAuthorizationStateResponse | undefined,
654
839
  ) {
@@ -665,6 +850,14 @@ function setAuthorizationStateResponseToProto(
665
850
  });
666
851
  }
667
852
 
853
+ function getActiveModelRefResponseFromProto(
854
+ value: ProtoGetActiveModelRefResponse,
855
+ ): GetActiveModelRefResponse {
856
+ return {
857
+ model: authorizationModelRefFromProto(value.model),
858
+ };
859
+ }
860
+
668
861
  function getActiveModelRefResponseToProto(
669
862
  value: GetActiveModelRefResponse | undefined,
670
863
  ) {
@@ -687,6 +880,20 @@ function setActiveModelRequestFromProto(
687
880
  };
688
881
  }
689
882
 
883
+ function setActiveModelRequestToProto(value: SetActiveModelRequest) {
884
+ return create(SetActiveModelRequestSchema, {
885
+ model: authorizationModelToProto(value.model),
886
+ });
887
+ }
888
+
889
+ function setActiveModelResponseFromProto(
890
+ value: ProtoSetActiveModelResponse,
891
+ ): SetActiveModelResponse {
892
+ return {
893
+ model: authorizationModelRefFromProto(value.model),
894
+ };
895
+ }
896
+
690
897
  function setActiveModelResponseToProto(value: SetActiveModelResponse | undefined) {
691
898
  if (!value) {
692
899
  throw new ConnectError(
@@ -714,6 +921,31 @@ function listActiveModelResourceTypesRequestFromProto(
714
921
  };
715
922
  }
716
923
 
924
+ function listActiveModelResourceTypesRequestToProto(
925
+ value: ListActiveModelResourceTypesRequest,
926
+ ) {
927
+ return create(ListActiveModelResourceTypesRequestSchema, {
928
+ filter: value.filter
929
+ ? create(AuthorizationModelResourceTypeFilterSchema, {
930
+ name: value.filter.name ?? "",
931
+ sourceLayer: value.filter.sourceLayer ?? SourceLayer.UNSPECIFIED,
932
+ })
933
+ : undefined,
934
+ pageSize: value.pageSize ?? 0,
935
+ pageToken: value.pageToken ?? "",
936
+ });
937
+ }
938
+
939
+ function listActiveModelResourceTypesResponseFromProto(
940
+ value: ProtoListActiveModelResourceTypesResponse,
941
+ ): ListActiveModelResourceTypesResponse {
942
+ return {
943
+ resourceTypes: value.resourceTypes.map(authorizationModelResourceTypeFromProto),
944
+ nextPageToken: value.nextPageToken,
945
+ modelId: value.modelId,
946
+ };
947
+ }
948
+
717
949
  function listActiveModelResourceTypesResponseToProto(
718
950
  value: ListActiveModelResourceTypesResponse | undefined,
719
951
  ) {
@@ -940,6 +1172,19 @@ function authorizationModelFromProto(
940
1172
  };
941
1173
  }
942
1174
 
1175
+ function authorizationModelToProto(value: AuthorizationModel | undefined) {
1176
+ if (!value) {
1177
+ return undefined;
1178
+ }
1179
+ return create(AuthorizationModelSchema, {
1180
+ id: value.id ?? "",
1181
+ version: value.version ?? "",
1182
+ resourceTypes: (value.resourceTypes ?? []).map(
1183
+ authorizationModelResourceTypeToProto,
1184
+ ),
1185
+ });
1186
+ }
1187
+
943
1188
  function authorizationModelResourceTypeFromProto(
944
1189
  value: ProtoAuthorizationModelResourceType,
945
1190
  ): AuthorizationModelResourceType {
@@ -1027,6 +1272,19 @@ function modelAllowedTargetToProto(value: ModelAllowedTarget) {
1027
1272
  return create(ModelAllowedTargetSchema);
1028
1273
  }
1029
1274
 
1275
+ function authorizationModelRefFromProto(
1276
+ value: ProtoGetActiveModelRefResponse["model"] | undefined,
1277
+ ): AuthorizationModelRef | undefined {
1278
+ if (!value) {
1279
+ return undefined;
1280
+ }
1281
+ return {
1282
+ id: value.id,
1283
+ version: value.version,
1284
+ createdAt: value.createdAt ? dateFromTimestamp(value.createdAt) : undefined,
1285
+ };
1286
+ }
1287
+
1030
1288
  function authorizationModelRefToProto(value: AuthorizationModelRef) {
1031
1289
  return create(AuthorizationModelRefSchema, {
1032
1290
  id: value.id ?? "",
package/src/runtime.ts CHANGED
@@ -75,7 +75,7 @@ import {
75
75
  } from "./internal/gen/v1/runtime_pb.ts";
76
76
  import { S3 as S3Service } from "./internal/gen/v1/s3_pb.ts";
77
77
  import { WorkflowProvider as WorkflowProviderService } from "./internal/gen/v1/workflow_pb.ts";
78
- import { errorMessage, type OperationResult, type Request } from "./api.ts";
78
+ import { errorMessage, parseSubjectId, type OperationResult, type Request } from "./api.ts";
79
79
  import {
80
80
  AgentProvider,
81
81
  createAgentProviderService,
@@ -835,11 +835,13 @@ function providerRequest(
835
835
  id: subject?.id ?? "",
836
836
  credentialSubjectId: subject?.credentialSubjectId ?? "",
837
837
  email: subject?.email ?? "",
838
+ kind: subjectKind(subject?.id ?? ""),
838
839
  },
839
840
  agentSubject: {
840
841
  id: agentSubject?.id ?? "",
841
842
  credentialSubjectId: agentSubject?.credentialSubjectId ?? "",
842
843
  email: agentSubject?.email ?? "",
844
+ kind: subjectKind(agentSubject?.id ?? ""),
843
845
  },
844
846
  credential: {
845
847
  mode: credential?.mode ?? "",
@@ -864,6 +866,10 @@ function providerRequest(
864
866
  };
865
867
  }
866
868
 
869
+ function subjectKind(subjectID: string): string {
870
+ return parseSubjectId(subjectID)?.kind ?? "";
871
+ }
872
+
867
873
  function providerRequestToolRefs(
868
874
  requestContext?: ProtoRequestContext,
869
875
  ): AgentToolRef[] {