@scalekit-sdk/node 2.1.9 → 2.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/buf.gen.yaml +2 -0
  2. package/lib/connected-accounts.d.ts +96 -0
  3. package/lib/connected-accounts.js +186 -0
  4. package/lib/connected-accounts.js.map +1 -0
  5. package/lib/core.js +19 -9
  6. package/lib/core.js.map +1 -1
  7. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +24 -0
  8. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +30 -0
  9. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
  10. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +21 -1
  11. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +21 -0
  12. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
  13. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +9 -9
  14. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +4 -0
  15. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +5 -0
  16. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
  17. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +87 -0
  18. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +95 -0
  19. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +1 -0
  20. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +718 -0
  21. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +893 -0
  22. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +1 -0
  23. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +10 -4
  24. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +12 -5
  25. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
  26. package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +48 -5
  27. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +61 -7
  28. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
  29. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +25 -0
  30. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +36 -2
  31. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
  32. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +27 -0
  33. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +44 -1
  34. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
  35. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +75 -0
  36. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +83 -0
  37. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +1 -0
  38. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +431 -0
  39. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +627 -0
  40. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +1 -0
  41. package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +10 -1
  42. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +9 -0
  43. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +1 -1
  44. package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +36 -0
  45. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +60 -1
  46. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
  47. package/lib/scalekit.d.ts +4 -0
  48. package/lib/scalekit.js +21 -7
  49. package/lib/scalekit.js.map +1 -1
  50. package/lib/tools.d.ts +75 -0
  51. package/lib/tools.js +127 -0
  52. package/lib/tools.js.map +1 -0
  53. package/package.json +2 -2
  54. package/reference.md +5865 -0
  55. package/src/connected-accounts.ts +283 -0
  56. package/src/core.ts +2 -2
  57. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +36 -0
  58. package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +30 -0
  59. package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +6 -0
  60. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +94 -0
  61. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +1294 -0
  62. package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +14 -6
  63. package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +66 -6
  64. package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +38 -0
  65. package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +51 -0
  66. package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +82 -0
  67. package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +847 -0
  68. package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +10 -1
  69. package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +76 -0
  70. package/src/scalekit.ts +9 -0
  71. package/src/tools.ts +166 -0
  72. package/tests/connected-accounts.test.ts +434 -0
  73. package/tests/tools.test.ts +239 -0
  74. package/tsconfig.json +2 -1
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { AssignUserRolesRequest, AssignUserRolesResponse, CreateMembershipRequest, CreateMembershipResponse, CreateUserAndMembershipRequest, CreateUserAndMembershipResponse, DeleteMembershipRequest, DeleteUserRequest, GetUserRequest, GetUserResponse, ListOrganizationUsersRequest, ListOrganizationUsersResponse, ListUserPermissionsRequest, ListUserPermissionsResponse, ListUserRolesRequest, ListUserRolesResponse, ListUsersRequest, ListUsersResponse, RemoveUserRoleRequest, ResendInviteRequest, ResendInviteResponse, SearchOrganizationUsersRequest, SearchOrganizationUsersResponse, SearchUsersRequest, SearchUsersResponse, UpdateMembershipRequest, UpdateMembershipResponse, UpdateUserRequest, UpdateUserResponse } from "./users_pb.js";
6
+ import { AssignUserRolesRequest, AssignUserRolesResponse, CreateMembershipRequest, CreateMembershipResponse, CreateUserAndMembershipRequest, CreateUserAndMembershipResponse, DeleteMembershipRequest, DeleteUserRequest, GetCurrentUserRequest, GetCurrentUserResponse, GetUserRequest, GetUserResponse, ListOrganizationUsersRequest, ListOrganizationUsersResponse, ListUserPermissionsRequest, ListUserPermissionsResponse, ListUserRolesRequest, ListUserRolesResponse, ListUsersRequest, ListUsersResponse, RemoveUserRoleRequest, ResendInviteRequest, ResendInviteResponse, SearchOrganizationUsersRequest, SearchOrganizationUsersResponse, SearchUsersRequest, SearchUsersResponse, UpdateMembershipRequest, UpdateMembershipResponse, UpdateUserRequest, UpdateUserResponse } from "./users_pb.js";
7
7
  import { Empty, MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -23,6 +23,15 @@ export const UserService = {
23
23
  O: GetUserResponse,
24
24
  kind: MethodKind.Unary,
25
25
  },
26
+ /**
27
+ * @generated from rpc scalekit.v1.users.UserService.GetCurrentUser
28
+ */
29
+ getCurrentUser: {
30
+ name: "GetCurrentUser",
31
+ I: GetCurrentUserRequest,
32
+ O: GetCurrentUserResponse,
33
+ kind: MethodKind.Unary,
34
+ },
26
35
  /**
27
36
  * @generated from rpc scalekit.v1.users.UserService.ListUsers
28
37
  */
@@ -413,6 +413,82 @@ export class GetUserResponse extends Message<GetUserResponse> {
413
413
  }
414
414
  }
