@zakstam/codex-local-component 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +30 -44
  2. package/dist/app-server/client.d.ts +23 -0
  3. package/dist/app-server/client.d.ts.map +1 -0
  4. package/dist/app-server/client.js +33 -0
  5. package/dist/app-server/client.js.map +1 -0
  6. package/dist/app-server/index.d.ts +2 -0
  7. package/dist/app-server/index.d.ts.map +1 -0
  8. package/dist/app-server/index.js +2 -0
  9. package/dist/app-server/index.js.map +1 -0
  10. package/dist/client/index.d.ts +1 -1
  11. package/dist/client/index.d.ts.map +1 -1
  12. package/dist/client/index.js +1 -1
  13. package/dist/client/index.js.map +1 -1
  14. package/dist/client/sync.d.ts +4 -4
  15. package/dist/client/sync.d.ts.map +1 -1
  16. package/dist/client/sync.js +4 -4
  17. package/dist/client/sync.js.map +1 -1
  18. package/dist/client/types.d.ts +3 -3
  19. package/dist/client/types.d.ts.map +1 -1
  20. package/dist/component/_generated/component.d.ts +60 -6
  21. package/dist/component/_generated/component.d.ts.map +1 -1
  22. package/dist/component/approvals.d.ts.map +1 -1
  23. package/dist/component/approvals.js +33 -12
  24. package/dist/component/approvals.js.map +1 -1
  25. package/dist/component/messages.d.ts.map +1 -1
  26. package/dist/component/messages.js +12 -3
  27. package/dist/component/messages.js.map +1 -1
  28. package/dist/component/pagination.d.ts +5 -0
  29. package/dist/component/pagination.d.ts.map +1 -0
  30. package/dist/component/pagination.js +30 -0
  31. package/dist/component/pagination.js.map +1 -0
  32. package/dist/component/schema.d.ts +34 -6
  33. package/dist/component/schema.d.ts.map +1 -1
  34. package/dist/component/schema.js +22 -3
  35. package/dist/component/schema.js.map +1 -1
  36. package/dist/component/sync.d.ts +49 -5
  37. package/dist/component/sync.d.ts.map +1 -1
  38. package/dist/component/sync.js +44 -11
  39. package/dist/component/sync.js.map +1 -1
  40. package/dist/component/syncIngest.d.ts +31 -4
  41. package/dist/component/syncIngest.d.ts.map +1 -1
  42. package/dist/component/syncIngest.js +234 -148
  43. package/dist/component/syncIngest.js.map +1 -1
  44. package/dist/component/syncReplay.d.ts +28 -7
  45. package/dist/component/syncReplay.d.ts.map +1 -1
  46. package/dist/component/syncReplay.js +122 -60
  47. package/dist/component/syncReplay.js.map +1 -1
  48. package/dist/component/threads.d.ts.map +1 -1
  49. package/dist/component/threads.js +12 -4
  50. package/dist/component/threads.js.map +1 -1
  51. package/dist/react/types.d.ts +10 -0
  52. package/dist/react/types.d.ts.map +1 -1
  53. package/dist/react/useCodexStreamOverlay.d.ts.map +1 -1
  54. package/dist/react/useCodexStreamOverlay.js +46 -8
  55. package/dist/react/useCodexStreamOverlay.js.map +1 -1
  56. package/package.json +6 -1
package/README.md CHANGED
@@ -1,57 +1,46 @@
1
- # Codex Local Convex Component (v1)
1
+ # Codex Local Convex Component
2
2
 
3
3
  Local-first Convex component for Codex integrations where Codex runs on the user's machine (desktop/CLI).
4
4
 
5
5
  ## What this package contains
6
6
 
7
7
  - Convex component scaffold (`src/component`) with:
8
- - Thread and turn lifecycle APIs
9
- - Stream/session sync APIs
10
- - Approval workflow APIs
11
- - Internal scheduler-driven execution hooks
8
+ - thread and turn lifecycle APIs
9
+ - sync ingest/replay APIs
10
+ - approvals APIs
12
11
  - Local adapter skeleton (`src/local-adapter`) to manage `codex app-server` over stdio
