@zakstam/codex-local-component 0.7.1 → 0.9.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.
- package/LLMS.md +53 -6
- package/README.md +2 -0
- package/dist/component/ingest/applyTurns.js +2 -2
- package/dist/component/ingest/applyTurns.js.map +1 -1
- package/dist/component/pagination.d.ts +4 -0
- package/dist/component/pagination.d.ts.map +1 -1
- package/dist/component/pagination.js +11 -2
- package/dist/component/pagination.js.map +1 -1
- package/dist/component/serverRequests.d.ts.map +1 -1
- package/dist/component/serverRequests.js +9 -7
- package/dist/component/serverRequests.js.map +1 -1
- 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 +3 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +3 -1
- package/dist/host/index.js.map +1 -1
- package/dist/host/ingestRecovery.d.ts +5 -0
- package/dist/host/ingestRecovery.d.ts.map +1 -0
- package/dist/host/ingestRecovery.js +4 -0
- package/dist/host/ingestRecovery.js.map +1 -0
- package/dist/host/runtime.d.ts +1 -1
- package/dist/host/runtime.d.ts.map +1 -1
- package/dist/host/runtime.js +185 -149
- 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/mapping.d.ts.map +1 -1
- package/dist/mapping.js +4 -1
- package/dist/mapping.js.map +1 -1
- package/dist/protocol/events.d.ts +6 -2
- package/dist/protocol/events.d.ts.map +1 -1
- package/dist/protocol/events.js +34 -12
- 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 +148 -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 +78 -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 +19 -0
- package/package.json +11 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type CodexIngestHealthStatus = "unknown" | "missing_thread" | "healthy" | "degraded";
|
|
2
|
+
export type CodexIngestHealthIssue = "aborted_streams" | "orphan_streaming_state" | "dispatch_without_stream" | "streams_without_messages" | "pending_approvals";
|
|
3
|
+
export type CodexIngestHealth = {
|
|
4
|
+
status: CodexIngestHealthStatus;
|
|
5
|
+
issues: CodexIngestHealthIssue[];
|
|
6
|
+
streamCount: number;
|
|
7
|
+
activeStreamCount: number;
|
|
8
|
+
finishedStreamCount: number;
|
|
9
|
+
abortedStreamCount: number;
|
|
10
|
+
latestStreamCursor: number;
|
|
11
|
+
recentMessageCount: number;
|
|
12
|
+
pendingApprovalCount: number;
|
|
13
|
+
inFlightDispatchCount: number;
|
|
14
|
+
lastMessageAt?: number;
|
|
15
|
+
lastTurnStartedAt?: number;
|
|
16
|
+
};
|
|
17
|
+
export type CodexIngestHealthThreadState = {
|
|
18
|
+
streamStats?: Array<{
|
|
19
|
+
state?: "streaming" | "finished" | "aborted" | string;
|
|
20
|
+
latestCursor?: number;
|
|
21
|
+
}> | null;
|
|
22
|
+
recentMessages?: Array<{
|
|
23
|
+
status?: "streaming" | "completed" | "failed" | "interrupted" | string;
|
|
24
|
+
createdAt?: number;
|
|
25
|
+
}> | null;
|
|
26
|
+
pendingApprovals?: unknown[] | null;
|
|
27
|
+
dispatches?: Array<{
|
|
28
|
+
status?: "queued" | "claimed" | "started" | "completed" | "failed" | "cancelled" | string;
|
|
29
|
+
}> | null;
|
|
30
|
+
turns?: Array<{
|
|
31
|
+
startedAt?: number;
|
|
32
|
+
}> | null;
|
|
33
|
+
};
|
|
34
|
+
export declare function deriveCodexIngestHealth(state: CodexIngestHealthThreadState | null | undefined): CodexIngestHealth;
|
|
35
|
+
//# sourceMappingURL=ingestHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingestHealth.d.ts","sourceRoot":"","sources":["../../src/react/ingestHealth.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAE5F,MAAM,MAAM,sBAAsB,GAC9B,iBAAiB,GACjB,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;QACtD,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,GAAG,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;QACvE,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,GAAG,IAAI,CAAC;IACV,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;KAC3F,CAAC,GAAG,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,GAAG,IAAI,CAAC;CACX,CAAC;AAwBF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACrD,iBAAiB,CAwFnB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const DEGRADING_ISSUES = new Set([
|
|
3
|
+
"aborted_streams",
|
|
4
|
+
"orphan_streaming_state",
|
|
5
|
+
"dispatch_without_stream",
|
|
6
|
+
"streams_without_messages",
|
|
7
|
+
]);
|
|
8
|
+
const IN_FLIGHT_DISPATCH_STATUSES = new Set(["queued", "claimed", "started"]);
|
|
9
|
+
function latestNumber(values) {
|
|
10
|
+
let latest;
|
|
11
|
+
for (const value of values) {
|
|
12
|
+
if (typeof value !== "number") {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (latest === undefined || value > latest) {
|
|
16
|
+
latest = value;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return latest;
|
|
20
|
+
}
|
|
21
|
+
export function deriveCodexIngestHealth(state) {
|
|
22
|
+
if (state === undefined) {
|
|
23
|
+
return {
|
|
24
|
+
status: "unknown",
|
|
25
|
+
issues: [],
|
|
26
|
+
streamCount: 0,
|
|
27
|
+
activeStreamCount: 0,
|
|
28
|
+
finishedStreamCount: 0,
|
|
29
|
+
abortedStreamCount: 0,
|
|
30
|
+
latestStreamCursor: 0,
|
|
31
|
+
recentMessageCount: 0,
|
|
32
|
+
pendingApprovalCount: 0,
|
|
33
|
+
inFlightDispatchCount: 0,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (state === null) {
|
|
37
|
+
return {
|
|
38
|
+
status: "missing_thread",
|
|
39
|
+
issues: [],
|
|
40
|
+
streamCount: 0,
|
|
41
|
+
activeStreamCount: 0,
|
|
42
|
+
finishedStreamCount: 0,
|
|
43
|
+
abortedStreamCount: 0,
|
|
44
|
+
latestStreamCursor: 0,
|
|
45
|
+
recentMessageCount: 0,
|
|
46
|
+
pendingApprovalCount: 0,
|
|
47
|
+
inFlightDispatchCount: 0,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const streamStats = state.streamStats ?? [];
|
|
51
|
+
const messages = state.recentMessages ?? [];
|
|
52
|
+
const pendingApprovals = state.pendingApprovals ?? [];
|
|
53
|
+
const dispatches = state.dispatches ?? [];
|
|
54
|
+
const turns = state.turns ?? [];
|
|
55
|
+
const activeStreamCount = streamStats.filter((stream) => stream.state === "streaming").length;
|
|
56
|
+
const finishedStreamCount = streamStats.filter((stream) => stream.state === "finished").length;
|
|
57
|
+
const abortedStreamCount = streamStats.filter((stream) => stream.state === "aborted").length;
|
|
58
|
+
const latestStreamCursor = streamStats.reduce((latest, stream) => {
|
|
59
|
+
const cursor = typeof stream.latestCursor === "number" ? stream.latestCursor : 0;
|
|
60
|
+
return Math.max(latest, cursor);
|
|
61
|
+
}, 0);
|
|
62
|
+
const hasStreamingMessage = messages.some((message) => message.status === "streaming");
|
|
63
|
+
const inFlightDispatchCount = dispatches.filter((dispatch) => typeof dispatch.status === "string" && IN_FLIGHT_DISPATCH_STATUSES.has(dispatch.status)).length;
|
|
64
|
+
const issues = [];
|
|
65
|
+
if (abortedStreamCount > 0) {
|
|
66
|
+
issues.push("aborted_streams");
|
|
67
|
+
}
|
|
68
|
+
if (activeStreamCount > 0 && !hasStreamingMessage && inFlightDispatchCount === 0) {
|
|
69
|
+
issues.push("orphan_streaming_state");
|
|
70
|
+
}
|
|
71
|
+
if (inFlightDispatchCount > 0 && activeStreamCount === 0 && !hasStreamingMessage) {
|
|
72
|
+
issues.push("dispatch_without_stream");
|
|
73
|
+
}
|
|
74
|
+
if (streamStats.length > 0 && messages.length === 0) {
|
|
75
|
+
issues.push("streams_without_messages");
|
|
76
|
+
}
|
|
77
|
+
if (pendingApprovals.length > 0) {
|
|
78
|
+
issues.push("pending_approvals");
|
|
79
|
+
}
|
|
80
|
+
const status = issues.some((issue) => DEGRADING_ISSUES.has(issue))
|
|
81
|
+
? "degraded"
|
|
82
|
+
: "healthy";
|
|
83
|
+
return {
|
|
84
|
+
status,
|
|
85
|
+
issues,
|
|
86
|
+
streamCount: streamStats.length,
|
|
87
|
+
activeStreamCount,
|
|
88
|
+
finishedStreamCount,
|
|
89
|
+
abortedStreamCount,
|
|
90
|
+
latestStreamCursor,
|
|
91
|
+
recentMessageCount: messages.length,
|
|
92
|
+
pendingApprovalCount: pendingApprovals.length,
|
|
93
|
+
inFlightDispatchCount,
|
|
94
|
+
...(latestNumber(messages.map((message) => message.createdAt)) !== undefined
|
|
95
|
+
? { lastMessageAt: latestNumber(messages.map((message) => message.createdAt)) }
|
|
96
|
+
: {}),
|
|
97
|
+
...(latestNumber(turns.map((turn) => turn.startedAt)) !== undefined
|
|
98
|
+
? { lastTurnStartedAt: latestNumber(turns.map((turn) => turn.startedAt)) }
|
|
99
|
+
: {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=ingestHealth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingestHealth.js","sourceRoot":"","sources":["../../src/react/ingestHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type CodexThreadActivityPhase = "idle" | "streaming" | "awaiting_approval" | "failed" | "interrupted";
|
|
2
|
+
export type CodexThreadActivity = {
|
|
3
|
+
phase: CodexThreadActivityPhase;
|
|
4
|
+
activeTurnId?: string;
|
|
5
|
+
activeMessageId?: string;
|
|
6
|
+
};
|
|
7
|
+
export type CodexThreadActivityMessageLike = {
|
|
8
|
+
messageId?: string;
|
|
9
|
+
turnId?: string;
|
|
10
|
+
status?: "streaming" | "completed" | "failed" | "interrupted" | string;
|
|
11
|
+
createdAt?: number;
|
|
12
|
+
};
|
|
13
|
+
export type CodexThreadActivityDispatchLike = {
|
|
14
|
+
turnId?: string;
|
|
15
|
+
status?: "queued" | "claimed" | "started" | "completed" | "failed" | "cancelled" | string;
|
|
16
|
+
updatedAt?: number;
|
|
17
|
+
createdAt?: number;
|
|
18
|
+
};
|
|
19
|
+
export type CodexThreadActivityStreamStatLike = {
|
|
20
|
+
state?: "streaming" | "finished" | "aborted" | string;
|
|
21
|
+
};
|
|
22
|
+
export type CodexThreadActivityTurnLike = {
|
|
23
|
+
turnId?: string;
|
|
24
|
+
status?: string;
|
|
25
|
+
startedAt?: number;
|
|
26
|
+
};
|
|
27
|
+
export type CodexThreadActivityThreadState = {
|
|
28
|
+
pendingApprovals?: unknown[] | null;
|
|
29
|
+
recentMessages?: CodexThreadActivityMessageLike[] | null;
|
|
30
|
+
dispatches?: CodexThreadActivityDispatchLike[] | null;
|
|
31
|
+
streamStats?: CodexThreadActivityStreamStatLike[] | null;
|
|
32
|
+
turns?: CodexThreadActivityTurnLike[] | null;
|
|
33
|
+
};
|
|
34
|
+
export declare function deriveCodexThreadActivity(state: CodexThreadActivityThreadState | null | undefined): CodexThreadActivity;
|
|
35
|
+
//# sourceMappingURL=threadActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadActivity.d.ts","sourceRoot":"","sources":["../../src/react/threadActivity.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,wBAAwB,GAChC,MAAM,GACN,WAAW,GACX,mBAAmB,GACnB,QAAQ,GACR,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,wBAAwB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,8BAA8B,EAAE,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,EAAE,+BAA+B,EAAE,GAAG,IAAI,CAAC;IACtD,WAAW,CAAC,EAAE,iCAAiC,EAAE,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,EAAE,2BAA2B,EAAE,GAAG,IAAI,CAAC;CAC9C,CAAC;AAwGF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GAAG,IAAI,GAAG,SAAS,GACvD,mBAAmB,CAgFrB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const IN_FLIGHT_DISPATCH_STATUSES = new Set(["queued", "claimed", "started"]);
|
|
3
|
+
const IN_FLIGHT_TURN_STATUSES = new Set(["queued", "inProgress", "started", "streaming"]);
|
|
4
|
+
const FAILED_TURN_STATUSES = new Set(["failed"]);
|
|
5
|
+
const INTERRUPTED_TURN_STATUSES = new Set(["interrupted", "cancelled"]);
|
|
6
|
+
function candidateTimestamp(input) {
|
|
7
|
+
return typeof input === "number" ? input : 0;
|
|
8
|
+
}
|
|
9
|
+
function pickLatest(candidates) {
|
|
10
|
+
let latest = null;
|
|
11
|
+
for (const candidate of candidates) {
|
|
12
|
+
if (!candidate) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (!latest || candidate.timestamp > latest.timestamp) {
|
|
16
|
+
latest = candidate;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return latest;
|
|
20
|
+
}
|
|
21
|
+
function latestMessageByStatus(messages, status) {
|
|
22
|
+
let latest = null;
|
|
23
|
+
for (const message of messages) {
|
|
24
|
+
if (message.status !== status) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const candidate = {
|
|
28
|
+
timestamp: candidateTimestamp(message.createdAt),
|
|
29
|
+
...(message.turnId !== undefined ? { activeTurnId: message.turnId } : {}),
|
|
30
|
+
...(message.messageId !== undefined ? { activeMessageId: message.messageId } : {}),
|
|
31
|
+
};
|
|
32
|
+
if (!latest || candidate.timestamp > latest.timestamp) {
|
|
33
|
+
latest = candidate;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return latest;
|
|
37
|
+
}
|
|
38
|
+
function latestDispatchByStatus(dispatches, predicate) {
|
|
39
|
+
let latest = null;
|
|
40
|
+
for (const dispatch of dispatches) {
|
|
41
|
+
if (typeof dispatch.status !== "string" || !predicate(dispatch.status)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const candidate = {
|
|
45
|
+
timestamp: candidateTimestamp(dispatch.updatedAt ?? dispatch.createdAt),
|
|
46
|
+
...(dispatch.turnId !== undefined ? { activeTurnId: dispatch.turnId } : {}),
|
|
47
|
+
};
|
|
48
|
+
if (!latest || candidate.timestamp > latest.timestamp) {
|
|
49
|
+
latest = candidate;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return latest;
|
|
53
|
+
}
|
|
54
|
+
function latestTurnByStatus(turns, predicate) {
|
|
55
|
+
let latest = null;
|
|
56
|
+
for (const turn of turns) {
|
|
57
|
+
if (typeof turn.status !== "string" || !predicate(turn.status)) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const candidate = {
|
|
61
|
+
timestamp: candidateTimestamp(turn.startedAt),
|
|
62
|
+
...(turn.turnId !== undefined ? { activeTurnId: turn.turnId } : {}),
|
|
63
|
+
};
|
|
64
|
+
if (!latest || candidate.timestamp > latest.timestamp) {
|
|
65
|
+
latest = candidate;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return latest;
|
|
69
|
+
}
|
|
70
|
+
function activeFromInFlightState(input) {
|
|
71
|
+
return pickLatest([
|
|
72
|
+
latestMessageByStatus(input.messages, "streaming"),
|
|
73
|
+
latestDispatchByStatus(input.dispatches, (status) => IN_FLIGHT_DISPATCH_STATUSES.has(status)),
|
|
74
|
+
latestTurnByStatus(input.turns, (status) => IN_FLIGHT_TURN_STATUSES.has(status)),
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
export function deriveCodexThreadActivity(state) {
|
|
78
|
+
const messages = state?.recentMessages ?? [];
|
|
79
|
+
const dispatches = state?.dispatches ?? [];
|
|
80
|
+
const turns = state?.turns ?? [];
|
|
81
|
+
const pendingApprovals = state?.pendingApprovals ?? [];
|
|
82
|
+
const streamStats = state?.streamStats ?? [];
|
|
83
|
+
if (pendingApprovals.length > 0) {
|
|
84
|
+
const active = activeFromInFlightState({ messages, dispatches, turns });
|
|
85
|
+
return {
|
|
86
|
+
phase: "awaiting_approval",
|
|
87
|
+
...(active?.activeTurnId !== undefined ? { activeTurnId: active.activeTurnId } : {}),
|
|
88
|
+
...(active?.activeMessageId !== undefined ? { activeMessageId: active.activeMessageId } : {}),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const activeStreamingMessage = latestMessageByStatus(messages, "streaming");
|
|
92
|
+
if (activeStreamingMessage) {
|
|
93
|
+
return {
|
|
94
|
+
phase: "streaming",
|
|
95
|
+
...(activeStreamingMessage.activeTurnId !== undefined
|
|
96
|
+
? { activeTurnId: activeStreamingMessage.activeTurnId }
|
|
97
|
+
: {}),
|
|
98
|
+
...(activeStreamingMessage.activeMessageId !== undefined
|
|
99
|
+
? { activeMessageId: activeStreamingMessage.activeMessageId }
|
|
100
|
+
: {}),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const hasStreamingStat = streamStats.some((stat) => stat.state === "streaming");
|
|
104
|
+
if (hasStreamingStat) {
|
|
105
|
+
const inFlight = activeFromInFlightState({ messages, dispatches, turns });
|
|
106
|
+
return {
|
|
107
|
+
phase: "streaming",
|
|
108
|
+
...(inFlight?.activeTurnId !== undefined ? { activeTurnId: inFlight.activeTurnId } : {}),
|
|
109
|
+
...(inFlight?.activeMessageId !== undefined ? { activeMessageId: inFlight.activeMessageId } : {}),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const inFlightDispatch = latestDispatchByStatus(dispatches, (status) => IN_FLIGHT_DISPATCH_STATUSES.has(status));
|
|
113
|
+
if (inFlightDispatch) {
|
|
114
|
+
return {
|
|
115
|
+
phase: "streaming",
|
|
116
|
+
...(inFlightDispatch.activeTurnId !== undefined ? { activeTurnId: inFlightDispatch.activeTurnId } : {}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const inFlightTurn = latestTurnByStatus(turns, (status) => IN_FLIGHT_TURN_STATUSES.has(status));
|
|
120
|
+
if (inFlightTurn) {
|
|
121
|
+
return {
|
|
122
|
+
phase: "streaming",
|
|
123
|
+
...(inFlightTurn.activeTurnId !== undefined ? { activeTurnId: inFlightTurn.activeTurnId } : {}),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const failed = pickLatest([
|
|
127
|
+
latestMessageByStatus(messages, "failed"),
|
|
128
|
+
latestDispatchByStatus(dispatches, (status) => status === "failed"),
|
|
129
|
+
latestTurnByStatus(turns, (status) => FAILED_TURN_STATUSES.has(status)),
|
|
130
|
+
]);
|
|
131
|
+
const interrupted = pickLatest([
|
|
132
|
+
latestMessageByStatus(messages, "interrupted"),
|
|
133
|
+
latestTurnByStatus(turns, (status) => INTERRUPTED_TURN_STATUSES.has(status)),
|
|
134
|
+
]);
|
|
135
|
+
const terminal = pickLatest([
|
|
136
|
+
failed ? { ...failed, phase: "failed" } : null,
|
|
137
|
+
interrupted ? { ...interrupted, phase: "interrupted" } : null,
|
|
138
|
+
]);
|
|
139
|
+
if (terminal?.phase) {
|
|
140
|
+
return {
|
|
141
|
+
phase: terminal.phase,
|
|
142
|
+
...(terminal.activeTurnId !== undefined ? { activeTurnId: terminal.activeTurnId } : {}),
|
|
143
|
+
...(terminal.activeMessageId !== undefined ? { activeMessageId: terminal.activeMessageId } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return { phase: "idle" };
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=threadActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadActivity.js","sourceRoot":"","sources":["../../src/react/threadActivity.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAsDb,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9E,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1F,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAExE,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,UAAmC;IACrD,IAAI,MAAM,GAAqB,IAAI,CAAC;IACpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAA0C,EAC1C,MAAgD;IAEhD,IAAI,MAAM,GAAqB,IAAI,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAc;YAC3B,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC;YAChD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAA6C,EAC7C,SAAsC;IAEtC,IAAI,MAAM,GAAqB,IAAI,CAAC;IACpC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAc;YAC3B,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;YACvE,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAoC,EACpC,SAAsC;IAEtC,IAAI,MAAM,GAAqB,IAAI,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAc;YAC3B,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAIhC;IACC,OAAO,UAAU,CAAC;QAChB,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC;QAClD,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7F,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACjF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAwD;IAExD,MAAM,QAAQ,GAAG,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;IAE7C,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO;YACL,KAAK,EAAE,mBAAmB;YAC1B,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9F,CAAC;IACJ,CAAC;IAED,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5E,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,GAAG,CAAC,sBAAsB,CAAC,YAAY,KAAK,SAAS;gBACnD,CAAC,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAC,YAAY,EAAE;gBACvD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,sBAAsB,CAAC,eAAe,KAAK,SAAS;gBACtD,CAAC,CAAC,EAAE,eAAe,EAAE,sBAAsB,CAAC,eAAe,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAChF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClG,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CACrE,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CACxC,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,GAAG,CAAC,gBAAgB,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxG,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,GAAG,CAAC,YAAY,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACzC,sBAAsB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC;QACnE,kBAAkB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACxE,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,UAAU,CAAC;QAC7B,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC9C,kBAAkB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC7E,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,UAAU,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,QAAiB,EAAE,CAAC,CAAC,CAAC,IAAI;QACvD,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,aAAsB,EAAE,CAAC,CAAC,CAAC,IAAI;KACvE,CAAC,CAAC;IAEH,IAAI,QAAQ,EAAE,KAAK,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type CodexAccountAuthControls<LoginParams = unknown> = {
|
|
2
|
+
readAccount: (args?: {
|
|
3
|
+
refreshToken?: boolean;
|
|
4
|
+
}) => Promise<unknown>;
|
|
5
|
+
loginAccount: (args: {
|
|
6
|
+
params: LoginParams;
|
|
7
|
+
}) => Promise<unknown>;
|
|
8
|
+
cancelAccountLogin: (args: {
|
|
9
|
+
loginId: string;
|
|
10
|
+
}) => Promise<unknown>;
|
|
11
|
+
logoutAccount: () => Promise<unknown>;
|
|
12
|
+
readAccountRateLimits: () => Promise<unknown>;
|
|
13
|
+
respondChatgptAuthTokensRefresh?: (args: {
|
|
14
|
+
requestId: string | number;
|
|
15
|
+
idToken: string;
|
|
16
|
+
accessToken: string;
|
|
17
|
+
}) => Promise<unknown>;
|
|
18
|
+
};
|
|
19
|
+
type AuthAction = "read" | "read_refresh" | "login" | "cancel_login" | "logout" | "read_rate_limits" | "refresh_tokens";
|
|
20
|
+
export declare function useCodexAccountAuth<LoginParams = unknown>(controls: CodexAccountAuthControls<LoginParams>): {
|
|
21
|
+
busyAction: AuthAction | null;
|
|
22
|
+
isBusy: boolean;
|
|
23
|
+
error: string | null;
|
|
24
|
+
lastResult: unknown;
|
|
25
|
+
readAccount: (args?: {
|
|
26
|
+
refreshToken?: boolean;
|
|
27
|
+
}) => Promise<unknown>;
|
|
28
|
+
loginAccount: (args: {
|
|
29
|
+
params: LoginParams;
|
|
30
|
+
}) => Promise<unknown>;
|
|
31
|
+
cancelAccountLogin: (args: {
|
|
32
|
+
loginId: string;
|
|
33
|
+
}) => Promise<unknown>;
|
|
34
|
+
logoutAccount: () => Promise<unknown>;
|
|
35
|
+
readAccountRateLimits: () => Promise<unknown>;
|
|
36
|
+
respondChatgptAuthTokensRefresh: (args: {
|
|
37
|
+
requestId: string | number;
|
|
38
|
+
idToken: string;
|
|
39
|
+
accessToken: string;
|
|
40
|
+
}) => Promise<unknown>;
|
|
41
|
+
};
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=useCodexAccountAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexAccountAuth.d.ts","sourceRoot":"","sources":["../../src/react/useCodexAccountAuth.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,wBAAwB,CAAC,WAAW,GAAG,OAAO,IAAI;IAC5D,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,kBAAkB,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,qBAAqB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,+BAA+B,CAAC,EAAE,CAAC,IAAI,EAAE;QACvC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,UAAU,GACX,MAAM,GACN,cAAc,GACd,OAAO,GACP,cAAc,GACd,QAAQ,GACR,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,wBAAgB,mBAAmB,CAAC,WAAW,GAAG,OAAO,EACvD,QAAQ,EAAE,wBAAwB,CAAC,WAAW,CAAC;;;;;yBAuBrC;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;yBAK3B;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE;+BAIvB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;4CASnB;QAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;EAmC9E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useMemo, useState } from "react";
|
|
3
|
+
export function useCodexAccountAuth(controls) {
|
|
4
|
+
const [busyAction, setBusyAction] = useState(null);
|
|
5
|
+
const [error, setError] = useState(null);
|
|
6
|
+
const [lastResult, setLastResult] = useState(null);
|
|
7
|
+
const run = useCallback(async (action, fn) => {
|
|
8
|
+
setBusyAction(action);
|
|
9
|
+
setError(null);
|
|
10
|
+
try {
|
|
11
|
+
const result = await fn();
|
|
12
|
+
setLastResult(result);
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
catch (nextError) {
|
|
16
|
+
const message = nextError instanceof Error ? nextError.message : String(nextError);
|
|
17
|
+
setError(message);
|
|
18
|
+
throw nextError;
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
setBusyAction((current) => (current === action ? null : current));
|
|
22
|
+
}
|
|
23
|
+
}, []);
|
|
24
|
+
const readAccount = useCallback((args) => run(args?.refreshToken ? "read_refresh" : "read", () => controls.readAccount(args)), [controls, run]);
|
|
25
|
+
const loginAccount = useCallback((args) => run("login", () => controls.loginAccount(args)), [controls, run]);
|
|
26
|
+
const cancelAccountLogin = useCallback((args) => run("cancel_login", () => controls.cancelAccountLogin(args)), [controls, run]);
|
|
27
|
+
const logoutAccount = useCallback(() => run("logout", controls.logoutAccount), [controls, run]);
|
|
28
|
+
const readAccountRateLimits = useCallback(() => run("read_rate_limits", controls.readAccountRateLimits), [controls, run]);
|
|
29
|
+
const respondChatgptAuthTokensRefresh = useCallback((args) => {
|
|
30
|
+
const respond = controls.respondChatgptAuthTokensRefresh;
|
|
31
|
+
if (!respond) {
|
|
32
|
+
throw new Error("respondChatgptAuthTokensRefresh is not configured.");
|
|
33
|
+
}
|
|
34
|
+
return run("refresh_tokens", () => respond(args));
|
|
35
|
+
}, [controls, run]);
|
|
36
|
+
return useMemo(() => ({
|
|
37
|
+
busyAction,
|
|
38
|
+
isBusy: busyAction !== null,
|
|
39
|
+
error,
|
|
40
|
+
lastResult,
|
|
41
|
+
readAccount,
|
|
42
|
+
loginAccount,
|
|
43
|
+
cancelAccountLogin,
|
|
44
|
+
logoutAccount,
|
|
45
|
+
readAccountRateLimits,
|
|
46
|
+
respondChatgptAuthTokensRefresh,
|
|
47
|
+
}), [
|
|
48
|
+
busyAction,
|
|
49
|
+
cancelAccountLogin,
|
|
50
|
+
error,
|
|
51
|
+
lastResult,
|
|
52
|
+
loginAccount,
|
|
53
|
+
logoutAccount,
|
|
54
|
+
readAccount,
|
|
55
|
+
readAccountRateLimits,
|
|
56
|
+
respondChatgptAuthTokensRefresh,
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=useCodexAccountAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexAccountAuth.js","sourceRoot":"","sources":["../../src/react/useCodexAccountAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FunctionArgs } from "convex/server";
|
|
2
|
+
import { type CodexThreadStateQuery } from "./useCodexThreadState.js";
|
|
3
|
+
import { type CodexBranchActivityOptions } from "./branchActivity.js";
|
|
4
|
+
import type { CodexThreadActivity, CodexThreadActivityThreadState } from "./threadActivity.js";
|
|
5
|
+
export type CodexBranchActivityQuery<Args = Record<string, unknown>, Result extends CodexThreadActivityThreadState = CodexThreadActivityThreadState> = CodexThreadStateQuery<Args, Result>;
|
|
6
|
+
export declare function useCodexBranchActivity<Query extends CodexBranchActivityQuery<unknown, CodexThreadActivityThreadState>>(query: Query, args: FunctionArgs<Query> | "skip", options?: CodexBranchActivityOptions): CodexThreadActivity;
|
|
7
|
+
//# sourceMappingURL=useCodexBranchActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexBranchActivity.d.ts","sourceRoot":"","sources":["../../src/react/useCodexBranchActivity.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,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAE/F,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,EAClC,OAAO,CAAC,EAAE,0BAA0B,GACnC,mBAAmB,CAGrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useCodexThreadState } from "./useCodexThreadState.js";
|
|
4
|
+
import { deriveCodexBranchActivity, } from "./branchActivity.js";
|
|
5
|
+
export function useCodexBranchActivity(query, args, options) {
|
|
6
|
+
const threadState = useCodexThreadState(query, args);
|
|
7
|
+
return useMemo(() => deriveCodexBranchActivity(threadState, options), [options, threadState]);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useCodexBranchActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexBranchActivity.js","sourceRoot":"","sources":["../../src/react/useCodexBranchActivity.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,yBAAyB,GAE1B,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,IAAkC,EAClC,OAAoC;IAEpC,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { FunctionArgs } from "convex/server";
|
|
2
|
+
import type { CodexMessagesQuery, CodexMessagesQueryArgs } from "./types.js";
|
|
3
|
+
import { type CodexThreadStateQuery } from "./useCodexThreadState.js";
|
|
4
|
+
import { type CodexThreadActivity, type CodexThreadActivityThreadState } from "./threadActivity.js";
|
|
5
|
+
import { type CodexBranchActivityOptions } from "./branchActivity.js";
|
|
6
|
+
import { type CodexDynamicToolHandler, type CodexDynamicToolsQuery, type CodexDynamicToolsRespond } from "./useCodexDynamicTools.js";
|
|
7
|
+
export type CodexConversationApprovalDecision = "accepted" | "declined";
|
|
8
|
+
export type CodexConversationApprovalItem = {
|
|
9
|
+
threadId: string;
|
|
10
|
+
turnId: string;
|
|
11
|
+
itemId: string;
|
|
12
|
+
kind: string;
|
|
13
|
+
reason?: string;
|
|
14
|
+
createdAt: number;
|
|
15
|
+
};
|
|
16
|
+
export type CodexConversationControllerConfig<MessagesQuery extends CodexMessagesQuery<unknown>, ThreadStateQuery extends CodexThreadStateQuery<unknown, CodexThreadActivityThreadState>, DynamicToolsQuery extends CodexDynamicToolsQuery<Record<string, unknown>>> = {
|
|
17
|
+
messages: {
|
|
18
|
+
query: MessagesQuery;
|
|
19
|
+
args: CodexMessagesQueryArgs<MessagesQuery> | "skip";
|
|
20
|
+
initialNumItems: number;
|
|
21
|
+
stream?: boolean;
|
|
22
|
+
};
|
|
23
|
+
threadState: {
|
|
24
|
+
query: ThreadStateQuery;
|
|
25
|
+
args: FunctionArgs<ThreadStateQuery> | "skip";
|
|
26
|
+
branchOptions?: CodexBranchActivityOptions;
|
|
27
|
+
};
|
|
28
|
+
composer?: {
|
|
29
|
+
initialValue?: string;
|
|
30
|
+
onSend: (text: string) => Promise<unknown>;
|
|
31
|
+
};
|
|
32
|
+
approvals?: {
|
|
33
|
+
onResolve: (approval: CodexConversationApprovalItem, decision: CodexConversationApprovalDecision) => Promise<unknown>;
|
|
34
|
+
};
|
|
35
|
+
dynamicTools?: {
|
|
36
|
+
query: DynamicToolsQuery;
|
|
37
|
+
args: FunctionArgs<DynamicToolsQuery> | "skip";
|
|
38
|
+
respond?: CodexDynamicToolsRespond;
|
|
39
|
+
handlers?: Record<string, CodexDynamicToolHandler>;
|
|
40
|
+
autoHandle?: boolean;
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
};
|
|
43
|
+
interrupt?: {
|
|
44
|
+
onInterrupt: (activity: CodexThreadActivity) => Promise<unknown>;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export declare function useCodexConversationController<MessagesQuery extends CodexMessagesQuery<unknown>, ThreadStateQuery extends CodexThreadStateQuery<unknown, CodexThreadActivityThreadState>, DynamicToolsQuery extends CodexDynamicToolsQuery<Record<string, unknown>> = CodexDynamicToolsQuery<Record<string, unknown>>>(config: CodexConversationControllerConfig<MessagesQuery, ThreadStateQuery, DynamicToolsQuery>): {
|
|
48
|
+
messages: import("convex/react").UsePaginatedQueryResult<import("../index.js").CodexUIMessage>;
|
|
49
|
+
activity: CodexThreadActivity;
|
|
50
|
+
ingestHealth: import("./ingestHealth.js").CodexIngestHealth;
|
|
51
|
+
branchActivity: CodexThreadActivity;
|
|
52
|
+
approvals: {
|
|
53
|
+
pending: CodexConversationApprovalItem[];
|
|
54
|
+
pendingCount: number;
|
|
55
|
+
approvingItemId: string | null;
|
|
56
|
+
error: string | null;
|
|
57
|
+
canResolve: boolean;
|
|
58
|
+
resolve: (approval: CodexConversationApprovalItem, decision: CodexConversationApprovalDecision) => Promise<void>;
|
|
59
|
+
accept: (approval: CodexConversationApprovalItem) => Promise<void>;
|
|
60
|
+
decline: (approval: CodexConversationApprovalItem) => Promise<void>;
|
|
61
|
+
};
|
|
62
|
+
dynamicTools: {
|
|
63
|
+
requests: never[] | DynamicToolsQuery["_returnType"];
|
|
64
|
+
calls: import("./dynamicTools.js").CodexDynamicToolCall[];
|
|
65
|
+
pendingCount: number;
|
|
66
|
+
runningRequestIds: string[];
|
|
67
|
+
lastError: string | null;
|
|
68
|
+
runCall: (call: import("./dynamicTools.js").CodexDynamicToolCall) => Promise<boolean>;
|
|
69
|
+
respond: (call: import("./dynamicTools.js").CodexDynamicToolCall, result: import("./dynamicTools.js").CodexDynamicToolResponse) => Promise<void>;
|
|
70
|
+
};
|
|
71
|
+
composer: {
|
|
72
|
+
value: string;
|
|
73
|
+
setValue: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
74
|
+
error: string | null;
|
|
75
|
+
isSending: boolean;
|
|
76
|
+
canSend: boolean;
|
|
77
|
+
send: (overrideText?: string) => Promise<void>;
|
|
78
|
+
};
|
|
79
|
+
interrupt: () => Promise<void>;
|
|
80
|
+
canInterrupt: boolean;
|
|
81
|
+
isInterrupting: boolean;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=useCodexConversationController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexConversationController.d.ts","sourceRoot":"","sources":["../../src/react/useCodexConversationController.ts"],"names":[],"mappings":"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"}
|