415
415
 
416
+ /**
417
+ * @generated from message scalekit.v1.users.GetCurrentUserResponse
418
+ */
419
+ export class GetCurrentUserResponse extends Message<GetCurrentUserResponse> {
420
+ /**
421
+ * @generated from field: scalekit.v1.users.User user = 1;
422
+ */
423
+ user?: User;
424
+
425
+ /**
426
+ * @generated from field: string current_session_id = 2;
427
+ */
428
+ currentSessionId = "";
429
+
430
+ constructor(data?: PartialMessage<GetCurrentUserResponse>) {
431
+ super();
432
+ proto3.util.initPartial(data, this);
433
+ }
434
+
435
+ static readonly runtime: typeof proto3 = proto3;
436
+ static readonly typeName = "scalekit.v1.users.GetCurrentUserResponse";
437
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
438
+ { no: 1, name: "user", kind: "message", T: User },
439
+ { no: 2, name: "current_session_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
440
+ ]);
441
+
442
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetCurrentUserResponse {
443
+ return new GetCurrentUserResponse().fromBinary(bytes, options);
444
+ }
445
+
446
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetCurrentUserResponse {
447
+ return new GetCurrentUserResponse().fromJson(jsonValue, options);
448
+ }
449
+
450
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetCurrentUserResponse {
451
+ return new GetCurrentUserResponse().fromJsonString(jsonString, options);
452
+ }
453
+
454
+ static equals(a: GetCurrentUserResponse | PlainMessage<GetCurrentUserResponse> | undefined, b: GetCurrentUserResponse | PlainMessage<GetCurrentUserResponse> | undefined): boolean {
455
+ return proto3.util.equals(GetCurrentUserResponse, a, b);
456
+ }
457
+ }
458
+
459
+ /**
460
+ * Empty message - user ID extracted from authentication context
461
+ *
462
+ * @generated from message scalekit.v1.users.GetCurrentUserRequest
463
+ */
464
+ export class GetCurrentUserRequest extends Message<GetCurrentUserRequest> {
465
+ constructor(data?: PartialMessage<GetCurrentUserRequest>) {
466
+ super();
467
+ proto3.util.initPartial(data, this);
468
+ }
469
+
470
+ static readonly runtime: typeof proto3 = proto3;
471
+ static readonly typeName = "scalekit.v1.users.GetCurrentUserRequest";
472
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
473
+ ]);
474
+
475
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetCurrentUserRequest {
476
+ return new GetCurrentUserRequest().fromBinary(bytes, options);
477
+ }
478
+
479
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetCurrentUserRequest {
480
+ return new GetCurrentUserRequest().fromJson(jsonValue, options);
481
+ }
482
+
483
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetCurrentUserRequest {
484
+ return new GetCurrentUserRequest().fromJsonString(jsonString, options);
485
+ }
486
+
487
+ static equals(a: GetCurrentUserRequest | PlainMessage<GetCurrentUserRequest> | undefined, b: GetCurrentUserRequest | PlainMessage<GetCurrentUserRequest> | undefined): boolean {
488
+ return proto3.util.equals(GetCurrentUserRequest, a, b);
489
+ }
490
+ }
491
+
416
492
  /**
417
493
  * @generated from message scalekit.v1.users.ListOrganizationUsersRequest
418
494
  */
