@convex-dev/agent 0.0.15-alpha.1 → 0.0.16-alpha.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 (84) hide show
  1. package/README.md +93 -29
  2. package/dist/commonjs/client/index.d.ts +771 -74
  3. package/dist/commonjs/client/index.d.ts.map +1 -1
  4. package/dist/commonjs/client/index.js +82 -45
  5. package/dist/commonjs/client/index.js.map +1 -1
  6. package/dist/commonjs/client/playground.d.ts +474 -0
  7. package/dist/commonjs/client/playground.d.ts.map +1 -0
  8. package/dist/commonjs/client/playground.js +178 -0
  9. package/dist/commonjs/client/playground.js.map +1 -0
  10. package/dist/commonjs/component/apiKeys.d.ts +11 -0
  11. package/dist/commonjs/component/apiKeys.d.ts.map +1 -0
  12. package/dist/commonjs/component/apiKeys.js +69 -0
  13. package/dist/commonjs/component/apiKeys.js.map +1 -0
  14. package/dist/commonjs/component/files.d.ts +31 -0
  15. package/dist/commonjs/component/files.d.ts.map +1 -0
  16. package/dist/commonjs/component/files.js +61 -0
  17. package/dist/commonjs/component/files.js.map +1 -0
  18. package/dist/commonjs/component/messages.d.ts +40 -109
  19. package/dist/commonjs/component/messages.d.ts.map +1 -1
  20. package/dist/commonjs/component/messages.js +44 -260
  21. package/dist/commonjs/component/messages.js.map +1 -1
  22. package/dist/commonjs/component/schema.d.ts +54 -10
  23. package/dist/commonjs/component/schema.d.ts.map +1 -1
  24. package/dist/commonjs/component/schema.js +7 -2
  25. package/dist/commonjs/component/schema.js.map +1 -1
  26. package/dist/commonjs/component/threads.d.ts +95 -0
  27. package/dist/commonjs/component/threads.d.ts.map +1 -0
  28. package/dist/commonjs/component/threads.js +151 -0
  29. package/dist/commonjs/component/threads.js.map +1 -0
  30. package/dist/commonjs/component/users.d.ts +37 -0
  31. package/dist/commonjs/component/users.d.ts.map +1 -0
  32. package/dist/commonjs/component/users.js +118 -0
  33. package/dist/commonjs/component/users.js.map +1 -0
  34. package/dist/commonjs/validators.d.ts +2 -6
  35. package/dist/commonjs/validators.d.ts.map +1 -1
  36. package/dist/commonjs/validators.js +0 -1
  37. package/dist/commonjs/validators.js.map +1 -1
  38. package/dist/esm/client/index.d.ts +771 -74
  39. package/dist/esm/client/index.d.ts.map +1 -1
  40. package/dist/esm/client/index.js +82 -45
  41. package/dist/esm/client/index.js.map +1 -1
  42. package/dist/esm/client/playground.d.ts +474 -0
  43. package/dist/esm/client/playground.d.ts.map +1 -0
  44. package/dist/esm/client/playground.js +178 -0
  45. package/dist/esm/client/playground.js.map +1 -0
  46. package/dist/esm/component/apiKeys.d.ts +11 -0
  47. package/dist/esm/component/apiKeys.d.ts.map +1 -0
  48. package/dist/esm/component/apiKeys.js +69 -0
  49. package/dist/esm/component/apiKeys.js.map +1 -0
  50. package/dist/esm/component/files.d.ts +31 -0
  51. package/dist/esm/component/files.d.ts.map +1 -0
  52. package/dist/esm/component/files.js +61 -0
  53. package/dist/esm/component/files.js.map +1 -0
  54. package/dist/esm/component/messages.d.ts +40 -109
  55. package/dist/esm/component/messages.d.ts.map +1 -1
  56. package/dist/esm/component/messages.js +44 -260
  57. package/dist/esm/component/messages.js.map +1 -1
  58. package/dist/esm/component/schema.d.ts +54 -10
  59. package/dist/esm/component/schema.d.ts.map +1 -1
  60. package/dist/esm/component/schema.js +7 -2
  61. package/dist/esm/component/schema.js.map +1 -1
  62. package/dist/esm/component/threads.d.ts +95 -0
  63. package/dist/esm/component/threads.d.ts.map +1 -0
  64. package/dist/esm/component/threads.js +151 -0
  65. package/dist/esm/component/threads.js.map +1 -0
  66. package/dist/esm/component/users.d.ts +37 -0
  67. package/dist/esm/component/users.d.ts.map +1 -0
  68. package/dist/esm/component/users.js +118 -0
  69. package/dist/esm/component/users.js.map +1 -0
  70. package/dist/esm/validators.d.ts +2 -6
  71. package/dist/esm/validators.d.ts.map +1 -1
  72. package/dist/esm/validators.js +0 -1
  73. package/dist/esm/validators.js.map +1 -1
  74. package/package.json +10 -2
  75. package/src/client/index.ts +152 -120
  76. package/src/client/playground.ts +231 -0
  77. package/src/component/_generated/api.d.ts +319 -107
  78. package/src/component/apiKeys.ts +74 -0
  79. package/src/component/files.ts +72 -0
  80. package/src/component/messages.ts +54 -308
  81. package/src/component/schema.ts +7 -2
  82. package/src/component/threads.ts +184 -0
  83. package/src/component/users.ts +145 -0
  84. package/src/validators.ts +0 -1
