@tessar/core 0.1.0-alpha.0 → 0.1.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 (147) hide show
  1. package/README.md +168 -31
  2. package/dist/agent.d.ts +37 -87
  3. package/dist/agent.js +101 -1116
  4. package/dist/agent.js.map +1 -1
  5. package/dist/controller.d.ts +13 -4
  6. package/dist/controller.js +184 -19
  7. package/dist/controller.js.map +1 -1
  8. package/dist/engine/call.d.ts +8 -0
  9. package/dist/engine/call.js +136 -0
  10. package/dist/engine/call.js.map +1 -0
  11. package/dist/engine/checkpoint.d.ts +11 -0
  12. package/dist/engine/checkpoint.js +187 -0
  13. package/dist/engine/checkpoint.js.map +1 -0
  14. package/dist/engine/delivery.js +6 -13
  15. package/dist/engine/delivery.js.map +1 -1
  16. package/dist/engine/execution.d.ts +5 -0
  17. package/dist/engine/execution.js +292 -0
  18. package/dist/engine/execution.js.map +1 -0
  19. package/dist/engine/frame.d.ts +77 -0
  20. package/dist/engine/frame.js +83 -0
  21. package/dist/engine/frame.js.map +1 -0
  22. package/dist/engine/hooks.d.ts +4 -0
  23. package/dist/engine/hooks.js +138 -0
  24. package/dist/engine/hooks.js.map +1 -0
  25. package/dist/engine/interrupt.d.ts +1 -1
  26. package/dist/engine/lineage.d.ts +1 -1
  27. package/dist/engine/recovery.d.ts +1 -2
  28. package/dist/engine/recovery.js +4 -2
  29. package/dist/engine/recovery.js.map +1 -1
  30. package/dist/engine/resume.d.ts +12 -1
  31. package/dist/engine/resume.js +189 -0
  32. package/dist/engine/resume.js.map +1 -1
  33. package/dist/engine/runtime.d.ts +16 -0
  34. package/dist/engine/runtime.js +29 -0
  35. package/dist/engine/runtime.js.map +1 -0
  36. package/dist/engine/services.d.ts +3 -0
  37. package/dist/engine/services.js +125 -0
  38. package/dist/engine/services.js.map +1 -0
  39. package/dist/engine/tool-executor.d.ts +8 -2
  40. package/dist/engine/tool-executor.js +266 -3
  41. package/dist/engine/tool-executor.js.map +1 -1
  42. package/dist/engine/tracked-effects.js +5 -6
  43. package/dist/engine/tracked-effects.js.map +1 -1
  44. package/dist/errors.js +24 -9
  45. package/dist/errors.js.map +1 -1
  46. package/dist/events/definition.d.ts +2 -0
  47. package/dist/events/definition.js +2 -0
  48. package/dist/events/definition.js.map +1 -1
  49. package/dist/events/dispatcher.d.ts +1 -1
  50. package/dist/events/dispatcher.js +35 -4
  51. package/dist/events/dispatcher.js.map +1 -1
  52. package/dist/events/observer.d.ts +3 -0
  53. package/dist/events/observer.js +13 -0
  54. package/dist/events/observer.js.map +1 -0
  55. package/dist/events/{catalog.d.ts → type.d.ts} +170 -47
  56. package/dist/events/type.js +175 -0
  57. package/dist/events/type.js.map +1 -0
  58. package/dist/identity.d.ts +1 -0
  59. package/dist/identity.js +23 -0
  60. package/dist/identity.js.map +1 -0
  61. package/dist/index.d.ts +4 -2
  62. package/dist/index.js +4 -2
  63. package/dist/index.js.map +1 -1
  64. package/dist/instructions/instruction.d.ts +2 -0
  65. package/dist/instructions/instruction.js +10 -3
  66. package/dist/instructions/instruction.js.map +1 -1
  67. package/dist/loop.d.ts +5 -5
  68. package/dist/loop.js +44 -204
  69. package/dist/loop.js.map +1 -1
  70. package/dist/messages/codec.js +4 -2
  71. package/dist/messages/codec.js.map +1 -1
  72. package/dist/messages/message.d.ts +2 -3
  73. package/dist/messages/message.js +3 -3
  74. package/dist/messages/message.js.map +1 -1
  75. package/dist/models/contract.d.ts +15 -0
  76. package/dist/models/options.d.ts +3 -0
  77. package/dist/models/options.js +13 -0
  78. package/dist/models/options.js.map +1 -0
  79. package/dist/models/registry.d.ts +2 -0
  80. package/dist/models/registry.js +18 -1
  81. package/dist/models/registry.js.map +1 -1
  82. package/dist/models/resolver.d.ts +4 -2
  83. package/dist/models/resolver.js +9 -4
  84. package/dist/models/resolver.js.map +1 -1
  85. package/dist/models/stream.d.ts +6 -0
  86. package/dist/models/stream.js +61 -2
  87. package/dist/models/stream.js.map +1 -1
  88. package/dist/plugins/context.d.ts +27 -2
  89. package/dist/plugins/host.d.ts +5 -1
  90. package/dist/plugins/host.js +33 -11
  91. package/dist/plugins/host.js.map +1 -1
  92. package/dist/plugins/registry.d.ts +1 -1
  93. package/dist/plugins/registry.js +18 -10
  94. package/dist/plugins/registry.js.map +1 -1
  95. package/dist/session.d.ts +16 -6
  96. package/dist/session.js +126 -55
  97. package/dist/session.js.map +1 -1
  98. package/dist/state/commit.d.ts +5 -0
  99. package/dist/state/commit.js +50 -5
  100. package/dist/state/commit.js.map +1 -1
  101. package/dist/state/fork.js +27 -6
  102. package/dist/state/fork.js.map +1 -1
  103. package/dist/state/memory-backend.js +307 -38
  104. package/dist/state/memory-backend.js.map +1 -1
  105. package/dist/state/plugin-state.js +73 -18
  106. package/dist/state/plugin-state.js.map +1 -1
  107. package/dist/state/queries.d.ts +14 -14
  108. package/dist/state/queries.js +150 -48
  109. package/dist/state/queries.js.map +1 -1
  110. package/dist/state/schema.d.ts +47 -6
  111. package/dist/state/schema.js +9 -1
  112. package/dist/state/schema.js.map +1 -1
  113. package/dist/state/scope.js +3 -2
  114. package/dist/state/scope.js.map +1 -1
  115. package/dist/state/sessions.d.ts +2 -0
  116. package/dist/state/sessions.js +21 -0
  117. package/dist/state/sessions.js.map +1 -0
  118. package/dist/state/storage-ports.d.ts +16 -2
  119. package/dist/state/threads.d.ts +1 -0
  120. package/dist/state/threads.js +77 -12
  121. package/dist/state/threads.js.map +1 -1
  122. package/dist/testing/harness.d.ts +2 -1
  123. package/dist/testing/harness.js +6 -4
  124. package/dist/testing/harness.js.map +1 -1
  125. package/dist/testing/scripted-provider.d.ts +1 -0
  126. package/dist/testing/scripted-provider.js +7 -0
  127. package/dist/testing/scripted-provider.js.map +1 -1
  128. package/dist/testing/storage-conformance.js +111 -0
  129. package/dist/testing/storage-conformance.js.map +1 -1
  130. package/dist/thread.d.ts +4 -2
  131. package/dist/thread.js +14 -6
  132. package/dist/thread.js.map +1 -1
  133. package/dist/tools/tool.d.ts +11 -12
  134. package/dist/tools/tool.js +27 -10
  135. package/dist/tools/tool.js.map +1 -1
  136. package/dist/trace/records.d.ts +11 -6
  137. package/dist/trace/records.js +28 -1
  138. package/dist/trace/records.js.map +1 -1
  139. package/package.json +7 -1
  140. package/dist/events/catalog.js +0 -89
  141. package/dist/events/catalog.js.map +0 -1
  142. package/dist/models/cache.d.ts +0 -12
  143. package/dist/models/cache.js +0 -17
  144. package/dist/models/cache.js.map +0 -1
  145. package/dist/session-events.d.ts +0 -60
  146. package/dist/session-events.js +0 -14
  147. package/dist/session-events.js.map +0 -1