package/src/scalekit.ts CHANGED
@@ -5,6 +5,8 @@ import GrpcConnect from './connect';
5
5
  import ConnectionClient from './connection';
6
6
  import { IdTokenClaimToUserMap } from './constants/user';
7
7
  import CoreClient from './core';
8
+ import ToolsClient from './tools';
9
+ import ConnectedAccountsClient from './connected-accounts';
8
10
  import DirectoryClient from './directory';
9
11
  import DomainClient from './domain';
10
12
  import AuthClient from './auth';
@@ -60,6 +62,8 @@ export default class ScalekitClient {
60
62
  readonly organization: OrganizationClient;
61
63
  readonly connection: ConnectionClient;
62
64
  readonly domain: DomainClient;
65
+ readonly tools: ToolsClient;
66
+ readonly connectedAccounts: ConnectedAccountsClient;
63
67
  readonly directory: DirectoryClient;
64
68
  readonly passwordless: PasswordlessClient;
65
69
  readonly user: UserClient;
@@ -88,6 +92,11 @@ export default class ScalekitClient {
88
92
  );
89
93
  this.connection = new ConnectionClient(this.grpcConnect, this.coreClient);
90
94
  this.domain = new DomainClient(this.grpcConnect, this.coreClient);
95
+ this.tools = new ToolsClient(this.grpcConnect, this.coreClient);
96
+ this.connectedAccounts = new ConnectedAccountsClient(
97
+ this.grpcConnect,
98
+ this.coreClient
99
+ );
91
100
  this.directory = new DirectoryClient(this.grpcConnect, this.coreClient);
92
101
  this.passwordless = new PasswordlessClient(
93
102
  this.grpcConnect,
package/src/tools.ts ADDED
@@ -0,0 +1,166 @@
1
+ import { PartialMessage } from "@bufbuild/protobuf";
2
+ import { PromiseClient } from "@connectrpc/connect";
3
+ import GrpcConnect from "./connect";
4
+ import CoreClient from "./core";
5
+ import { ToolService } from "./pkg/grpc/scalekit/v1/tools/tools_connect";
6
+ import {
7
+ ExecuteToolRequest,
8
+ ExecuteToolResponse,
9
+ Filter,
10
+ ListScopedToolsRequest,
11
+ ListScopedToolsResponse,
12
+ ListToolsRequest,
13
+ ListToolsResponse,
14
+ ScopedToolFilter,
15
+ } from "./pkg/grpc/scalekit/v1/tools/tools_pb";
16
+
17
+ /**
18
+ * Client for listing and executing tools.
19
+ *
20
+ * This client provides convenient helpers around the `ToolService` for:
21
+ * - listing all tools available in your workspace
22
+ * - listing tools scoped to a specific connected account identifier
23
+ * - executing tools using connected account credentials
24
+ *
25
+ * It mirrors the capabilities of the Python SDK `ToolsClient` while following
26
+ * the idioms and patterns used across the Node SDK.
27
+ */
28
+ export default class ToolsClient {
29
+ private client: PromiseClient<typeof ToolService>;
30
+
31
+ constructor(
32
+ private readonly grpcConnect: GrpcConnect,
33
+ private readonly coreClient: CoreClient
34
+ ) {
35
+ this.client = this.grpcConnect.createClient(ToolService);
36
+ }
37
+
38
+ /**
39
+ * Lists tools available in your workspace with optional filtering and pagination.
40
+ *
41
+ * @param options Optional filter and pagination parameters
42
+ * @param options.filter Filter configuration matching the `Filter` proto message.
43
+ * Use this to filter by provider, identifier, or tool names.
44
+ * @param options.pageSize Maximum number of tools to return per page.
45
+ * @param options.pageToken Token from a previous `listTools` response for pagination.
46
+ */
47
+ async listTools(options?: {
48
+ filter?: PartialMessage<Filter>;
49
+ pageSize?: number;
50
+ pageToken?: string;
51
+ }): Promise<ListToolsResponse> {
52
+ const request: PartialMessage<ListToolsRequest> = {};
53
+
54
+ if (options?.filter) {
55
+ request.filter = options.filter as Filter;
56
+ }
57
+ if (options?.pageSize !== undefined) {
58
+ request.pageSize = options.pageSize;
59
+ }
60
+ if (options?.pageToken) {
61
+ request.pageToken = options.pageToken;
62
+ }
63
+
64
+ return this.coreClient.connectExec(this.client.listTools, request);
65
+ }
66
+
67
+ /**
68
+ * Lists tools that are scoped to a specific connected account identifier.
69
+ *
70
+ * @param identifier Connected account identifier to scope the tools list (for example,
71
+ * a workspace identifier or email).
72
+ * @param options Optional filter and pagination parameters
73
+ * @param options.filter Filter configuration for scoped tools (providers, tool names, connection names).
74
+ * @param options.pageSize Maximum number of tools to return per page.
75
+ * @param options.pageToken Token from a previous `listScopedTools` response for pagination.
76
+ */
77
+ async listScopedTools(
78
+ identifier: string,
79
+ options?: {
80
+ filter?: PartialMessage<ScopedToolFilter>;
81
+ pageSize?: number;
82
+ pageToken?: string;
83
+ }
84
+ ): Promise<ListScopedToolsResponse> {
85
+ const request: PartialMessage<ListScopedToolsRequest> = {
86
+ identifier,
87
+ };
88
+
89
+ if (options?.filter) {
90
+ request.filter = options.filter as ScopedToolFilter;
91
+ }
92
+ if (options?.pageSize !== undefined) {
93
+ request.pageSize = options.pageSize;
94
+ }
95
+ if (options?.pageToken) {
96
+ request.pageToken = options.pageToken;
97
+ }
98
+
99
+ return this.coreClient.connectExec(this.client.listScopedTools, request);
100
+ }
101
+
102
+ /**
103
+ * Executes a tool using credentials from a connected account.
104
+ *
105
+ * You can either:
106
+ * - reference the connected account directly via `connectedAccountId`, or
107
+ * - identify it using a combination of `identifier`, `connector`, `organizationId`, and `userId`.
108
+ *
109
+ * @param params Execution configuration
110
+ * @param params.toolName Name of the tool to execute.
111
+ * @param params.identifier Optional connected account identifier (for example, email or workspace ID).
112
+ * @param params.params JSON parameters required by the tool. These will be sent as a structured payload.
113
+ * @param params.connectedAccountId Optional direct ID of the connected account (`ca_...`).
114
+ * @param params.connector Optional connector/provider name when using identifier-based lookup.
115
+ * @param params.organizationId Optional organization ID to scope the connected account lookup.
116
+ * @param params.userId Optional user ID to scope the connected account lookup.
117
+ */
118
+ async executeTool(params: {
119
+ toolName: string;
120
+ identifier?: string;
121
+ params?: Record<string, unknown>;
122
+ connectedAccountId?: string;
123
+ connector?: string;
124
+ organizationId?: string;
125
+ userId?: string;
126
+ }): Promise<ExecuteToolResponse> {
127
+ const {
128
+ toolName,
129
+ identifier,
130
+ params: toolParams,
131
+ connectedAccountId,
132
+ connector,
133
+ organizationId,
134
+ userId,
135
+ } = params;
136
+
137
+ const request: PartialMessage<ExecuteToolRequest> = {
138
+ toolName,
139
+ };
140
+
141
+ if (identifier) {
142
+ request.identifier = identifier;
143
+ }
144
+
145
+ if (toolParams) {
146
+ // `google.protobuf.Struct` messages in bufbuild accept plain JSON objects.
147
+ request.params = toolParams as any;
148
+ }
149
+
150
+ if (connectedAccountId) {
151
+ request.connectedAccountId = connectedAccountId;
152
+ }
153
+ if (connector) {
154
+ request.connector = connector;
155
+ }
156
+ if (organizationId) {
157
+ request.organizationId = organizationId;
158
+ }
159
+ if (userId) {
160
+ request.userId = userId;
161
+ }
162
+
163
+ return this.coreClient.connectExec(this.client.executeTool, request);
164
+ }
165
+ }
166
+