13
- - Typed protocol parsing boundary (`src/protocol`) with `unknown` only at wire ingress
12
+ - Typed protocol boundary (`src/protocol`) with `unknown` only at wire ingress
14
13
 
15
- ## Runtime handling contract (no fallbacks)
14
+ ## Sync API surface
16
15
 
17
- The local bridge requires three handlers:
16
+ `components.codexLocal.sync` now exposes:
18
17
 
19
- - `onEvent`: receives thread-scoped normalized events (must have `threadId`).
20
- - `onGlobalMessage`: receives protocol-valid non-thread messages (auth updates, config notices, etc).
21
- - `onProtocolError`: receives malformed JSON, schema violations, or thread-scoped messages missing `threadId`.
18
+ - `heartbeat`
19
+ - `ingest`
20
+ - `replay`
21
+ - `resumeReplay`
22
+ - `listCheckpoints`
23
+ - `upsertCheckpoint`
22
24
 
23
- Thread-scoped messages without a `threadId` are treated as hard protocol errors.
25
+ Ingest takes split payloads:
24
26
 
25
- ## Sync ingest error codes
27
+ - `streamDeltas`
28
+ - `lifecycleEvents`
26
29
 
27
- `codex.sync.pushEvents` now throws explicit errors (no silent dedupe/reorder):
30
+ Replay returns explicit recovery metadata:
28
31
 
29
- - `E_SYNC_EMPTY_BATCH`
30
- - `E_SYNC_SESSION_NOT_FOUND`
31
- - `E_SYNC_SESSION_THREAD_MISMATCH`
32
- - `E_SYNC_SESSION_DEVICE_MISMATCH`
33
- - `E_SYNC_INVALID_CURSOR_RANGE`
34
- - `E_SYNC_OUT_OF_ORDER`
35
- - `E_SYNC_DUP_EVENT_IN_BATCH`
36
- - `E_SYNC_DUP_EVENT_PERSISTED`
37
- - `E_SYNC_REPLAY_GAP`
38
-
39
- ## Integration assumptions
40
-
41
- - Host app handles authentication and authorization.
42
- - Caller provides trusted `tenantId`, `userId`, and `deviceId`.
43
- - Codex auth/session stays local to the user machine.
44
-
45
- ## Additional docs
46
-
47
- - `docs/HOST_INTEGRATION.md`
48
- - `docs/OPERATIONS_AND_ERRORS.md`
49
- - `docs/CLIENT_AND_REACT_HOOKS.md`
32
+ - `streamWindows` (`ok | rebased | stale`)
33
+ - `nextCheckpoints`
50
34
 
51
35
  ## Consumer SDK exports
52
36
 
53
- - `@zakstam/codex-local-component/client`: framework-agnostic typed helpers for messages, approvals, turns, sync, and thread state.
54
- - `@zakstam/codex-local-component/react`: React hooks for messages (`durable + stream` or stream-only), turn-focused reads, separate approvals handling, interrupt/resume/composer flows, thread state reads, and optimistic sends.
37
+ - `@zakstam/codex-local-component/client`
38
+ - message/approval/turn helpers
39
+ - sync helpers: `replayStreams`, `resumeStreamReplay`
40
+ - `@zakstam/codex-local-component/react`
41
+ - hooks for messages, approvals, turn state, composer, interrupts
42
+ - `@zakstam/codex-local-component/app-server`
43
+ - typed request builders for app-server initialize/thread/turn flows
55
44
 
56
45
  ## Convex install pattern
57
46
 
@@ -65,11 +54,8 @@ app.use(codexLocal);
65
54
  export default app;
