@convex-dev/agent 0.6.0-alpha.0 → 0.6.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 (192) hide show
  1. package/MIGRATION.md +153 -0
  2. package/package.json +4 -2
  3. package/src/UIMessages.ts +135 -0
  4. package/src/client/approval.test.ts +350 -0
  5. package/src/client/createTool.ts +50 -52
  6. package/src/client/index.ts +162 -1
  7. package/src/client/mockModel.ts +9 -2
  8. package/src/client/search.test.ts +4 -5
  9. package/src/client/search.ts +47 -2
  10. package/src/client/start.ts +41 -24
  11. package/src/client/streamText.ts +27 -3
  12. package/src/client/streaming.integration.test.ts +1206 -0
  13. package/src/client/streaming.ts +41 -12
  14. package/src/client/types.ts +14 -12
  15. package/src/component/_generated/component.ts +53 -64
  16. package/src/component/messages.ts +12 -2
  17. package/src/deltas.ts +0 -1
  18. package/src/mapping.test.ts +143 -1
  19. package/src/mapping.ts +115 -6
  20. package/src/react/useDeltaStreams.ts +6 -0
  21. package/dist/UIMessages.d.ts +0 -46
  22. package/dist/UIMessages.d.ts.map +0 -1
  23. package/dist/UIMessages.js +0 -546
  24. package/dist/UIMessages.js.map +0 -1
  25. package/dist/client/createTool.d.ts +0 -170
  26. package/dist/client/createTool.d.ts.map +0 -1
  27. package/dist/client/createTool.js +0 -115
  28. package/dist/client/createTool.js.map +0 -1
  29. package/dist/client/defaultComponent.d.ts +0 -11
  30. package/dist/client/defaultComponent.d.ts.map +0 -1
  31. package/dist/client/defaultComponent.js +0 -7
  32. package/dist/client/defaultComponent.js.map +0 -1
  33. package/dist/client/definePlaygroundAPI.d.ts +0 -1725
  34. package/dist/client/definePlaygroundAPI.d.ts.map +0 -1
  35. package/dist/client/definePlaygroundAPI.js +0 -271
  36. package/dist/client/definePlaygroundAPI.js.map +0 -1
  37. package/dist/client/files.d.ts +0 -69
  38. package/dist/client/files.d.ts.map +0 -1
  39. package/dist/client/files.js +0 -181
  40. package/dist/client/files.js.map +0 -1
  41. package/dist/client/index.d.ts +0 -2044
  42. package/dist/client/index.d.ts.map +0 -1
  43. package/dist/client/index.js +0 -804
  44. package/dist/client/index.js.map +0 -1
  45. package/dist/client/messages.d.ts +0 -461
  46. package/dist/client/messages.d.ts.map +0 -1
  47. package/dist/client/messages.js +0 -106
  48. package/dist/client/messages.js.map +0 -1
  49. package/dist/client/mockModel.d.ts +0 -42
  50. package/dist/client/mockModel.d.ts.map +0 -1
  51. package/dist/client/mockModel.js +0 -175
  52. package/dist/client/mockModel.js.map +0 -1
  53. package/dist/client/saveInputMessages.d.ts +0 -20
  54. package/dist/client/saveInputMessages.d.ts.map +0 -1
  55. package/dist/client/saveInputMessages.js +0 -58
  56. package/dist/client/saveInputMessages.js.map +0 -1
  57. package/dist/client/search.d.ts +0 -493
  58. package/dist/client/search.d.ts.map +0 -1
  59. package/dist/client/search.js +0 -425
  60. package/dist/client/search.js.map +0 -1
  61. package/dist/client/start.d.ts +0 -84
  62. package/dist/client/start.d.ts.map +0 -1
  63. package/dist/client/start.js +0 -171
  64. package/dist/client/start.js.map +0 -1
  65. package/dist/client/streamText.d.ts +0 -46
  66. package/dist/client/streamText.d.ts.map +0 -1
  67. package/dist/client/streamText.js +0 -93
  68. package/dist/client/streamText.js.map +0 -1
  69. package/dist/client/streaming.d.ts +0 -3767
  70. package/dist/client/streaming.d.ts.map +0 -1
  71. package/dist/client/streaming.js +0 -294
  72. package/dist/client/streaming.js.map +0 -1
  73. package/dist/client/threads.d.ts +0 -46
  74. package/dist/client/threads.d.ts.map +0 -1
  75. package/dist/client/threads.js +0 -49
  76. package/dist/client/threads.js.map +0 -1
  77. package/dist/client/types.d.ts +0 -460
  78. package/dist/client/types.d.ts.map +0 -1
  79. package/dist/client/types.js +0 -2
  80. package/dist/client/types.js.map +0 -1
  81. package/dist/client/utils.d.ts +0 -4
  82. package/dist/client/utils.d.ts.map +0 -1
  83. package/dist/client/utils.js +0 -21
  84. package/dist/client/utils.js.map +0 -1
  85. package/dist/component/_generated/api.d.ts +0 -48
  86. package/dist/component/_generated/api.d.ts.map +0 -1
  87. package/dist/component/_generated/api.js +0 -31
  88. package/dist/component/_generated/api.js.map +0 -1
  89. package/dist/component/_generated/component.d.ts +0 -3119
  90. package/dist/component/_generated/component.d.ts.map +0 -1
  91. package/dist/component/_generated/component.js +0 -11
  92. package/dist/component/_generated/component.js.map +0 -1
  93. package/dist/component/_generated/dataModel.d.ts +0 -46
  94. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  95. package/dist/component/_generated/dataModel.js +0 -11
  96. package/dist/component/_generated/dataModel.js.map +0 -1
  97. package/dist/component/_generated/server.d.ts +0 -121
  98. package/dist/component/_generated/server.d.ts.map +0 -1
  99. package/dist/component/_generated/server.js +0 -78
  100. package/dist/component/_generated/server.js.map +0 -1
  101. package/dist/component/apiKeys.d.ts +0 -11
  102. package/dist/component/apiKeys.d.ts.map +0 -1
  103. package/dist/component/apiKeys.js +0 -69
  104. package/dist/component/apiKeys.js.map +0 -1
  105. package/dist/component/convex.config.d.ts +0 -3
  106. package/dist/component/convex.config.d.ts.map +0 -1
  107. package/dist/component/convex.config.js +0 -3
  108. package/dist/component/convex.config.js.map +0 -1
  109. package/dist/component/files.d.ts +0 -97
  110. package/dist/component/files.d.ts.map +0 -1
  111. package/dist/component/files.js +0 -190
  112. package/dist/component/files.js.map +0 -1
  113. package/dist/component/messages.d.ts +0 -3850
  114. package/dist/component/messages.d.ts.map +0 -1
  115. package/dist/component/messages.js +0 -747
  116. package/dist/component/messages.js.map +0 -1
  117. package/dist/component/schema.d.ts +0 -8026
  118. package/dist/component/schema.d.ts.map +0 -1
  119. package/dist/component/schema.js +0 -147
  120. package/dist/component/schema.js.map +0 -1
  121. package/dist/component/streams.d.ts +0 -128
  122. package/dist/component/streams.d.ts.map +0 -1
  123. package/dist/component/streams.js +0 -413
  124. package/dist/component/streams.js.map +0 -1
  125. package/dist/component/threads.d.ts +0 -115
  126. package/dist/component/threads.d.ts.map +0 -1
  127. package/dist/component/threads.js +0 -208
  128. package/dist/component/threads.js.map +0 -1
  129. package/dist/component/users.d.ts +0 -52
  130. package/dist/component/users.d.ts.map +0 -1
  131. package/dist/component/users.js +0 -229
  132. package/dist/component/users.js.map +0 -1
  133. package/dist/component/vector/index.d.ts +0 -61
  134. package/dist/component/vector/index.d.ts.map +0 -1
  135. package/dist/component/vector/index.js +0 -146
  136. package/dist/component/vector/index.js.map +0 -1
  137. package/dist/component/vector/tables.d.ts +0 -58
  138. package/dist/component/vector/tables.d.ts.map +0 -1
  139. package/dist/component/vector/tables.js +0 -56
  140. package/dist/component/vector/tables.js.map +0 -1
  141. package/dist/deltas.d.ts +0 -43
  142. package/dist/deltas.d.ts.map +0 -1
  143. package/dist/deltas.js +0 -447
  144. package/dist/deltas.js.map +0 -1
  145. package/dist/mapping.d.ts +0 -54
  146. package/dist/mapping.d.ts.map +0 -1
  147. package/dist/mapping.js +0 -626
  148. package/dist/mapping.js.map +0 -1
  149. package/dist/react/SmoothText.d.ts +0 -5
  150. package/dist/react/SmoothText.d.ts.map +0 -1
  151. package/dist/react/SmoothText.js +0 -6
  152. package/dist/react/SmoothText.js.map +0 -1
  153. package/dist/react/index.d.ts +0 -25
  154. package/dist/react/index.d.ts.map +0 -1
  155. package/dist/react/index.js +0 -70
  156. package/dist/react/index.js.map +0 -1
  157. package/dist/react/optimisticallySendMessage.d.ts +0 -42
  158. package/dist/react/optimisticallySendMessage.d.ts.map +0 -1
  159. package/dist/react/optimisticallySendMessage.js +0 -74
  160. package/dist/react/optimisticallySendMessage.js.map +0 -1
  161. package/dist/react/types.d.ts +0 -12
  162. package/dist/react/types.d.ts.map +0 -1
  163. package/dist/react/types.js +0 -2
  164. package/dist/react/types.js.map +0 -1
  165. package/dist/react/useDeltaStreams.d.ts +0 -10
  166. package/dist/react/useDeltaStreams.d.ts.map +0 -1
  167. package/dist/react/useDeltaStreams.js +0 -101
  168. package/dist/react/useDeltaStreams.js.map +0 -1
  169. package/dist/react/useSmoothText.d.ts +0 -27
  170. package/dist/react/useSmoothText.d.ts.map +0 -1
  171. package/dist/react/useSmoothText.js +0 -68
  172. package/dist/react/useSmoothText.js.map +0 -1
  173. package/dist/react/useStreamingUIMessages.d.ts +0 -22
  174. package/dist/react/useStreamingUIMessages.d.ts.map +0 -1
  175. package/dist/react/useStreamingUIMessages.js +0 -92
  176. package/dist/react/useStreamingUIMessages.js.map +0 -1
  177. package/dist/react/useThreadMessages.d.ts +0 -104
  178. package/dist/react/useThreadMessages.d.ts.map +0 -1
  179. package/dist/react/useThreadMessages.js +0 -148
  180. package/dist/react/useThreadMessages.js.map +0 -1
  181. package/dist/react/useUIMessages.d.ts +0 -96
  182. package/dist/react/useUIMessages.d.ts.map +0 -1
  183. package/dist/react/useUIMessages.js +0 -108
  184. package/dist/react/useUIMessages.js.map +0 -1
  185. package/dist/shared.d.ts +0 -26
  186. package/dist/shared.d.ts.map +0 -1
  187. package/dist/shared.js +0 -67
  188. package/dist/shared.js.map +0 -1
  189. package/dist/validators.d.ts +0 -24516
  190. package/dist/validators.d.ts.map +0 -1
  191. package/dist/validators.js +0 -475
  192. package/dist/validators.js.map +0 -1
