@zhivex-ai/core 0.7.0 → 0.8.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 (77) hide show
  1. package/README.md +5 -0
  2. package/dist/advanced-tool-registry.d.ts +112 -0
  3. package/dist/advanced-tool-registry.d.ts.map +1 -0
  4. package/dist/advanced-tool-registry.js +407 -0
  5. package/dist/advanced-tool-registry.js.map +1 -0
  6. package/dist/agent-evaluation.d.ts +176 -0
  7. package/dist/agent-evaluation.d.ts.map +1 -0
  8. package/dist/agent-evaluation.js +334 -0
  9. package/dist/agent-evaluation.js.map +1 -0
  10. package/dist/agent-store.d.ts.map +1 -1
  11. package/dist/agent-store.js +226 -8
  12. package/dist/agent-store.js.map +1 -1
  13. package/dist/agent-trace.d.ts +127 -0
  14. package/dist/agent-trace.d.ts.map +1 -0
  15. package/dist/agent-trace.js +331 -0
  16. package/dist/agent-trace.js.map +1 -0
  17. package/dist/agent.d.ts +12 -1
  18. package/dist/agent.d.ts.map +1 -1
  19. package/dist/agent.js +469 -36
  20. package/dist/agent.js.map +1 -1
  21. package/dist/api-stability.d.ts +9 -0
  22. package/dist/api-stability.d.ts.map +1 -0
  23. package/dist/api-stability.js +261 -0
  24. package/dist/api-stability.js.map +1 -0
  25. package/dist/artifact.d.ts +165 -0
  26. package/dist/artifact.d.ts.map +1 -0
  27. package/dist/artifact.js +994 -0
  28. package/dist/artifact.js.map +1 -0
  29. package/dist/errors.d.ts +2 -0
  30. package/dist/errors.d.ts.map +1 -1
  31. package/dist/errors.js +2 -0
  32. package/dist/errors.js.map +1 -1
  33. package/dist/generate-text.d.ts.map +1 -1
  34. package/dist/generate-text.js +6 -2
  35. package/dist/generate-text.js.map +1 -1
  36. package/dist/index.d.ts +27 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +14 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/live-agent.d.ts.map +1 -1
  41. package/dist/live-agent.js +7 -1
  42. package/dist/live-agent.js.map +1 -1
  43. package/dist/provider-parity.d.ts +63 -0
  44. package/dist/provider-parity.d.ts.map +1 -0
  45. package/dist/provider-parity.js +175 -0
  46. package/dist/provider-parity.js.map +1 -0
  47. package/dist/runner.d.ts +111 -0
  48. package/dist/runner.d.ts.map +1 -0
  49. package/dist/runner.js +635 -0
  50. package/dist/runner.js.map +1 -0
  51. package/dist/safety-policy.d.ts +65 -0
  52. package/dist/safety-policy.d.ts.map +1 -0
  53. package/dist/safety-policy.js +308 -0
  54. package/dist/safety-policy.js.map +1 -0
  55. package/dist/types.d.ts +119 -3
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/workflow-artifacts.d.ts +28 -0
  58. package/dist/workflow-artifacts.d.ts.map +1 -0
  59. package/dist/workflow-artifacts.js +86 -0
  60. package/dist/workflow-artifacts.js.map +1 -0
  61. package/dist/workflow-evaluation-diff.d.ts +51 -0
  62. package/dist/workflow-evaluation-diff.d.ts.map +1 -0
  63. package/dist/workflow-evaluation-diff.js +141 -0
  64. package/dist/workflow-evaluation-diff.js.map +1 -0
  65. package/dist/workflow-evaluation.d.ts +94 -0
  66. package/dist/workflow-evaluation.d.ts.map +1 -0
  67. package/dist/workflow-evaluation.js +210 -0
  68. package/dist/workflow-evaluation.js.map +1 -0
  69. package/dist/workflow-state-service.d.ts +67 -0
  70. package/dist/workflow-state-service.d.ts.map +1 -0
  71. package/dist/workflow-state-service.js +498 -0
  72. package/dist/workflow-state-service.js.map +1 -0
  73. package/dist/workflow.d.ts +206 -0
  74. package/dist/workflow.d.ts.map +1 -0
  75. package/dist/workflow.js +727 -0
  76. package/dist/workflow.js.map +1 -0
  77. package/package.json +1 -1