@@ -0,0 +1,69 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "./_generated/server";
3
+ export const issue = mutation({
4
+ args: {
5
+ name: v.optional(v.string()),
6
+ },
7
+ handler: async (ctx, args) => {
8
+ if (args.name) {
9
+ const existingApiKey = await ctx.db
10
+ .query("apiKeys")
11
+ .withIndex("name", (q) => q.eq("name", args.name))
12
+ .first();
13
+ if (existingApiKey) {
14
+ console.warn(`API key ${args.name} already exists, deleting...`);
15
+ await ctx.db.delete(existingApiKey._id);
16
+ }
17
+ }
18
+ const apiKey = await ctx.db.insert("apiKeys", args);
19
+ return apiKey;
20
+ },
21
+ returns: v.id("apiKeys"),
22
+ });
23
+ export const validate = query({
24
+ args: {
25
+ apiKey: v.id("apiKeys"),
26
+ },
27
+ handler: async (ctx, args) => {
28
+ const apiKey = await ctx.db.get(args.apiKey);
29
+ if (!apiKey) {
30
+ throw new Error("Invalid API key");
31
+ }
32
+ return true;
33
+ },
34
+ returns: v.boolean(),
35
+ });
36
+ export const destroy = mutation({
37
+ args: v.object({
38
+ apiKey: v.optional(v.id("apiKeys")),
39
+ name: v.optional(v.string()),
40
+ }),
41
+ handler: async (ctx, args) => {
42
+ if (args.apiKey) {
43
+ const apiKey = await ctx.db.get(args.apiKey);
44
+ if (!apiKey) {
45
+ return "missing";
46
+ }
47
+ if (apiKey.name !== args.name) {
48
+ return "name mismatch";
49
+ }
50
+ await ctx.db.delete(args.apiKey);
51
+ }
52
+ else if (args.name) {
53
+ const apiKey = await ctx.db
54
+ .query("apiKeys")
55
+ .withIndex("name", (q) => q.eq("name", args.name))
56
+ .first();
57
+ if (!apiKey) {
58
+ return "missing";
59
+ }
60
+ await ctx.db.delete(apiKey._id);
61
+ }
62
+ else {
63
+ return "must provide either apiKey or name";
64
+ }
65
+ return "deleted";
66
+ },
67
+ returns: v.union(v.literal("missing"), v.literal("deleted"), v.literal("name mismatch"), v.literal("must provide either apiKey or name")),
68
+ });
69
+ //# sourceMappingURL=apiKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../../src/component/apiKeys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { MutationCtx } from "./_generated/server.js";
2
+ import { Id } from "./_generated/dataModel.js";
3
+ export declare const addFile: import("convex/server").RegisteredMutation<"public", {
4
+ storageId: string;
5
+ hash: string;
6
+ }, Promise<import("convex/values").GenericId<"files">>>;
7
+ export declare function addFileHandler(ctx: MutationCtx, args: {
8
+ storageId: string;
9
+ hash: string;
10
+ }): Promise<import("convex/values").GenericId<"files">>;
11
+ export declare const resuseFile: import("convex/server").RegisteredMutation<"public", {
12
+ fileId: Id<"files">;
13
+ }, Promise<void>>;
14
+ export declare function reuseFileHandler(ctx: MutationCtx, args: {
15
+ fileId: Id<"files">;
16
+ }): Promise<void>;
17
+ export declare const getFilesToDelete: import("convex/server").RegisteredQuery<"public", {
18
+ limit?: number | undefined;
19
+ cursor?: string | undefined;
20
+ }, Promise<{
21
+ files: {
22
+ _id: import("convex/values").GenericId<"files">;
23
+ _creationTime: number;
24
+ storageId: string;
25
+ hash: string;
26
+ refcount: number;
27
+ }[];
28
+ continueCursor: string;
29
+ isDone: boolean;
30
+ }>>;
31
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/component/files.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,WAAW,EAAS,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAE/C,eAAO,MAAM,OAAO;eAWC,MAAM;UAAQ,MAAM;uDAJvC,CAAC;AAEH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,uDAQ1C;AAED,eAAO,MAAM,UAAU;YAUL,EAAE,CAAC,OAAO,CAAC;iBAJ3B,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE;IAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;CAAE,iBAS9B;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;GAwB3B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { paginator } from "convex-helpers/server/pagination";
2
+ import { mutation, query } from "./_generated/server.js";
3
+ import { schema, v } from "./schema.js";
4
+ export const addFile = mutation({
5
+ args: {
6
+ storageId: v.string(),
7
+ hash: v.string(),
8
+ },
9
+ handler: addFileHandler,
10
+ returns: v.id("files"),
11
+ });
12
+ export async function addFileHandler(ctx, args) {
13
+ const fileId = await ctx.db.insert("files", {
14
+ storageId: args.storageId,
15
+ hash: args.hash,
16
+ refcount: 1,
17
+ });
18
+ return fileId;
19
+ }
20
+ export const resuseFile = mutation({
21
+ args: {
22
+ fileId: v.id("files"),
23
+ },
24
+ handler: reuseFileHandler,
25
+ returns: v.null(),
26
+ });
27
+ export async function reuseFileHandler(ctx, args) {
28
+ const file = await ctx.db.get(args.fileId);
29
+ if (!file) {
30
+ throw new Error("File not found");
31
+ }
32
+ await ctx.db.patch(args.fileId, {
33
+ refcount: file.refcount + 1,
34
+ });
35
+ }
36
+ export const getFilesToDelete = query({
37
+ args: {
38
+ cursor: v.optional(v.string()),
39
+ limit: v.optional(v.number()),
40
+ },
41
+ handler: async (ctx, args) => {
42
+ const files = await paginator(ctx.db, schema)
43
+ .query("files")
44
+ .withIndex("refcount", (q) => q.eq("refcount", 0))
45
+ .paginate({
46
+ numItems: args.limit ?? 100,
47
+ cursor: args.cursor ?? null,
48
+ });
49
+ return {
50
+ files: files.page,
51
+ continueCursor: files.continueCursor,
52
+ isDone: files.isDone,
53
+ };
54
+ },
55
+ returns: v.object({
56
+ files: v.array(v.doc("files")),
57
+ continueCursor: v.string(),
58
+ isDone: v.boolean(),
59
+ }),
60
+ });
61
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/component/files.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,7 @@
1
- import { Id } from "./_generated/dataModel.js";
2
- export declare const getThread: import("convex/server").RegisteredQuery<"public", {
3
- threadId: import("convex/values").GenericId<"threads">;
4
- }, Promise<{
5
- _id: import("convex/values").GenericId<"threads">;
6
- _creationTime: number;
7
- userId?: string | undefined;
8
- defaultSystemPrompt?: string | undefined;
9
- title?: string | undefined;
10
- summary?: string | undefined;
11
- parentThreadIds?: import("convex/values").GenericId<"threads">[] | undefined;
12
- order?: number | undefined;
13
- status: "active" | "archived";
14
- } | null>>;
15
- export declare const getThreadsByUserId: import("convex/server").RegisteredQuery<"public", {
1
+ import { Doc, Id } from "./_generated/dataModel.js";
2
+ import { MutationCtx } from "./_generated/server.js";
3
+ /** @deprecated Use *.threads.listMessagesByThreadId instead. */
4
+ export declare const listThreadsByUserId: import("convex/server").RegisteredQuery<"public", {
16
5
  order?: "asc" | "desc" | undefined;
17
6
  paginationOpts?: {
18
7
  id?: number | undefined;
@@ -23,111 +12,48 @@ export declare const getThreadsByUserId: import("convex/server").RegisteredQuery
23
12
  cursor: string | null;
24
13
  } | undefined;
25
14
  userId: string;
26
- }, Promise<import("convex/server").PaginationResult<{
27
- _id: import("convex/values").GenericId<"threads">;
28
- _creationTime: number;
29
- userId?: string | undefined;
30
- defaultSystemPrompt?: string | undefined;
31
- title?: string | undefined;
32
- summary?: string | undefined;
33
- parentThreadIds?: import("convex/values").GenericId<"threads">[] | undefined;
34
- order?: number | undefined;
35
- status: "active" | "archived";
36
- }>>>;
37
- export declare const createThread: import("convex/server").RegisteredMutation<"public", {
38
- userId?: string | undefined;
39
- defaultSystemPrompt?: string | undefined;
40
- title?: string | undefined;
41
- summary?: string | undefined;
42
- parentThreadIds?: import("convex/values").GenericId<"threads">[] | undefined;
43
15
  }, Promise<{
44
- _id: import("convex/values").GenericId<"threads">;
45
- _creationTime: number;
16
+ page: {
17
+ userId?: string | undefined;
18
+ title?: string | undefined;
19
+ summary?: string | undefined;
20
+ status: "active" | "archived";
21
+ _creationTime: number;
22
+ _id: string;
23
+ }[];
24
+ isDone: boolean;
25
+ continueCursor: import("convex/server").Cursor;
26
+ splitCursor?: import("convex/server").Cursor | null;
27
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null;
28
+ }>>;
29
+ /** @deprecated Use *.threads.getThread */
30
+ export declare const getThread: import("convex/server").RegisteredQuery<"public", {
31
+ threadId: import("convex/values").GenericId<"threads">;
32
+ }, Promise<{
46
33
  userId?: string | undefined;
47
- defaultSystemPrompt?: string | undefined;
48
34
  title?: string | undefined;
49
35
  summary?: string | undefined;
50
- parentThreadIds?: import("convex/values").GenericId<"threads">[] | undefined;
51
- order?: number | undefined;
52
36
  status: "active" | "archived";
53
- }>>;
37
+ _creationTime: number;
38
+ _id: string;
39
+ } | null>>;
40
+ /** @deprecated Use *.threads.updateThread instead */
54
41
  export declare const updateThread: import("convex/server").RegisteredMutation<"public", {
55
42
  threadId: import("convex/values").GenericId<"threads">;
56
43
  patch: {
57
44
  status?: "active" | "archived" | undefined;
58
- defaultSystemPrompt?: string | undefined;
59
45
  title?: string | undefined;
60
46
  summary?: string | undefined;
61
47
  };
62
48
  }, Promise<{
63
- _id: import("convex/values").GenericId<"threads">;
64
- _creationTime: number;
65
49
  userId?: string | undefined;
66
- defaultSystemPrompt?: string | undefined;
67
50
  title?: string | undefined;
68
51
  summary?: string | undefined;
69
- parentThreadIds?: import("convex/values").GenericId<"threads">[] | undefined;
70
- order?: number | undefined;
71
52
  status: "active" | "archived";
53
+ _creationTime: number;
54
+ _id: string;
72
55
  }>>;