@@ -1,69 +0,0 @@
1
- import { v } from "convex/values";
2
- import { mutation, query } from "./_generated/server.js";
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../src/component/apiKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC7B;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,EAAE;iBAChC,KAAK,CAAC,SAAS,CAAC;iBAChB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBACjD,KAAK,EAAE,CAAC;YACX,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,8BAA8B,CAAC,CAAC;gBACjE,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;KACxB;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAO,eAAe,CAAC;YACzB,CAAC;YACD,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;iBACxB,KAAK,CAAC,SAAS,CAAC;iBAChB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBACjD,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,oCAAoC,CAAC;QAC9C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAC1B,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAChD;CACF,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("convex/server").ComponentDefinition<any>;
2
- export default _default;
3
- //# sourceMappingURL=convex.config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../src/component/convex.config.ts"],"names":[],"mappings":";AAEA,wBAAwC"}
@@ -1,3 +0,0 @@
1
- import { defineComponent } from "convex/server";
2
- export default defineComponent("agent");
3
- //# sourceMappingURL=convex.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convex.config.js","sourceRoot":"","sources":["../../src/component/convex.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAe,eAAe,CAAC,OAAO,CAAC,CAAC"}
@@ -1,97 +0,0 @@
1
- import type { Id } from "./_generated/dataModel.js";
2
- import { type MutationCtx } from "./_generated/server.js";
3
- import type { Infer } from "convex/values";
4
- declare const addFileArgs: import("convex/values").VObject<{
5
- mediaType?: string | undefined;
6
- mimeType?: string | undefined;
7
- filename?: string | undefined;
8
- storageId: string;
9
- hash: string;
10
- }, {
11
- storageId: import("convex/values").VString<string, "required">;
12
- hash: import("convex/values").VString<string, "required">;
13
- filename: import("convex/values").VString<string | undefined, "optional">;
14
- mediaType: import("convex/values").VString<string | undefined, "optional">;
15
- /** @deprecated Use `mediaType` instead. */
16
- mimeType: import("convex/values").VString<string | undefined, "optional">;
17
- }, "required", "mediaType" | "mimeType" | "filename" | "storageId" | "hash">;
18
- export declare const addFile: import("convex/server").RegisteredMutation<"public", {
19
- mediaType?: string | undefined;
20
- mimeType?: string | undefined;
21
- filename?: string | undefined;
22
- storageId: string;
23
- hash: string;
24
- }, Promise<{
25
- fileId: import("convex/values").GenericId<"files">;
26
- storageId: string;
27
- }>>;
28
- export declare function addFileHandler(ctx: MutationCtx, args: Infer<typeof addFileArgs>): Promise<{
29
- fileId: import("convex/values").GenericId<"files">;
30
- storageId: string;
31
- }>;
32
- export declare const get: import("convex/server").RegisteredQuery<"public", {
33
- fileId: import("convex/values").GenericId<"files">;
34
- }, Promise<{
35
- _id: import("convex/values").GenericId<"files">;
36
- _creationTime: number;
37
- mediaType?: string | undefined;
38
- mimeType?: string | undefined;
39
- filename?: string | undefined;
40
- storageId: string;
41
- hash: string;
42
- refcount: number;
43
- lastTouchedAt: number;
44
- } | null>>;
45
- /**
46
- * If you plan to have the same file added over and over without a reference to
47
- * the fileId, you can use this query to get the fileId of the existing file.
48
- * Note: this will not increment the refcount. only saving messages does that.
49
- * It will only match if the filename is the same (or both are undefined).
50
- */
51
- export declare const useExistingFile: import("convex/server").RegisteredMutation<"public", {
52
- filename?: string | undefined;
53
- hash: string;
54
- }, Promise<{
55
- fileId: import("convex/values").GenericId<"files">;
56
- storageId: string;
57
- } | null>>;
58
- export declare function changeRefcount(ctx: MutationCtx, prev: Id<"files">[], next: Id<"files">[]): Promise<void>;
59
- export declare const copyFile: import("convex/server").RegisteredMutation<"public", {
60
- fileId: Id<"files">;
61
- }, Promise<void>>;
62
- export declare function copyFileHandler(ctx: MutationCtx, args: {
63
- fileId: Id<"files">;
64
- }): Promise<void>;
65
- /**
66
- * Get files that are unused and can be deleted.
67
- * This is useful for cleaning up files that are no longer needed.
68
- * Note: recently added files that have not been saved yet will show up here.
69
- * You can inspect the `lastTouchedAt` field to see how recently it was used.
70
- * I'd recommend not deleting anything touched in the last 24 hours.
71
- */
72
- export declare const getFilesToDelete: import("convex/server").RegisteredQuery<"public", {
73
- paginationOpts: {
74
- id?: number;
75
- endCursor?: string | null;
76
- maximumRowsRead?: number;
77
- maximumBytesRead?: number;
78
- numItems: number;
79
- cursor: string | null;
80
- };
81
- }, Promise<import("convex/server").PaginationResult<{
82
- _id: import("convex/values").GenericId<"files">;
83
- _creationTime: number;
84
- mediaType?: string | undefined;
85
- mimeType?: string | undefined;
86
- filename?: string | undefined;
87
- storageId: string;
88
- hash: string;
89
- refcount: number;
90
- lastTouchedAt: number;
91
- }>>>;
92
- export declare const deleteFiles: import("convex/server").RegisteredMutation<"public", {
93
- force?: boolean | undefined;
94
- fileIds: import("convex/values").GenericId<"files">[];
95
- }, Promise<import("convex/values").GenericId<"files">[]>>;
96
- export {};
97
- //# sourceMappingURL=files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/component/files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAY,KAAK,WAAW,EAAS,MAAM,wBAAwB,CAAC;AAG3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,QAAA,MAAM,WAAW;;;;;;;;;;;IAKf,2CAA2C;;4EAE3C,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;GAOlB,CAAC;AAEH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,KAAK,CAAC,OAAO,WAAW,CAAC;;;GAmChC;AAED,eAAO,MAAM,GAAG;;;;;;;;;;;;UAQd,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;UA0B1B,CAAC;AAEH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EACnB,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,iBA4BpB;AAED,eAAO,MAAM,QAAQ;YAUH,EAAE,CAAC,OAAO,CAAC;iBAJ3B,CAAC;AAEH,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE;IAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;CAAE,iBAU9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;IAgB3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;yDA4BtB,CAAC"}
@@ -1,190 +0,0 @@
1
- import { paginator } from "convex-helpers/server/pagination";
2
- import { mutation, query } from "./_generated/server.js";
3
- import { schema, v } from "./schema.js";
4
- import { paginationOptsValidator } from "convex/server";
5
- const addFileArgs = v.object({
6
- storageId: v.string(),
7
- hash: v.string(),
8
- filename: v.optional(v.string()),
9
- mediaType: v.optional(v.string()),
10
- /** @deprecated Use `mediaType` instead. */
11
- mimeType: v.optional(v.string()),
12
- });
13
- export const addFile = mutation({
14
- args: addFileArgs,
15
- handler: addFileHandler,
16
- returns: {
17
- fileId: v.id("files"),
18
- storageId: v.string(),
19
- },
20
- });
21
- export async function addFileHandler(ctx, args) {
22
- // Support both mediaType (preferred) and mimeType (deprecated)
23
- const mediaType = args.mediaType ?? args.mimeType;
24
- const existingFile = await ctx.db
25
- .query("files")
26
- .withIndex("hash", (q) => q.eq("hash", args.hash))
27
- .filter((q) => q.eq(q.field("filename"), args.filename))
28
- .first();
29
- if (existingFile) {
30
- // increment the refcount
31
- await ctx.db.patch(existingFile._id, {
32
- refcount: existingFile.refcount + 1,
33
- lastTouchedAt: Date.now(),
34
- });
35
- return {
36
- fileId: existingFile._id,
37
- storageId: existingFile.storageId,
38
- };
39
- }
40
- const fileId = await ctx.db.insert("files", {
41
- storageId: args.storageId,
42
- hash: args.hash,
43
- filename: args.filename,
44
- mediaType,
45
- mimeType: args.mimeType, // Keep for backwards compatibility
46
- // We start out with it unused - when it's saved in a message we increment.
47
- refcount: 0,
48
- lastTouchedAt: Date.now(),
49
- });
50
- return {
51
- fileId,
52
- storageId: args.storageId,
53
- };
54
- }
55
- export const get = query({
56
- args: {
57
- fileId: v.id("files"),
58
- },
59
- returns: v.union(v.null(), v.doc("files")),
60
- handler: async (ctx, args) => {
61
- return ctx.db.get(args.fileId);
62
- },
63
- });
64
- /**
65
- * If you plan to have the same file added over and over without a reference to
66
- * the fileId, you can use this query to get the fileId of the existing file.
67
- * Note: this will not increment the refcount. only saving messages does that.
68
- * It will only match if the filename is the same (or both are undefined).
69
- */
70
- export const useExistingFile = mutation({
71
- args: {
72
- hash: v.string(),
73
- filename: v.optional(v.string()),
74
- },
75
- handler: async (ctx, args) => {
76
- const file = await ctx.db
77
- .query("files")
78
- .withIndex("hash", (q) => q.eq("hash", args.hash))
79
- .filter((q) => q.eq(q.field("filename"), args.filename))
80
- .first();
81
- if (!file) {
82
- return null;
83
- }
84
- await ctx.db.patch(file._id, {
85
- lastTouchedAt: Date.now(),
86
- });
87
- return { fileId: file._id, storageId: file.storageId };
88
- },
89
- returns: v.union(v.null(), v.object({
90
- fileId: v.id("files"),
91
- storageId: v.string(),
92
- })),
93
- });
94
- export async function changeRefcount(ctx, prev, next) {
95
- const prevSet = new Set(prev);
96
- const nextSet = new Set(next);
97
- for (const fileId of prevSet) {
98
- if (!nextSet.has(fileId)) {
99
- const file = await ctx.db.get(fileId);
100
- if (file) {
101
- await ctx.db.patch(fileId, {
102
- refcount: file.refcount - 1,
103
- });
104
- }
105
- else {
106
- console.error(`File ${fileId} not found when decrementing refcount`);
107
- }
108
- }
109
- }
110
- for (const fileId of nextSet) {
111
- if (!prevSet.has(fileId)) {
112
- const file = await ctx.db.get(fileId);
113
- if (file) {
114
- await ctx.db.patch(fileId, {
115
- refcount: file.refcount + 1,
116
- });
117
- }
118
- else {
119
- throw new Error(`File ${fileId} not found when incrementing refcount`);
120
- }
121
- }
122
- }
123
- }
124
- export const copyFile = mutation({
125
- args: {
126
- fileId: v.id("files"),
127
- },
128
- handler: copyFileHandler,
129
- returns: v.null(),
130
- });
131
- export async function copyFileHandler(ctx, args) {
132
- const file = await ctx.db.get(args.fileId);
133
- if (!file) {
134
- throw new Error("File not found");
135
- }
136
- await ctx.db.patch(args.fileId, {
137
- refcount: file.refcount + 1,
138
- lastTouchedAt: Date.now(),
139
- });
140
- }
141
- /**
142
- * Get files that are unused and can be deleted.
143
- * This is useful for cleaning up files that are no longer needed.
144
- * Note: recently added files that have not been saved yet will show up here.
145
- * You can inspect the `lastTouchedAt` field to see how recently it was used.
146
- * I'd recommend not deleting anything touched in the last 24 hours.
147
- */
148
- export const getFilesToDelete = query({
149
- args: {
150
- paginationOpts: paginationOptsValidator,
151
- },
152
- handler: async (ctx, args) => {
153
- const files = await paginator(ctx.db, schema)
154
- .query("files")
155
- .withIndex("refcount", (q) => q.eq("refcount", 0))
156
- .paginate(args.paginationOpts);
157
- return files;
158
- },
159
- returns: v.object({
160
- page: v.array(v.doc("files")),
161
- continueCursor: v.string(),
162
- isDone: v.boolean(),
163
- }),
164
- });
165
- export const deleteFiles = mutation({
166
- args: {
167
- fileIds: v.array(v.id("files")),
168
- force: v.optional(v.boolean()),
169
- },
170
- returns: v.array(v.id("files")),
171
- handler: async (ctx, args) => {
172
- const deletedFileIds = await Promise.all(args.fileIds.map(async (fileId) => {
173
- const file = await ctx.db.get(fileId);
174
- if (!file) {
175
- console.error(`File ${fileId} not found when deleting, skipping...`);
176
- return null;
177
- }
178
- if (file.refcount && file.refcount > 0) {
179
- if (!args.force) {
180
- console.error(`File ${fileId} has refcount ${file.refcount} > 0, skipping...`);
181
- return null;
182
- }
183
- }
184
- await ctx.db.delete(fileId);
185
- return fileId;
186
- }));
187
- return deletedFileIds.filter((fileId) => fileId !== null);
188
- },
189
- });
190
- //# sourceMappingURL=files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/component/files.ts"],"names":[],"mappings":"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"}