package/README.md CHANGED
@@ -12,6 +12,11 @@ bun add @zhivex-ai/core
12
12
 
13
13
  Use `@zhivex-ai/core` when you are building custom adapters or need the lower-level shared contract directly.
14
14
 
15
+ Most applications should install `@zhivex-ai/sdk` and follow the main adoption guides:
16
+
17
+ - Quickstart: <https://github.com/Zhivex/zhivex-ai-sdk/blob/main/docs/QUICKSTART.md>
18
+ - Production guide: <https://github.com/Zhivex/zhivex-ai-sdk/blob/main/docs/PRODUCTION.md>
19
+
15
20
  Repository and full documentation:
16
21
 
17
22
  - <https://github.com/Zhivex/zhivex-ai-sdk>
@@ -0,0 +1,112 @@
1
+ import { z } from "zod";
2
+ import type { AnyToolDefinition, JsonValue, ToolCollection, ToolDefinition, ToolRegistryLike, ToolSet } from "./types.js";
3
+ export type AdvancedToolSource = "local" | "mcp" | "hosted" | "http" | "custom";
4
+ export type ToolPermission = "read" | "write" | "network" | "filesystem" | "code-execution" | "shell" | "external-side-effect";
5
+ export interface ToolAuditMetadata {
6
+ displayName?: string;
7
+ riskLevel?: "low" | "medium" | "high" | "critical";
8
+ owner?: string;
9
+ labels?: string[];
10
+ description?: string;
11
+ }
12
+ export interface AdvancedToolRegistryEntry<TTool extends AnyToolDefinition = AnyToolDefinition> {
13
+ tool: TTool;
14
+ source?: AdvancedToolSource;
15
+ permissions?: ToolPermission[];
16
+ audit?: ToolAuditMetadata;
17
+ metadata?: Record<string, JsonValue>;
18
+ }
19
+ export interface HttpToolOptions<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {
20
+ name: string;
21
+ description?: string;
22
+ schema: TSchema;
23
+ url: string | URL;
24
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
25
+ headers?: Record<string, string>;
26
+ timeoutMs?: number;
27
+ mapResponse?: (response: Response, input: z.infer<TSchema>) => Promise<JsonValue> | JsonValue;
28
+ metadata?: Record<string, JsonValue>;
29
+ }
30
+ export interface ToolTestResult {
31
+ ok: boolean;
32
+ toolName: string;
33
+ output?: JsonValue;
34
+ error?: {
35
+ message: string;
36
+ };
37
+ }
38
+ export interface ToolRegistryTestCase {
39
+ toolName: string;
40
+ input: unknown;
41
+ }
42
+ export type ToolPermissionPreset = "read-only" | "network-read" | "filesystem-write" | "code-execution" | "external-side-effect" | "admin";
43
+ export interface ToolFixtureCase {
44
+ name?: string;
45
+ toolName: string;
46
+ input: JsonValue;
47
+ expectedOutput?: JsonValue;
48
+ expectedErrorContains?: string;
49
+ metadata?: Record<string, JsonValue>;
50
+ }
51
+ export interface ToolTestFixture {
52
+ name?: string;
53
+ cases: ToolFixtureCase[];
54
+ metadata?: Record<string, JsonValue>;
55
+ createdAt?: number;
56
+ }
57
+ export interface ToolFixtureCaseResult extends ToolTestResult {
58
+ name?: string;
59
+ input: JsonValue;
60
+ expectedOutput?: JsonValue;
61
+ expectedErrorContains?: string;
62
+ failures: string[];
63
+ metadata?: Record<string, JsonValue>;
64
+ }
65
+ export interface ToolFixtureResult {
66
+ ok: boolean;
67
+ cases: ToolFixtureCaseResult[];
68
+ }
69
+ export interface ToolRegistryInspectionTool {
70
+ name: string;
71
+ kind: "callable" | "hosted";
72
+ source: AdvancedToolSource;
73
+ permissions: ToolPermission[];
74
+ audit?: ToolAuditMetadata;
75
+ requiresApproval: boolean;
76
+ metadata?: Record<string, JsonValue>;
77
+ }
78
+ export interface ToolRegistryInspection {
79
+ tools: ToolRegistryInspectionTool[];
80
+ }
81
+ export declare class AdvancedToolRegistry implements ToolRegistryLike {
82
+ private readonly entriesByName;
83
+ constructor(initial?: ToolCollection | Iterable<AnyToolDefinition | AdvancedToolRegistryEntry>);
84
+ register<TTool extends AnyToolDefinition>(value: TTool | AdvancedToolRegistryEntry<TTool>, defaults?: Omit<AdvancedToolRegistryEntry<TTool>, "tool">): AdvancedToolRegistryEntry<TTool>;
85
+ registerMany(input: ToolCollection | undefined, defaults?: Omit<AdvancedToolRegistryEntry, "tool">): this;
86
+ merge(...inputs: Array<ToolCollection | AdvancedToolRegistry | undefined>): AdvancedToolRegistry;
87
+ get(name: string): AnyToolDefinition | undefined;
88
+ getEntry(name: string): AdvancedToolRegistryEntry | undefined;
89
+ has(name: string): boolean;
90
+ entries(): Iterable<[string, AnyToolDefinition]>;
91
+ advancedEntries(): Iterable<AdvancedToolRegistryEntry>;
92
+ toToolSet(): ToolSet;
93
+ }
94
+ export declare const createAdvancedToolRegistry: (initial?: ToolCollection | Iterable<AnyToolDefinition | AdvancedToolRegistryEntry>) => AdvancedToolRegistry;
95
+ export declare const createHttpTool: <TSchema extends z.ZodTypeAny>(options: HttpToolOptions<TSchema>) => AdvancedToolRegistryEntry<ToolDefinition<TSchema, JsonValue>>;
96
+ export declare const testToolDefinition: (definition: AnyToolDefinition, input: unknown) => Promise<ToolTestResult>;
97
+ export declare const testToolRegistry: (registry: ToolCollection, cases: ToolRegistryTestCase[]) => Promise<ToolTestResult[]>;
98
+ export declare const createToolPermissionPreset: (preset: ToolPermissionPreset) => Omit<AdvancedToolRegistryEntry, "tool">;
99
+ export declare const createToolTestFixture: (options: {
100
+ name?: string;
101
+ cases: ToolFixtureCase[];
102
+ metadata?: Record<string, JsonValue>;
103
+ createdAt?: number;
104
+ }) => ToolTestFixture;
105
+ export declare const recordToolTestFixture: (registry: ToolCollection, cases: Array<ToolRegistryTestCase | ToolFixtureCase>, options?: {
106
+ name?: string;
107
+ metadata?: Record<string, JsonValue>;
108
+ createdAt?: number;
109
+ }) => Promise<ToolTestFixture>;
110
+ export declare const runToolTestFixture: (registry: ToolCollection, fixture: ToolTestFixture) => Promise<ToolFixtureResult>;
111
+ export declare const inspectToolRegistry: (registry: ToolCollection) => ToolRegistryInspection;
112
+ //# sourceMappingURL=advanced-tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-tool-registry.d.ts","sourceRoot":"","sources":["../src/advanced-tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,407 @@
1
+ import { ValidationError } from "./errors.js";
2
+ import { isHostedToolDefinition, serializeJsonValue, tool } from "./messages.js";
3
+ import { isToolRegistry, toToolSet } from "./tool-registry.js";
4
+ const sensitivePermissions = new Set([
5
+ "write",
6
+ "filesystem",
7
+ "code-execution",
8
+ "shell",
9
+ "external-side-effect"
10
+ ]);
11
+ const riskRequiresApproval = (riskLevel) => riskLevel === "high" || riskLevel === "critical";
12
+ const permissionsRequireApproval = (permissions) => permissions?.some((permission) => sensitivePermissions.has(permission)) ?? false;
13
+ const cloneTool = (definition) => ({
14
+ ...definition,
15
+ metadata: definition.metadata ? { ...definition.metadata } : undefined
16
+ });
17
+ const isCallableTool = (definition) => "execute" in definition;
18
+ const jsonEqual = (left, right) => JSON.stringify(serializeJsonValue(left)) === JSON.stringify(serializeJsonValue(right));
19
+ const normalizeEntry = (value, defaults) => "tool" in value
20
+ ? {
21
+ ...defaults,
22
+ ...value,
23
+ permissions: value.permissions ?? defaults?.permissions,
24
+ audit: value.audit ?? defaults?.audit,
25
+ metadata: value.metadata ?? defaults?.metadata
26
+ }
27
+ : {
28
+ ...defaults,
29
+ tool: value
30
+ };
31
+ const materializeEntry = (entry) => {
32
+ const definition = cloneTool(entry.tool);
33
+ const metadata = serializeJsonValue({
34
+ ...(definition.metadata ?? {}),
35
+ ...(entry.metadata ?? {}),
36
+ advancedRegistry: {
37
+ source: entry.source ?? "custom",
38
+ permissions: entry.permissions ?? [],
39
+ audit: entry.audit ?? null
40
+ }
41
+ });
42
+ return {
43
+ ...definition,
44
+ metadata,
45
+ requiresApproval: definition.requiresApproval ??
46
+ (permissionsRequireApproval(entry.permissions) || riskRequiresApproval(entry.audit?.riskLevel))
47
+ };
48
+ };
49
+ const jsonResponse = async (response) => {
50
+ const contentType = response.headers.get("content-type") ?? "";
51
+ if (contentType.includes("application/json")) {
52
+ return serializeJsonValue(await response.json());
53
+ }
54
+ return serializeJsonValue(await response.text());
55
+ };
56
+ const appendSearchParams = (url, input) => {
57
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
58
+ url.searchParams.set("input", JSON.stringify(input));
59
+ return;
60
+ }
61
+ for (const [key, value] of Object.entries(input)) {
62
+ url.searchParams.set(key, typeof value === "string" ? value : JSON.stringify(value));
63
+ }
64
+ };
65
+ const withTimeoutSignal = (timeoutMs) => {
66
+ if (!timeoutMs) {
67
+ return undefined;
68
+ }
69
+ const controller = new AbortController();
70
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
71
+ return {
72
+ signal: controller.signal,
73
+ clear: () => clearTimeout(timer)
74
+ };
75
+ };
76
+ export class AdvancedToolRegistry {
77
+ entriesByName = new Map();
78
+ constructor(initial) {
79
+ if (!initial) {
80
+ return;
81
+ }
82
+ if (isToolRegistry(initial)) {
83
+ this.registerMany(initial.toToolSet());
84
+ return;
85
+ }
86
+ if (Symbol.iterator in Object(initial)) {
87
+ for (const entry of initial) {
88
+ this.register(entry);
89
+ }
90
+ return;
91
+ }
92
+ this.registerMany(initial);
93
+ }
94
+ register(value, defaults) {
95
+ const entry = normalizeEntry(value, defaults);
96
+ const existing = this.entriesByName.get(entry.tool.name);
97
+ if (existing && existing.tool !== entry.tool) {
98
+ throw new ValidationError(`Tool "${entry.tool.name}" is already registered.`);
99
+ }
100
+ this.entriesByName.set(entry.tool.name, entry);
101
+ return entry;
102
+ }
103
+ registerMany(input, defaults) {
104
+ const toolSet = toToolSet(input);
105
+ if (!toolSet) {
106
+ return this;
107
+ }
108
+ for (const definition of Object.values(toolSet)) {
109
+ this.register(definition, defaults);
110
+ }
111
+ return this;
112
+ }
113
+ merge(...inputs) {
114
+ const merged = new AdvancedToolRegistry(this.advancedEntries());
115
+ for (const input of inputs) {
116
+ if (!input) {
117
+ continue;
118
+ }
119
+ if (input instanceof AdvancedToolRegistry) {
120
+ for (const entry of input.advancedEntries()) {
121
+ merged.register(entry);
122
+ }
123
+ }
124
+ else {
125
+ merged.registerMany(input);
126
+ }
127
+ }
128
+ return merged;
129
+ }
130
+ get(name) {
131
+ const entry = this.entriesByName.get(name);
132
+ return entry ? materializeEntry(entry) : undefined;
133
+ }
134
+ getEntry(name) {
135
+ return this.entriesByName.get(name);
136
+ }
137
+ has(name) {
138
+ return this.entriesByName.has(name);
139
+ }
140
+ entries() {
141
+ return Object.entries(this.toToolSet());
142
+ }
143
+ advancedEntries() {
144
+ return this.entriesByName.values();
145
+ }
146
+ toToolSet() {
147
+ return Object.fromEntries([...this.entriesByName.entries()].map(([name, entry]) => [name, materializeEntry(entry)]));
148
+ }
149
+ }
150
+ export const createAdvancedToolRegistry = (initial) => new AdvancedToolRegistry(initial);
151
+ export const createHttpTool = (options) => {
152
+ const method = options.method ?? "POST";
153
+ const definition = tool({
154
+ name: options.name,
155
+ description: options.description,
156
+ schema: options.schema,
157
+ metadata: serializeJsonValue({
158
+ ...(options.metadata ?? {}),
159
+ source: "http",
160
+ url: String(options.url),
161
+ method
162
+ }),
163
+ execute: async (input) => {
164
+ const serializedInput = serializeJsonValue(input);
165
+ const url = new URL(String(options.url));
166
+ const timeout = withTimeoutSignal(options.timeoutMs);
167
+ const init = {
168
+ method,
169
+ headers: {
170
+ accept: "application/json, text/plain;q=0.9, */*;q=0.8",
171
+ ...options.headers
172
+ },
173
+ signal: timeout?.signal
174
+ };
175
+ if (method === "GET") {
176
+ appendSearchParams(url, serializedInput);
177
+ }
178
+ else {
179
+ init.headers = {
180
+ "content-type": "application/json",
181
+ ...init.headers
182
+ };
183
+ init.body = JSON.stringify(serializedInput);
184
+ }
185
+ try {
186
+ const response = await fetch(url, init);
187
+ if (!response.ok) {
188
+ throw new Error(`HTTP tool "${options.name}" failed with status ${response.status}.`);
189
+ }
190
+ return serializeJsonValue(options.mapResponse ? await options.mapResponse(response, input) : await jsonResponse(response));
191
+ }
192
+ finally {
193
+ timeout?.clear();
194
+ }
195
+ }
196
+ });
197
+ return {
198
+ tool: definition,
199
+ source: "http",
200
+ permissions: ["network", "external-side-effect"],
201
+ audit: {
202
+ displayName: options.name,
203
+ riskLevel: "medium",
204
+ description: options.description
205
+ }
206
+ };
207
+ };
208
+ export const testToolDefinition = async (definition, input) => {
209
+ if (!isCallableTool(definition)) {
210
+ return {
211
+ ok: false,
212
+ toolName: definition.name,
213
+ error: {
214
+ message: `Tool "${definition.name}" is hosted and cannot be executed locally.`
215
+ }
216
+ };
217
+ }
218
+ const parsed = definition.schema.safeParse(input);
219
+ if (!parsed.success) {
220
+ return {
221
+ ok: false,
222
+ toolName: definition.name,
223
+ error: {
224
+ message: `Invalid input for tool "${definition.name}": ${parsed.error.message}`
225
+ }
226
+ };
227
+ }
228
+ try {
229
+ return {
230
+ ok: true,
231
+ toolName: definition.name,
232
+ output: serializeJsonValue(await definition.execute(parsed.data))
233
+ };
234
+ }
235
+ catch (error) {
236
+ return {
237
+ ok: false,
238
+ toolName: definition.name,
239
+ error: {
240
+ message: error instanceof Error ? error.message : String(error)
241
+ }
242
+ };
243
+ }
244
+ };
245
+ export const testToolRegistry = async (registry, cases) => {
246
+ const toolSet = toToolSet(registry) ?? {};
247
+ const results = [];
248
+ for (const testCase of cases) {
249
+ const definition = toolSet[testCase.toolName];
250
+ if (!definition) {
251
+ results.push({
252
+ ok: false,
253
+ toolName: testCase.toolName,
254
+ error: {
255
+ message: `Tool "${testCase.toolName}" is not registered.`
256
+ }
257
+ });
258
+ continue;
259
+ }
260
+ results.push(await testToolDefinition(definition, testCase.input));
261
+ }
262
+ return results;
263
+ };
264
+ export const createToolPermissionPreset = (preset) => {
265
+ switch (preset) {
266
+ case "read-only":
267
+ return {
268
+ permissions: ["read"],
269
+ audit: { riskLevel: "low", labels: ["read-only"] }
270
+ };
271
+ case "network-read":
272
+ return {
273
+ permissions: ["read", "network"],
274
+ audit: { riskLevel: "medium", labels: ["network"] }
275
+ };
276
+ case "filesystem-write":
277
+ return {
278
+ permissions: ["read", "write", "filesystem"],
279
+ audit: { riskLevel: "high", labels: ["filesystem"] }
280
+ };
281
+ case "code-execution":
282
+ return {
283
+ permissions: ["code-execution"],
284
+ audit: { riskLevel: "critical", labels: ["code-execution"] }
285
+ };
286
+ case "external-side-effect":
287
+ return {
288
+ permissions: ["network", "external-side-effect"],
289
+ audit: { riskLevel: "high", labels: ["external-side-effect"] }
290
+ };
291
+ case "admin":
292
+ return {
293
+ permissions: ["read", "write", "network", "filesystem", "code-execution", "shell", "external-side-effect"],
294
+ audit: { riskLevel: "critical", labels: ["admin"] }
295
+ };
296
+ }
297
+ };
298
+ export const createToolTestFixture = (options) => ({
299
+ name: options.name,
300
+ cases: options.cases.map((testCase) => ({
301
+ ...testCase,
302
+ input: serializeJsonValue(testCase.input),
303
+ expectedOutput: testCase.expectedOutput === undefined ? undefined : serializeJsonValue(testCase.expectedOutput)
304
+ })),
305
+ metadata: options.metadata,
306
+ createdAt: options.createdAt ?? Date.now()
307
+ });
308
+ export const recordToolTestFixture = async (registry, cases, options = {}) => {
309
+ const results = await testToolRegistry(registry, cases);
310
+ return createToolTestFixture({
311
+ name: options.name,
312
+ metadata: options.metadata,
313
+ createdAt: options.createdAt,
314
+ cases: cases.map((testCase, index) => {
315
+ const result = results[index];
316
+ return {
317
+ name: "name" in testCase ? testCase.name : undefined,
318
+ toolName: testCase.toolName,
319
+ input: serializeJsonValue(testCase.input),
320
+ expectedOutput: result?.ok ? result.output : undefined,
321
+ expectedErrorContains: result?.ok ? undefined : result?.error?.message,
322
+ metadata: "metadata" in testCase ? testCase.metadata : undefined
323
+ };
324
+ })
325
+ });
326
+ };
327
+ export const runToolTestFixture = async (registry, fixture) => {
328
+ const results = await testToolRegistry(registry, fixture.cases);
329
+ const cases = fixture.cases.map((testCase, index) => {
330
+ const result = results[index] ?? {
331
+ ok: false,
332
+ toolName: testCase.toolName,
333
+ error: { message: `Tool "${testCase.toolName}" did not return a result.` }
334
+ };
335
+ const failures = [];
336
+ if (testCase.expectedOutput !== undefined && !jsonEqual(result.output, testCase.expectedOutput)) {
337
+ failures.push(`Expected output for tool "${testCase.toolName}" did not match fixture.`);
338
+ }
339
+ if (testCase.expectedErrorContains !== undefined &&
340
+ !result.error?.message.includes(testCase.expectedErrorContains)) {
341
+ failures.push(`Expected error for tool "${testCase.toolName}" to contain "${testCase.expectedErrorContains}".`);
342
+ }
343
+ if (testCase.expectedOutput !== undefined && !result.ok) {
344
+ failures.push(`Expected tool "${testCase.toolName}" to succeed.`);
345
+ }
346
+ const expectedFailure = testCase.expectedErrorContains !== undefined;
347
+ return {
348
+ ...result,
349
+ name: testCase.name,
350
+ input: testCase.input,
351
+ expectedOutput: testCase.expectedOutput,
352
+ expectedErrorContains: testCase.expectedErrorContains,
353
+ failures,
354
+ ok: failures.length === 0 && (expectedFailure ? !result.ok : result.ok),
355
+ metadata: testCase.metadata
356
+ };
357
+ });
358
+ return {
359
+ ok: cases.every((testCase) => testCase.ok),
360
+ cases
361
+ };
362
+ };
363
+ const metadataAdvancedRegistry = (definition) => {
364
+ const metadata = definition.metadata?.advancedRegistry;
365
+ return metadata && typeof metadata === "object" && !Array.isArray(metadata)
366
+ ? metadata
367
+ : undefined;
368
+ };
369
+ const inspectDefinition = (definition, entry) => {
370
+ const materialized = entry ? materializeEntry(entry) : definition;
371
+ const advanced = metadataAdvancedRegistry(materialized);
372
+ const audit = entry?.audit ?? (advanced?.audit && typeof advanced.audit === "object" && !Array.isArray(advanced.audit)
373
+ ? advanced.audit
374
+ : undefined);
375
+ const permissions = entry?.permissions ?? (Array.isArray(advanced?.permissions)
376
+ ? advanced.permissions.filter((permission) => typeof permission === "string" && [
377
+ "read",
378
+ "write",
379
+ "network",
380
+ "filesystem",
381
+ "code-execution",
382
+ "shell",
383
+ "external-side-effect"
384
+ ].includes(permission))
385
+ : []);
386
+ return {
387
+ name: materialized.name,
388
+ kind: isHostedToolDefinition(materialized) ? "hosted" : "callable",
389
+ source: entry?.source ?? (typeof advanced?.source === "string" ? advanced.source : "custom"),
390
+ permissions,
391
+ audit,
392
+ requiresApproval: materialized.requiresApproval ?? false,
393
+ metadata: materialized.metadata
394
+ };
395
+ };
396
+ export const inspectToolRegistry = (registry) => {
397
+ if (registry instanceof AdvancedToolRegistry) {
398
+ return {
399
+ tools: [...registry.advancedEntries()].map((entry) => inspectDefinition(entry.tool, entry))
400
+ };
401
+ }
402
+ const toolSet = toToolSet(registry) ?? {};
403
+ return {
404
+ tools: Object.values(toolSet).map((definition) => inspectDefinition(definition))
405
+ };
406
+ };
407
+ //# sourceMappingURL=advanced-tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-tool-registry.js","sourceRoot":"","sources":["../src/advanced-tool-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA4G/D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAiB;IACnD,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,OAAO;IACP,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,SAAqD,EAAE,EAAE,CACrF,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,UAAU,CAAC;AAEnD,MAAM,0BAA0B,GAAG,CAAC,WAAkD,EAAE,EAAE,CACxF,WAAW,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;AAEnF,MAAM,SAAS,GAAG,CAAkC,UAAiB,EAAS,EAAE,CAAC,CAAC;IAChF,GAAG,UAAU;IACb,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;CACvE,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,UAA6B,EAAgC,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC;AAEhH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE,CAC3D,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzF,MAAM,cAAc,GAAG,CACrB,KAA+C,EAC/C,QAAyD,EACvB,EAAE,CACpC,MAAM,IAAI,KAAK;IACb,CAAC,CAAC;QACE,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW;QACvD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ;KAC/C;IACH,CAAC,CAAC;QACE,GAAG,QAAQ;QACX,IAAI,EAAE,KAAK;KACZ,CAAC;AAER,MAAM,gBAAgB,GAAG,CAAC,KAAgC,EAAqB,EAAE;IAC/E,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzB,gBAAgB,EAAE;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;SAC3B;KACF,CAA8B,CAAC;IAEhC,OAAO;QACL,GAAG,UAAU;QACb,QAAQ;QACR,gBAAgB,EACd,UAAU,CAAC,gBAAgB;YAC3B,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KAClG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,QAAkB,EAAsB,EAAE;IACpE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,GAAQ,EAAE,KAAgB,EAAE,EAAE;IACxD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAA6B,EAAE,EAAE;IAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,oBAAoB;IACd,aAAa,GAAG,IAAI,GAAG,EAAqC,CAAC;IAE9E,YAAY,OAAkF;QAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,OAAkE,EAAE,CAAC;gBACvF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAkB,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CACN,KAA+C,EAC/C,QAAyD;QAEzD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,eAAe,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAkC,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,KAAiC,EAAE,QAAkD;QAChG,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,MAAgE;QACvE,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YACD,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC5C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAED,SAAS;QACP,OAAO,MAAM,CAAC,WAAW,CACvB,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1F,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAkF,EAC5D,EAAE,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAiC,EAC8B,EAAE;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,kBAAkB,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACxB,MAAM;SACP,CAA8B;QAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,IAAI,GAAgB;gBACxB,MAAM;gBACN,OAAO,EAAE;oBACP,MAAM,EAAE,+CAA+C;oBACvD,GAAG,OAAO,CAAC,OAAO;iBACnB;gBACD,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC;YAEF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,GAAG;oBACb,cAAc,EAAE,kBAAkB;oBAClC,GAAG,IAAI,CAAC,OAAO;iBAChB,CAAC;gBACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,CAAC,IAAI,wBAAwB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxF,CAAC;gBAED,OAAO,kBAAkB,CACvB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAyB,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CACpH,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;QAChD,KAAK,EAAE;YACL,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAA6B,EAC7B,KAAc,EACW,EAAE;IAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,SAAS,UAAU,CAAC,IAAI,6CAA6C;aAC/E;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,2BAA2B,UAAU,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;aAChF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,MAAM,EAAE,kBAAkB,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAClE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,QAAwB,EACxB,KAA6B,EACF,EAAE;IAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE;oBACL,OAAO,EAAE,SAAS,QAAQ,CAAC,QAAQ,sBAAsB;iBAC1D;aACF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,MAA4B,EACa,EAAE;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO;gBACL,WAAW,EAAE,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE;aACnD,CAAC;QACJ,KAAK,cAAc;YACjB,OAAO;gBACL,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;gBAChC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;aACpD,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO;gBACL,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;gBAC5C,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE;aACrD,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,WAAW,EAAE,CAAC,gBAAgB,CAAC;gBAC/B,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aAC7D,CAAC;QACJ,KAAK,sBAAsB;YACzB,OAAO;gBACL,WAAW,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;gBAChD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,sBAAsB,CAAC,EAAE;aAC/D,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,CAAC;gBAC1G,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;aACpD,CAAC;IACN,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAKrC,EAAmB,EAAE,CAAC,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtC,GAAG,QAAQ;QACX,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC,cAAc,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC;KAChH,CAAC,CAAC;IACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,QAAwB,EACxB,KAAoD,EACpD,UAAuF,EAAE,EAC/D,EAAE;IAC5B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxD,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;gBACL,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACpD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACtD,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;gBACtE,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,QAAwB,EACxB,OAAwB,EACI,EAAE;IAC9B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAyB,EAAE;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI;YAC/B,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,QAAQ,CAAC,QAAQ,4BAA4B,EAAE;SAC3E,CAAC;QACF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChG,QAAQ,CAAC,IAAI,CAAC,6BAA6B,QAAQ,CAAC,QAAQ,0BAA0B,CAAC,CAAC;QAC1F,CAAC;QACD,IACE,QAAQ,CAAC,qBAAqB,KAAK,SAAS;YAC5C,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAC/D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,4BAA4B,QAAQ,CAAC,QAAQ,iBAAiB,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,eAAe,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,qBAAqB,KAAK,SAAS,CAAC;QAErE,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;YACrD,QAAQ;YACR,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,UAA6B,EAAE,EAAE;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACvD,OAAO,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzE,CAAC,CAAC,QAAqC;QACvC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,UAA6B,EAC7B,KAAiC,EACL,EAAE;IAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAClE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpH,CAAC,CAAC,QAAQ,CAAC,KAAqC;QAChD,CAAC,CAAC,SAAS,CAAC,CAAC;IACf,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC7E,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAgC,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI;YAC1G,MAAM;YACN,OAAO;YACP,SAAS;YACT,YAAY;YACZ,gBAAgB;YAChB,OAAO;YACP,sBAAsB;SACvB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,CAAC;IAER,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,IAAI,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QAClE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAA4B,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClH,WAAW;QACX,KAAK;QACL,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,IAAI,KAAK;QACxD,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAwB,EAA0B,EAAE;IACtF,IAAI,QAAQ,YAAY,oBAAoB,EAAE,CAAC;QAC7C,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACjF,CAAC;AACJ,CAAC,CAAC"}