@zakstam/codex-local-component 0.8.0 → 0.9.1
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.
- package/LLMS.md +8 -1
- package/README.md +2 -0
- package/dist/component/threads.d.ts +1 -0
- package/dist/component/threads.d.ts.map +1 -1
- package/dist/component/threads.js +2 -0
- package/dist/component/threads.js.map +1 -1
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +42 -0
- package/dist/errors.js.map +1 -0
- package/dist/host/convex-entry.d.ts +2 -1
- package/dist/host/convex-entry.d.ts.map +1 -1
- package/dist/host/convex-entry.js +2 -1
- package/dist/host/convex-entry.js.map +1 -1
- package/dist/host/convexPreset.d.ts +14 -0
- package/dist/host/convexPreset.d.ts.map +1 -1
- package/dist/host/convexPreset.js +8 -1
- package/dist/host/convexPreset.js.map +1 -1
- package/dist/host/convexSlice.d.ts +1 -0
- package/dist/host/convexSlice.d.ts.map +1 -1
- package/dist/host/convexSlice.js +15 -0
- package/dist/host/convexSlice.js.map +1 -1
- package/dist/host/index.d.ts +2 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +2 -1
- package/dist/host/index.js.map +1 -1
- package/dist/host/runtime.d.ts.map +1 -1
- package/dist/host/runtime.js +9 -0
- package/dist/host/runtime.js.map +1 -1
- package/dist/host/surfaceManifest.d.ts +2 -2
- package/dist/host/surfaceManifest.d.ts.map +1 -1
- package/dist/host/surfaceManifest.js +2 -0
- package/dist/host/surfaceManifest.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/events.d.ts.map +1 -1
- package/dist/protocol/events.js +58 -6
- package/dist/protocol/events.js.map +1 -1
- package/dist/react/branchActivity.d.ts +16 -0
- package/dist/react/branchActivity.d.ts.map +1 -0
- package/dist/react/branchActivity.js +70 -0
- package/dist/react/branchActivity.js.map +1 -0
- package/dist/react/dynamicTools.d.ts +34 -0
- package/dist/react/dynamicTools.d.ts.map +1 -0
- package/dist/react/dynamicTools.js +56 -0
- package/dist/react/dynamicTools.js.map +1 -0
- package/dist/react/index.d.ts +16 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +12 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/ingestHealth.d.ts +35 -0
- package/dist/react/ingestHealth.d.ts.map +1 -0
- package/dist/react/ingestHealth.js +102 -0
- package/dist/react/ingestHealth.js.map +1 -0
- package/dist/react/threadActivity.d.ts +35 -0
- package/dist/react/threadActivity.d.ts.map +1 -0
- package/dist/react/threadActivity.js +161 -0
- package/dist/react/threadActivity.js.map +1 -0
- package/dist/react/useCodexAccountAuth.d.ts +43 -0
- package/dist/react/useCodexAccountAuth.d.ts.map +1 -0
- package/dist/react/useCodexAccountAuth.js +59 -0
- package/dist/react/useCodexAccountAuth.js.map +1 -0
- package/dist/react/useCodexBranchActivity.d.ts +7 -0
- package/dist/react/useCodexBranchActivity.d.ts.map +1 -0
- package/dist/react/useCodexBranchActivity.js +9 -0
- package/dist/react/useCodexBranchActivity.js.map +1 -0
- package/dist/react/useCodexConversationController.d.ts +83 -0
- package/dist/react/useCodexConversationController.d.ts.map +1 -0
- package/dist/react/useCodexConversationController.js +152 -0
- package/dist/react/useCodexConversationController.js.map +1 -0
- package/dist/react/useCodexDynamicTools.d.ts +26 -0
- package/dist/react/useCodexDynamicTools.d.ts.map +1 -0
- package/dist/react/useCodexDynamicTools.js +91 -0
- package/dist/react/useCodexDynamicTools.js.map +1 -0
- package/dist/react/useCodexIngestHealth.d.ts +6 -0
- package/dist/react/useCodexIngestHealth.d.ts.map +1 -0
- package/dist/react/useCodexIngestHealth.js +9 -0
- package/dist/react/useCodexIngestHealth.js.map +1 -0
- package/dist/react/useCodexRuntimeBridge.d.ts +28 -0
- package/dist/react/useCodexRuntimeBridge.d.ts.map +1 -0
- package/dist/react/useCodexRuntimeBridge.js +82 -0
- package/dist/react/useCodexRuntimeBridge.js.map +1 -0
- package/dist/react/useCodexThreadActivity.d.ts +6 -0
- package/dist/react/useCodexThreadActivity.d.ts.map +1 -0
- package/dist/react/useCodexThreadActivity.js +9 -0
- package/dist/react/useCodexThreadActivity.js.map +1 -0
- package/dist/react/useCodexThreads.d.ts +30 -0
- package/dist/react/useCodexThreads.d.ts.map +1 -0
- package/dist/react/useCodexThreads.js +65 -0
- package/dist/react/useCodexThreads.js.map +1 -0
- package/dist/react-integration/index.d.ts +101 -0
- package/dist/react-integration/index.d.ts.map +1 -0
- package/dist/react-integration/index.js +62 -0
- package/dist/react-integration/index.js.map +1 -0
- package/docs/CLIENT_AND_REACT_HOOKS.md +63 -0
- package/docs/HOST_PRESET_MATRIX.md +1 -0
- package/docs/OPERATIONS_AND_ERRORS.md +8 -0
- package/package.json +9 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "convex/react";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { deriveCodexDynamicToolCalls, } from "./dynamicTools.js";
|
|
5
|
+
function requestKey(requestId) {
|
|
6
|
+
return `${typeof requestId}:${String(requestId)}`;
|
|
7
|
+
}
|
|
8
|
+
export function useCodexDynamicTools(query, args, options) {
|
|
9
|
+
const queryArgs = (args === "skip" ? ["skip"] : [args]);
|
|
10
|
+
const requests = useQuery(query, ...queryArgs);
|
|
11
|
+
const calls = useMemo(() => deriveCodexDynamicToolCalls(requests ?? []), [requests]);
|
|
12
|
+
const [runningRequestIds, setRunningRequestIds] = useState([]);
|
|
13
|
+
const [lastError, setLastError] = useState(null);
|
|
14
|
+
const handledRequestIdsRef = useRef(new Set());
|
|
15
|
+
const respond = useCallback(async (call, result) => {
|
|
16
|
+
if (!options.respond) {
|
|
17
|
+
throw new Error("Dynamic tool response handler is not configured.");
|
|
18
|
+
}
|
|
19
|
+
await options.respond({
|
|
20
|
+
requestId: call.requestId,
|
|
21
|
+
success: result.success,
|
|
22
|
+
contentItems: result.contentItems,
|
|
23
|
+
});
|
|
24
|
+
handledRequestIdsRef.current.add(requestKey(call.requestId));
|
|
25
|
+
}, [options]);
|
|
26
|
+
const runCall = useCallback(async (call) => {
|
|
27
|
+
const handler = options.handlers?.[call.toolName];
|
|
28
|
+
if (!handler) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const key = requestKey(call.requestId);
|
|
32
|
+
if (handledRequestIdsRef.current.has(key)) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
setRunningRequestIds((current) => (current.includes(key) ? current : [...current, key]));
|
|
36
|
+
setLastError(null);
|
|
37
|
+
try {
|
|
38
|
+
const result = await handler(call);
|
|
39
|
+
await respond(call, result);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
44
|
+
setLastError(message);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
setRunningRequestIds((current) => current.filter((id) => id !== key));
|
|
49
|
+
}
|
|
50
|
+
}, [options.handlers, respond]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if ((options.enabled ?? true) !== true) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if ((options.autoHandle ?? true) !== true) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!options.respond) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (!options.handlers || Object.keys(options.handlers).length === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
void (async () => {
|
|
65
|
+
for (const call of calls) {
|
|
66
|
+
const key = requestKey(call.requestId);
|
|
67
|
+
if (handledRequestIdsRef.current.has(key) || runningRequestIds.includes(key)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const handler = options.handlers?.[call.toolName];
|
|
71
|
+
if (!handler) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
await runCall(call);
|
|
75
|
+
}
|
|
76
|
+
})().catch((error) => {
|
|
77
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
78
|
+
setLastError(message);
|
|
79
|
+
});
|
|
80
|
+
}, [calls, options.autoHandle, options.enabled, options.handlers, runCall, runningRequestIds]);
|
|
81
|
+
return useMemo(() => ({
|
|
82
|
+
requests: requests ?? [],
|
|
83
|
+
calls,
|
|
84
|
+
pendingCount: calls.length,
|
|
85
|
+
runningRequestIds,
|
|
86
|
+
lastError,
|
|
87
|
+
runCall,
|
|
88
|
+
respond,
|
|
89
|
+
}), [calls, lastError, requests, respond, runCall, runningRequestIds]);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=useCodexDynamicTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexDynamicTools.js","sourceRoot":"","sources":["../../src/react/useCodexDynamicTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FunctionArgs } from "convex/server";
|
|
2
|
+
import { type CodexThreadStateQuery } from "./useCodexThreadState.js";
|
|
3
|
+
import { type CodexIngestHealth, type CodexIngestHealthThreadState } from "./ingestHealth.js";
|
|
4
|
+
export type CodexIngestHealthQuery<Args = Record<string, unknown>, Result extends CodexIngestHealthThreadState = CodexIngestHealthThreadState> = CodexThreadStateQuery<Args, Result>;
|
|
5
|
+
export declare function useCodexIngestHealth<Query extends CodexIngestHealthQuery<unknown, CodexIngestHealthThreadState>>(query: Query, args: FunctionArgs<Query> | "skip"): CodexIngestHealth;
|
|
6
|
+
//# sourceMappingURL=useCodexIngestHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexIngestHealth.d.ts","sourceRoot":"","sources":["../../src/react/useCodexIngestHealth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EAClC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,sBAAsB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,SAAS,4BAA4B,GAAG,4BAA4B,IACxE,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAExC,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,CAAC,EAC9G,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,GACjC,iBAAiB,CAGnB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useCodexThreadState } from "./useCodexThreadState.js";
|
|
4
|
+
import { deriveCodexIngestHealth, } from "./ingestHealth.js";
|
|
5
|
+
export function useCodexIngestHealth(query, args) {
|
|
6
|
+
const threadState = useCodexThreadState(query, args);
|
|
7
|
+
return useMemo(() => deriveCodexIngestHealth(threadState), [threadState]);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useCodexIngestHealth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexIngestHealth.js","sourceRoot":"","sources":["../../src/react/useCodexIngestHealth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EACL,uBAAuB,GAGxB,MAAM,mBAAmB,CAAC;AAO3B,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,IAAkC;IAElC,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type CodexRuntimeBridgeState = {
|
|
2
|
+
running: boolean;
|
|
3
|
+
threadId?: string | null;
|
|
4
|
+
turnId?: string | null;
|
|
5
|
+
lastError?: string | null;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
export type CodexRuntimeBridgeControls<StartArgs, SendArgs = string> = {
|
|
9
|
+
start: (args: StartArgs) => Promise<unknown>;
|
|
10
|
+
stop: () => Promise<unknown>;
|
|
11
|
+
getState?: () => Promise<CodexRuntimeBridgeState>;
|
|
12
|
+
sendTurn?: (args: SendArgs) => Promise<unknown>;
|
|
13
|
+
interrupt?: () => Promise<unknown>;
|
|
14
|
+
};
|
|
15
|
+
export declare function useCodexRuntimeBridge<StartArgs, SendArgs = string>(controls: CodexRuntimeBridgeControls<StartArgs, SendArgs>, options?: {
|
|
16
|
+
initialState?: CodexRuntimeBridgeState;
|
|
17
|
+
}): {
|
|
18
|
+
state: CodexRuntimeBridgeState;
|
|
19
|
+
error: string | null;
|
|
20
|
+
busyAction: "start" | "interrupt" | "stop" | "refresh" | "send" | null;
|
|
21
|
+
isBusy: boolean;
|
|
22
|
+
start: (args: StartArgs) => Promise<unknown>;
|
|
23
|
+
stop: () => Promise<unknown>;
|
|
24
|
+
refresh: () => Promise<CodexRuntimeBridgeState>;
|
|
25
|
+
sendTurn: (args: SendArgs) => Promise<unknown>;
|
|
26
|
+
interrupt: () => Promise<unknown>;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=useCodexRuntimeBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexRuntimeBridge.d.ts","sourceRoot":"","sources":["../../src/react/useCodexRuntimeBridge.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,IAAI;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,EAChE,QAAQ,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,EACzD,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACxC;;;;;kBAsCc,SAAS;;;qBAyBT,QAAQ;;EA+BxB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
export function useCodexRuntimeBridge(controls, options) {
|
|
4
|
+
const [state, setState] = useState(options?.initialState ?? { running: false, threadId: null, turnId: null, lastError: null });
|
|
5
|
+
const stateRef = useRef(state);
|
|
6
|
+
const [busyAction, setBusyAction] = useState(null);
|
|
7
|
+
const [error, setError] = useState(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
stateRef.current = state;
|
|
10
|
+
}, [state]);
|
|
11
|
+
const runAction = useCallback(async (action, fn) => {
|
|
12
|
+
setBusyAction(action);
|
|
13
|
+
setError(null);
|
|
14
|
+
try {
|
|
15
|
+
const result = await fn();
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
catch (nextError) {
|
|
19
|
+
const message = nextError instanceof Error ? nextError.message : String(nextError);
|
|
20
|
+
setError(message);
|
|
21
|
+
throw nextError;
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
setBusyAction((current) => (current === action ? null : current));
|
|
25
|
+
}
|
|
26
|
+
}, []);
|
|
27
|
+
const refresh = useCallback(async () => {
|
|
28
|
+
if (!controls.getState) {
|
|
29
|
+
return stateRef.current;
|
|
30
|
+
}
|
|
31
|
+
const next = await runAction("refresh", controls.getState);
|
|
32
|
+
setState(next);
|
|
33
|
+
return next;
|
|
34
|
+
}, [controls.getState, runAction]);
|
|
35
|
+
const start = useCallback(async (args) => {
|
|
36
|
+
const result = await runAction("start", () => controls.start(args));
|
|
37
|
+
if (controls.getState) {
|
|
38
|
+
const next = await controls.getState();
|
|
39
|
+
setState(next);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
setState((current) => ({ ...current, running: true }));
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}, [controls, runAction]);
|
|
46
|
+
const stop = useCallback(async () => {
|
|
47
|
+
const result = await runAction("stop", controls.stop);
|
|
48
|
+
if (controls.getState) {
|
|
49
|
+
const next = await controls.getState();
|
|
50
|
+
setState(next);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setState((current) => ({ ...current, running: false }));
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}, [controls, runAction]);
|
|
57
|
+
const sendTurn = useCallback(async (args) => {
|
|
58
|
+
const sendTurnControl = controls.sendTurn;
|
|
59
|
+
if (!sendTurnControl) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
return runAction("send", () => sendTurnControl(args));
|
|
63
|
+
}, [controls.sendTurn, runAction]);
|
|
64
|
+
const interrupt = useCallback(async () => {
|
|
65
|
+
if (!controls.interrupt) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
return runAction("interrupt", controls.interrupt);
|
|
69
|
+
}, [controls.interrupt, runAction]);
|
|
70
|
+
return useMemo(() => ({
|
|
71
|
+
state,
|
|
72
|
+
error,
|
|
73
|
+
busyAction,
|
|
74
|
+
isBusy: busyAction !== null,
|
|
75
|
+
start,
|
|
76
|
+
stop,
|
|
77
|
+
refresh,
|
|
78
|
+
sendTurn,
|
|
79
|
+
interrupt,
|
|
80
|
+
}), [busyAction, error, interrupt, refresh, sendTurn, start, state, stop]);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=useCodexRuntimeBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexRuntimeBridge.js","sourceRoot":"","sources":["../../src/react/useCodexRuntimeBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FunctionArgs } from "convex/server";
|
|
2
|
+
import { type CodexThreadStateQuery } from "./useCodexThreadState.js";
|
|
3
|
+
import { type CodexThreadActivity, type CodexThreadActivityThreadState } from "./threadActivity.js";
|
|
4
|
+
export type CodexThreadActivityQuery<Args = Record<string, unknown>, Result extends CodexThreadActivityThreadState = CodexThreadActivityThreadState> = CodexThreadStateQuery<Args, Result>;
|
|
5
|
+
export declare function useCodexThreadActivity<Query extends CodexThreadActivityQuery<unknown, CodexThreadActivityThreadState>>(query: Query, args: FunctionArgs<Query> | "skip"): CodexThreadActivity;
|
|
6
|
+
//# sourceMappingURL=useCodexThreadActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexThreadActivity.d.ts","sourceRoot":"","sources":["../../src/react/useCodexThreadActivity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAA6B,KAAK,mBAAmB,EAAE,KAAK,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAE/H,MAAM,MAAM,wBAAwB,CAClC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,SAAS,8BAA8B,GAAG,8BAA8B,IAC5E,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAExC,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,wBAAwB,CAAC,OAAO,EAAE,8BAA8B,CAAC,EACpH,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,GACjC,mBAAmB,CAGrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useCodexThreadState } from "./useCodexThreadState.js";
|
|
4
|
+
import { deriveCodexThreadActivity } from "./threadActivity.js";
|
|
5
|
+
export function useCodexThreadActivity(query, args) {
|
|
6
|
+
const threadState = useCodexThreadState(query, args);
|
|
7
|
+
return useMemo(() => deriveCodexThreadActivity(threadState), [threadState]);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useCodexThreadActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexThreadActivity.js","sourceRoot":"","sources":["../../src/react/useCodexThreadActivity.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAiE,MAAM,qBAAqB,CAAC;AAO/H,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,IAAkC;IAElC,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { FunctionArgs, FunctionReference } from "convex/server";
|
|
2
|
+
export type CodexThreadsListQuery<Args extends Record<string, unknown> = Record<string, unknown>, Result = unknown> = FunctionReference<"query", "public", Args, Result>;
|
|
3
|
+
export type CodexThreadsControls = {
|
|
4
|
+
createThread?: (args?: Record<string, unknown>) => Promise<unknown>;
|
|
5
|
+
resolveThread?: (args: {
|
|
6
|
+
localThreadId: string;
|
|
7
|
+
}) => Promise<unknown>;
|
|
8
|
+
resumeThread?: (args: {
|
|
9
|
+
threadId: string;
|
|
10
|
+
}) => Promise<unknown>;
|
|
11
|
+
};
|
|
12
|
+
export declare function useCodexThreads<Query extends CodexThreadsListQuery<Record<string, unknown>, unknown>>(config: {
|
|
13
|
+
list: {
|
|
14
|
+
query: Query;
|
|
15
|
+
args: FunctionArgs<Query> | "skip";
|
|
16
|
+
};
|
|
17
|
+
controls?: CodexThreadsControls;
|
|
18
|
+
initialSelectedThreadId?: string | null;
|
|
19
|
+
}): {
|
|
20
|
+
threads: Query["_returnType"] | undefined;
|
|
21
|
+
selectedThreadId: string | null;
|
|
22
|
+
setSelectedThreadId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
|
|
23
|
+
busyAction: "resolve" | "create" | "resume" | null;
|
|
24
|
+
isBusy: boolean;
|
|
25
|
+
error: string | null;
|
|
26
|
+
create: (args?: Record<string, unknown>) => Promise<unknown>;
|
|
27
|
+
resolve: (localThreadId: string) => Promise<unknown>;
|
|
28
|
+
resume: (threadId: string) => Promise<unknown>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=useCodexThreads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexThreads.d.ts","sourceRoot":"","sources":["../../src/react/useCodexThreads.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGrE,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,GAAG,OAAO,IACd,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjE,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,SAAS,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EACnG,MAAM,EAAE;IACN,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;;;;;;;oBA6Be,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;6BAWf,MAAM;uBAaX,MAAM;EA0B1B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "convex/react";
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
|
+
export function useCodexThreads(config) {
|
|
5
|
+
const listQueryArgs = config.list.args === "skip"
|
|
6
|
+
? ["skip"]
|
|
7
|
+
: [config.list.args];
|
|
8
|
+
const listArgs = listQueryArgs;
|
|
9
|
+
const listed = useQuery(config.list.query, ...listArgs);
|
|
10
|
+
const [selectedThreadId, setSelectedThreadId] = useState(config.initialSelectedThreadId ?? null);
|
|
11
|
+
const [busyAction, setBusyAction] = useState(null);
|
|
12
|
+
const [error, setError] = useState(null);
|
|
13
|
+
const run = useCallback(async (action, fn) => {
|
|
14
|
+
setBusyAction(action);
|
|
15
|
+
setError(null);
|
|
16
|
+
try {
|
|
17
|
+
return await fn();
|
|
18
|
+
}
|
|
19
|
+
catch (nextError) {
|
|
20
|
+
const message = nextError instanceof Error ? nextError.message : String(nextError);
|
|
21
|
+
setError(message);
|
|
22
|
+
throw nextError;
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
setBusyAction((current) => (current === action ? null : current));
|
|
26
|
+
}
|
|
27
|
+
}, []);
|
|
28
|
+
const create = useCallback(async (args) => {
|
|
29
|
+
const createThread = config.controls?.createThread;
|
|
30
|
+
if (!createThread) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return run("create", () => createThread(args));
|
|
34
|
+
}, [config.controls, run]);
|
|
35
|
+
const resolve = useCallback(async (localThreadId) => {
|
|
36
|
+
const resolveThread = config.controls?.resolveThread;
|
|
37
|
+
if (!resolveThread) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const result = await run("resolve", () => resolveThread({ localThreadId }));
|
|
41
|
+
setSelectedThreadId(localThreadId);
|
|
42
|
+
return result;
|
|
43
|
+
}, [config.controls, run]);
|
|
44
|
+
const resume = useCallback(async (threadId) => {
|
|
45
|
+
const resumeThread = config.controls?.resumeThread;
|
|
46
|
+
if (!resumeThread) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const result = await run("resume", () => resumeThread({ threadId }));
|
|
50
|
+
setSelectedThreadId(threadId);
|
|
51
|
+
return result;
|
|
52
|
+
}, [config.controls, run]);
|
|
53
|
+
return useMemo(() => ({
|
|
54
|
+
threads: listed,
|
|
55
|
+
selectedThreadId,
|
|
56
|
+
setSelectedThreadId,
|
|
57
|
+
busyAction,
|
|
58
|
+
isBusy: busyAction !== null,
|
|
59
|
+
error,
|
|
60
|
+
create,
|
|
61
|
+
resolve,
|
|
62
|
+
resume,
|
|
63
|
+
}), [busyAction, create, error, listed, resolve, resume, selectedThreadId]);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=useCodexThreads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexThreads.js","sourceRoot":"","sources":["../../src/react/useCodexThreads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { CodexDynamicToolHandler, CodexDynamicToolsQuery, CodexDynamicToolsRespond } from "../react/useCodexDynamicTools.js";
|
|
2
|
+
import type { CodexMessagesQuery } from "../react/types.js";
|
|
3
|
+
import type { CodexThreadActivityQuery } from "../react/useCodexThreadActivity.js";
|
|
4
|
+
import type { CodexThreadActivity, CodexThreadActivityThreadState } from "../react/threadActivity.js";
|
|
5
|
+
import type { CodexBranchActivityOptions } from "../react/branchActivity.js";
|
|
6
|
+
import type { CodexConversationApprovalDecision, CodexConversationApprovalItem } from "../react/useCodexConversationController.js";
|
|
7
|
+
export type CodexThreadScopeArgs<Actor extends Record<string, unknown>> = {
|
|
8
|
+
actor: Actor;
|
|
9
|
+
threadId: string;
|
|
10
|
+
};
|
|
11
|
+
export type CodexThreadTurnScopeArgs<Actor extends Record<string, unknown>> = CodexThreadScopeArgs<Actor> & {
|
|
12
|
+
turnId: string;
|
|
13
|
+
};
|
|
14
|
+
export type CodexReactHostHooks<Actor extends Record<string, unknown>> = {
|
|
15
|
+
listThreadMessagesForHooks: CodexMessagesQuery<{
|
|
16
|
+
actor: Actor;
|
|
17
|
+
}>;
|
|
18
|
+
threadSnapshotSafe: CodexThreadActivityQuery<{
|
|
19
|
+
actor: Actor;
|
|
20
|
+
}, CodexThreadActivityThreadState>;
|
|
21
|
+
listPendingServerRequestsForHooks?: CodexDynamicToolsQuery<{
|
|
22
|
+
actor: Actor;
|
|
23
|
+
threadId: string;
|
|
24
|
+
limit?: number;
|
|
25
|
+
}>;
|
|
26
|
+
};
|
|
27
|
+
export type CodexReactConversationControllerOptions = {
|
|
28
|
+
initialNumItems: number;
|
|
29
|
+
stream?: boolean;
|
|
30
|
+
branchOptions?: CodexBranchActivityOptions;
|
|
31
|
+
composer?: {
|
|
32
|
+
initialValue?: string;
|
|
33
|
+
onSend: (text: string) => Promise<unknown>;
|
|
34
|
+
};
|
|
35
|
+
approvals?: {
|
|
36
|
+
onResolve: (approval: CodexConversationApprovalItem, decision: CodexConversationApprovalDecision) => Promise<unknown>;
|
|
37
|
+
};
|
|
38
|
+
dynamicTools?: {
|
|
39
|
+
respond?: CodexDynamicToolsRespond;
|
|
40
|
+
handlers?: Record<string, CodexDynamicToolHandler>;
|
|
41
|
+
autoHandle?: boolean;
|
|
42
|
+
enabled?: boolean;
|
|
43
|
+
limit?: number;
|
|
44
|
+
};
|
|
45
|
+
interrupt?: {
|
|
46
|
+
onInterrupt: (activity: CodexThreadActivity) => Promise<unknown>;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export declare function codexThreadScopeArgs<Actor extends Record<string, unknown>>(actor: Actor, threadId: string | null | undefined): CodexThreadScopeArgs<Actor> | "skip";
|
|
50
|
+
export declare function codexThreadTurnScopeArgs<Actor extends Record<string, unknown>>(actor: Actor, threadId: string | null | undefined, turnId: string | null | undefined): CodexThreadTurnScopeArgs<Actor> | "skip";
|
|
51
|
+
export declare function createCodexReactConvexAdapter<Actor extends Record<string, unknown>>(config: {
|
|
52
|
+
actor: Actor;
|
|
53
|
+
hooks: CodexReactHostHooks<Actor>;
|
|
54
|
+
}): {
|
|
55
|
+
threadArgs: (threadId: string | null | undefined) => "skip" | CodexThreadScopeArgs<Actor>;
|
|
56
|
+
threadTurnArgs: (threadId: string | null | undefined, turnId: string | null | undefined) => "skip" | CodexThreadTurnScopeArgs<Actor>;
|
|
57
|
+
useThreadMessages: (threadId: string | null | undefined, options: {
|
|
58
|
+
initialNumItems: number;
|
|
59
|
+
stream?: boolean;
|
|
60
|
+
}) => import("convex/react").UsePaginatedQueryResult<import("../index.js").CodexUIMessage>;
|
|
61
|
+
useThreadActivity: (threadId: string | null | undefined) => CodexThreadActivity;
|
|
62
|
+
useBranchActivity: (threadId: string | null | undefined, options?: CodexBranchActivityOptions) => CodexThreadActivity;
|
|
63
|
+
useIngestHealth: (threadId: string | null | undefined) => import("../react/ingestHealth.js").CodexIngestHealth;
|
|
64
|
+
useConversationController: (threadId: string | null | undefined, options: CodexReactConversationControllerOptions) => {
|
|
65
|
+
messages: import("convex/react").UsePaginatedQueryResult<import("../index.js").CodexUIMessage>;
|
|
66
|
+
activity: CodexThreadActivity;
|
|
67
|
+
ingestHealth: import("../react/ingestHealth.js").CodexIngestHealth;
|
|
68
|
+
branchActivity: CodexThreadActivity;
|
|
69
|
+
approvals: {
|
|
70
|
+
pending: CodexConversationApprovalItem[];
|
|
71
|
+
pendingCount: number;
|
|
72
|
+
approvingItemId: string | null;
|
|
73
|
+
error: string | null;
|
|
74
|
+
canResolve: boolean;
|
|
75
|
+
resolve: (approval: CodexConversationApprovalItem, decision: CodexConversationApprovalDecision) => Promise<void>;
|
|
76
|
+
accept: (approval: CodexConversationApprovalItem) => Promise<void>;
|
|
77
|
+
decline: (approval: CodexConversationApprovalItem) => Promise<void>;
|
|
78
|
+
};
|
|
79
|
+
dynamicTools: {
|
|
80
|
+
requests: never[] | import("../react/dynamicTools.js").CodexDynamicToolServerRequest[];
|
|
81
|
+
calls: import("../react/dynamicTools.js").CodexDynamicToolCall[];
|
|
82
|
+
pendingCount: number;
|
|
83
|
+
runningRequestIds: string[];
|
|
84
|
+
lastError: string | null;
|
|
85
|
+
runCall: (call: import("../react/dynamicTools.js").CodexDynamicToolCall) => Promise<boolean>;
|
|
86
|
+
respond: (call: import("../react/dynamicTools.js").CodexDynamicToolCall, result: import("../react/dynamicTools.js").CodexDynamicToolResponse) => Promise<void>;
|
|
87
|
+
};
|
|
88
|
+
composer: {
|
|
89
|
+
value: string;
|
|
90
|
+
setValue: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
91
|
+
error: string | null;
|
|
92
|
+
isSending: boolean;
|
|
93
|
+
canSend: boolean;
|
|
94
|
+
send: (overrideText?: string) => Promise<void>;
|
|
95
|
+
};
|
|
96
|
+
interrupt: () => Promise<void>;
|
|
97
|
+
canInterrupt: boolean;
|
|
98
|
+
isInterrupting: boolean;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react-integration/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCodexMessages } from "../react/useCodexMessages.js";
|
|
3
|
+
import { useCodexBranchActivity } from "../react/useCodexBranchActivity.js";
|
|
4
|
+
import { useCodexConversationController } from "../react/useCodexConversationController.js";
|
|
5
|
+
import { useCodexIngestHealth } from "../react/useCodexIngestHealth.js";
|
|
6
|
+
import { useCodexThreadActivity } from "../react/useCodexThreadActivity.js";
|
|
7
|
+
export function codexThreadScopeArgs(actor, threadId) {
|
|
8
|
+
if (!threadId) {
|
|
9
|
+
return "skip";
|
|
10
|
+
}
|
|
11
|
+
return { actor, threadId };
|
|
12
|
+
}
|
|
13
|
+
export function codexThreadTurnScopeArgs(actor, threadId, turnId) {
|
|
14
|
+
if (!threadId || !turnId) {
|
|
15
|
+
return "skip";
|
|
16
|
+
}
|
|
17
|
+
return { actor, threadId, turnId };
|
|
18
|
+
}
|
|
19
|
+
export function createCodexReactConvexAdapter(config) {
|
|
20
|
+
return {
|
|
21
|
+
threadArgs: (threadId) => codexThreadScopeArgs(config.actor, threadId),
|
|
22
|
+
threadTurnArgs: (threadId, turnId) => codexThreadTurnScopeArgs(config.actor, threadId, turnId),
|
|
23
|
+
useThreadMessages: (threadId, options) => {
|
|
24
|
+
const args = codexThreadScopeArgs(config.actor, threadId);
|
|
25
|
+
return useCodexMessages(config.hooks.listThreadMessagesForHooks, args, options);
|
|
26
|
+
},
|
|
27
|
+
useThreadActivity: (threadId) => useCodexThreadActivity(config.hooks.threadSnapshotSafe, codexThreadScopeArgs(config.actor, threadId)),
|
|
28
|
+
useBranchActivity: (threadId, options) => useCodexBranchActivity(config.hooks.threadSnapshotSafe, codexThreadScopeArgs(config.actor, threadId), options),
|
|
29
|
+
useIngestHealth: (threadId) => useCodexIngestHealth(config.hooks.threadSnapshotSafe, codexThreadScopeArgs(config.actor, threadId)),
|
|
30
|
+
useConversationController: (threadId, options) => useCodexConversationController({
|
|
31
|
+
messages: {
|
|
32
|
+
query: config.hooks.listThreadMessagesForHooks,
|
|
33
|
+
args: codexThreadScopeArgs(config.actor, threadId),
|
|
34
|
+
initialNumItems: options.initialNumItems,
|
|
35
|
+
...(options.stream !== undefined ? { stream: options.stream } : {}),
|
|
36
|
+
},
|
|
37
|
+
threadState: {
|
|
38
|
+
query: config.hooks.threadSnapshotSafe,
|
|
39
|
+
args: codexThreadScopeArgs(config.actor, threadId),
|
|
40
|
+
...(options.branchOptions !== undefined ? { branchOptions: options.branchOptions } : {}),
|
|
41
|
+
},
|
|
42
|
+
...(options.approvals !== undefined ? { approvals: options.approvals } : {}),
|
|
43
|
+
...(options.dynamicTools !== undefined && config.hooks.listPendingServerRequestsForHooks !== undefined
|
|
44
|
+
? {
|
|
45
|
+
dynamicTools: {
|
|
46
|
+
query: config.hooks.listPendingServerRequestsForHooks,
|
|
47
|
+
args: threadId
|
|
48
|
+
? { actor: config.actor, threadId, ...(options.dynamicTools.limit !== undefined ? { limit: options.dynamicTools.limit } : {}) }
|
|
49
|
+
: "skip",
|
|
50
|
+
...(options.dynamicTools.respond !== undefined ? { respond: options.dynamicTools.respond } : {}),
|
|
51
|
+
...(options.dynamicTools.handlers !== undefined ? { handlers: options.dynamicTools.handlers } : {}),
|
|
52
|
+
...(options.dynamicTools.autoHandle !== undefined ? { autoHandle: options.dynamicTools.autoHandle } : {}),
|
|
53
|
+
...(options.dynamicTools.enabled !== undefined ? { enabled: options.dynamicTools.enabled } : {}),
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
: {}),
|
|
57
|
+
...(options.composer !== undefined ? { composer: options.composer } : {}),
|
|
58
|
+
...(options.interrupt !== undefined ? { interrupt: options.interrupt } : {}),
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react-integration/index.ts"],"names":[],"mappings":"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"}
|