73
- export declare const deleteAllForUserId: import("convex/server").RegisteredAction<"public", {
74
- userId: string;
75
- }, Promise<void>>;
76
- export declare const deleteAllForUserIdAsync: import("convex/server").RegisteredMutation<"public", {
77
- userId: string;
78
- }, Promise<boolean>>;
79
- export declare const _deleteAllForUserIdAsync: import("convex/server").RegisteredMutation<"internal", {
80
- userId: string;
81
- messagesCursor: string | null;
82
- threadsCursor: string | null;
83
- }, Promise<boolean>>;
84
- export declare const _deletePageForUserId: import("convex/server").RegisteredMutation<"internal", {
85
- userId: string;
86
- messagesCursor: string | null;
87
- threadsCursor: string | null;
88
- }, Promise<{
89
- isDone: boolean;
90
- messagesCursor: string;
91
- threadsCursor: string | null;
92
- }>>;
93
- export declare const deleteAllForThreadIdSync: import("convex/server").RegisteredAction<"public", {
94
- limit?: number | undefined;
95
- cursor?: string | undefined;
96
- threadId: import("convex/values").GenericId<"threads">;
97
- }, Promise<{
98
- isDone: boolean;
99
- cursor: string;
100
- }>>;
101
- export declare const deleteAllForThreadIdAsync: import("convex/server").RegisteredMutation<"public", {
102
- limit?: number | undefined;
103
- cursor?: string | undefined;
104
- threadId: import("convex/values").GenericId<"threads">;
105
- }, Promise<{
106
- isDone: boolean;
107
- cursor: string;
108
- }>>;
109
- export declare const _deletePageForThreadId: import("convex/server").RegisteredMutation<"internal", {
110
- limit?: number | undefined;
111
- cursor?: string | undefined;
112
- threadId: import("convex/values").GenericId<"threads">;
113
- }, Promise<{
114
- isDone: boolean;
115
- cursor: string;
116
- }>>;
117
- export declare const getFilesToDelete: import("convex/server").RegisteredQuery<"public", {
118
- limit?: number | undefined;
119
- cursor?: string | undefined;
120
- }, Promise<{
121
- files: {
122
- _id: import("convex/values").GenericId<"files">;
123
- _creationTime: number;
124
- storageId: string;
125
- hash: string;
126
- refcount: number;
127
- }[];
128
- continueCursor: string;
129
- isDone: boolean;
130
- }>>;
56
+ export declare function deleteMessage(ctx: MutationCtx, messageDoc: Doc<"messages">): Promise<void>;
131
57
  export declare const vMessageDoc: import("convex/values").VObject<{
132
58
  id?: string | undefined;
133
59
  userId?: string | undefined;
@@ -1099,6 +1025,7 @@ export declare const addStep: import("convex/server").RegisteredMutation<"public
1099
1025
  userId?: string | undefined;
1100
1026
  failPendingSteps?: boolean | undefined;
1101
1027
  threadId: import("convex/values").GenericId<"threads">;
1028
+ parentMessageId: import("convex/values").GenericId<"messages">;
1102
1029
  step: {
1103
1030
  messages: {
1104
1031
  id?: string | undefined;
@@ -1387,7 +1314,6 @@ export declare const addStep: import("convex/server").RegisteredMutation<"public
1387
1314
  }[];
1388
1315
  };
1389
1316
  };
