@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
@@ -1,13 +1,17 @@
1
- import { normalizeContent } from "../messages/message.js";
1
+ import { tool as toolHooks } from "../events/type.js";
2
+ import { ToolMessage } from "../messages/message.js";
3
+ import { normalizeToolOutput, } from "../tools/tool.js";
4
+ import {} from "../events/type.js";
5
+ import { MessageCodec } from "../messages/codec.js";
2
6
  import { immutable } from "../json.js";
3
7
  import { TessarError, errorInfo } from "../errors.js";
4
8
  import { abortable } from "./abort.js";
9
+ import { Suspension } from "./interrupt.js";
5
10
  export async function executeTool(tool, input, context) {
6
11
  if (context.signal.aborted)
7
12
  throw new TessarError("Cancelled", "Tool cancelled before dispatch");
8
13
  try {
9
- const parsed = tool.input.parse(input), result = await abortable(tool.execute(parsed, context), context.signal, () => new TessarError("RecoveryRequired", "In-flight tool cancellation has unknown external outcome"));
10
- return immutable({ ...result, content: normalizeContent(result.content) });
14
+ return await abortable(tool.execute(input, context), context.signal, () => new TessarError("RecoveryRequired", "In-flight tool cancellation has unknown external outcome"));
11
15
  }
12
16
  catch (error) {
13
17
  if (!(error instanceof TessarError))
@@ -15,4 +19,263 @@ export async function executeTool(tool, input, context) {
15
19
  throw error;
16
20
  }
17
21
  }
22
+ function pendingTools(frame, context) {
23
+ const records = context.rows(frame, "tool_executions");
24
+ return frame.cp.execution.pendingToolExecutionIds.map((id) => records.find((record) => record.id === id));
25
+ }
26
+ function toolFailure(record, error) {
27
+ const info = errorInfo(error);
28
+ if (error instanceof Suspension ||
29
+ [
30
+ "StorageUnavailable",
31
+ "CommitConflict",
32
+ "OwnershipLost",
33
+ "PluginError",
34
+ "RecoveryRequired",
35
+ ].includes(info.code) ||
36
+ ["plugin", "storage", "provider"].includes(info.source))
37
+ throw error;
38
+ record.status = "failed";
39
+ record.error = errorInfo(error, {
40
+ source: "tool",
41
+ toolName: record.toolName,
42
+ });
43
+ return new ToolMessage("Tool failed: " + record.error.message);
44
+ }
45
+ function saveResult(record, message, context) {
46
+ record.result = MessageCodec.encode(normalizeToolOutput(message, record.toolCallId));
47
+ record.endedAt = context.clock.now();
48
+ record.durationMs = record.startedAt
49
+ ? Date.parse(record.endedAt) - Date.parse(record.startedAt)
50
+ : null;
51
+ }
52
+ // Only this sequential boundary publishes messages and runs result transforms.
53
+ async function publishResults(frame, context) {
54
+ for (const record of pendingTools(frame, context)) {
55
+ if (!record.result)
56
+ break;
57
+ let message = record.result;
58
+ if (!record.resultMessageId) {
59
+ const transformed = await context.hook(frame, toolHooks.result, message, record.id);
60
+ message = MessageCodec.encode(transformed instanceof ToolMessage
61
+ ? normalizeToolOutput(transformed, record.toolCallId)
62
+ : MessageCodec.decode(transformed));
63
+ if (message.role !== "tool" || message.toolCallId !== record.toolCallId)
64
+ throw new TessarError("InvalidMessage", "Tool result transform changed role/correlation");
65
+ record.result = message;
66
+ record.resultMessageId = message.id;
67
+ }
68
+ const existing = frame.cp.state.messages.find((existing) => existing.id === message.id);
69
+ if (existing &&
70
+ (existing.role !== "tool" || existing.toolCallId !== record.toolCallId))
71
+ throw new TessarError("InvalidMessage", "Tool result ID already belongs to another message");
72
+ if (!existing)
73
+ await context.appendMessage(frame, message);
74
+ frame.cp.execution.pendingToolExecutionIds =
75
+ frame.cp.execution.pendingToolExecutionIds.filter((id) => id !== record.id);
76
+ frame.cp.execution.phase = frame.cp.execution.pendingToolExecutionIds
77
+ .length
78
+ ? "BeforeTool"
79
+ : "TurnBoundary";
80
+ await context.commit(frame, "ExecutionTransition");
81
+ await context.hook(frame, toolHooks.end, {
82
+ toolExecutionId: record.id,
83
+ toolCallId: record.toolCallId,
84
+ result: message,
85
+ status: record.status,
86
+ }, record.id);
87
+ }
88
+ }
89
+ export async function callTools(frame, context) {
90
+ await publishResults(frame, context);
91
+ const position = frame.cp.execution;
92
+ const prepared = [];
93
+ const remaining = position.budgets.limits.maxToolCalls - position.budgets.toolCalls;
94
+ for (const record of pendingTools(frame, context)) {
95
+ if (record.result)
96
+ continue;
97
+ if (prepared.length >= remaining)
98
+ break;
99
+ const tool = frame.registry.find("tool", record.toolName);
100
+ try {
101
+ if (!tool)
102
+ throw new TessarError("UnknownTool", "No registered tool executor");
103
+ const saved = position.handlerCursor?.eventId === toolHooks.before &&
104
+ position.handlerCursor.payload
105
+ .toolExecutionId === record.id
106
+ ? position.handlerCursor.payload
107
+ : null;
108
+ const payload = saved ??
109
+ (record.policyDecision
110
+ ? {
111
+ tool: {
112
+ name: tool.name,
113
+ description: tool.description,
114
+ inputSchema: tool.jsonSchema,
115
+ },
116
+ toolExecutionId: record.id,
117
+ toolCallId: record.toolCallId,
118
+ arguments: record.arguments,
119
+ }
120
+ : await context.hook(frame, toolHooks.prepare, {
121
+ tool: {
122
+ name: tool.name,
123
+ description: tool.description,
124
+ inputSchema: tool.jsonSchema,
125
+ },
126
+ toolExecutionId: record.id,
127
+ toolCallId: record.toolCallId,
128
+ arguments: record.arguments,
129
+ }, record.id));
130
+ record.arguments = immutable(payload.arguments);
131
+ const input = tool.schema.parse(record.arguments);
132
+ const decision = record.policyDecision
133
+ ? {
134
+ decision: record.policyDecision.decision === "allowed"
135
+ ? "allow"
136
+ : "deny",
137
+ reason: record.policyDecision.reason,
138
+ }
139
+ : await context.hook(frame, toolHooks.before, immutable(payload), record.id);
140
+ if (decision?.decision === "stop") {
141
+ await context.finish(frame, "stopped", decision.reason ?? "PolicyStopped");
142
+ return;
143
+ }
144
+ record.policyDecision = {
145
+ decision: decision?.decision === "deny" ? "denied" : "allowed",
146
+ ...(decision?.decision === "deny" && decision.reason
147
+ ? { reason: decision.reason }
148
+ : {}),
149
+ };
150
+ if (decision?.decision === "deny") {
151
+ record.status = "denied";
152
+ saveResult(record, new ToolMessage(decision.reason ?? "Tool denied"), context);
153
+ }
154
+ else {
155
+ record.idempotencyKey =
156
+ tool.recovery?.idempotencyKey(input, {
157
+ toolExecutionId: record.id,
158
+ }) ?? null;
159
+ prepared.push({ record, tool, input });
160
+ }
161
+ }
162
+ catch (error) {
163
+ saveResult(record, toolFailure(record, error), context);
164
+ await context.hook(frame, toolHooks.error, { toolExecutionId: record.id, error: record.error }, record.id);
165
+ }
166
+ await context.commit(frame, "ExecutionTransition");
167
+ }
168
+ let next = 0;
169
+ const failures = [];
170
+ const worker = async () => {
171
+ while (!failures.length &&
172
+ next < prepared.length &&
173
+ !frame.sink.controller.signal.aborted) {
174
+ const { record, tool, input } = prepared[next++];
175
+ let dispatched = false;
176
+ try {
177
+ record.status = "running";
178
+ record.startedAt = context.clock.now();
179
+ position.budgets.toolCalls++;
180
+ position.phase = "ToolPending";
181
+ await context.commit(frame, "ExecutionTransition");
182
+ await context.hook(frame, toolHooks.start, { toolExecutionId: record.id, toolCallId: record.toolCallId }, record.id);
183
+ if (frame.sink.controller.signal.aborted)
184
+ throw new TessarError("Cancelled", "Tool cancelled before dispatch");
185
+ let result;
186
+ try {
187
+ dispatched = true;
188
+ result = await executeTool(tool, input, {
189
+ ...context.services(frame, record.id),
190
+ signal: frame.sink.controller.signal,
191
+ threadId: frame.cp.threadId,
192
+ streamId: frame.stream.id,
193
+ turnId: record.turnId,
194
+ toolExecutionId: record.id,
195
+ emit: (progress) => {
196
+ void context.hook(frame, toolHooks.update, { toolExecutionId: record.id, progress }, record.id);
197
+ },
198
+ });
199
+ // Bind here so an incorrect explicit correlation is reported as a tool failure.
200
+ result = normalizeToolOutput(result, record.toolCallId);
201
+ record.status = "succeeded";
202
+ }
203
+ catch (error) {
204
+ result = toolFailure(record, error);
205
+ await context.hook(frame, toolHooks.error, { toolExecutionId: record.id, error: record.error }, record.id);
206
+ }
207
+ saveResult(record, result, context);
208
+ await context.commit(frame, "ExecutionTransition");
209
+ }
210
+ catch (error) {
211
+ if (record.status === "running") {
212
+ record.status = dispatched ? "interrupted" : "pending";
213
+ if (!dispatched) {
214
+ record.startedAt = null;
215
+ position.budgets.toolCalls--;
216
+ }
217
+ }
218
+ failures.push({ error });
219
+ }
220
+ }
221
+ };
222
+ await Promise.all(Array.from({ length: Math.min(context.toolConcurrency, prepared.length) }, worker));
223
+ // A pre-dispatch cancellation must not hide an unknown in-flight outcome.
224
+ const failure = failures.find((value) => errorInfo(value.error).code !== "Cancelled") ??
225
+ failures[0];
226
+ if (failure) {
227
+ frame.stream.status = "interrupted";
228
+ await context.commit(frame, "ExecutionTransition");
229
+ throw failure.error;
230
+ }
231
+ if (frame.sink.controller.signal.aborted)
232
+ throw new TessarError("Cancelled", "Execution cancelled");
233
+ await publishResults(frame, context);
234
+ position.phase = position.pendingToolExecutionIds.length
235
+ ? "BeforeTool"
236
+ : "TurnBoundary";
237
+ await context.commit(frame, "ExecutionTransition");
238
+ if (position.pendingToolExecutionIds.length &&
239
+ position.budgets.toolCalls >= position.budgets.limits.maxToolCalls)
240
+ await context.finish(frame, "stopped", "MaxToolCalls");
241
+ }
242
+ /** Reconcile each dispatched call; saved sibling results never execute again. */
243
+ export async function recoverTools(frame, context, cancel = false) {
244
+ for (const record of pendingTools(frame, context)) {
245
+ if (record.result)
246
+ continue;
247
+ if (record.status === "running" || record.status === "interrupted") {
248
+ record.status = "interrupted";
249
+ await context.commit(frame, "ExecutionTransition");
250
+ const tool = frame.registry.find("tool", record.toolName);
251
+ const outcome = tool?.recovery && record.idempotencyKey
252
+ ? await tool.recovery.reconcile({
253
+ id: record.id,
254
+ input: tool.schema.parse(record.arguments),
255
+ key: record.idempotencyKey,
256
+ })
257
+ : { status: "unknown" };
258
+ if (outcome.status === "unknown") {
259
+ frame.stream.status = "interrupted";
260
+ await context.commit(frame, "ExecutionTransition");
261
+ throw new TessarError("RecoveryRequired", "Tool dispatch outcome is unknown");
262
+ }
263
+ if (outcome.status === "completed") {
264
+ saveResult(record, normalizeToolOutput(outcome.result), context);
265
+ record.status = "succeeded";
266
+ }
267
+ else
268
+ record.status = "pending";
269
+ }
270
+ if (cancel && !record.result) {
271
+ record.status = "cancelled";
272
+ saveResult(record, new ToolMessage("Execution cancelled"), context);
273
+ }
274
+ await context.commit(frame, "ExecutionTransition");
275
+ }
276
+ await publishResults(frame, context);
277
+ frame.cp.execution.phase = frame.cp.execution.pendingToolExecutionIds.length
278
+ ? "BeforeTool"
279
+ : "TurnBoundary";
280
+ }
18
281
  //# sourceMappingURL=tool-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAU,EACV,KAAc,EACd,OAA6B;IAE7B,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACxB,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACpC,MAAM,GAAG,MAAM,SAAS,CACtB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,MAAM,EACd,GAAG,EAAE,CACH,IAAI,WAAW,CACb,kBAAkB,EAClB,0DAA0D,CAC3D,CACJ,CAAC;QACJ,OAAO,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;YACjC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { fail, requireId, TessarError, errorInfo, errorFromInfo } from "../errors.js";
1
+ import { fail, requireId, TessarError, errorInfo, errorFromInfo, } from "../errors.js";
2
2
  import { assertJson, immutable, } from "../json.js";
3
3
  import { PluginStateAccess, definePluginState, } from "../state/plugin-state.js";
4
4
  import { canonicalJson } from "../state/commit.js";
@@ -122,11 +122,10 @@ export class EffectService {
122
122
  return immutable(output);
123
123
  }
124
124
  catch (error) {
125
- const info = errorInfo(error, { source: "plugin", pluginId: binding.pluginId }), unknown = [
126
- "StorageUnavailable",
127
- "OwnershipLost",
128
- "RecoveryRequired",
129
- ].includes(info.code) || info.source === "storage";
125
+ const info = errorInfo(error, {
126
+ source: "plugin",
127
+ pluginId: binding.pluginId,
128
+ }), unknown = ["StorageUnavailable", "OwnershipLost", "RecoveryRequired"].includes(info.code) || info.source === "storage";
130
129
  await save({
131
130
  digest,
132
131
  status: unknown ? "unknown" : "failed",
@@ -1 +1 @@
1
- {"version":3,"file":"tracked-effects.js","sourceRoot":"","sources":["../../src/engine/tracked-effects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AACtG,OAAO,EACL,UAAU,EACV,SAAS,GAGV,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA2BvC,MAAM,UAAU,YAAY,CAC1B,UAAkC;IAElC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC;QACjE,IAAI,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;AAC1C,CAAC;AAWD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAa;IAChE,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,oBAAoB;IAC/B,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AA2CH,MAAM,OAAO,aAAa;IAEL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IANxB,YACmB,MAAiD,EACjD,KAAwB,EACxB,MAA2B,EAC3B,OAAmD,EACnD,MAAoB,EACpB,KAAoC;sBALpC,MAAM;qBACN,KAAK;sBACL,MAAM;uBACN,OAAO;sBACP,MAAM;qBACN,KAAK;IACrB,CAAC;IACJ,KAAK,CAAC,OAAO,CACX,UAAkC,EAClC,KAAQ,EACR,OAAwB;QAExB,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,EAC5C,MAAM,GAAG,aAAa,CAAC;YACrB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACO,KAAK,CAAC,OAAO,CACnB,UAAkC,EAClC,KAAQ,EACR,GAAW,EACX,MAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO;YAC/D,IAAI,CAAC,oBAAoB,EAAE,4BAA4B,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAClD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAwC,CAAC;QAC3D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAClC,IAAI,CACF,gBAAgB,EAChB,kDAAkD,CACnD,CAAC;QACJ,MAAM,IAAI,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACxD,GAAG,QAAQ;gBACX,CAAC,GAAG,CAAC,EAAE,MAA8B;aACtC,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC,CAAC;QACF,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW;YAC/B,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAM,CAAC;QAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,aAAa,CAAC,KAAK,CAAC,KAA6B,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS;gBAClC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;gBAC7D,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAC9B,IAAI,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,CAAC;YACjE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvD,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,MAAM,IAAI,CAAC;oBACT,MAAM;oBACN,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,KAAkB;oBACzB,MAAM,EAAE,MAAmB;oBAC3B,WAAW;iBACZ,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC,MAAM,CAAM,CAAC;YAChC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC;YACT,MAAM;YACN,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAkB;YACzB,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,IAAI,CAAC;YACT,MAAM;YACN,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,KAAkB;YACzB,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CACpC,MAAM,SAAS,CACb,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAChE,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,GAAG,EAAE,CACH,IAAI,WAAW,CACb,kBAAkB,EAClB,gDAAgD,CACjD,CACJ,CACF,CAAC;YACF,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,MAAM,IAAI,CAAC;gBACT,MAAM;gBACN,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,KAAkB;gBACzB,MAAM,EAAE,MAAmB;gBAC3B,WAAW;aACZ,CAAC,CAAC;YACH,OAAO,SAAS,CAAC,MAAM,CAAM,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,EAC7E,OAAO,GAAG;gBACR,oBAAoB;gBACpB,eAAe;gBACf,kBAAkB;aACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;YACrD,MAAM,IAAI,CAAC;gBACT,MAAM;gBACN,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACtC,KAAK,EAAE,KAAkB;gBACzB,KAAK,EAAE,IAA4B;gBACnC,WAAW;aACZ,CAAC,CAAC;YACH,IAAI,OAAO;gBACT,IAAI,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"tracked-effects.js","sourceRoot":"","sources":["../../src/engine/tracked-effects.ts"],"names":[],"mappings":"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"}
package/dist/errors.js CHANGED
@@ -10,7 +10,9 @@ export class TessarError extends Error {
10
10
  this.details = details;
11
11
  this.name = "TessarError";
12
12
  }
13
- toJSON() { return errorInfo(this); }
13
+ toJSON() {
14
+ return errorInfo(this);
15
+ }
14
16
  }
15
17
  export function fail(code, message) {
16
18
  throw new TessarError(code, message);
@@ -21,18 +23,27 @@ export function requireId(id, name = "id") {
21
23
  return id;
22
24
  }
23
25
  export function errorInfo(error, origin) {
24
- const object = error !== null && (typeof error === "object" || typeof error === "function") ? error : undefined;
26
+ const object = error !== null && (typeof error === "object" || typeof error === "function")
27
+ ? error
28
+ : undefined;
25
29
  const previous = object && origins.get(object);
26
30
  if (object && origin && !previous)
27
31
  origins.set(object, origin);
28
32
  const value = object;
29
- const details = error instanceof TessarError ? error.details : Object.fromEntries(["status", "requestID", "request_id", "type", "param"].flatMap(key => {
30
- const field = value?.[key];
31
- return typeof field === "string" || typeof field === "boolean" ||
32
- (typeof field === "number" && Number.isFinite(field)) ? [[key, field]] : [];
33
- }));
33
+ const details = error instanceof TessarError
34
+ ? error.details
35
+ : Object.fromEntries(["status", "requestID", "request_id", "type", "param"].flatMap((key) => {
36
+ const field = value?.[key];
37
+ return typeof field === "string" ||
38
+ typeof field === "boolean" ||
39
+ (typeof field === "number" && Number.isFinite(field))
40
+ ? [[key, field]]
41
+ : [];
42
+ }));
34
43
  const name = error instanceof Error
35
- ? error.name === "Error" ? error.constructor.name : error.name
44
+ ? error.name === "Error"
45
+ ? error.constructor.name
46
+ : error.name
36
47
  : "Error";
37
48
  const info = {
38
49
  ...(previous ?? origin ?? { source: "tessar" }),
@@ -51,7 +62,11 @@ export function errorFromInfo(info) {
51
62
  return causes.get(info);
52
63
  const error = info.source === "tessar"
53
64
  ? new TessarError(info.code, info.message, info.details)
54
- : Object.assign(new Error(info.message), { name: info.name, code: info.code, ...info.details });
65
+ : Object.assign(new Error(info.message), {
66
+ name: info.name,
67
+ code: info.code,
68
+ ...info.details,
69
+ });
55
70
  origins.set(error, info);
56
71
  return error;
57
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export interface HookOptions {
20
20
  export interface EventContext {
21
21
  controllerId?: string;
22
22
  agentId?: string;
23
+ sessionId?: string;
23
24
  scope?: JsonObject;
24
25
  threadId?: string;
25
26
  streamId?: string | null;
@@ -33,6 +34,7 @@ export declare class EventEnvelope<P = any, N extends string = string> implement
33
34
  readonly payload: P;
34
35
  readonly controllerId?: string;
35
36
  readonly agentId?: string;
37
+ readonly sessionId?: string;
36
38
  readonly scope?: JsonObject;
37
39
  readonly threadId?: string;
38
40
  readonly streamId?: string | null;
@@ -4,6 +4,7 @@ export class EventEnvelope {
4
4
  payload;
5
5
  controllerId;
6
6
  agentId;
7
+ sessionId;
7
8
  scope;
8
9
  threadId;
9
10
  streamId;
@@ -17,6 +18,7 @@ export class EventEnvelope {
17
18
  for (const key of [
18
19
  "controllerId",
19
20
  "agentId",
21
+ "sessionId",
20
22
  "scope",
21
23
  "threadId",
22
24
  "streamId",
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/events/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,YAAY,CAAC;AAiCxD,MAAM,OAAO,aAAa;IAcb,IAAI;IACJ,OAAO;IAXT,YAAY,CAAU;IACtB,OAAO,CAAU;IACjB,KAAK,CAAc;IACnB,QAAQ,CAAU;IAClB,QAAQ,CAAiB;IACzB,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,SAAS,CAAU;IACnB,kBAAkB,CAAU;IACrC,YACW,IAAO,EACP,OAAU,EACnB,OAAO,GAAiB,EAAE;oBAFjB,IAAI;uBACJ,OAAO;QAGhB,KAAK,MAAM,GAAG,IAAI;YAChB,cAAc;YACd,SAAS;YACT,OAAO;YACP,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,WAAW;YACX,oBAAoB;SACZ;YACR,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;gBAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC/D,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,EAAE,CACA,IAAO;QAEP,OAAO,IAAI,CAAC,IAAI,KAAM,IAAe,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/events/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,YAAY,CAAC;AAkCxD,MAAM,OAAO,aAAa;IAeb,IAAI;IACJ,OAAO;IAZT,YAAY,CAAU;IACtB,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,KAAK,CAAc;IACnB,QAAQ,CAAU;IAClB,QAAQ,CAAiB;IACzB,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,SAAS,CAAU;IACnB,kBAAkB,CAAU;IACrC,YACW,IAAO,EACP,OAAU,EACnB,OAAO,GAAiB,EAAE;oBAFjB,IAAI;uBACJ,OAAO;QAGhB,KAAK,MAAM,GAAG,IAAI;YAChB,cAAc;YACd,SAAS;YACT,WAAW;YACX,OAAO;YACP,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,WAAW;YACX,oBAAoB;SACZ;YACR,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;gBAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC/D,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,EAAE,CACA,IAAO;QAEP,OAAO,IAAI,CAAC,IAAI,KAAM,IAAe,CAAC;IACxC,CAAC;CACF"}
@@ -2,4 +2,4 @@ import { errorInfo } from "../errors.js";
2
2
  import { type AnyEvent, type EventContext, type PayloadOf, type ResultOf, type EventKind } from "./definition.js";
3
3
  import type { HookContext } from "../plugins/context.js";
4
4
  import type { RegistryLease } from "../plugins/registry.js";
5
- export declare function dispatch<D extends AnyEvent>(lease: RegistryLease, definition: D, payload: PayloadOf<D>, context: HookContext & EventContext, diagnostics: (error: ReturnType<typeof errorInfo>, context?: EventContext) => void, kind?: EventKind): Promise<ResultOf<D>>;
5
+ export declare function dispatch<D extends AnyEvent>(lease: RegistryLease, definition: D, payload: PayloadOf<D>, context: Partial<HookContext> & EventContext, diagnostics: (error: ReturnType<typeof errorInfo>, context?: EventContext) => void, kind?: EventKind): Promise<ResultOf<D>>;
@@ -1,6 +1,20 @@
1
- import { TessarError, errorInfo } from "../errors.js";
1
+ import { TessarError, errorInfo, fail } from "../errors.js";
2
2
  import { EventEnvelope, } from "./definition.js";
3
+ const operationEvents = new Set([
4
+ "session.model.before-change",
5
+ "session.thread.before-switch",
6
+ "thread.before-fork",
7
+ "thread.before-rename",
8
+ "thread.before-delete",
9
+ ]);
3
10
  export async function dispatch(lease, definition, payload, context, diagnostics, kind = "notification") {
11
+ const hookContext = {
12
+ ...context,
13
+ registry: Object.freeze({
14
+ get: (kind, id) => lease.find(kind, id),
15
+ list: (kind) => Object.freeze(lease.list(kind)),
16
+ }),
17
+ };
4
18
  let current = kind === "transformation" ? payload : context.initialDecision;
5
19
  let handlerIndex = -1;
6
20
  const allowed = context.allowedHandlerIds;
@@ -17,7 +31,16 @@ export async function dispatch(lease, definition, payload, context, diagnostics,
17
31
  throw new TessarError("Cancelled", "Execution cancelled");
18
32
  try {
19
33
  const event = new EventEnvelope(definition, kind === "transformation" ? current : payload, context);
20
- const result = await registration.handler(event, context);
34
+ const result = await registration.handler(event, hookContext);
35
+ if (operationEvents.has(definition) && result !== undefined) {
36
+ if (!result ||
37
+ typeof result !== "object" ||
38
+ Array.isArray(result) ||
39
+ !["allow", "deny"].includes(result.decision) ||
40
+ (result.reason !== undefined &&
41
+ typeof result.reason !== "string"))
42
+ fail("InvalidHookResult", "Operation hooks must return allow, deny or undefined");
43
+ }
21
44
  if (kind === "transformation" && result !== undefined)
22
45
  current = result;
23
46
  if (kind === "decision" && result !== undefined) {
@@ -39,8 +62,16 @@ export async function dispatch(lease, definition, payload, context, diagnostics,
39
62
  if (cause instanceof TessarError &&
40
63
  ["StorageUnavailable", "CommitConflict", "OwnershipLost"].includes(cause.code))
41
64
  throw cause;
42
- const error = cause !== null && typeof cause === "object" ? cause : new Error(String(cause), { cause });
43
- const info = errorInfo(error, error instanceof TessarError ? undefined : { source: "plugin", pluginId: registration.pluginId, eventId: definition });
65
+ const error = cause !== null && typeof cause === "object"
66
+ ? cause
67
+ : new Error(String(cause), { cause });
68
+ const info = errorInfo(error, error instanceof TessarError
69
+ ? undefined
70
+ : {
71
+ source: "plugin",
72
+ pluginId: registration.pluginId,
73
+ eventId: definition,
74
+ });
44
75
  if (kind !== "notification")
45
76
  throw error;
46
77
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/events/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/events/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ErrorInfo } from "../errors.js";
2
+ import type { EventContext, EventEnvelope } from "./definition.js";
3
+ export declare function notifyObserver<E extends EventEnvelope>(observer: (event: E) => unknown, event: E, report: (error: ErrorInfo, context?: EventContext) => void): void;
@@ -0,0 +1,13 @@
1
+ import { errorInfo } from "../errors.js";
2
+ export function notifyObserver(observer, event, report) {
3
+ const failed = (error) => report(errorInfo(error, { source: "application", eventId: event.type }), event);
4
+ try {
5
+ const result = observer(event);
6
+ if (result && typeof result.then === "function")
7
+ void Promise.resolve(result).catch(failed);
8
+ }
9
+ catch (error) {
10
+ failed(error);
11
+ }
12
+ }
13
+ //# sourceMappingURL=observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../src/events/observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,cAAc,CAC5B,QAA+B,EAC/B,KAAQ,EACR,MAA0D;IAE1D,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAChC,MAAM,CACJ,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAChE,KAAK,CACN,CAAC;IACJ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAQ,MAA+B,CAAC,IAAI,KAAK,UAAU;YACvE,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;AACH,CAAC"}