@zakstam/codex-local-component 0.1.3 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -42
- package/dist/app-server/client.d.ts +24 -0
- package/dist/app-server/client.d.ts.map +1 -0
- package/dist/app-server/client.js +44 -0
- package/dist/app-server/client.js.map +1 -0
- package/dist/app-server/index.d.ts +2 -0
- package/dist/app-server/index.d.ts.map +1 -0
- package/dist/app-server/index.js +2 -0
- package/dist/app-server/index.js.map +1 -0
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/sync.d.ts +4 -4
- package/dist/client/sync.d.ts.map +1 -1
- package/dist/client/sync.js +4 -4
- package/dist/client/sync.js.map +1 -1
- package/dist/client/types.d.ts +3 -3
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/component.d.ts +190 -5
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/approvals.d.ts.map +1 -1
- package/dist/component/approvals.js +33 -12
- package/dist/component/approvals.js.map +1 -1
- package/dist/component/messages.d.ts.map +1 -1
- package/dist/component/messages.js +12 -3
- package/dist/component/messages.js.map +1 -1
- package/dist/component/pagination.d.ts +5 -0
- package/dist/component/pagination.d.ts.map +1 -0
- package/dist/component/pagination.js +30 -0
- package/dist/component/pagination.js.map +1 -0
- package/dist/component/schema.d.ts +52 -6
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +32 -3
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streams.d.ts +1 -1
- package/dist/component/streams.js +2 -2
- package/dist/component/streams.js.map +1 -1
- package/dist/component/sync.d.ts +94 -5
- package/dist/component/sync.d.ts.map +1 -1
- package/dist/component/sync.js +88 -11
- package/dist/component/sync.js.map +1 -1
- package/dist/component/syncIngest.d.ts +61 -4
- package/dist/component/syncIngest.d.ts.map +1 -1
- package/dist/component/syncIngest.js +346 -150
- package/dist/component/syncIngest.js.map +1 -1
- package/dist/component/syncReplay.d.ts +28 -7
- package/dist/component/syncReplay.d.ts.map +1 -1
- package/dist/component/syncReplay.js +122 -60
- package/dist/component/syncReplay.js.map +1 -1
- package/dist/component/threads.d.ts +38 -0
- package/dist/component/threads.d.ts.map +1 -1
- package/dist/component/threads.js +178 -32
- package/dist/component/threads.js.map +1 -1
- package/dist/component/utils.d.ts.map +1 -1
- package/dist/component/utils.js +4 -3
- package/dist/component/utils.js.map +1 -1
- package/dist/host/convex.d.ts +85 -0
- package/dist/host/convex.d.ts.map +1 -0
- package/dist/host/convex.js +50 -0
- package/dist/host/convex.js.map +1 -0
- package/dist/host/index.d.ts +3 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +3 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/runtime.d.ts +116 -0
- package/dist/host/runtime.d.ts.map +1 -0
- package/dist/host/runtime.js +320 -0
- package/dist/host/runtime.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/classifier.d.ts.map +1 -1
- package/dist/protocol/classifier.js +4 -7
- package/dist/protocol/classifier.js.map +1 -1
- package/dist/react/types.d.ts +10 -0
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/useCodexStreamOverlay.d.ts.map +1 -1
- package/dist/react/useCodexStreamOverlay.js +46 -8
- package/dist/react/useCodexStreamOverlay.js.map +1 -1
- package/package.json +10 -1
package/dist/component/sync.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const ingest: import("convex/server").RegisteredMutation<"public", {
|
|
2
2
|
actor: {
|
|
3
3
|
tenantId: string;
|
|
4
4
|
userId: string;
|
|
@@ -6,12 +6,48 @@ export declare const pushEvents: import("convex/server").RegisteredMutation<"pub
|
|
|
6
6
|
};
|
|
7
7
|
sessionId: string;
|
|
8
8
|
threadId: string;
|
|
9
|
-
|
|
9
|
+
streamDeltas: import("./syncIngest.js").StreamInboundEvent[];
|
|
10
|
+
lifecycleEvents: import("./syncIngest.js").LifecycleInboundEvent[];
|
|
10
11
|
runtime?: import("./syncRuntime.js").SyncRuntimeInput;
|
|
11
12
|
}, Promise<{
|
|
12
|
-
|
|
13
|
+
ackedStreams: Array<{
|
|
14
|
+
streamId: string;
|
|
15
|
+
ackCursorEnd: number;
|
|
16
|
+
}>;
|
|
17
|
+
ingestStatus: "ok" | "partial";
|
|
13
18
|
}>>;
|
|
14
|
-
export declare const
|
|
19
|
+
export declare const ingestSafe: import("convex/server").RegisteredMutation<"public", {
|
|
20
|
+
actor: {
|
|
21
|
+
tenantId: string;
|
|
22
|
+
userId: string;
|
|
23
|
+
deviceId: string;
|
|
24
|
+
};
|
|
25
|
+
sessionId: string;
|
|
26
|
+
threadId: string;
|
|
27
|
+
streamDeltas: import("./syncIngest.js").StreamInboundEvent[];
|
|
28
|
+
lifecycleEvents: import("./syncIngest.js").LifecycleInboundEvent[];
|
|
29
|
+
runtime?: import("./syncRuntime.js").SyncRuntimeInput;
|
|
30
|
+
} & {
|
|
31
|
+
ensureLastEventCursor?: number;
|
|
32
|
+
}, Promise<{
|
|
33
|
+
status: "ok" | "partial" | "session_recovered" | "rejected";
|
|
34
|
+
ingestStatus: "ok" | "partial";
|
|
35
|
+
ackedStreams: Array<{
|
|
36
|
+
streamId: string;
|
|
37
|
+
ackCursorEnd: number;
|
|
38
|
+
}>;
|
|
39
|
+
recovery?: {
|
|
40
|
+
action: "session_rebound";
|
|
41
|
+
sessionId: string;
|
|
42
|
+
threadId: string;
|
|
43
|
+
};
|
|
44
|
+
errors: Array<{
|
|
45
|
+
code: "OUT_OF_ORDER" | "REPLAY_GAP" | "SESSION_DEVICE_MISMATCH" | "SESSION_NOT_FOUND" | "SESSION_THREAD_MISMATCH" | "UNKNOWN";
|
|
46
|
+
message: string;
|
|
47
|
+
recoverable: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
}>>;
|
|
50
|
+
export declare const replay: import("convex/server").RegisteredQuery<"public", {
|
|
15
51
|
actor: {
|
|
16
52
|
tenantId: string;
|
|
17
53
|
userId: string;
|
|
@@ -28,6 +64,16 @@ export declare const pullState: import("convex/server").RegisteredQuery<"public"
|
|
|
28
64
|
streamId: string;
|
|
29
65
|
state: string;
|
|
30
66
|
}[];
|
|
67
|
+
streamWindows: {
|
|
68
|
+
streamId: string;
|
|
69
|
+
status: "ok" | "stale" | "rebased";
|
|
70
|
+
serverCursorStart: number;
|
|
71
|
+
serverCursorEnd: number;
|
|
72
|
+
}[];
|
|
73
|
+
nextCheckpoints: {
|
|
74
|
+
streamId: string;
|
|
75
|
+
cursor: number;
|
|
76
|
+
}[];
|
|
31
77
|
deltas: {
|
|
32
78
|
streamId: string;
|
|
33
79
|
cursorStart: number;
|
|
@@ -42,6 +88,29 @@ export declare const pullState: import("convex/server").RegisteredQuery<"public"
|
|
|
42
88
|
payloadJson: string;
|
|
43
89
|
}[];
|
|
44
90
|
}>>;
|
|
91
|
+
export declare const listCheckpoints: import("convex/server").RegisteredQuery<"public", {
|
|
92
|
+
actor: {
|
|
93
|
+
tenantId: string;
|
|
94
|
+
userId: string;
|
|
95
|
+
deviceId: string;
|
|
96
|
+
};
|
|
97
|
+
threadId: string;
|
|
98
|
+
}, Promise<{
|
|
99
|
+
streamId: string;
|
|
100
|
+
cursor: number;
|
|
101
|
+
}[]>>;
|
|
102
|
+
export declare const upsertCheckpoint: import("convex/server").RegisteredMutation<"public", {
|
|
103
|
+
actor: {
|
|
104
|
+
tenantId: string;
|
|
105
|
+
userId: string;
|
|
106
|
+
deviceId: string;
|
|
107
|
+
};
|
|
108
|
+
threadId: string;
|
|
109
|
+
streamId: string;
|
|
110
|
+
cursor: number;
|
|
111
|
+
}, Promise<{
|
|
112
|
+
ok: true;
|
|
113
|
+
}>>;
|
|
45
114
|
export declare const heartbeat: import("convex/server").RegisteredMutation<"public", {
|
|
46
115
|
actor: {
|
|
47
116
|
tenantId: string;
|
|
@@ -52,7 +121,21 @@ export declare const heartbeat: import("convex/server").RegisteredMutation<"publ
|
|
|
52
121
|
threadId: string;
|
|
53
122
|
lastEventCursor: number;
|
|
54
123
|
}, Promise<null>>;
|
|
55
|
-
export declare const
|
|
124
|
+
export declare const ensureSession: import("convex/server").RegisteredMutation<"public", {
|
|
125
|
+
actor: {
|
|
126
|
+
tenantId: string;
|
|
127
|
+
userId: string;
|
|
128
|
+
deviceId: string;
|
|
129
|
+
};
|
|
130
|
+
sessionId: string;
|
|
131
|
+
threadId: string;
|
|
132
|
+
lastEventCursor: number;
|
|
133
|
+
}, Promise<{
|
|
134
|
+
sessionId: string;
|
|
135
|
+
threadId: string;
|
|
136
|
+
status: "created" | "active";
|
|
137
|
+
}>>;
|
|
138
|
+
export declare const resumeReplay: import("convex/server").RegisteredQuery<"public", {
|
|
56
139
|
actor: {
|
|
57
140
|
tenantId: string;
|
|
58
141
|
userId: string;
|
|
@@ -63,6 +146,12 @@ export declare const resumeFromCursor: import("convex/server").RegisteredQuery<"
|
|
|
63
146
|
fromCursor: number;
|
|
64
147
|
runtime?: import("./syncRuntime.js").SyncRuntimeInput;
|
|
65
148
|
}, Promise<{
|
|
149
|
+
streamWindow: {
|
|
150
|
+
streamId: string;
|
|
151
|
+
status: "ok" | "stale" | "rebased";
|
|
152
|
+
serverCursorStart: number;
|
|
153
|
+
serverCursorEnd: number;
|
|
154
|
+
};
|
|
66
155
|
deltas: {
|
|
67
156
|
cursorStart: number;
|
|
68
157
|
cursorEnd: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/component/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/component/sync.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;GAmBjB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CrB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQjB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;KAM1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;GAS3B,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;iBASpB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;GAaxB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;GASvB,CAAC"}
|
package/dist/component/sync.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { v } from "convex/values";
|
|
2
2
|
import { mutation, query } from "./_generated/server.js";
|
|
3
3
|
import { vActorContext, vSyncRuntimeOptions } from "./types.js";
|
|
4
|
-
import { heartbeatHandler,
|
|
5
|
-
import {
|
|
6
|
-
const
|
|
4
|
+
import { ensureSessionHandler, heartbeatHandler, ingestHandler, ingestSafeHandler, upsertCheckpointHandler, } from "./syncIngest.js";
|
|
5
|
+
import { listCheckpointsHandler, replayHandler, resumeReplayHandler } from "./syncReplay.js";
|
|
6
|
+
const vStreamInboundEvent = v.object({
|
|
7
|
+
type: v.literal("stream_delta"),
|
|
7
8
|
eventId: v.string(),
|
|
8
9
|
turnId: v.string(),
|
|
9
10
|
streamId: v.string(),
|
|
@@ -13,25 +14,87 @@ const vInboundEvent = v.object({
|
|
|
13
14
|
cursorEnd: v.number(),
|
|
14
15
|
createdAt: v.number(),
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
+
const vLifecycleEvent = v.object({
|
|
18
|
+
type: v.literal("lifecycle_event"),
|
|
19
|
+
eventId: v.string(),
|
|
20
|
+
turnId: v.optional(v.string()),
|
|
21
|
+
kind: v.string(),
|
|
22
|
+
payloadJson: v.string(),
|
|
23
|
+
createdAt: v.number(),
|
|
24
|
+
});
|
|
25
|
+
export const ingest = mutation({
|
|
26
|
+
args: {
|
|
27
|
+
actor: vActorContext,
|
|
28
|
+
sessionId: v.string(),
|
|
29
|
+
threadId: v.string(),
|
|
30
|
+
streamDeltas: v.array(vStreamInboundEvent),
|
|
31
|
+
lifecycleEvents: v.array(vLifecycleEvent),
|
|
32
|
+
runtime: v.optional(vSyncRuntimeOptions),
|
|
33
|
+
},
|
|
34
|
+
returns: v.object({
|
|
35
|
+
ackedStreams: v.array(v.object({
|
|
36
|
+
streamId: v.string(),
|
|
37
|
+
ackCursorEnd: v.number(),
|
|
38
|
+
})),
|
|
39
|
+
ingestStatus: v.union(v.literal("ok"), v.literal("partial")),
|
|
40
|
+
}),
|
|
41
|
+
handler: ingestHandler,
|
|
42
|
+
});
|
|
43
|
+
export const ingestSafe = mutation({
|
|
17
44
|
args: {
|
|
18
45
|
actor: vActorContext,
|
|
19
46
|
sessionId: v.string(),
|
|
20
47
|
threadId: v.string(),
|
|
21
|
-
|
|
48
|
+
streamDeltas: v.array(vStreamInboundEvent),
|
|
49
|
+
lifecycleEvents: v.array(vLifecycleEvent),
|
|
50
|
+
ensureLastEventCursor: v.optional(v.number()),
|
|
22
51
|
runtime: v.optional(vSyncRuntimeOptions),
|
|
23
52
|
},
|
|
24
|
-
returns: v.object({
|
|
25
|
-
|
|
53
|
+
returns: v.object({
|
|
54
|
+
status: v.union(v.literal("ok"), v.literal("partial"), v.literal("session_recovered"), v.literal("rejected")),
|
|
55
|
+
ingestStatus: v.union(v.literal("ok"), v.literal("partial")),
|
|
56
|
+
ackedStreams: v.array(v.object({
|
|
57
|
+
streamId: v.string(),
|
|
58
|
+
ackCursorEnd: v.number(),
|
|
59
|
+
})),
|
|
60
|
+
recovery: v.optional(v.object({
|
|
61
|
+
action: v.literal("session_rebound"),
|
|
62
|
+
sessionId: v.string(),
|
|
63
|
+
threadId: v.string(),
|
|
64
|
+
})),
|
|
65
|
+
errors: v.array(v.object({
|
|
66
|
+
code: v.union(v.literal("SESSION_NOT_FOUND"), v.literal("SESSION_THREAD_MISMATCH"), v.literal("SESSION_DEVICE_MISMATCH"), v.literal("OUT_OF_ORDER"), v.literal("REPLAY_GAP"), v.literal("UNKNOWN")),
|
|
67
|
+
message: v.string(),
|
|
68
|
+
recoverable: v.boolean(),
|
|
69
|
+
})),
|
|
70
|
+
}),
|
|
71
|
+
handler: ingestSafeHandler,
|
|
26
72
|
});
|
|
27
|
-
export const
|
|
73
|
+
export const replay = query({
|
|
28
74
|
args: {
|
|
29
75
|
actor: vActorContext,
|
|
30
76
|
threadId: v.string(),
|
|
31
77
|
streamCursorsById: v.array(v.object({ streamId: v.string(), cursor: v.number() })),
|
|
32
78
|
runtime: v.optional(vSyncRuntimeOptions),
|
|
33
79
|
},
|
|
34
|
-
handler:
|
|
80
|
+
handler: replayHandler,
|
|
81
|
+
});
|
|
82
|
+
export const listCheckpoints = query({
|
|
83
|
+
args: {
|
|
84
|
+
actor: vActorContext,
|
|
85
|
+
threadId: v.string(),
|
|
86
|
+
},
|
|
87
|
+
handler: listCheckpointsHandler,
|
|
88
|
+
});
|
|
89
|
+
export const upsertCheckpoint = mutation({
|
|
90
|
+
args: {
|
|
91
|
+
actor: vActorContext,
|
|
92
|
+
threadId: v.string(),
|
|
93
|
+
streamId: v.string(),
|
|
94
|
+
cursor: v.number(),
|
|
95
|
+
},
|
|
96
|
+
returns: v.object({ ok: v.literal(true) }),
|
|
97
|
+
handler: upsertCheckpointHandler,
|
|
35
98
|
});
|
|
36
99
|
export const heartbeat = mutation({
|
|
37
100
|
args: {
|
|
@@ -43,7 +106,21 @@ export const heartbeat = mutation({
|
|
|
43
106
|
returns: v.null(),
|
|
44
107
|
handler: heartbeatHandler,
|
|
45
108
|
});
|
|
46
|
-
export const
|
|
109
|
+
export const ensureSession = mutation({
|
|
110
|
+
args: {
|
|
111
|
+
actor: vActorContext,
|
|
112
|
+
sessionId: v.string(),
|
|
113
|
+
threadId: v.string(),
|
|
114
|
+
lastEventCursor: v.number(),
|
|
115
|
+
},
|
|
116
|
+
returns: v.object({
|
|
117
|
+
sessionId: v.string(),
|
|
118
|
+
threadId: v.string(),
|
|
119
|
+
status: v.union(v.literal("created"), v.literal("active")),
|
|
120
|
+
}),
|
|
121
|
+
handler: ensureSessionHandler,
|
|
122
|
+
});
|
|
123
|
+
export const resumeReplay = query({
|
|
47
124
|
args: {
|
|
48
125
|
actor: vActorContext,
|
|
49
126
|
threadId: v.string(),
|
|
@@ -51,6 +128,6 @@ export const resumeFromCursor = query({
|
|
|
51
128
|
fromCursor: v.number(),
|
|
52
129
|
runtime: v.optional(vSyncRuntimeOptions),
|
|
53
130
|
},
|
|
54
|
-
handler:
|
|
131
|
+
handler: resumeReplayHandler,
|
|
55
132
|
});
|
|
56
133
|
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/component/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/component/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MutationCtx } from "./_generated/server.js";
|
|
2
2
|
import { type SyncRuntimeInput } from "./syncRuntime.js";
|
|
3
|
-
export type
|
|
3
|
+
export type StreamInboundEvent = {
|
|
4
|
+
type: "stream_delta";
|
|
4
5
|
eventId: string;
|
|
5
6
|
turnId: string;
|
|
6
7
|
streamId: string;
|
|
@@ -10,6 +11,15 @@ export type InboundEvent = {
|
|
|
10
11
|
cursorEnd: number;
|
|
11
12
|
createdAt: number;
|
|
12
13
|
};
|
|
14
|
+
export type LifecycleInboundEvent = {
|
|
15
|
+
type: "lifecycle_event";
|
|
16
|
+
eventId: string;
|
|
17
|
+
turnId?: string;
|
|
18
|
+
kind: string;
|
|
19
|
+
payloadJson: string;
|
|
20
|
+
createdAt: number;
|
|
21
|
+
};
|
|
22
|
+
export type InboundEvent = StreamInboundEvent | LifecycleInboundEvent;
|
|
13
23
|
type PushEventsArgs = {
|
|
14
24
|
actor: {
|
|
15
25
|
tenantId: string;
|
|
@@ -18,7 +28,8 @@ type PushEventsArgs = {
|
|
|
18
28
|
};
|
|
19
29
|
sessionId: string;
|
|
20
30
|
threadId: string;
|
|
21
|
-
|
|
31
|
+
streamDeltas: StreamInboundEvent[];
|
|
32
|
+
lifecycleEvents: LifecycleInboundEvent[];
|
|
22
33
|
runtime?: SyncRuntimeInput;
|
|
23
34
|
};
|
|
24
35
|
type HeartbeatArgs = {
|
|
@@ -31,9 +42,55 @@ type HeartbeatArgs = {
|
|
|
31
42
|
threadId: string;
|
|
32
43
|
lastEventCursor: number;
|
|
33
44
|
};
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
type EnsureSessionArgs = HeartbeatArgs;
|
|
46
|
+
type EnsureSessionResult = {
|
|
47
|
+
sessionId: string;
|
|
48
|
+
threadId: string;
|
|
49
|
+
status: "created" | "active";
|
|
50
|
+
};
|
|
51
|
+
type IngestSafeArgs = PushEventsArgs & {
|
|
52
|
+
ensureLastEventCursor?: number;
|
|
53
|
+
};
|
|
54
|
+
type IngestSafeErrorCode = "SESSION_NOT_FOUND" | "SESSION_THREAD_MISMATCH" | "SESSION_DEVICE_MISMATCH" | "OUT_OF_ORDER" | "REPLAY_GAP" | "UNKNOWN";
|
|
55
|
+
type IngestSafeResult = {
|
|
56
|
+
status: "ok" | "partial" | "session_recovered" | "rejected";
|
|
57
|
+
ingestStatus: "ok" | "partial";
|
|
58
|
+
ackedStreams: Array<{
|
|
59
|
+
streamId: string;
|
|
60
|
+
ackCursorEnd: number;
|
|
61
|
+
}>;
|
|
62
|
+
recovery?: {
|
|
63
|
+
action: "session_rebound";
|
|
64
|
+
sessionId: string;
|
|
65
|
+
threadId: string;
|
|
66
|
+
};
|
|
67
|
+
errors: Array<{
|
|
68
|
+
code: IngestSafeErrorCode;
|
|
69
|
+
message: string;
|
|
70
|
+
recoverable: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
};
|
|
73
|
+
export declare function ingestHandler(ctx: MutationCtx, args: PushEventsArgs): Promise<{
|
|
74
|
+
ackedStreams: Array<{
|
|
75
|
+
streamId: string;
|
|
76
|
+
ackCursorEnd: number;
|
|
77
|
+
}>;
|
|
78
|
+
ingestStatus: "ok" | "partial";
|
|
79
|
+
}>;
|
|
80
|
+
export declare function upsertCheckpointHandler(ctx: MutationCtx, args: {
|
|
81
|
+
actor: {
|
|
82
|
+
tenantId: string;
|
|
83
|
+
userId: string;
|
|
84
|
+
deviceId: string;
|
|
85
|
+
};
|
|
86
|
+
threadId: string;
|
|
87
|
+
streamId: string;
|
|
88
|
+
cursor: number;
|
|
89
|
+
}): Promise<{
|
|
90
|
+
ok: true;
|
|
36
91
|
}>;
|
|
92
|
+
export declare function ensureSessionHandler(ctx: MutationCtx, args: EnsureSessionArgs): Promise<EnsureSessionResult>;
|
|
37
93
|
export declare function heartbeatHandler(ctx: MutationCtx, args: HeartbeatArgs): Promise<null>;
|
|
94
|
+
export declare function ingestSafeHandler(ctx: MutationCtx, args: IngestSafeArgs): Promise<IngestSafeResult>;
|
|
38
95
|
export {};
|
|
39
96
|
//# sourceMappingURL=syncIngest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncIngest.d.ts","sourceRoot":"","sources":["../../src/component/syncIngest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAa1D,OAAO,EAUL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAuB1B,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"syncIngest.d.ts","sourceRoot":"","sources":["../../src/component/syncIngest.ts"],"names":[],"mappings":"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"}
|