1390
- messageId: import("convex/values").GenericId<"messages">;
1391
1317
  }, Promise<{
1392
1318
  _id: import("convex/values").GenericId<"steps">;
1393
1319
  _creationTime: number;
@@ -1567,9 +1493,8 @@ export declare const rollbackMessage: import("convex/server").RegisteredMutation
1567
1493
  export declare const commitMessage: import("convex/server").RegisteredMutation<"public", {
1568
1494
  messageId: Id<"messages">;
1569
1495
  }, Promise<void>>;
1570
- export declare const getThreadMessages: import("convex/server").RegisteredQuery<"public", {
1496
+ export declare const listMessagesByThreadId: import("convex/server").RegisteredQuery<"public", {
1571
1497
  order?: "asc" | "desc" | undefined;
1572
- parentMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1573
1498
  paginationOpts?: {
1574
1499
  id?: number | undefined;
1575
1500
  endCursor?: string | null | undefined;
@@ -1578,8 +1503,10 @@ export declare const getThreadMessages: import("convex/server").RegisteredQuery<
1578
1503
  numItems: number;
1579
1504
  cursor: string | null;
1580
1505
  } | undefined;
1581
- isTool?: boolean | undefined;
1506
+ excludeToolMessages?: boolean | undefined;
1507
+ isTool?: "use excludeToolMessages instead of this" | undefined;
1582
1508
  statuses?: ("pending" | "success" | "failed")[] | undefined;
1509
+ beforeMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1583
1510
  threadId: import("convex/values").GenericId<"threads">;
1584
1511
  }, Promise<import("convex/server").PaginationResult<{
1585
1512
  _id: import("convex/values").GenericId<"messages">;
@@ -1711,10 +1638,13 @@ export declare const getThreadMessages: import("convex/server").RegisteredQuery<
1711
1638
  tool: boolean;
1712
1639
  stepOrder: number;
1713
1640
  }>>>;
1641
+ /** @deprecated Use listMessagesByThreadId instead. */
1642
+ export declare const getThreadMessages: import("convex/server").RegisteredQuery<"public", {
1643
+ deprecated: "Use listMessagesByThreadId instead";
1644
+ }, Promise<never>>;
1714
1645
  export declare const searchMessages: import("convex/server").RegisteredAction<"public", {
1715
1646
  userId?: string | undefined;
1716
1647
  threadId?: import("convex/values").GenericId<"threads"> | undefined;
1717
- parentMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1718
1648
  text?: string | undefined;
1719
1649
  vector?: number[] | undefined;
1720
1650
  vectorModel?: string | undefined;
@@ -1723,6 +1653,7 @@ export declare const searchMessages: import("convex/server").RegisteredAction<"p
1723
1653
  before: number;
1724
1654
  after: number;
1725
1655
  } | undefined;
1656
+ beforeMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1726
1657
  limit: number;
1727
1658
  }, Promise<{
1728
1659
  _id: import("convex/values").GenericId<"messages">;
@@ -1854,10 +1785,10 @@ export declare const searchMessages: import("convex/server").RegisteredAction<"p
1854
1785
  tool: boolean;
1855
1786
  stepOrder: number;
1856
1787
  }[]>>;
1857
- export declare const _fetchVectorMessages: import("convex/server").RegisteredQuery<"internal", {
1788
+ export declare const _fetchSearchMessages: import("convex/server").RegisteredQuery<"internal", {
1858
1789
  userId?: string | undefined;
1859
1790
  threadId?: import("convex/values").GenericId<"threads"> | undefined;
1860
- parentMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1791
+ beforeMessageId?: import("convex/values").GenericId<"messages"> | undefined;
1861
1792
  textSearchMessages?: {
1862
1793
  id?: string | undefined;
1863
1794
  userId?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"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"}