@laserdata/laser-sdk 0.3.2 → 0.4.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 +44 -24
- package/dist/agent/reliable-consumer.d.ts.map +1 -1
- package/dist/agent/reliable-consumer.js +0 -1
- package/dist/agent/reliable-consumer.js.map +1 -1
- package/dist/agent/router.d.ts.map +1 -1
- package/dist/agent/router.js +0 -1
- package/dist/agent/router.js.map +1 -1
- package/dist/bridges/a2a.d.ts +1 -1
- package/dist/bridges/a2a.js +1 -1
- package/dist/client/connect-options.d.ts +5 -0
- package/dist/client/connect-options.d.ts.map +1 -0
- package/dist/client/connect-options.js +18 -0
- package/dist/client/connect-options.js.map +1 -0
- package/dist/client/laser.d.ts +22 -1
- package/dist/client/laser.d.ts.map +1 -1
- package/dist/client/laser.js +93 -26
- package/dist/client/laser.js.map +1 -1
- package/dist/client/publish-options.d.ts +8 -0
- package/dist/client/publish-options.d.ts.map +1 -0
- package/dist/client/publish-options.js +43 -0
- package/dist/client/publish-options.js.map +1 -0
- package/dist/context-scope.d.ts +8 -2
- package/dist/context-scope.d.ts.map +1 -1
- package/dist/context-scope.js +12 -1
- package/dist/context-scope.js.map +1 -1
- package/dist/context.d.ts +29 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +85 -3
- package/dist/context.js.map +1 -1
- package/dist/conversation-state.d.ts +7 -1
- package/dist/conversation-state.d.ts.map +1 -1
- package/dist/conversation-state.js +6 -0
- package/dist/conversation-state.js.map +1 -1
- package/dist/iggy/apache-iggy.d.ts +22 -4
- package/dist/iggy/apache-iggy.d.ts.map +1 -1
- package/dist/iggy/apache-iggy.js +220 -49
- package/dist/iggy/apache-iggy.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +102 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +161 -0
- package/dist/session.js.map +1 -0
- package/dist/stream/cursor.d.ts +3 -0
- package/dist/stream/cursor.d.ts.map +1 -1
- package/dist/stream/cursor.js +37 -4
- package/dist/stream/cursor.js.map +1 -1
- package/dist/stream/producer.d.ts +1 -0
- package/dist/stream/producer.d.ts.map +1 -1
- package/dist/stream/producer.js +10 -0
- package/dist/stream/producer.js.map +1 -1
- package/dist/stream/stream.d.ts +4 -1
- package/dist/stream/stream.d.ts.map +1 -1
- package/dist/stream/stream.js +11 -1
- package/dist/stream/stream.js.map +1 -1
- package/dist/stream/topic.d.ts +5 -0
- package/dist/stream/topic.d.ts.map +1 -1
- package/dist/stream/topic.js +15 -0
- package/dist/stream/topic.js.map +1 -1
- package/package.json +12 -12
package/dist/context-scope.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContextAssembler, LastN } from "./context.js";
|
|
1
|
+
import { Checkpoint, ContextAssembler, LastN } from "./context.js";
|
|
2
2
|
import { ConversationState } from "./conversation-state.js";
|
|
3
3
|
export class ContextScope {
|
|
4
4
|
laser;
|
|
@@ -24,6 +24,11 @@ export class ContextScope {
|
|
|
24
24
|
const messages = await this.fetch(topics, count);
|
|
25
25
|
return messages.map((message) => new TextDecoder().decode(message.payload)).join("\n");
|
|
26
26
|
}
|
|
27
|
+
/** The current tail of `topics` as a `Checkpoint`: fold up to it with the
|
|
28
|
+
* `at` replay bound or resume after it with `from-checkpoint`. */
|
|
29
|
+
checkpoint(topics) {
|
|
30
|
+
return Checkpoint.capture(this.laser, topics);
|
|
31
|
+
}
|
|
27
32
|
/** Binds a memory namespace or existing handle to this conversation. */
|
|
28
33
|
memory(namespaceOrHandle) {
|
|
29
34
|
const handle = typeof namespaceOrHandle === "string"
|
|
@@ -60,6 +65,12 @@ export class ScopedMemory {
|
|
|
60
65
|
recall() {
|
|
61
66
|
return this.handle.recall().conversation(this.conversation);
|
|
62
67
|
}
|
|
68
|
+
/** Keyword recall for `query` within this conversation. Needs no embedder,
|
|
69
|
+
* so it works on the default log-backed memory. */
|
|
70
|
+
search(query, limit) {
|
|
71
|
+
const recall = this.recall().keyword(query);
|
|
72
|
+
return (limit === undefined ? recall : recall.limit(limit)).fetch();
|
|
73
|
+
}
|
|
63
74
|
context(tokenBudget) {
|
|
64
75
|
return this.handle.context({ conversation: this.conversation }, tokenBudget === undefined ? {} : { tokenBudget });
|
|
65
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-scope.js","sourceRoot":"","sources":["../src/context-scope.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"context-scope.js","sourceRoot":"","sources":["../src/context-scope.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -8,6 +8,25 @@ export interface ContextMessage {
|
|
|
8
8
|
readonly payload: Uint8Array;
|
|
9
9
|
readonly envelope?: AgentEnvelope;
|
|
10
10
|
readonly timestampMicros: bigint;
|
|
11
|
+
/** The name of the topic the message was read from. */
|
|
12
|
+
readonly topic: string;
|
|
13
|
+
}
|
|
14
|
+
/** A point in a conversation's log: the next offset each partition of each
|
|
15
|
+
* topic will write, as captured by `ContextScope.checkpoint`. A client-side
|
|
16
|
+
* bookmark keyed by topic name, never a record on the log. `toJSON` and
|
|
17
|
+
* `Checkpoint.fromJSON` persist it. */
|
|
18
|
+
export declare class Checkpoint {
|
|
19
|
+
private readonly perTopic;
|
|
20
|
+
private constructor();
|
|
21
|
+
static empty(): Checkpoint;
|
|
22
|
+
static capture(laser: Laser, topics: readonly string[]): Promise<Checkpoint>;
|
|
23
|
+
/** The per-partition offsets for `topic`, or `undefined` when the checkpoint
|
|
24
|
+
* was not taken over that topic. */
|
|
25
|
+
topicOffsets(topic: string): ReadonlyMap<number, bigint> | undefined;
|
|
26
|
+
get topics(): readonly string[];
|
|
27
|
+
isEmpty(): boolean;
|
|
28
|
+
toJSON(): Record<string, Record<string, string>>;
|
|
29
|
+
static fromJSON(value: unknown): Checkpoint;
|
|
11
30
|
}
|
|
12
31
|
export interface ContextPolicy {
|
|
13
32
|
select(history: readonly ContextMessage[]): readonly ContextMessage[];
|
|
@@ -39,6 +58,8 @@ interface ContextAssemblerOptions {
|
|
|
39
58
|
readonly topics: readonly string[];
|
|
40
59
|
readonly policy: ContextPolicy;
|
|
41
60
|
readonly fromOffsets: ReadonlyMap<number, bigint>;
|
|
61
|
+
readonly fromCheckpoint?: Checkpoint;
|
|
62
|
+
readonly toCheckpoint?: Checkpoint;
|
|
42
63
|
}
|
|
43
64
|
export declare class ContextAssemblerBuilder {
|
|
44
65
|
private readonly conversation;
|
|
@@ -46,11 +67,19 @@ export declare class ContextAssemblerBuilder {
|
|
|
46
67
|
private selectedTopics;
|
|
47
68
|
private selectedPolicy;
|
|
48
69
|
private offsets;
|
|
70
|
+
private resumeFrom;
|
|
71
|
+
private stopAt;
|
|
49
72
|
constructor(conversation: ConversationId);
|
|
50
73
|
acrossSubconversations(value?: boolean): this;
|
|
51
74
|
topics(topics: readonly string[]): this;
|
|
52
75
|
policy(policy: ContextPolicy): this;
|
|
76
|
+
/** One offset map shared by every topic. `fromCheckpoint` takes precedence
|
|
77
|
+
* for the topics it names. */
|
|
53
78
|
fromOffsets(offsets: ReadonlyMap<number, bigint>): this;
|
|
79
|
+
/** Resume after `checkpoint`, per topic and partition, and read to the tail. */
|
|
80
|
+
fromCheckpoint(checkpoint: Checkpoint): this;
|
|
81
|
+
/** Stop at `checkpoint`, per topic and partition: a point-in-time read. */
|
|
82
|
+
toCheckpoint(checkpoint: Checkpoint): this;
|
|
54
83
|
build(): ContextAssembler;
|
|
55
84
|
}
|
|
56
85
|
export declare class ContextAssembler {
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAWpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -7,6 +7,60 @@ const READ_BATCH = 1_000;
|
|
|
7
7
|
// history. Selection policies want the newest records, so the oldest are the
|
|
8
8
|
// ones dropped.
|
|
9
9
|
const MAX_CONTEXT_RECORDS = 10_000;
|
|
10
|
+
/** A point in a conversation's log: the next offset each partition of each
|
|
11
|
+
* topic will write, as captured by `ContextScope.checkpoint`. A client-side
|
|
12
|
+
* bookmark keyed by topic name, never a record on the log. `toJSON` and
|
|
13
|
+
* `Checkpoint.fromJSON` persist it. */
|
|
14
|
+
export class Checkpoint {
|
|
15
|
+
perTopic;
|
|
16
|
+
constructor(perTopic) {
|
|
17
|
+
this.perTopic = perTopic;
|
|
18
|
+
}
|
|
19
|
+
static empty() {
|
|
20
|
+
return new Checkpoint(new Map());
|
|
21
|
+
}
|
|
22
|
+
static async capture(laser, topics) {
|
|
23
|
+
const entries = await Promise.all(topics.map(async (topic) => [topic, await laser.topic(topic).tailOffsets()]));
|
|
24
|
+
return new Checkpoint(new Map(entries));
|
|
25
|
+
}
|
|
26
|
+
/** The per-partition offsets for `topic`, or `undefined` when the checkpoint
|
|
27
|
+
* was not taken over that topic. */
|
|
28
|
+
topicOffsets(topic) {
|
|
29
|
+
return this.perTopic.get(topic);
|
|
30
|
+
}
|
|
31
|
+
get topics() {
|
|
32
|
+
return [...this.perTopic.keys()];
|
|
33
|
+
}
|
|
34
|
+
isEmpty() {
|
|
35
|
+
return this.perTopic.size === 0;
|
|
36
|
+
}
|
|
37
|
+
toJSON() {
|
|
38
|
+
return Object.fromEntries([...this.perTopic].map(([topic, offsets]) => [
|
|
39
|
+
topic,
|
|
40
|
+
Object.fromEntries([...offsets].map(([partition, offset]) => [String(partition), String(offset)]))
|
|
41
|
+
]));
|
|
42
|
+
}
|
|
43
|
+
static fromJSON(value) {
|
|
44
|
+
const parsed = typeof value === "string" ? JSON.parse(value) : value;
|
|
45
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
46
|
+
throw new TypeError("a checkpoint is an object keyed by topic name");
|
|
47
|
+
}
|
|
48
|
+
const perTopic = new Map();
|
|
49
|
+
for (const [topic, offsets] of Object.entries(parsed)) {
|
|
50
|
+
if (typeof offsets !== "object" || offsets === null || Array.isArray(offsets)) {
|
|
51
|
+
throw new TypeError(`checkpoint topic ${topic} is not an object keyed by partition`);
|
|
52
|
+
}
|
|
53
|
+
perTopic.set(topic, new Map(Object.entries(offsets).map(([partition, offset]) => {
|
|
54
|
+
if (!/^\d+$/.test(partition) ||
|
|
55
|
+
(typeof offset !== "string" && typeof offset !== "number")) {
|
|
56
|
+
throw new TypeError(`checkpoint topic ${topic} has an invalid partition entry`);
|
|
57
|
+
}
|
|
58
|
+
return [Number(partition), BigInt(offset)];
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
return new Checkpoint(perTopic);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
10
64
|
export class LastN {
|
|
11
65
|
count;
|
|
12
66
|
constructor(count) {
|
|
@@ -67,6 +121,8 @@ export class ContextAssemblerBuilder {
|
|
|
67
121
|
selectedTopics = [AgentTopic.Commands, AgentTopic.Responses];
|
|
68
122
|
selectedPolicy = new LastN(50);
|
|
69
123
|
offsets = new Map();
|
|
124
|
+
resumeFrom;
|
|
125
|
+
stopAt;
|
|
70
126
|
constructor(conversation) {
|
|
71
127
|
this.conversation = conversation;
|
|
72
128
|
}
|
|
@@ -82,17 +138,31 @@ export class ContextAssemblerBuilder {
|
|
|
82
138
|
this.selectedPolicy = policy;
|
|
83
139
|
return this;
|
|
84
140
|
}
|
|
141
|
+
/** One offset map shared by every topic. `fromCheckpoint` takes precedence
|
|
142
|
+
* for the topics it names. */
|
|
85
143
|
fromOffsets(offsets) {
|
|
86
144
|
this.offsets = new Map(offsets);
|
|
87
145
|
return this;
|
|
88
146
|
}
|
|
147
|
+
/** Resume after `checkpoint`, per topic and partition, and read to the tail. */
|
|
148
|
+
fromCheckpoint(checkpoint) {
|
|
149
|
+
this.resumeFrom = checkpoint;
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
/** Stop at `checkpoint`, per topic and partition: a point-in-time read. */
|
|
153
|
+
toCheckpoint(checkpoint) {
|
|
154
|
+
this.stopAt = checkpoint;
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
89
157
|
build() {
|
|
90
158
|
return new ContextAssembler({
|
|
91
159
|
conversation: this.conversation,
|
|
92
160
|
acrossSubconversations: this.acrossChildren,
|
|
93
161
|
topics: this.selectedTopics,
|
|
94
162
|
policy: this.selectedPolicy,
|
|
95
|
-
fromOffsets: this.offsets
|
|
163
|
+
fromOffsets: this.offsets,
|
|
164
|
+
...(this.resumeFrom === undefined ? {} : { fromCheckpoint: this.resumeFrom }),
|
|
165
|
+
...(this.stopAt === undefined ? {} : { toCheckpoint: this.stopAt })
|
|
96
166
|
});
|
|
97
167
|
}
|
|
98
168
|
}
|
|
@@ -106,9 +176,20 @@ export class ContextAssembler {
|
|
|
106
176
|
}
|
|
107
177
|
async assemble(laser) {
|
|
108
178
|
const perTopic = await Promise.all(this.options.topics.map(async (topic, topicIndex) => {
|
|
109
|
-
const cursor = await laser.topic(topic).replay({ batchSize: READ_BATCH });
|
|
110
|
-
cursor.fromOffsets(this.options.fromOffsets);
|
|
111
179
|
const collected = [];
|
|
180
|
+
// A topic nobody has written yet has no history, same as in Rust.
|
|
181
|
+
if ((await laser.topic(topic).partitionCount()) === undefined)
|
|
182
|
+
return collected;
|
|
183
|
+
const cursor = await laser.topic(topic).replay({ batchSize: READ_BATCH });
|
|
184
|
+
const resume = this.options.fromCheckpoint?.topicOffsets(topic);
|
|
185
|
+
cursor.fromOffsets(resume ?? this.options.fromOffsets);
|
|
186
|
+
const stop = this.options.toCheckpoint;
|
|
187
|
+
if (stop !== undefined) {
|
|
188
|
+
// A checkpoint holds the next offset to write, so a partition it does
|
|
189
|
+
// not name existed only after it and reads as empty.
|
|
190
|
+
const ends = stop.topicOffsets(topic) ?? new Map();
|
|
191
|
+
cursor.until(new Map([...cursor.offsets.keys()].map((partition) => [partition, ends.get(partition) ?? 0n])));
|
|
192
|
+
}
|
|
112
193
|
for (;;) {
|
|
113
194
|
const records = await cursor.poll();
|
|
114
195
|
if (records.length === 0)
|
|
@@ -125,6 +206,7 @@ export class ContextAssembler {
|
|
|
125
206
|
? { envelope: decoded.message.envelope }
|
|
126
207
|
: {}),
|
|
127
208
|
timestampMicros: record.timestampMicros ?? 0n,
|
|
209
|
+
topic,
|
|
128
210
|
topicIndex
|
|
129
211
|
});
|
|
130
212
|
if (collected.length > MAX_CONTEXT_RECORDS)
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAKxD,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,6EAA6E;AAC7E,gBAAgB;AAChB,MAAM,mBAAmB,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { Laser } from "./client/laser.js";
|
|
2
|
-
import { type ContextMessage } from "./context.js";
|
|
2
|
+
import { type Checkpoint, type ContextMessage } from "./context.js";
|
|
3
3
|
import type { SnapshotStore } from "./snapshot.js";
|
|
4
4
|
import type { ConversationId } from "./types/ids.js";
|
|
5
5
|
import { type FoldSnapshot } from "./wire/snapshot.js";
|
|
6
6
|
export type ReplayBound = {
|
|
7
7
|
readonly kind: "from-offsets";
|
|
8
8
|
readonly offsets: ReadonlyMap<number, bigint>;
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: "from-checkpoint";
|
|
11
|
+
readonly checkpoint: Checkpoint;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "at";
|
|
14
|
+
readonly checkpoint: Checkpoint;
|
|
9
15
|
} | {
|
|
10
16
|
readonly kind: "last";
|
|
11
17
|
readonly count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-state.d.ts","sourceRoot":"","sources":["../src/conversation-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"conversation-state.d.ts","sourceRoot":"","sources":["../src/conversation-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAA2B,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7B,eAAO,MAAM,WAAW,EAAE,WAA8B,CAAA;AAExD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjF;AAED,iBAAe,IAAI,CAAC,KAAK,EACvB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,cAAc,EAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,KAAK,KAAK,GACrD,OAAO,CAAC,KAAK,CAAC,CAehB;AAED,iBAAe,QAAQ,CAAC,KAAK,EAC3B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,cAAc,EAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,EACzC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,KAAK,KAAK,GACrD,OAAO,CAAC,KAAK,CAAC,CAYhB;AAED,eAAO,MAAM,iBAAiB;;;CAA8B,CAAA"}
|
|
@@ -16,6 +16,12 @@ async function load(laser, conversation, topics, bound, initial, fold) {
|
|
|
16
16
|
if (bound.kind === "from-offsets") {
|
|
17
17
|
builder.policy(new LastN(Number.MAX_SAFE_INTEGER)).fromOffsets(bound.offsets);
|
|
18
18
|
}
|
|
19
|
+
if (bound.kind === "from-checkpoint") {
|
|
20
|
+
builder.policy(new LastN(Number.MAX_SAFE_INTEGER)).fromCheckpoint(bound.checkpoint);
|
|
21
|
+
}
|
|
22
|
+
if (bound.kind === "at") {
|
|
23
|
+
builder.policy(new LastN(Number.MAX_SAFE_INTEGER)).toCheckpoint(bound.checkpoint);
|
|
24
|
+
}
|
|
19
25
|
const history = await builder.build().assemble(laser);
|
|
20
26
|
return history.reduce(fold, initial);
|
|
21
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-state.js","sourceRoot":"","sources":["../src/conversation-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"conversation-state.js","sourceRoot":"","sources":["../src/conversation-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAwC,MAAM,cAAc,CAAA;AAG5F,OAAO,EAAE,wBAAwB,EAAqB,MAAM,oBAAoB,CAAA;AAShF,MAAM,CAAC,MAAM,WAAW,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AAExD,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;QAC3C,SAAS;QACT,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC9C,CAAC,CACH,CAAA;AACH,CAAC;AAED,KAAK,UAAU,IAAI,CACjB,KAAY,EACZ,YAA4B,EAC5B,MAAyB,EACzB,KAAkB,EAClB,OAAc,EACd,IAAsD;IAEtD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC7E,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAY,EACZ,KAAoB,EACpB,YAA4B,EAC5B,MAAyB,EACzB,OAAc,EACd,WAAyC,EACzC,IAAsD;IAEtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACjD,OAAO,IAAI,CACT,KAAK,EACL,YAAY,EACZ,MAAM,EACN,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,EAC9D,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC9D,IAAI,CACL,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAW,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PublishOptions } from "../client/publish-options.js";
|
|
1
2
|
import { SimpleClient } from "apache-iggy";
|
|
2
3
|
import type { ClientCredentials, SendMessagesConfirmation, SendMessagesResponse } from "apache-iggy";
|
|
3
4
|
import type { PollingStrategy } from "../stream/polling-strategy.js";
|
|
@@ -80,12 +81,14 @@ export type ConsumerOffsetTarget = {
|
|
|
80
81
|
readonly name: string;
|
|
81
82
|
};
|
|
82
83
|
export interface LaserTransport {
|
|
84
|
+
readonly publishRetriesManaged?: boolean;
|
|
83
85
|
readonly kind: "apache-iggy";
|
|
84
86
|
readonly iggyClient: SimpleClient;
|
|
85
87
|
sendManaged(code: number, payload: Uint8Array, options?: {
|
|
86
88
|
readonly retryAfterReconnect?: boolean;
|
|
87
89
|
}): Promise<Uint8Array>;
|
|
88
90
|
ensureStream(name: string): Promise<void>;
|
|
91
|
+
deleteStream(name: string): Promise<boolean>;
|
|
89
92
|
ensureTopic(streamId: string, topicId: string, partitions: number): Promise<void>;
|
|
90
93
|
ensureTopicWithExpiry?(streamId: string, topicId: string, partitions: number, messageExpiryMicros: bigint): Promise<void>;
|
|
91
94
|
findTopicPartitionCount(streamId: string, topicId: string): Promise<number | undefined>;
|
|
@@ -101,7 +104,7 @@ export interface LaserTransport {
|
|
|
101
104
|
sendMessages(streamId: string, topicId: string, payloads: readonly Uint8Array[], routing: Routing): Promise<SendMessagesResponse>;
|
|
102
105
|
/** Sends one message with exact headers and optional key or partition routing. */
|
|
103
106
|
sendMessageWithHeaders(streamId: string, topicId: string, payload: Uint8Array, headers: ReadonlyMap<string, IggyHeaderValue>, partitionKey?: string | Uint8Array, partitionId?: number): Promise<SendMessagesResponse>;
|
|
104
|
-
sendMessagesWithHeaders(streamId: string, topicId: string, messages: readonly MessageWithHeaders[], partitionKey?: string | Uint8Array, partitionId?: number): Promise<SendMessagesResponse>;
|
|
107
|
+
sendMessagesWithHeaders(streamId: string, topicId: string, messages: readonly MessageWithHeaders[], partitionKey?: string | Uint8Array, partitionId?: number, options?: Partial<PublishOptions>): Promise<SendMessagesResponse>;
|
|
105
108
|
pollMessages(streamId: string, topicId: string, target: ConsumerTarget, strategy: PollingStrategy, count: number, autoCommit: boolean): Promise<readonly PolledMessage[]>;
|
|
106
109
|
storeOffset(streamId: string, topicId: string, target: ConsumerTarget, partitionId: number, offset: bigint): Promise<void>;
|
|
107
110
|
getConsumerOffset?(streamId: string, topicId: string, target: ConsumerOffsetTarget, partitionId: number): Promise<{
|
|
@@ -125,12 +128,25 @@ interface ParsedConnectionString {
|
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
130
|
export declare function parseConnectionString(connectionString: string, env?: Readonly<Record<string, string | undefined>>): ParsedConnectionString;
|
|
131
|
+
export interface ClientConnectionEvents {
|
|
132
|
+
readonly redirecting: boolean;
|
|
133
|
+
on(event: "error", listener: (cause?: unknown) => void): void;
|
|
134
|
+
on(event: "disconnected", listener: (hadError: boolean) => void): void;
|
|
135
|
+
once(event: "error", listener: (cause?: unknown) => void): void;
|
|
136
|
+
once(event: "connect", listener: () => void): void;
|
|
137
|
+
off(event: "error", listener: (cause?: unknown) => void): void;
|
|
138
|
+
off(event: "connect", listener: () => void): void;
|
|
139
|
+
}
|
|
140
|
+
export declare function watchConnectionLoss(connection: ClientConnectionEvents, onLost: () => void): void;
|
|
128
141
|
export declare class ApacheIggyTransport implements LaserTransport {
|
|
129
142
|
private client;
|
|
130
143
|
private readonly connection;
|
|
131
144
|
private readonly ownership;
|
|
145
|
+
private readonly publishConfig;
|
|
132
146
|
readonly kind: "apache-iggy";
|
|
147
|
+
readonly publishRetriesManaged = true;
|
|
133
148
|
private readonly reconnectLock;
|
|
149
|
+
private readonly publishLane;
|
|
134
150
|
private readonly disconnected;
|
|
135
151
|
private readonly consumerGroups;
|
|
136
152
|
private readonly partitionCounts;
|
|
@@ -138,8 +154,8 @@ export declare class ApacheIggyTransport implements LaserTransport {
|
|
|
138
154
|
private closed;
|
|
139
155
|
private constructor();
|
|
140
156
|
get iggyClient(): SimpleClient;
|
|
141
|
-
static connect(connectionString: string): Promise<ApacheIggyTransport>;
|
|
142
|
-
static fromClient(client: SimpleClient, ownership?: ClientOwnership): Promise<ApacheIggyTransport>;
|
|
157
|
+
static connect(connectionString: string, options?: Partial<PublishOptions>, deadline?: number): Promise<ApacheIggyTransport>;
|
|
158
|
+
static fromClient(client: SimpleClient, ownership?: ClientOwnership, options?: Partial<PublishOptions>, deadline?: number): Promise<ApacheIggyTransport>;
|
|
143
159
|
private execute;
|
|
144
160
|
private reconnect;
|
|
145
161
|
private watch;
|
|
@@ -147,6 +163,7 @@ export declare class ApacheIggyTransport implements LaserTransport {
|
|
|
147
163
|
readonly retryAfterReconnect?: boolean;
|
|
148
164
|
}): Promise<Uint8Array>;
|
|
149
165
|
ensureStream(name: string): Promise<void>;
|
|
166
|
+
deleteStream(name: string): Promise<boolean>;
|
|
150
167
|
ensureTopic(streamId: string, topicId: string, partitions: number): Promise<void>;
|
|
151
168
|
ensureTopicWithExpiry(streamId: string, topicId: string, partitions: number, messageExpiryMicros: bigint): Promise<void>;
|
|
152
169
|
findTopicPartitionCount(streamId: string, topicId: string): Promise<number | undefined>;
|
|
@@ -159,9 +176,10 @@ export declare class ApacheIggyTransport implements LaserTransport {
|
|
|
159
176
|
readonly stream: string;
|
|
160
177
|
readonly topic: string;
|
|
161
178
|
} | undefined>;
|
|
179
|
+
private publish;
|
|
162
180
|
sendMessages(streamId: string, topicId: string, payloads: readonly Uint8Array[], routing: Routing): Promise<SendMessagesResponse>;
|
|
163
181
|
sendMessageWithHeaders(streamId: string, topicId: string, payload: Uint8Array, headers: ReadonlyMap<string, IggyHeaderValue>, partitionKey?: string | Uint8Array, partitionId?: number): Promise<SendMessagesResponse>;
|
|
164
|
-
sendMessagesWithHeaders(streamId: string, topicId: string, messages: readonly MessageWithHeaders[], partitionKey?: string | Uint8Array, partitionId?: number): Promise<SendMessagesResponse>;
|
|
182
|
+
sendMessagesWithHeaders(streamId: string, topicId: string, messages: readonly MessageWithHeaders[], partitionKey?: string | Uint8Array, partitionId?: number, options?: Partial<PublishOptions>): Promise<SendMessagesResponse>;
|
|
165
183
|
pollMessages(streamId: string, topicId: string, target: ConsumerTarget, strategy: PollingStrategy, count: number, autoCommit: boolean): Promise<readonly PolledMessage[]>;
|
|
166
184
|
storeOffset(streamId: string, topicId: string, target: ConsumerTarget, partitionId: number, offset: bigint): Promise<void>;
|
|
167
185
|
getConsumerOffset(streamId: string, topicId: string, target: ConsumerOffsetTarget, partitionId: number): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apache-iggy.d.ts","sourceRoot":"","sources":["../../src/iggy/apache-iggy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apache-iggy.d.ts","sourceRoot":"","sources":["../../src/iggy/apache-iggy.ts"],"names":[],"mappings":"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"}
|