package/dist/session.js CHANGED
@@ -1,15 +1,21 @@
1
+ import { notifyObserver } from "./events/observer.js";
2
+ import { session as sessionHooks, stream as streamHooks, } from "./events/type.js";
1
3
  import { Thread } from "./thread.js";
2
- import { AgentEvents } from "./events/catalog.js";
3
4
  import { EventEnvelope, } from "./events/definition.js";
4
- import { SessionEvents, } from "./session-events.js";
5
+ import {} from "./events/type.js";
5
6
  import { errorInfo, errorFromInfo, fail } from "./errors.js";
6
- import { immutable, randomIds } from "./json.js";
7
+ import { immutable, randomIds, } from "./json.js";
7
8
  import { inputMessages } from "./agent.js";
8
- import { normalizeScope } from "./state/scope.js";
9
+ import { canonicalJson } from "./state/commit.js";
9
10
  export class Session {
10
11
  controller;
12
+ record;
11
13
  agent;
12
14
  scope;
15
+ id;
16
+ get metadata() {
17
+ return this.record.metadata;
18
+ }
13
19
  selection = null;
14
20
  selectedModel;
15
21
  observers = new Set();
@@ -20,16 +26,55 @@ export class Session {
20
26
  closing = false;
21
27
  disposal;
22
28
  sequence = 0;
23
- constructor(controller, options = {}) {
29
+ controlPending = false;
30
+ async control(action) {
31
+ this.check();
32
+ if (this.controlPending)
33
+ fail("SessionBusy", "Session control operation is pending");
34
+ this.controlPending = true;
35
+ try {
36
+ await this.assertCurrent();
37
+ return await action();
38
+ }
39
+ finally {
40
+ this.controlPending = false;
41
+ }
42
+ }
43
+ constructor(controller, record, model, thread = null) {
24
44
  this.controller = controller;
45
+ this.record = record;
25
46
  controller.requireReady();
26
47
  this.agent = controller.agent;
27
- this.scope = normalizeScope(options.scope);
28
- this.selectedModel = controller.resolveModel(options.model ?? this.agent.model);
29
- queueMicrotask(() => {
30
- if (!this.disposed)
31
- this.notify(SessionEvents.Created, { model: this.model.ref });
48
+ this.scope = record.scope;
49
+ this.id = record.id;
50
+ this.selection = thread;
51
+ this.selectedModel = model;
52
+ }
53
+ /** @internal Called only after durable creation, never on restoration. */
54
+ created() {
55
+ this.notify(sessionHooks.created, { model: this.model.ref });
56
+ }
57
+ async persist(patch) {
58
+ const previous = this.record;
59
+ const next = immutable({
60
+ ...previous,
61
+ ...patch,
62
+ revision: previous.revision + 1,
63
+ updatedAt: this.agent.clock.now(),
32
64
  });
65
+ await this.controller.backend.sessions.compareAndSet(next, previous.revision);
66
+ this.record = next;
67
+ }
68
+ async assertCurrent() {
69
+ const expected = this.record;
70
+ const stored = await this.controller.backend.sessions.get(this.id, {
71
+ scope: this.scope,
72
+ });
73
+ this.check();
74
+ if (!stored ||
75
+ stored.revision !== expected.revision ||
76
+ this.record !== expected)
77
+ fail("CommitConflict", "Session changed; restore a current handle");
33
78
  }
34
79
  get model() {
35
80
  return this.selectedModel;
@@ -62,12 +107,13 @@ export class Session {
62
107
  return thread;
63
108
  }
64
109
  setModel(model) {
65
- this.check();
66
- const previous = this.model.ref;
67
- this.selectedModel = this.controller.resolveModel(model);
68
- this.notify(SessionEvents.ModelChanged, {
69
- previous,
70
- model: this.model.ref,
110
+ return this.control(async () => {
111
+ const previous = this.model.ref, selected = this.controller.sessionModel(model), next = selected.model;
112
+ await this.controller.hooks.authorize(sessionHooks.model.beforeChange, immutable({ previous, model: next.ref }), this.context());
113
+ this.check();
114
+ await this.persist({ selectedModel: selected.stored });
115
+ this.selectedModel = next;
116
+ this.notify(sessionHooks.modelChanged, { previous, model: next.ref });
71
117
  });
72
118
  }
73
119
  subscribe(nameOrObserver, observer) {
@@ -76,7 +122,7 @@ export class Session {
76
122
  ? nameOrObserver
77
123
  : (event) => {
78
124
  if (event.type === nameOrObserver)
79
- observer(event);
125
+ return observer(event);
80
126
  };
81
127
  this.observers.add(handler);
82
128
  return () => {
@@ -84,20 +130,13 @@ export class Session {
84
130
  };
85
131
  }
86
132
  emit(event) {
87
- for (const observer of [...this.observers]) {
88
- try {
89
- const result = observer(event);
90
- if (result &&
91
- typeof result.then === "function")
92
- void Promise.resolve(result).catch((error) => this.controller.report(errorInfo(error, { source: "application", eventId: event.type }), event));
93
- }
94
- catch (error) {
95
- this.controller.report(errorInfo(error, { source: "application", eventId: event.type }), event);
96
- }
97
- }
133
+ for (const observer of [...this.observers])
134
+ notifyObserver(observer, event, this.controller.report);
98
135
  }
99
136
  context() {
100
137
  return {
138
+ session: this,
139
+ sessionId: this.id,
101
140
  controllerId: this.controller.id,
102
141
  agentId: this.agent.id,
103
142
  scope: this.scope,
@@ -114,31 +153,39 @@ export class Session {
114
153
  .catch((error) => this.controller.report(errorInfo(error)));
115
154
  }
116
155
  thread = {
117
- create: async (options = {}) => {
156
+ create: (options = {}) => this.control(async () => {
118
157
  this.checkSelectionChange();
119
158
  const thread = await this.controller.createThread({
120
159
  ...options,
121
160
  scope: this.scope,
122
161
  });
123
162
  this.checkSelectionChange();
163
+ await this.persist({ selectedThreadId: thread.id });
124
164
  this.selection = thread;
125
- this.notify(SessionEvents.ThreadCreated, { threadId: thread.id });
165
+ this.notify(sessionHooks.threadCreated, { threadId: thread.id });
126
166
  return thread;
127
- },
128
- switch: async (id) => {
167
+ }),
168
+ switch: (id) => this.control(async () => {
129
169
  this.checkSelectionChange();
130
- const thread = await this.target(id), snapshot = await thread.snapshot();
170
+ const thread = await this.target(id);
131
171
  this.checkSelectionChange();
132
172
  const previousThreadId = this.selection?.id ?? null;
173
+ await this.controller.hooks.authorize(sessionHooks.thread.beforeSwitch, immutable({ previousThreadId, threadId: id }), this.context());
174
+ this.checkSelectionChange();
175
+ const snapshot = await thread.snapshot();
176
+ this.checkSelectionChange();
177
+ await this.persist({ selectedThreadId: thread.id });
133
178
  this.selection = thread;
134
179
  if (snapshot.activeStreamId)
135
180
  this.blocked.add(id);
136
- this.notify(SessionEvents.ThreadSwitched, {
181
+ else
182
+ this.blocked.delete(id);
183
+ this.notify(sessionHooks.threadSwitched, {
137
184
  previousThreadId,
138
185
  threadId: id,
139
186
  });
140
187
  return thread;
141
- },
188
+ }),
142
189
  get: (id) => {
143
190
  this.check();
144
191
  return this.controller.getThread(id, { scope: this.scope });
@@ -148,32 +195,47 @@ export class Session {
148
195
  this.check();
149
196
  return this.controller.listThreads({ ...options, scope: this.scope });
150
197
  },
151
- rename: async (title, target = {}) => {
198
+ rename: (title, target = {}) => this.control(async () => {
152
199
  this.check();
153
200
  const id = this.selected(target.threadId);
154
201
  await this.controller.renameThread(id, title, { scope: this.scope });
155
- this.notify(SessionEvents.ThreadRenamed, { threadId: id, title });
156
- },
157
- fork: async (options = {}) => {
202
+ this.notify(sessionHooks.threadRenamed, { threadId: id, title });
203
+ }),
204
+ fork: (options = {}) => this.control(async () => {
158
205
  this.check();
159
206
  const sourceThreadId = this.selected(options.threadId), thread = await this.controller.forkThread(sourceThreadId, {
160
207
  ...options,
161
208
  scope: this.scope,
162
209
  });
163
- this.notify(SessionEvents.ThreadForked, {
210
+ this.notify(sessionHooks.threadForked, {
164
211
  sourceThreadId,
165
212
  threadId: thread.id,
166
213
  });
167
214
  return thread;
168
- },
169
- delete: async (target = {}) => {
215
+ }),
216
+ delete: (target = {}) => this.control(async () => {
170
217
  this.check();
171
218
  const id = this.selected(target.threadId);
172
219
  await this.controller.deleteThread(id, { scope: this.scope });
220
+ const stored = await this.controller.backend.sessions.get(this.id, {
221
+ scope: this.scope,
222
+ });
223
+ const expected = {
224
+ ...this.record,
225
+ selectedThreadId: this.record.selectedThreadId === id
226
+ ? null
227
+ : this.record.selectedThreadId,
228
+ revision: this.record.revision +
229
+ (this.record.selectedThreadId === id ? 1 : 0),
230
+ updatedAt: stored?.updatedAt,
231
+ };
232
+ if (!stored || canonicalJson(stored) !== canonicalJson(expected))
233
+ fail("CommitConflict", "Session changed during thread deletion; restore a current handle");
234
+ this.record = stored;
173
235
  if (this.selection?.id === id)
174
236
  this.selection = null;
175
- this.notify(SessionEvents.ThreadDeleted, { threadId: id });
176
- },
237
+ this.notify(sessionHooks.threadDeleted, { threadId: id });
238
+ }),
177
239
  getHistory: async (options = {}) => {
178
240
  this.check();
179
241
  return (await this.target(options.threadId)).getHistory(options);
@@ -183,6 +245,7 @@ export class Session {
183
245
  this.check();
184
246
  if (!this.selection)
185
247
  fail("ThreadNotSelected", "Select or create a Thread first");
248
+ await this.assertCurrent();
186
249
  const receipt = immutable({
187
250
  id: randomIds.next("input"),
188
251
  threadId: this.selection.id,
@@ -190,16 +253,17 @@ export class Session {
190
253
  this.queue.push({
191
254
  receipt,
192
255
  thread: this.selection,
193
- model: immutable(this.model.ref),
256
+ model: immutable(this.record.selectedModel.ref),
257
+ modelOptions: this.record.selectedModel.options,
194
258
  messages: inputMessages(input),
195
259
  });
196
- this.notify(SessionEvents.InputQueued, { receipt });
260
+ this.notify(sessionHooks.inputQueued, { receipt });
197
261
  queueMicrotask(() => this.pump());
198
262
  return receipt;
199
263
  }
200
264
  discard(cause) {
201
265
  for (const entry of this.queue.splice(0))
202
- this.notify(SessionEvents.InputDiscarded, {
266
+ this.notify(sessionHooks.inputDiscarded, {
203
267
  receipt: entry.receipt,
204
268
  cause,
205
269
  });
@@ -213,7 +277,11 @@ export class Session {
213
277
  this.blocked.has(this.queue[0].thread.id))
214
278
  return;
215
279
  const entry = this.queue.shift();
216
- void this.attach(entry.thread, { input: entry.messages, model: entry.model }, true).catch(() => { });
280
+ void this.attach(entry.thread, {
281
+ input: entry.messages,
282
+ model: entry.model,
283
+ modelOptions: entry.modelOptions,
284
+ }, true).catch(() => { });
217
285
  }
218
286
  attach(thread, options, input) {
219
287
  const previous = this.foreground;
@@ -261,16 +329,16 @@ export class Session {
261
329
  },
262
330
  rejected,
263
331
  observe: (event) => {
264
- if (event.is(AgentEvents.StreamEnd))
332
+ if (event.is(streamHooks.end))
265
333
  foreground.status = event.payload.status;
266
- if (event.is(AgentEvents.StreamSuspended))
334
+ if (event.is(streamHooks.suspended))
267
335
  foreground.status = "suspended";
268
- if (event.is(AgentEvents.StreamError))
336
+ if (event.is(streamHooks.error))
269
337
  foreground.status = event.payload.persistedStatus ?? "failed";
270
338
  this.emit(event);
271
339
  },
272
340
  closed,
273
- });
341
+ }, this);
274
342
  }
275
343
  catch (error) {
276
344
  foreground.status = "failed";
@@ -283,6 +351,7 @@ export class Session {
283
351
  this.check();
284
352
  if (this.busy)
285
353
  fail("SessionBusy", "Session has active work");
354
+ await this.assertCurrent();
286
355
  const thread = await this.target();
287
356
  if (this.busy)
288
357
  fail("SessionBusy", "Session has active work");
@@ -319,7 +388,7 @@ export class Session {
319
388
  await this.agent.cancel(thread.id, snapshot.activeStreamId, reason, {
320
389
  kind: "observer",
321
390
  observe: (event) => this.emit(event),
322
- });
391
+ }, { session: this, thread });
323
392
  this.blocked.delete(thread.id);
324
393
  this.foreground = undefined;
325
394
  this.discard("cancelled");
@@ -329,15 +398,17 @@ export class Session {
329
398
  return;
330
399
  if (this.disposal)
331
400
  return this.disposal;
401
+ if (this.controlPending)
402
+ fail("SessionBusy", "Session control operation is pending");
332
403
  this.checkSelectionChange();
333
404
  this.closing = true;
334
405
  this.disposal = (async () => {
335
406
  try {
336
- await this.controller.hooks.dispatch(SessionEvents.BeforeClose, {}, this.context());
407
+ await this.controller.hooks.dispatch(sessionHooks.beforeClose, {}, this.context());
337
408
  await this.foreground?.done;
338
409
  this.discard("Closed");
339
410
  this.disposed = true;
340
- this.notify(SessionEvents.Closed, {});
411
+ this.notify(sessionHooks.closed, {});
341
412
  this.observers.clear();
342
413
  }
343
414
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
+ import type { ThreadInfo } from "./schema.js";
2
+ import type { StreamRecord } from "../trace/records.js";
1
3
  import type { CommitBatch, CommitReceipt, Lease, StorageBackend } from "./storage-ports.js";
4
+ export declare function buildThreadInfo(batch: CommitBatch, head: ThreadInfo | null | undefined, stream: StreamRecord | null | undefined): ThreadInfo;
2
5
  export declare function canonicalJson(value: unknown): string;
6
+ export declare function fingerprint(value: unknown): Promise<string>;
7
+ export declare const commitFingerprint: (batch: CommitBatch) => Promise<string>;
3
8
  export declare function validateBatch(batch: CommitBatch): void;
4
9
  export declare class CommitCoordinator {
5
10
  private readonly backend;
@@ -1,15 +1,50 @@
1
1
  import { fail, errorInfo } from "../errors.js";
2
2
  import { assertJson } from "../json.js";
3
3
  import { MessageCodec } from "../messages/codec.js";
4
+ export function buildThreadInfo(batch, head, stream) {
5
+ const cp = batch.checkpoint;
6
+ return {
7
+ id: batch.threadId,
8
+ scope: cp.state.scope,
9
+ metadata: cp.state.metadata,
10
+ revision: cp.revision,
11
+ currentCheckpointId: cp.id,
12
+ activeStreamId: stream &&
13
+ !["completed", "failed", "stopped", "cancelled"].includes(stream.status)
14
+ ? stream.id
15
+ : null,
16
+ createdAt: head?.createdAt ?? cp.createdAt,
17
+ updatedAt: cp.createdAt,
18
+ parentThreadId: batch.lineage?.parentThreadId ?? head?.parentThreadId ?? null,
19
+ sourceCheckpointId: batch.lineage?.sourceCheckpointId ?? head?.sourceCheckpointId ?? null,
20
+ deleted: batch.deleteThread ?? false,
21
+ };
22
+ }
4
23
  export function canonicalJson(value) {
5
24
  assertJson(value);
6
- const encode = (x) => Array.isArray(x) ? "[" + x.map(encode).join(",") + "]" : x && typeof x === "object" ? "{" + Object.keys(x).sort().map(k => JSON.stringify(k) + ":" + encode(x[k])).join(",") + "}" : JSON.stringify(x);
25
+ const encode = (x) => Array.isArray(x)
26
+ ? "[" + x.map(encode).join(",") + "]"
27
+ : x && typeof x === "object"
28
+ ? "{" +
29
+ Object.keys(x)
30
+ .sort()
31
+ .map((k) => JSON.stringify(k) + ":" + encode(x[k]))
32
+ .join(",") +
33
+ "}"
34
+ : JSON.stringify(x);
7
35
  return encode(value);
8
36
  }
37
+ export async function fingerprint(value) {
38
+ const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canonicalJson(value)));
39
+ return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
40
+ }
41
+ export const commitFingerprint = (batch) => fingerprint(batch);
9
42
  export function validateBatch(batch) {
10
43
  assertJson(batch);
11
44
  const cp = batch.checkpoint;
12
- if (cp.threadId !== batch.threadId || cp.revision !== batch.expectedRevision + 1 || cp.schemaVersion !== 1)
45
+ if (cp.threadId !== batch.threadId ||
46
+ cp.revision !== batch.expectedRevision + 1 ||
47
+ cp.schemaVersion !== 1)
13
48
  fail("CommitConflict", "Checkpoint identity/revision mismatch");
14
49
  const ids = new Set(), pending = new Set(), resolved = new Set();
15
50
  for (const wire of cp.state.messages) {
@@ -19,7 +54,9 @@ export function validateBatch(batch) {
19
54
  ids.add(message.id);
20
55
  for (const part of message.content)
21
56
  if (part.type === "tool-call") {
22
- if (message.role !== "assistant" || pending.has(part.toolCallId) || resolved.has(part.toolCallId))
57
+ if (message.role !== "assistant" ||
58
+ pending.has(part.toolCallId) ||
59
+ resolved.has(part.toolCallId))
23
60
  fail("InvalidMessage", "Invalid tool call");
24
61
  pending.add(part.toolCallId);
25
62
  }
@@ -33,7 +70,8 @@ export function validateBatch(batch) {
33
70
  if (cp.cause === "Terminal" && pending.size)
34
71
  fail("InvalidMessage", "Terminal checkpoint contains unresolved tool calls");
35
72
  for (const entry of batch.records)
36
- if (entry.threadId !== batch.threadId || entry.id !== ("id" in entry.data ? entry.data.id : entry.id))
73
+ if (entry.threadId !== batch.threadId ||
74
+ entry.id !== ("id" in entry.data ? entry.data.id : entry.id))
37
75
  fail("CommitConflict", "Record membership mismatch");
38
76
  }
39
77
  export class CommitCoordinator {
@@ -48,8 +86,15 @@ export class CommitCoordinator {
48
86
  const existing = await this.backend.commits.lookupCommit(batch.commitId);
49
87
  if (existing)
50
88
  return existing;
89
+ if (lease.threadId !== batch.threadId)
90
+ fail("OwnershipLost", "Lease belongs to another thread");
51
91
  try {
52
- return await this.backend.commits.publish({ commitId: batch.commitId, threadId: batch.threadId, expectedRevision: batch.expectedRevision, lease });
92
+ return await this.backend.commits.publish({
93
+ commitId: batch.commitId,
94
+ threadId: batch.threadId,
95
+ expectedRevision: batch.expectedRevision,
96
+ lease,
97
+ });
53
98
  }
54
99
  catch (error) {
55
100
  const committed = await this.backend.commits.lookupCommit(batch.commitId);
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/state/commit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/state/commit.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,11 @@ export class ForkService {
13
13
  const queries = new StateQueries(this.backend), source = await queries.requireThread(sourceId, options);
14
14
  if (options.atCheckpointId && options.atMessageId)
15
15
  fail("InvalidConfiguration", "Fork selectors are mutually exclusive");
16
- let cp = options.atCheckpointId ? await queries.getCheckpoint(sourceId, options.atCheckpointId, options) : await queries.snapshot(sourceId, options);
16
+ let cp = options.atCheckpointId
17
+ ? await queries.getCheckpoint(sourceId, options.atCheckpointId, options)
18
+ : await queries.snapshot(sourceId, options);
17
19
  if (options.atMessageId) {
18
- const matches = (await this.backend.checkpoints.list(sourceId)).filter(c => c.state.messages.at(-1)?.id === options.atMessageId);
20
+ const matches = (await this.backend.checkpoints.list(sourceId)).filter((c) => c.state.messages.at(-1)?.id === options.atMessageId);
19
21
  cp = matches.sort((a, b) => a.revision - b.revision)[0] ?? null;
20
22
  }
21
23
  if (!cp)
@@ -23,15 +25,34 @@ export class ForkService {
23
25
  if (!checkpointSafety(cp).forkable)
24
26
  fail("UnsafeForkPoint", "Fork prefix contains unresolved tool calls");
25
27
  const targetId = randomIds.next("thread");
26
- const states = cp.state.pluginStates.filter(s => s.ownerType === "thread").map(s => {
27
- const definition = this.definitions.find(d => d.pluginId === s.pluginId && d.namespace === s.namespace);
28
+ const states = cp.state.pluginStates
29
+ .filter((s) => s.ownerType === "thread")
30
+ .map((s) => {
31
+ const definition = this.definitions.find((d) => d.pluginId === s.pluginId && d.namespace === s.namespace);
28
32
  if (definition?.fork === "reset")
29
33
  return { ...s, data: definition.initial, revision: 0 };
30
34
  if (typeof definition?.fork === "function")
31
- return { ...s, data: definition.fork(s.data, { sourceThreadId: sourceId, targetThreadId: targetId }), revision: 0 };
35
+ return {
36
+ ...s,
37
+ data: definition.fork(s.data, {
38
+ sourceThreadId: sourceId,
39
+ targetThreadId: targetId,
40
+ }),
41
+ revision: 0,
42
+ };
32
43
  return { ...s, revision: 0 };
33
44
  });
34
- return new ThreadService(this.backend, { next: kind => kind === "thread" ? targetId : randomIds.next(kind) }).create({ scope: source.scope, instructions: cp.state.instructions ?? undefined, messages: cp.state.messages, metadata: { ...cp.state.metadata, ...options.metadata } }, { pluginStates: states, lineage: { parentThreadId: sourceId, sourceCheckpointId: cp.id } });
45
+ return new ThreadService(this.backend, {
46
+ next: (kind) => (kind === "thread" ? targetId : randomIds.next(kind)),
47
+ }).create({
48
+ scope: source.scope,
49
+ instructions: cp.state.instructions ?? undefined,
50
+ messages: cp.state.messages,
51
+ metadata: { ...cp.state.metadata, ...options.metadata },
52
+ }, {
53
+ pluginStates: states,
54
+ lineage: { parentThreadId: sourceId, sourceCheckpointId: cp.id },
55
+ });
35
56
  }
36
57
  }
37
58
  //# sourceMappingURL=fork.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/state/fork.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/state/fork.ts"],"names":[],"mappings":"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"}