@inkeep/agents-core 0.0.0-dev-20260305210619 → 0.0.0-dev-20260305213948

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.
@@ -4,7 +4,7 @@ import * as zod0 from "zod";
4
4
  import * as better_auth0 from "better-auth";
5
5
  import { BetterAuthAdvancedOptions } from "better-auth";
6
6
  import * as _better_auth_sso0 from "@better-auth/sso";
7
- import * as better_auth_plugins20 from "better-auth/plugins";
7
+ import * as better_auth_plugins0 from "better-auth/plugins";
8
8
  import { GoogleOptions } from "better-auth/social-providers";
9
9
 
10
10
  //#region src/auth/auth.d.ts
@@ -277,7 +277,7 @@ declare function createAuth(config: BetterAuthConfig): better_auth0.Auth<{
277
277
  handler: (inputContext: better_auth0.MiddlewareInputContext<better_auth0.MiddlewareOptions>) => Promise<void>;
278
278
  }[];
279
279
  };
280
- options: better_auth_plugins20.BearerOptions | undefined;
280
+ options: better_auth_plugins0.BearerOptions | undefined;
281
281
  }, {
282
282
  id: "sso";
283
283
  endpoints: {
@@ -1268,30 +1268,30 @@ declare function createAuth(config: BetterAuthConfig): better_auth0.Auth<{
1268
1268
  handler: (inputContext: better_auth0.MiddlewareInputContext<better_auth0.MiddlewareOptions>) => Promise<void>;
1269
1269
  }[];
1270
1270
  };
1271
- }, better_auth_plugins20.DefaultOrganizationPlugin<{
1271
+ }, better_auth_plugins0.DefaultOrganizationPlugin<{
1272
1272
  allowUserToCreateOrganization: true;
1273
- ac: better_auth_plugins20.AccessControl;
1273
+ ac: better_auth_plugins0.AccessControl;
1274
1274
  roles: {
1275
1275
  member: {
1276
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key] | {
1277
- actions: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key];
1276
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key] | {
1277
+ actions: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key];
1278
1278
  connector: "OR" | "AND";
1279
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins20.AuthorizeResponse;
1280
- statements: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>;
1279
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
1280
+ statements: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>;
1281
1281
  };
1282
1282
  admin: {
1283
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key] | {
1284
- actions: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key];
1283
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key] | {
1284
+ actions: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key];
1285
1285
  connector: "OR" | "AND";
1286
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins20.AuthorizeResponse;
1287
- statements: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>;
1286
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
1287
+ statements: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>;
1288
1288
  };
1289
1289
  owner: {
1290
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key] | {
1291
- actions: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>[key];
1290
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key] | {
1291
+ actions: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>[key];
1292
1292
  connector: "OR" | "AND";
1293
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins20.AuthorizeResponse;
1294
- statements: better_auth_plugins20.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins20.Statements>;
1293
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
1294
+ statements: better_auth_plugins0.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins0.Statements>;
1295
1295
  };
1296
1296
  };
1297
1297
  creatorRole: "admin";
@@ -1302,9 +1302,9 @@ declare function createAuth(config: BetterAuthConfig): better_auth0.Auth<{
1302
1302
  id: string;
1303
1303
  role: string;
1304
1304
  email: string;
1305
- organization: better_auth_plugins20.Organization;
1306
- invitation: better_auth_plugins20.Invitation;
1307
- inviter: better_auth_plugins20.Member & {
1305
+ organization: better_auth_plugins0.Organization;
1306
+ invitation: better_auth_plugins0.Invitation;
1307
+ inviter: better_auth_plugins0.Member & {
1308
1308
  user: better_auth0.User;
1309
1309
  };
1310
1310
  }): Promise<void>;
@@ -1339,28 +1339,28 @@ declare function createAuth(config: BetterAuthConfig): better_auth0.Auth<{
1339
1339
  user,
1340
1340
  organization: org
1341
1341
  }: {
1342
- invitation: better_auth_plugins20.Invitation & Record<string, any>;
1343
- member: better_auth_plugins20.Member & Record<string, any>;
1342
+ invitation: better_auth_plugins0.Invitation & Record<string, any>;
1343
+ member: better_auth_plugins0.Member & Record<string, any>;
1344
1344
  user: better_auth0.User & Record<string, any>;
1345
- organization: better_auth_plugins20.Organization & Record<string, any>;
1345
+ organization: better_auth_plugins0.Organization & Record<string, any>;
1346
1346
  }) => Promise<void>;