66
55
  ```
67
56
 
68
- ## Release automation
69
-
70
- Releases are automated with Changesets from the monorepo root:
57
+ ## Docs
71
58
 
72
- 1. Add a changeset in PRs that affect this package (`pnpm changeset`).
73
- 2. After merge to `main`, CI opens/updates a version PR.
74
- 3. The version PR auto-merges when checks pass.
75
- 4. Merge to `main` publishes `@zakstam/codex-local-component` to npm (`latest`).
59
+ - `docs/HOST_INTEGRATION.md`
60
+ - `docs/OPERATIONS_AND_ERRORS.md`
61
+ - `docs/CLIENT_AND_REACT_HOOKS.md`
@@ -0,0 +1,23 @@
1
+ import type { ClientInfo } from "../protocol/schemas/ClientInfo.js";
2
+ import type { ClientNotification } from "../protocol/schemas/ClientNotification.js";
3
+ import type { ClientRequest } from "../protocol/schemas/ClientRequest.js";
4
+ import type { ThreadStartParams } from "../protocol/schemas/v2/ThreadStartParams.js";
5
+ import type { TurnInterruptParams } from "../protocol/schemas/v2/TurnInterruptParams.js";
6
+ import type { TurnStartParams } from "../protocol/schemas/v2/TurnStartParams.js";
7
+ type RequestMethod = ClientRequest["method"];
8
+ type RequestFor<M extends RequestMethod> = Extract<ClientRequest, {
9
+ method: M;
10
+ }>;
11
+ type RequestParams<M extends RequestMethod> = RequestFor<M>["params"];
12
+ export declare function buildClientRequest<M extends RequestMethod>(method: M, id: number, params: RequestParams<M>): RequestFor<M>;
13
+ export declare function buildInitializeRequest(id: number, clientInfo: ClientInfo): RequestFor<"initialize">;
14
+ export declare function buildInitializedNotification(): ClientNotification;
15
+ export declare function buildThreadStartRequest(id: number, params?: Omit<ThreadStartParams, "experimentalRawEvents">): RequestFor<"thread/start">;
16
+ export declare function buildTurnStartRequest(id: number, params: TurnStartParams): RequestFor<"turn/start">;
17
+ export declare function buildTurnStartTextRequest(id: number, args: {
18
+ threadId: string;
19
+ text: string;
20
+ }): RequestFor<"turn/start">;
21
+ export declare function buildTurnInterruptRequest(id: number, params: TurnInterruptParams): RequestFor<"turn/interrupt">;
22
+ export {};
23
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/app-server/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAEjF,KAAK,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAE7C,KAAK,UAAU,CAAC,CAAC,SAAS,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAEjF,KAAK,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EACxD,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,UAAU,CAAC,CAAC,CAAC,CAEf;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAOnG;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,GACxD,UAAU,CAAC,cAAc,CAAC,CAK5B;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,eAAe,GACtB,UAAU,CAAC,YAAY,CAAC,CAE1B;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC,UAAU,CAAC,YAAY,CAAC,CAK1B;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,mBAAmB,GAC1B,UAAU,CAAC,gBAAgB,CAAC,CAE9B"}
@@ -0,0 +1,33 @@
1
+ export function buildClientRequest(method, id, params) {
2
+ return { method, id, params };
3
+ }
4
+ export function buildInitializeRequest(id, clientInfo) {
5
+ return buildClientRequest("initialize", id, {
6
+ clientInfo,
7
+ capabilities: {
8
+ experimentalApi: false,
9
+ },
10
+ });
11
+ }
12
+ export function buildInitializedNotification() {
13
+ return { method: "initialized" };
14
+ }
15
+ export function buildThreadStartRequest(id, params) {
16
+ return buildClientRequest("thread/start", id, {
17
+ ...params,
18
+ experimentalRawEvents: false,
19
+ });
20
+ }
21
+ export function buildTurnStartRequest(id, params) {
22
+ return buildClientRequest("turn/start", id, params);
23
+ }
24
+ export function buildTurnStartTextRequest(id, args) {
25
+ return buildTurnStartRequest(id, {
26
+ threadId: args.threadId,
27
+ input: [{ type: "text", text: args.text, text_elements: [] }],
28
+ });
29
+ }
30
+ export function buildTurnInterruptRequest(id, params) {
31
+ return buildClientRequest("turn/interrupt", id, params);
32
+ }
33
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/app-server/client.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,kBAAkB,CAChC,MAAS,EACT,EAAU,EACV,MAAwB;IAExB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAmB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAU,EAAE,UAAsB;IACvE,OAAO,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE;QAC1C,UAAU;QACV,YAAY,EAAE;YACZ,eAAe,EAAE,KAAK;SACvB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,EAAU,EACV,MAAyD;IAEzD,OAAO,kBAAkB,CAAC,cAAc,EAAE,EAAE,EAAE;QAC5C,GAAG,MAAM;QACT,qBAAqB,EAAE,KAAK;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAU,EACV,MAAuB;IAEvB,OAAO,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,EAAU,EACV,IAAwC;IAExC,OAAO,qBAAqB,CAAC,EAAE,EAAE;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,EAAU,EACV,MAA2B;IAE3B,OAAO,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildClientRequest, buildInitializeRequest, buildInitializedNotification, buildThreadStartRequest, buildTurnStartRequest, buildTurnStartTextRequest, buildTurnInterruptRequest, } from "./client.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app-server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildClientRequest, buildInitializeRequest, buildInitializedNotification, buildThreadStartRequest, buildTurnStartRequest, buildTurnStartTextRequest, buildTurnInterruptRequest, } from "./client.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app-server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { listPendingApprovals, respondToApproval, } from "./approvals.js";
2
2
  export { listMessages, listTurnMessages, } from "./messages.js";
3
3
  export { startTurn, interruptTurn, } from "./turns.js";
4
- export { syncStreams, resumeStream, } from "./sync.js";
4
+ export { replayStreams, resumeStreamReplay, } from "./sync.js";
5
5
  export { getThreadState } from "./threads.js";
6
6
  export type { CodexActorContext, CodexComponent, CodexMessageDoc, CodexMutationRunner, CodexQueryRunner, CodexStreamOverlay, CodexSyncRuntimeOptions, CodexUIMessage, } from "./types.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { listPendingApprovals, respondToApproval, } from "./approvals.js";
2
2
  export { listMessages, listTurnMessages, } from "./messages.js";
3
3
  export { startTurn, interruptTurn, } from "./turns.js";
4
- export { syncStreams, resumeStream, } from "./sync.js";
4
+ export { replayStreams, resumeStreamReplay, } from "./sync.js";
5
5
  export { getThreadState } from "./threads.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -2,11 +2,11 @@ import type { FunctionArgs, FunctionReference, FunctionReturnType } from "convex
2
2
  import type { CodexQueryRunner } from "./types.js";
3
3
  type SyncComponent = {
4
4
  sync: {
5
- pullState: FunctionReference<"query", "public" | "internal", Record<string, unknown>, unknown>;
6
- resumeFromCursor: FunctionReference<"query", "public" | "internal", Record<string, unknown>, unknown>;
5
+ replay: FunctionReference<"query", "public" | "internal", Record<string, unknown>, unknown>;
6
+ resumeReplay: FunctionReference<"query", "public" | "internal", Record<string, unknown>, unknown>;
7
7
  };
8
8
  };
9
- export declare function syncStreams<Component extends SyncComponent>(ctx: CodexQueryRunner, component: Component, args: FunctionArgs<Component["sync"]["pullState"]>): Promise<FunctionReturnType<Component["sync"]["pullState"]>>;
10
- export declare function resumeStream<Component extends SyncComponent>(ctx: CodexQueryRunner, component: Component, args: FunctionArgs<Component["sync"]["resumeFromCursor"]>): Promise<FunctionReturnType<Component["sync"]["resumeFromCursor"]>>;
9
+ export declare function replayStreams<Component extends SyncComponent>(ctx: CodexQueryRunner, component: Component, args: FunctionArgs<Component["sync"]["replay"]>): Promise<FunctionReturnType<Component["sync"]["replay"]>>;
10
+ export declare function resumeStreamReplay<Component extends SyncComponent>(ctx: CodexQueryRunner, component: Component, args: FunctionArgs<Component["sync"]["resumeReplay"]>): Promise<FunctionReturnType<Component["sync"]["resumeReplay"]>>;
11
11
  export {};
12
12
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE;QACJ,SAAS,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/F,gBAAgB,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KACvG,CAAC;CACH,CAAC;AAEF,wBAAsB,WAAW,CAAC,SAAS,SAAS,aAAa,EAC/D,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GACjD,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAE7D;AAED,wBAAsB,YAAY,CAAC,SAAS,SAAS,aAAa,EAChE,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GACxD,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAEpE"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE;QACJ,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5F,YAAY,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KACnG,CAAC;CACH,CAAC;AAEF,wBAAsB,aAAa,CAAC,SAAS,SAAS,aAAa,EACjE,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAsB,kBAAkB,CAAC,SAAS,SAAS,aAAa,EACtE,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,GACpD,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAEhE"}
@@ -1,7 +1,7 @@
1
- export async function syncStreams(ctx, component, args) {
2
- return ctx.runQuery(component.sync.pullState, args);
1
+ export async function replayStreams(ctx, component, args) {
2
+ return ctx.runQuery(component.sync.replay, args);
3
3
  }
4
- export async function resumeStream(ctx, component, args) {
5
- return ctx.runQuery(component.sync.resumeFromCursor, args);
4
+ export async function resumeStreamReplay(ctx, component, args) {
5
+ return ctx.runQuery(component.sync.resumeReplay, args);
6
6
  }
7
7
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAqB,EACrB,SAAoB,EACpB,IAAkD;IAElD,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAqB,EACrB,SAAoB,EACpB,IAAyD;IAEzD,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAqB,EACrB,SAAoB,EACpB,IAA+C;IAE/C,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAqB,EACrB,SAAoB,EACpB,IAAqD;IAErD,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC"}
@@ -24,11 +24,11 @@ export type CodexUIMessage = {
24
24
  completedAt?: number;
25
25
  error?: string;
26
26
  };
27
- export type CodexStreamOverlay = FunctionReturnType<ComponentApi["sync"]["pullState"]>;
28
- type RuntimeOptionsFromPullState = FunctionArgs<ComponentApi["sync"]["pullState"]> extends {
27
+ export type CodexStreamOverlay = FunctionReturnType<ComponentApi["sync"]["replay"]>;
28
+ type RuntimeOptionsFromPullState = FunctionArgs<ComponentApi["sync"]["replay"]> extends {
29
29
  runtime?: infer Runtime;
30
30
  } ? Runtime : never;
31
- type RuntimeOptionsFromResume = FunctionArgs<ComponentApi["sync"]["resumeFromCursor"]> extends {
31
+ type RuntimeOptionsFromResume = FunctionArgs<ComponentApi["sync"]["resumeReplay"]> extends {
32
32
  runtime?: infer Runtime;
33
33
  } ? Runtime : never;
34
34
  export type CodexSyncRuntimeOptions = RuntimeOptionsFromPullState | RuntimeOptionsFromResume;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,KAAK,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACvG,KAAK,cAAc,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAE7G,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,SAAS,WAAW,EAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GACxB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,QAAQ,SAAS,cAAc,EACzC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CACpC,CAAC,OAAO,CAAC,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CACjD,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAClC,CAAC;AAEF,KAAK,2BAA2B,GAAG,YAAY,CAC7C,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAClC,SAAS;IACR,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB,GACG,OAAO,GACP,KAAK,CAAC;AAEV,KAAK,wBAAwB,GAAG,YAAY,CAC1C,YAAY,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACzC,SAAS;IACR,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB,GACG,OAAO,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAC/B,2BAA2B,GAC3B,wBAAwB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,KAAK,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACvG,KAAK,cAAc,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAE7G,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,SAAS,WAAW,EAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GACxB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,QAAQ,SAAS,cAAc,EACzC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CACpC,CAAC,OAAO,CAAC,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CACjD,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAC/B,CAAC;AAEF,KAAK,2BAA2B,GAAG,YAAY,CAC7C,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAC/B,SAAS;IACR,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB,GACG,OAAO,GACP,KAAK,CAAC;AAEV,KAAK,wBAAwB,GAAG,YAAY,CAC1C,YAAY,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CACrC,SAAS;IACR,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB,GACG,OAAO,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAC/B,2BAA2B,GAC3B,wBAAwB,CAAC"}
@@ -59,25 +59,46 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
59
59
  sessionId: string;
60
60
  threadId: string;
61
61
  }, null, Name>;
62
- pullState: FunctionReference<"query", "internal", {
62
+ replay: FunctionReference<"query", "internal", {
63
63
  actor: {
64
64
  deviceId: string;
65
65
  tenantId: string;
66
66
  userId: string;
67
67
  };
68
+ runtime?: {
69
+ finishedStreamDeleteDelayMs?: number;
70
+ maxDeltasPerRequestRead?: number;
71
+ maxDeltasPerStreamRead?: number;
72
+ saveStreamDeltas?: boolean;
73
+ };
68
74
  streamCursorsById: Array<{
69
75
  cursor: number;
70
76
  streamId: string;
71
77
  }>;
72
78
  threadId: string;
73
79
  }, any, Name>;
74
- pushEvents: FunctionReference<"mutation", "internal", {
80
+ ingest: FunctionReference<"mutation", "internal", {
75
81
  actor: {
76
82
  deviceId: string;
77
83
  tenantId: string;
78
84
  userId: string;
79
85
  };
80
- deltas: Array<{
86
+ lifecycleEvents: Array<{
87
+ createdAt: number;
88
+ eventId: string;
89
+ kind: string;
90
+ payloadJson: string;
91
+ turnId?: string;
92
+ type: "lifecycle_event";
93
+ }>;
94
+ runtime?: {
95
+ finishedStreamDeleteDelayMs?: number;
96
+ maxDeltasPerRequestRead?: number;
97
+ maxDeltasPerStreamRead?: number;
98
+ saveStreamDeltas?: boolean;
99
+ };
100
+ sessionId: string;
101
+ streamDeltas: Array<{
81
102
  createdAt: number;
82
103
  cursorEnd: number;
83
104
  cursorStart: number;
@@ -86,19 +107,52 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
86
107
  payloadJson: string;
87
108
  streamId: string;
88
109
  turnId: string;
110
+ type: "stream_delta";
89
111
  }>;
90
- sessionId: string;
91
112
  threadId: string;
92
113
  }, {
93
- ackCursor: number;
114
+ ackedStreams: Array<{
115
+ ackCursorEnd: number;
116
+ streamId: string;
117
+ }>;
118
+ ingestStatus: "ok" | "partial";
119
+ }, Name>;
120
+ listCheckpoints: FunctionReference<"query", "internal", {
121
+ actor: {
122
+ deviceId: string;
123
+ tenantId: string;
124
+ userId: string;
125
+ };
126
+ threadId: string;
127
+ }, Array<{
128
+ cursor: number;
129
+ streamId: string;
130
+ }>, Name>;
131
+ upsertCheckpoint: FunctionReference<"mutation", "internal", {
132
+ actor: {
133
+ deviceId: string;
134
+ tenantId: string;
135
+ userId: string;
136
+ };
137
+ cursor: number;
138
+ streamId: string;
139
+ threadId: string;
140
+ }, {
141
+ ok: true;
94
142
  }, Name>;
95
- resumeFromCursor: FunctionReference<"query", "internal", {
143
+ resumeReplay: FunctionReference<"query", "internal", {
96
144
  actor: {
97
145
  deviceId: string;
98
146
  tenantId: string;
99
147
  userId: string;
100
148
  };
101
149
  fromCursor: number;
150
+ runtime?: {
151
+ finishedStreamDeleteDelayMs?: number;
152
+ maxDeltasPerRequestRead?: number;
153
+ maxDeltasPerStreamRead?: number;
154
+ saveStreamDeltas?: boolean;
155
+ };
102
156
  threadId: string;
103
157
  turnId: string;
104
158
  }, any, Name>;
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/component/approvals.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCtB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;iBA2ClB,CAAC"}
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/component/approvals.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFtB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;iBA2ClB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { paginationOptsValidator } from "convex/server";
2
2
  import { v } from "convex/values";
3
3
  import { mutation, query } from "./_generated/server.js";
4
+ import { decodeKeysetCursor, keysetPageResult } from "./pagination.js";
4
5
  import { vActorContext } from "./types.js";
5
6
  import { authzError, now, requireThreadForActor } from "./utils.js";
6
7
  export const listPending = query({
@@ -13,19 +14,39 @@ export const listPending = query({
13
14
  if (args.threadId) {
14
15
  await requireThreadForActor(ctx, args.actor, args.threadId);
15
16
  }
16
- const paginated = await ctx.db
17
- .query("codex_approvals")
18
- .withIndex("tenantId_threadId_status")
19
- .filter((q) => {
20
- const base = q.and(q.eq(q.field("tenantId"), args.actor.tenantId), q.eq(q.field("userId"), args.actor.userId), q.eq(q.field("status"), "pending"));
21
- return args.threadId
22
- ? q.and(base, q.eq(q.field("threadId"), args.threadId))
23
- : base;
24
- })
25
- .paginate(args.paginationOpts);
17
+ const cursor = decodeKeysetCursor(args.paginationOpts.cursor);
18
+ const paginated = args.threadId
19
+ ? await ctx.db
20
+ .query("codex_approvals")
21
+ .withIndex("tenantId_userId_threadId_status_createdAt_itemId", (q) => q
22
+ .eq("tenantId", args.actor.tenantId)
23
+ .eq("userId", args.actor.userId)
24
+ .eq("threadId", args.threadId)
25
+ .eq("status", "pending"))
26
+ .filter((q) => cursor
27
+ ? q.or(q.lt(q.field("createdAt"), cursor.createdAt), q.and(q.eq(q.field("createdAt"), cursor.createdAt), q.lt(q.field("itemId"), cursor.itemId)))
28
+ : q.eq(q.field("threadId"), args.threadId))
29
+ .order("desc")
30
+ .take(args.paginationOpts.numItems + 1)
31
+ : await ctx.db
32
+ .query("codex_approvals")
33
+ .withIndex("tenantId_userId_status_createdAt_threadId_itemId", (q) => q
34
+ .eq("tenantId", args.actor.tenantId)
35
+ .eq("userId", args.actor.userId)
36
+ .eq("status", "pending"))
37
+ .filter((q) => cursor
38
+ ? q.or(q.lt(q.field("createdAt"), cursor.createdAt), q.and(q.eq(q.field("createdAt"), cursor.createdAt), q.or(q.lt(q.field("threadId"), cursor.threadId), q.and(q.eq(q.field("threadId"), cursor.threadId), q.lt(q.field("itemId"), cursor.itemId)))))
39
+ : q.eq(q.field("tenantId"), args.actor.tenantId))
40
+ .order("desc")
41
+ .take(args.paginationOpts.numItems + 1);
42
+ const result = keysetPageResult(paginated, args.paginationOpts, (approval) => ({
43
+ createdAt: Number(approval.createdAt),
44
+ threadId: String(approval.threadId),
45
+ itemId: String(approval.itemId),
46
+ }));
26
47
  return {
27
- ...paginated,
28
- page: paginated.page.map((approval) => ({
48
+ ...result,
49
+ page: result.page.map((approval) => ({
29
50
  threadId: String(approval.threadId),
30
51
  turnId: String(approval.turnId),
31
52
  itemId: String(approval.itemId),
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/component/approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/component/approvals.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCvB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;KAkDpB,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDvB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;KAkDpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { paginationOptsValidator } from "convex/server";
2
2
  import { v } from "convex/values";
3
3
  import { query } from "./_generated/server.js";
4
+ import { decodeKeysetCursor, keysetPageResult } from "./pagination.js";
4
5
  import { vActorContext } from "./types.js";
5
6
  import { requireThreadForActor, requireTurnForActor } from "./utils.js";
6
7
  export const listByThread = query({
@@ -11,11 +12,19 @@ export const listByThread = query({
11
12
  },
12
13
  handler: async (ctx, args) => {
13
14
  await requireThreadForActor(ctx, args.actor, args.threadId);
14
- const result = await ctx.db
15
+ const cursor = decodeKeysetCursor(args.paginationOpts.cursor);
16
+ const scanned = await ctx.db
15
17
  .query("codex_messages")
16
- .withIndex("tenantId_threadId_createdAt", (q) => q.eq("tenantId", args.actor.tenantId).eq("threadId", args.threadId))
18
+ .withIndex("tenantId_threadId_createdAt_messageId", (q) => q.eq("tenantId", args.actor.tenantId).eq("threadId", args.threadId))
19
+ .filter((q) => cursor
20
+ ? q.or(q.lt(q.field("createdAt"), cursor.createdAt), q.and(q.eq(q.field("createdAt"), cursor.createdAt), q.lt(q.field("messageId"), cursor.messageId)))
21
+ : q.eq(q.field("tenantId"), args.actor.tenantId))
17
22
  .order("desc")
18
- .paginate(args.paginationOpts);
23
+ .take(args.paginationOpts.numItems + 1);
24
+ const result = keysetPageResult(scanned, args.paginationOpts, (message) => ({
25
+ createdAt: Number(message.createdAt),
26
+ messageId: String(message.messageId),
27
+ }));
19
28
  return {
20
29
  ...result,
21
30
  page: result.page.map((message) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PaginationOptions, PaginationResult } from "convex/server";
2
+ export declare function decodeKeysetCursor<T>(cursor: string | null): T | null;
3
+ export declare function encodeKeysetCursor<T>(value: T): string;
4
+ export declare function keysetPageResult<T, Cursor>(items: T[], paginationOpts: PaginationOptions, getCursor: (item: T) => Cursor): PaginationResult<T>;
5
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/component/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAazE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EACxC,KAAK,EAAE,CAAC,EAAE,EACV,cAAc,EAAE,iBAAiB,EACjC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC7B,gBAAgB,CAAC,CAAC,CAAC,CAcrB"}
@@ -0,0 +1,30 @@
1
+ function parseJsonCursor(cursor) {
2
+ if (!cursor) {
3
+ return null;
4
+ }
5
+ try {
6
+ return JSON.parse(cursor);
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ export function decodeKeysetCursor(cursor) {
13
+ return parseJsonCursor(cursor);
14
+ }
15
+ export function encodeKeysetCursor(value) {
16
+ return JSON.stringify(value);
17
+ }
18
+ export function keysetPageResult(items, paginationOpts, getCursor) {
19
+ const page = items.slice(0, paginationOpts.numItems);
20
+ const hasMore = items.length > paginationOpts.numItems;
21
+ const continueCursor = page.length > 0
22
+ ? encodeKeysetCursor(getCursor(page[page.length - 1]))
23
+ : (paginationOpts.cursor ?? "");
24
+ return {
25
+ page,
26
+ isDone: !hasMore,
27
+ continueCursor,
28
+ };
29
+ }
30
+ //# sourceMappingURL=pagination.js.map