@zakstam/codex-local-component 0.9.1 → 0.10.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/dist/component/_generated/component.d.ts +10 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/index.d.ts +1 -0
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +1 -0
- package/dist/component/index.js.map +1 -1
- package/dist/component/schema.d.ts +40 -0
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +21 -0
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streamStats.d.ts +7 -0
- package/dist/component/streamStats.d.ts.map +1 -1
- package/dist/component/streamStats.js +20 -2
- package/dist/component/streamStats.js.map +1 -1
- package/dist/component/streams.d.ts.map +1 -1
- package/dist/component/streams.js +31 -0
- package/dist/component/streams.js.map +1 -1
- package/dist/component/threads.d.ts +10 -0
- package/dist/component/threads.d.ts.map +1 -1
- package/dist/component/threads.js +49 -1
- package/dist/component/threads.js.map +1 -1
- package/dist/component/tokenUsage.d.ts +43 -0
- package/dist/component/tokenUsage.d.ts.map +1 -0
- package/dist/component/tokenUsage.js +107 -0
- package/dist/component/tokenUsage.js.map +1 -0
- package/dist/host/convexPreset.d.ts +54 -0
- package/dist/host/convexPreset.d.ts.map +1 -1
- package/dist/host/convexPreset.js +39 -1
- package/dist/host/convexPreset.js.map +1 -1
- package/dist/host/convexSlice.d.ts +27 -1
- package/dist/host/convexSlice.d.ts.map +1 -1
- package/dist/host/convexSlice.js +24 -0
- package/dist/host/convexSlice.js.map +1 -1
- package/dist/host/index.d.ts +1 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +1 -1
- package/dist/host/index.js.map +1 -1
- package/dist/host/runtime.d.ts +16 -0
- package/dist/host/runtime.d.ts.map +1 -1
- package/dist/host/runtime.js +46 -0
- package/dist/host/runtime.js.map +1 -1
- package/dist/host/surfaceManifest.d.ts +4 -4
- package/dist/host/surfaceManifest.d.ts.map +1 -1
- package/dist/host/surfaceManifest.js +4 -0
- package/dist/host/surfaceManifest.js.map +1 -1
- package/dist/react/activityAuthority.d.ts +50 -0
- package/dist/react/activityAuthority.d.ts.map +1 -0
- package/dist/react/activityAuthority.js +185 -0
- package/dist/react/activityAuthority.js.map +1 -0
- package/dist/react/branchActivity.d.ts.map +1 -1
- package/dist/react/branchActivity.js +4 -0
- package/dist/react/branchActivity.js.map +1 -1
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/threadActivity.d.ts +2 -33
- package/dist/react/threadActivity.d.ts.map +1 -1
- package/dist/react/threadActivity.js +2 -157
- package/dist/react/threadActivity.js.map +1 -1
- package/dist/react/tokenUsage.d.ts +32 -0
- package/dist/react/tokenUsage.d.ts.map +1 -0
- package/dist/react/tokenUsage.js +17 -0
- package/dist/react/tokenUsage.js.map +1 -0
- package/dist/react/useCodexTokenUsage.d.ts +7 -0
- package/dist/react/useCodexTokenUsage.d.ts.map +1 -0
- package/dist/react/useCodexTokenUsage.js +10 -0
- package/dist/react/useCodexTokenUsage.js.map +1 -0
- package/dist/shared/streamLifecycle.d.ts +2 -0
- package/dist/shared/streamLifecycle.d.ts.map +1 -0
- package/dist/shared/streamLifecycle.js +2 -0
- package/dist/shared/streamLifecycle.js.map +1 -0
- package/docs/CLIENT_AND_REACT_HOOKS.md +3 -1
- package/docs/HOST_PRESET_MATRIX.md +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threadActivity.js","sourceRoot":"","sources":["../../src/react/threadActivity.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"threadActivity.js","sourceRoot":"","sources":["../../src/react/threadActivity.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,mCAAmC,GAUpC,MAAM,wBAAwB,CAAC;AAchC,MAAM,UAAU,yBAAyB,CACvC,KAAwD;IAExD,OAAO,mCAAmC,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type CodexTokenUsageBreakdown = {
|
|
2
|
+
totalTokens: number;
|
|
3
|
+
inputTokens: number;
|
|
4
|
+
cachedInputTokens: number;
|
|
5
|
+
outputTokens: number;
|
|
6
|
+
reasoningOutputTokens: number;
|
|
7
|
+
};
|
|
8
|
+
export type CodexTurnTokenUsage = {
|
|
9
|
+
turnId: string;
|
|
10
|
+
total: CodexTokenUsageBreakdown;
|
|
11
|
+
last: CodexTokenUsageBreakdown;
|
|
12
|
+
modelContextWindow?: number;
|
|
13
|
+
updatedAt: number;
|
|
14
|
+
};
|
|
15
|
+
export type CodexTokenUsage = {
|
|
16
|
+
status: "loading";
|
|
17
|
+
turns: [];
|
|
18
|
+
cumulative: null;
|
|
19
|
+
modelContextWindow: null;
|
|
20
|
+
} | {
|
|
21
|
+
status: "empty";
|
|
22
|
+
turns: [];
|
|
23
|
+
cumulative: null;
|
|
24
|
+
modelContextWindow: null;
|
|
25
|
+
} | {
|
|
26
|
+
status: "ready";
|
|
27
|
+
turns: CodexTurnTokenUsage[];
|
|
28
|
+
cumulative: CodexTokenUsageBreakdown;
|
|
29
|
+
modelContextWindow: number | null;
|
|
30
|
+
};
|
|
31
|
+
export declare function deriveCodexTokenUsage(rawTurns: CodexTurnTokenUsage[] | null | undefined): CodexTokenUsage;
|
|
32
|
+
//# sourceMappingURL=tokenUsage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenUsage.d.ts","sourceRoot":"","sources":["../../src/react/tokenUsage.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,wBAAwB,CAAC;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,EAAE,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,kBAAkB,EAAE,IAAI,CAAA;CAAE,GAC5E;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,EAAE,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,kBAAkB,EAAE,IAAI,CAAA;CAAE,GAC1E;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,UAAU,EAAE,wBAAwB,CAAC;IACrC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEN,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAI,GAAG,SAAS,GACjD,eAAe,CAgBjB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export function deriveCodexTokenUsage(rawTurns) {
|
|
3
|
+
if (rawTurns === undefined) {
|
|
4
|
+
return { status: "loading", turns: [], cumulative: null, modelContextWindow: null };
|
|
5
|
+
}
|
|
6
|
+
if (rawTurns === null || rawTurns.length === 0) {
|
|
7
|
+
return { status: "empty", turns: [], cumulative: null, modelContextWindow: null };
|
|
8
|
+
}
|
|
9
|
+
const latest = rawTurns[rawTurns.length - 1];
|
|
10
|
+
return {
|
|
11
|
+
status: "ready",
|
|
12
|
+
turns: rawTurns,
|
|
13
|
+
cumulative: latest.total,
|
|
14
|
+
modelContextWindow: latest.modelContextWindow ?? null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=tokenUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenUsage.js","sourceRoot":"","sources":["../../src/react/tokenUsage.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AA4Bb,MAAM,UAAU,qBAAqB,CACnC,QAAkD;IAElD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAE9C,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,MAAM,CAAC,KAAK;QACxB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FunctionArgs, FunctionReference } from "convex/server";
|
|
2
|
+
import { type CodexTokenUsage, type CodexTurnTokenUsage } from "./tokenUsage.js";
|
|
3
|
+
export type CodexTokenUsageQuery<Args = Record<string, unknown>> = FunctionReference<"query", "public", {
|
|
4
|
+
threadId: string;
|
|
5
|
+
} & Args, CodexTurnTokenUsage[]>;
|
|
6
|
+
export declare function useCodexTokenUsage<Query extends CodexTokenUsageQuery<unknown>>(query: Query, args: FunctionArgs<Query> | "skip"): CodexTokenUsage;
|
|
7
|
+
//# sourceMappingURL=useCodexTokenUsage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexTokenUsage.d.ts","sourceRoot":"","sources":["../../src/react/useCodexTokenUsage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,CAC9B,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC5B,iBAAiB,CACnB,OAAO,EACP,QAAQ,EACR;IACE,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,EACR,mBAAmB,EAAE,CACtB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAC5E,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,GACjC,eAAe,CAIjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useQuery } from "convex/react";
|
|
4
|
+
import { deriveCodexTokenUsage, } from "./tokenUsage.js";
|
|
5
|
+
export function useCodexTokenUsage(query, args) {
|
|
6
|
+
const queryArgs = (args === "skip" ? ["skip"] : [args]);
|
|
7
|
+
const rawTurns = useQuery(query, ...queryArgs);
|
|
8
|
+
return useMemo(() => deriveCodexTokenUsage(rawTurns), [rawTurns]);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=useCodexTokenUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodexTokenUsage.js","sourceRoot":"","sources":["../../src/react/useCodexTokenUsage.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAA+B,MAAM,cAAc,CAAC;AAErE,OAAO,EACL,qBAAqB,GAGtB,MAAM,iBAAiB,CAAC;AAazB,MAAM,UAAU,kBAAkB,CAChC,KAAY,EACZ,IAAkC;IAElC,MAAM,SAAS,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAA6C,CAAC;IACpG,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamLifecycle.d.ts","sourceRoot":"","sources":["../../src/shared/streamLifecycle.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamLifecycle.js","sourceRoot":"","sources":["../../src/shared/streamLifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC"}
|
|
@@ -60,6 +60,7 @@ Common helpers used by consumers:
|
|
|
60
60
|
- `useCodexInterruptTurn`
|
|
61
61
|
- `useCodexAutoResume`
|
|
62
62
|
- `useCodexComposer`
|
|
63
|
+
- `useCodexTokenUsage`
|
|
63
64
|
- `optimisticallySendCodexMessage`
|
|
64
65
|
|
|
65
66
|
## `useCodexMessages` Host Query Contract
|
|
@@ -93,6 +94,7 @@ Return shape:
|
|
|
93
94
|
- `useCodexThreads` -> app thread-list query + thread lifecycle mutations
|
|
94
95
|
- `useCodexInterruptTurn` -> `chat.interruptTurnForHooks`
|
|
95
96
|
- `useCodexComposer` -> `chat.enqueueTurnDispatch`
|
|
97
|
+
- `useCodexTokenUsage` -> `chat.listTokenUsageForHooks`
|
|
96
98
|
|
|
97
99
|
## Reference React Integration Adapter
|
|
98
100
|
|
|
@@ -136,7 +138,7 @@ It demonstrates generated host wrappers plus React-first hook composition (`useC
|
|
|
136
138
|
|
|
137
139
|
| UI Signal | Source of truth | Ignore for this signal | Why |
|
|
138
140
|
| --- | --- | --- | --- |
|
|
139
|
-
| Thread activity badge (`idle/streaming/awaiting_approval/failed/interrupted`) | `useCodexThreadActivity(chat.threadSnapshotSafe, ...)` | Raw `messages`, `dispatches`, `turns`, `streamStats` stitching in app code |
|
|
141
|
+
| Thread activity badge (`idle/streaming/awaiting_approval/failed/interrupted`) | `useCodexThreadActivity(chat.threadSnapshotSafe, ...)` | Raw `messages`, `dispatches`, `turns`, `streamStats`, `activeStreams` stitching in app code | Uses canonical precedence: `pending approvals > streaming message > active stream > in-flight newer than terminal > terminal > idle`, including stream-drain lifecycle markers to prevent stuck streaming. |
|
|
140
142
|
| Show "needs approval" UI | `activity.phase === "awaiting_approval"` (or `pendingApprovals` count if not using activity hook) | Dispatch status alone | Dispatch lifecycle does not encode approval waits. |
|
|
141
143
|
| Render assistant text deltas | `useCodexMessages(..., { stream: true })` | `dispatches` and `turns` | Dispatch/turn state tracks orchestration, not message text continuity. |
|
|
142
144
|
| Enable cancel/interruption affordance | `activity.phase === "streaming"` with `activity.activeTurnId` | `threadStatus`, `dispatches` alone | Active turn identity should come from normalized activity. |
|
|
@@ -25,6 +25,7 @@ All focused preset builders include:
|
|
|
25
25
|
- `listThreadMessagesForHooks`
|
|
26
26
|
- `listTurnMessagesForHooks`
|
|
27
27
|
- `listPendingApprovalsForHooks`
|
|
28
|
+
- `listTokenUsageForHooks`
|
|
28
29
|
|
|
29
30
|
Additional query endpoints:
|
|
30
31
|
|
|
@@ -46,6 +47,7 @@ All focused preset builders include:
|
|
|
46
47
|
- `ingestEvent`
|
|
47
48
|
- `ingestBatch`
|
|
48
49
|
- `respondApprovalForHooks`
|
|
50
|
+
- `upsertTokenUsageForHooks`
|
|
49
51
|
- `interruptTurnForHooks`
|
|
50
52
|
|
|
51
53
|
Dispatch-managed additionally includes:
|