1347
1347
  beforeUpdateMemberRole: ({
1348
1348
  member,
1349
1349
  organization: org,
1350
1350
  newRole
1351
1351
  }: {
1352
- member: better_auth_plugins20.Member & Record<string, any>;
1352
+ member: better_auth_plugins0.Member & Record<string, any>;
1353
1353
  newRole: string;
1354
1354
  user: better_auth0.User & Record<string, any>;
1355
- organization: better_auth_plugins20.Organization & Record<string, any>;
1355
+ organization: better_auth_plugins0.Organization & Record<string, any>;
1356
1356
  }) => Promise<void>;
1357
1357
  beforeRemoveMember: ({
1358
1358
  member,
1359
1359
  organization: org
1360
1360
  }: {
1361
- member: better_auth_plugins20.Member & Record<string, any>;
1361
+ member: better_auth_plugins0.Member & Record<string, any>;
1362
1362
  user: better_auth0.User & Record<string, any>;
1363
- organization: better_auth_plugins20.Organization & Record<string, any>;
1363
+ organization: better_auth_plugins0.Organization & Record<string, any>;
1364
1364
  }) => Promise<void>;
1365
1365
  };
1366
1366
  }>, {
@@ -1701,8 +1701,8 @@ declare function createAuth(config: BetterAuthConfig): better_auth0.Auth<{
1701
1701
  readonly AUTHENTICATION_REQUIRED: "Authentication required";
1702
1702
  };
1703
1703
  options: Partial<{
1704
- expiresIn: better_auth_plugins20.TimeString;
1705
- interval: better_auth_plugins20.TimeString;
1704
+ expiresIn: better_auth_plugins0.TimeString;
1705
+ interval: better_auth_plugins0.TimeString;
1706
1706
  deviceCodeLength: number;
1707
1707
  userCodeLength: number;
1708
1708
  schema: {
@@ -1,29 +1,29 @@
1
- import * as better_auth_plugins0 from "better-auth/plugins";
1
+ import * as better_auth_plugins35 from "better-auth/plugins";
2
2
  import { AccessControl } from "better-auth/plugins/access";
3
3
  import { organizationClient } from "better-auth/client/plugins";
4
4
 
5
5
  //#region src/auth/permissions.d.ts
6
6
  declare const ac: AccessControl;
7
7
  declare const memberRole: {
8
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
9
- actions: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key];
8
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key] | {
9
+ actions: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key];
10
10
  connector: "OR" | "AND";
11
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
12
- statements: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>;
11
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins35.AuthorizeResponse;
12
+ statements: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>;
13
13
  };
14
14
  declare const adminRole: {
15
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
16
- actions: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key];
15
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key] | {
16
+ actions: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key];
17
17
  connector: "OR" | "AND";
18
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
19
- statements: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>;
18
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins35.AuthorizeResponse;
19
+ statements: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>;
20
20
  };
21
21
  declare const ownerRole: {
22
- authorize<K_1 extends "project" | "organization" | "member" | "invitation" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
23
- actions: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>[key];
22
+ authorize<K_1 extends "organization" | "ac" | "member" | "project" | "team" | "invitation">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key] | {
23
+ actions: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>[key];
24
24
  connector: "OR" | "AND";
25
- } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
26
- statements: better_auth_plugins0.Subset<"project" | "organization" | "member" | "invitation" | "team" | "ac", better_auth_plugins0.Statements>;
25
+ } | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins35.AuthorizeResponse;
26
+ statements: better_auth_plugins35.Subset<"organization" | "ac" | "member" | "project" | "team" | "invitation", better_auth_plugins35.Statements>;
27
27
  };
28
28
  //#endregion
29
29
  export { ac, adminRole, memberRole, organizationClient, ownerRole };
