convex-durable-agents 0.2.1 → 0.2.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/react/agent-chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/react/agent-chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,4BAA4B,EACjC,KAAK,WAAW,EAChB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,CAAC;AAE/G,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,CAAC;AAE9F,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,CAAC;AAgBjH,MAAM,MAAM,mBAAmB,GAAG;IAChC,iCAAiC;IACjC,SAAS,EAAE,WAAW,CAAC;IACvB,iCAAiC;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,kCAAkC;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,oCAAoC;IACpC,YAAY,EAAE,oBAAoB,CAAC;IACnC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,YAAY,EAAE,aAAa,CAAC;IAC5B,sCAAsC;IACtC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,mHAAmH;IACnH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,GAAG;IACtE,mCAAmC;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,sBAAsB;IACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,gDAAgD;IAChD,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAyD7E"}
|
package/dist/react/agent-chat.js
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { useMutation } from "convex/react";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { useThreadMessages, } from "./use-thread-messages";
|
|
4
|
+
function createOptimisticMessageDoc({ prompt, threadId }) {
|
|
5
|
+
const now = Date.now();
|
|
6
|
+
const suffix = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
7
|
+
const id = `optimistic-${suffix}`;
|
|
8
|
+
return {
|
|
9
|
+
_id: id,
|
|
10
|
+
_creationTime: now,
|
|
11
|
+
threadId,
|
|
12
|
+
id,
|
|
13
|
+
role: "user",
|
|
14
|
+
parts: [{ type: "text", text: prompt }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
4
17
|
/**
|
|
5
18
|
* Combined hook for chat functionality with an agent thread.
|
|
6
19
|
*
|
|
@@ -43,7 +56,13 @@ export function useAgentChat(options) {
|
|
|
43
56
|
skip: !!stream,
|
|
44
57
|
});
|
|
45
58
|
// Create mutation functions
|
|
46
|
-
const sendMessageMutation = useMutation(sendMessageRef)
|
|
59
|
+
const sendMessageMutation = useMutation(sendMessageRef).withOptimisticUpdate((localStore, args) => {
|
|
60
|
+
const currentMessages = localStore.getQuery(listMessages, { threadId: args.threadId }) ?? [];
|
|
61
|
+
localStore.setQuery(listMessages, { threadId: args.threadId }, [
|
|
62
|
+
...currentMessages,
|
|
63
|
+
createOptimisticMessageDoc(args),
|
|
64
|
+
]);
|
|
65
|
+
});
|
|
47
66
|
const stopThreadMutation = useMutation(stopThreadRef);
|
|
48
67
|
const resumeThreadMutation = useMutation(resumeThreadRef);
|
|
49
68
|
// Wrap mutations to provide simplified API with threadId pre-bound
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../src/react/agent-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../src/react/agent-chat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/react/agent-chat.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useMutation } from "convex/react";
|
|
2
2
|
import type { FunctionReference } from "convex/server";
|
|
3
3
|
import { useCallback } from "react";
|
|
4
|
+
import type { MessageDoc } from "./types";
|
|
4
5
|
import {
|
|
5
6
|
type MessagesQuery,
|
|
6
7
|
type StreamingMessageUpdatesQuery,
|
|
@@ -15,6 +16,20 @@ type StopThreadMutation = FunctionReference<"mutation", "public", { threadId: st
|
|
|
15
16
|
|
|
16
17
|
type ResumeThreadMutation = FunctionReference<"mutation", "public", { threadId: string; prompt?: string }, null>;
|
|
17
18
|
|
|
19
|
+
function createOptimisticMessageDoc({ prompt, threadId }: { threadId: string; prompt: string }): MessageDoc {
|
|
20
|
+
const now = Date.now();
|
|
21
|
+
const suffix = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
22
|
+
const id = `optimistic-${suffix}`;
|
|
23
|
+
return {
|
|
24
|
+
_id: id,
|
|
25
|
+
_creationTime: now,
|
|
26
|
+
threadId,
|
|
27
|
+
id,
|
|
28
|
+
role: "user",
|
|
29
|
+
parts: [{ type: "text", text: prompt }],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
18
33
|
export type UseAgentChatOptions = {
|
|
19
34
|
/** Query to get thread status */
|
|
20
35
|
getThread: ThreadQuery;
|
|
@@ -96,7 +111,13 @@ export function useAgentChat(options: UseAgentChatOptions): UseAgentChatReturn {
|
|
|
96
111
|
});
|
|
97
112
|
|
|
98
113
|
// Create mutation functions
|
|
99
|
-
const sendMessageMutation = useMutation(sendMessageRef)
|
|
114
|
+
const sendMessageMutation = useMutation(sendMessageRef).withOptimisticUpdate((localStore, args) => {
|
|
115
|
+
const currentMessages = localStore.getQuery(listMessages, { threadId: args.threadId }) ?? [];
|
|
116
|
+
localStore.setQuery(listMessages, { threadId: args.threadId }, [
|
|
117
|
+
...currentMessages,
|
|
118
|
+
createOptimisticMessageDoc(args),
|
|
119
|
+
]);
|
|
120
|
+
});
|
|
100
121
|
const stopThreadMutation = useMutation(stopThreadRef);
|
|
101
122
|
const resumeThreadMutation = useMutation(resumeThreadRef);
|
|
102
123
|
|