@@ -0,0 +1,8 @@
1
+ //#region src/constants/allowed-image-formats.d.ts
2
+ declare const ALLOWED_IMAGE_MIME_TYPES: Set<string>;
3
+ declare const DATA_URI_IMAGE_BASE64_REGEX: RegExp;
4
+ declare function normalizeImageMimeType(mimeType: string): string;
5
+ declare function getExtensionFromMimeType(mimeType?: string): string;
6
+ declare function getMimeTypeFromExtension(extension?: string): string;
7
+ //#endregion
8
+ export { ALLOWED_IMAGE_MIME_TYPES, DATA_URI_IMAGE_BASE64_REGEX, getExtensionFromMimeType, getMimeTypeFromExtension, normalizeImageMimeType };
@@ -0,0 +1,38 @@
1
+ //#region src/constants/allowed-image-formats.ts
2
+ const ALLOWED_IMAGE_MIME_TYPES = new Set([
3
+ "image/png",
4
+ "image/jpeg",
5
+ "image/webp"
6
+ ]);
7
+ const IMAGE_MIME_TYPE_TO_EXTENSION = {
8
+ "image/png": "png",
9
+ "image/jpeg": "jpg",
10
+ "image/jpg": "jpg",
11
+ "image/webp": "webp"
12
+ };
13
+ const IMAGE_EXTENSION_TO_MIME_TYPE = {
14
+ png: "image/png",
15
+ jpg: "image/jpeg",
16
+ jpeg: "image/jpeg",
17
+ webp: "image/webp"
18
+ };
19
+ const dataUriSubtypes = Array.from(ALLOWED_IMAGE_MIME_TYPES).flatMap((mime) => {
20
+ const subtype = mime.replace("image/", "");
21
+ return subtype === "jpeg" ? ["jpeg", "jpg"] : [subtype];
22
+ });
23
+ const DATA_URI_IMAGE_BASE64_REGEX = /* @__PURE__ */ new RegExp(`^data:image/(${dataUriSubtypes.join("|")});base64,`);
24
+ function normalizeImageMimeType(mimeType) {
25
+ return mimeType.split(";")[0]?.trim().toLowerCase() || "";
26
+ }
27
+ function getExtensionFromMimeType(mimeType) {
28
+ if (!mimeType) return "bin";
29
+ const normalizedMimeType = normalizeImageMimeType(mimeType);
30
+ return IMAGE_MIME_TYPE_TO_EXTENSION[normalizedMimeType] || normalizedMimeType.split("/")[1] || "bin";
31
+ }
32
+ function getMimeTypeFromExtension(extension) {
33
+ if (!extension) return "application/octet-stream";
34
+ return IMAGE_EXTENSION_TO_MIME_TYPE[extension.replace(/^\./, "").trim().toLowerCase()] || "application/octet-stream";
35
+ }
36
+
37
+ //#endregion
38
+ export { ALLOWED_IMAGE_MIME_TYPES, DATA_URI_IMAGE_BASE64_REGEX, getExtensionFromMimeType, getMimeTypeFromExtension, normalizeImageMimeType };
@@ -40,13 +40,13 @@ declare const listTriggersPaginated: (db: AgentsManageDatabaseClient) => (params
40
40
  algorithm: "sha256" | "sha512" | "sha384" | "sha1" | "md5";
41
41
  encoding: "hex" | "base64";
42
42
  signature: {
43
- source: "query" | "header" | "body";
43
+ source: "query" | "body" | "header";
44
44
  key: string;
45
45
  prefix?: string | undefined;
46
46
  regex?: string | undefined;
47
47
  };
48
48
  signedComponents: {
49
- source: "literal" | "header" | "body";
49
+ source: "literal" | "body" | "header";
50
50
  required: boolean;
51
51
  key?: string | undefined;
52
52
  value?: string | undefined;
@@ -24,12 +24,12 @@ declare const createConversation: (db: AgentsRunDatabaseClient) => (params: Conv
24
24
  createdAt: string;
25
25
  updatedAt: string;
26
26
  metadata: ConversationMetadata | null;
27
+ userId: string | null;
27
28
  ref: {
28
- type: "tag" | "commit" | "branch";
29
+ type: "commit" | "tag" | "branch";
29
30
  name: string;
30
31
  hash: string;
31
32
  } | null;
32
- userId: string | null;
33
33
  activeSubAgentId: string;
34
34
  lastContextResolution: string | null;
35
35
  }>;
@@ -44,7 +44,7 @@ declare const updateConversation: (db: AgentsRunDatabaseClient) => (params: {
44
44
  agentId: string | null;
45
45
  activeSubAgentId: string;
46
46
  ref: {
47
- type: "tag" | "commit" | "branch";
47
+ type: "commit" | "tag" | "branch";
48
48
  name: string;
49
49
  hash: string;
50
50
  } | null;
@@ -70,7 +70,7 @@ declare const updateConversationActiveSubAgent: (db: AgentsRunDatabaseClient) =>
70
70
  agentId: string | null;
71
71
  activeSubAgentId: string;
72
72
  ref: {
73
- type: "tag" | "commit" | "branch";
73
+ type: "commit" | "tag" | "branch";
74
74
  name: string;
75
75
  hash: string;
76
76
  } | null;
@@ -93,12 +93,12 @@ declare const getConversation: (db: AgentsRunDatabaseClient) => (params: {
93
93
  createdAt: string;
94
94
  updatedAt: string;
95
95
  metadata: ConversationMetadata | null;
96
+ userId: string | null;
96
97
  ref: {
97
- type: "tag" | "commit" | "branch";
98
+ type: "commit" | "tag" | "branch";
98
99
  name: string;
99
100
  hash: string;
100
101
  } | null;
101
- userId: string | null;
102
102
  activeSubAgentId: string;
103
103
  lastContextResolution: string | null;
104
104
  } | undefined>;
@@ -108,7 +108,7 @@ declare const createOrGetConversation: (db: AgentsRunDatabaseClient) => (input:
108
108
  tenantId: string;
109
109
  id: string;
110
110
  ref: {
111
- type: "tag" | "commit" | "branch";
111
+ type: "commit" | "tag" | "branch";
112
112
  name: string;
113
113
  hash: string;
114
114
  };
@@ -129,12 +129,12 @@ declare const createOrGetConversation: (db: AgentsRunDatabaseClient) => (input:
129
129
  createdAt: string;
130
130
  updatedAt: string;
131
131
  metadata: ConversationMetadata | null;
132
+ userId: string | null;
132
133
  ref: {
133
- type: "tag" | "commit" | "branch";
134
+ type: "commit" | "tag" | "branch";
134
135
  name: string;
135
136
  hash: string;
136
137
  } | null;
137
- userId: string | null;
138
138
  activeSubAgentId: string;
139
139
  lastContextResolution: string | null;
140
140
  }>;
@@ -161,12 +161,12 @@ declare const getActiveAgentForConversation: (db: AgentsRunDatabaseClient) => (p
161
161
  createdAt: string;
162
162
  updatedAt: string;
163
163
  metadata: ConversationMetadata | null;
164
+ userId: string | null;
164
165
  ref: {
165
- type: "tag" | "commit" | "branch";
166
+ type: "commit" | "tag" | "branch";
166
167
  name: string;
167
168
  hash: string;
168
169
  } | null;
169
- userId: string | null;
170
170
  activeSubAgentId: string;
171
171
  lastContextResolution: string | null;
172
172
  } | undefined>;
@@ -34,7 +34,7 @@ declare const listScheduledTriggerInvocationsPaginated: (db: AgentsRunDatabaseCl
34
34
  }) => Promise<{
35
35
  data: {
36
36
  scheduledTriggerId: string;
37
- status: "pending" | "running" | "completed" | "failed" | "cancelled";
37
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
38
38
  scheduledFor: string;
39
39
  startedAt: string | null;
40
40
  completedAt: string | null;
@@ -174,7 +174,7 @@ declare const listUpcomingInvocationsForAgentPaginated: (db: AgentsRunDatabaseCl
174
174
  }) => Promise<{
175
175
  data: {
176
176
  scheduledTriggerId: string;
177
- status: "pending" | "running" | "completed" | "failed" | "cancelled";
177
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
178
178
  scheduledFor: string;
179
179
  startedAt: string | null;
180
180
  completedAt: string | null;
@@ -208,7 +208,7 @@ declare const listProjectScheduledTriggerInvocationsPaginated: (db: AgentsRunDat
208
208
  }) => Promise<{
209
209
  data: {
210
210
  scheduledTriggerId: string;
211
- status: "pending" | "running" | "completed" | "failed" | "cancelled";
211
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
212
212
  scheduledFor: string;
213
213
  startedAt: string | null;
214
214
  completedAt: string | null;
@@ -13,10 +13,10 @@ declare const createTask: (db: AgentsRunDatabaseClient) => (params: TaskInsert)
13
13
  createdAt: string;
14
14
  updatedAt: string;
15
15
  metadata: TaskMetadataConfig | null;
16
- subAgentId: string;
17
16
  status: string;
17
+ subAgentId: string;
18
18
  ref: {
19
- type: "tag" | "commit" | "branch";
19
+ type: "commit" | "tag" | "branch";
20
20
  name: string;
21
21
  hash: string;
22
22
  } | null;
@@ -36,7 +36,7 @@ declare const updateTask: (db: AgentsRunDatabaseClient) => (params: {
36
36
  updatedAt: string;
37
37
  contextId: string;
38
38
  ref: {
39
- type: "tag" | "commit" | "branch";
39
+ type: "commit" | "tag" | "branch";
40
40
  name: string;
41
41
  hash: string;
42
42
  } | null;