@perstack/base 0.0.66 → 0.0.68

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 (68) hide show
  1. package/dist/bin/server.d.ts +1 -3
  2. package/dist/bin/server.js +14 -14
  3. package/dist/bin/server.js.map +1 -1
  4. package/dist/server-D0EBm_kC.js +607 -0
  5. package/dist/server-D0EBm_kC.js.map +1 -0
  6. package/dist/src/index.d.ts +198 -12
  7. package/dist/src/index.js +3 -13
  8. package/package.json +17 -20
  9. package/dist/bin/server.d.ts.map +0 -1
  10. package/dist/package.json +0 -46
  11. package/dist/src/index.d.ts.map +0 -1
  12. package/dist/src/index.js.map +0 -1
  13. package/dist/src/lib/mime.d.ts +0 -2
  14. package/dist/src/lib/mime.d.ts.map +0 -1
  15. package/dist/src/lib/mime.js +0 -13
  16. package/dist/src/lib/mime.js.map +0 -1
  17. package/dist/src/lib/path.d.ts +0 -3
  18. package/dist/src/lib/path.d.ts.map +0 -1
  19. package/dist/src/lib/path.js +0 -49
  20. package/dist/src/lib/path.js.map +0 -1
  21. package/dist/src/lib/safe-file.d.ts +0 -4
  22. package/dist/src/lib/safe-file.d.ts.map +0 -1
  23. package/dist/src/lib/safe-file.js +0 -38
  24. package/dist/src/lib/safe-file.js.map +0 -1
  25. package/dist/src/lib/tool-result.d.ts +0 -4
  26. package/dist/src/lib/tool-result.d.ts.map +0 -1
  27. package/dist/src/lib/tool-result.js +0 -9
  28. package/dist/src/lib/tool-result.js.map +0 -1
  29. package/dist/src/server.d.ts +0 -20
  30. package/dist/src/server.d.ts.map +0 -1
  31. package/dist/src/server.js +0 -50
  32. package/dist/src/server.js.map +0 -1
  33. package/dist/src/tools/attempt-completion.d.ts +0 -11
  34. package/dist/src/tools/attempt-completion.d.ts.map +0 -1
  35. package/dist/src/tools/attempt-completion.js +0 -27
  36. package/dist/src/tools/attempt-completion.js.map +0 -1
  37. package/dist/src/tools/edit-text-file.d.ts +0 -12
  38. package/dist/src/tools/edit-text-file.d.ts.map +0 -1
  39. package/dist/src/tools/edit-text-file.js +0 -56
  40. package/dist/src/tools/edit-text-file.js.map +0 -1
  41. package/dist/src/tools/exec.d.ts +0 -16
  42. package/dist/src/tools/exec.d.ts.map +0 -1
  43. package/dist/src/tools/exec.js +0 -86
  44. package/dist/src/tools/exec.js.map +0 -1
  45. package/dist/src/tools/read-image-file.d.ts +0 -10
  46. package/dist/src/tools/read-image-file.d.ts.map +0 -1
  47. package/dist/src/tools/read-image-file.js +0 -48
  48. package/dist/src/tools/read-image-file.js.map +0 -1
  49. package/dist/src/tools/read-pdf-file.d.ts +0 -10
  50. package/dist/src/tools/read-pdf-file.d.ts.map +0 -1
  51. package/dist/src/tools/read-pdf-file.js +0 -48
  52. package/dist/src/tools/read-pdf-file.js.map +0 -1
  53. package/dist/src/tools/read-text-file.d.ts +0 -13
  54. package/dist/src/tools/read-text-file.d.ts.map +0 -1
  55. package/dist/src/tools/read-text-file.js +0 -46
  56. package/dist/src/tools/read-text-file.js.map +0 -1
  57. package/dist/src/tools/skill-management.d.ts +0 -61
  58. package/dist/src/tools/skill-management.d.ts.map +0 -1
  59. package/dist/src/tools/skill-management.js +0 -162
  60. package/dist/src/tools/skill-management.js.map +0 -1
  61. package/dist/src/tools/todo.d.ts +0 -26
  62. package/dist/src/tools/todo.d.ts.map +0 -1
  63. package/dist/src/tools/todo.js +0 -74
  64. package/dist/src/tools/todo.js.map +0 -1
  65. package/dist/src/tools/write-text-file.d.ts +0 -10
  66. package/dist/src/tools/write-text-file.d.ts.map +0 -1
  67. package/dist/src/tools/write-text-file.js +0 -41
  68. package/dist/src/tools/write-text-file.js.map +0 -1
@@ -1,162 +0,0 @@
1
- import { z } from "zod/v4";
2
- import { errorToolResult, successToolResult } from "../lib/tool-result.js";
3
- export function registerAddSkill(server, callbacks) {
4
- server.registerTool("addSkill", {
5
- title: "Add skill",
6
- description: "Dynamically add an MCP skill. Returns the list of tool names provided by the new skill.",
7
- inputSchema: {
8
- name: z.string().describe("Unique skill name"),
9
- type: z.enum(["mcpStdioSkill", "mcpSseSkill"]).describe("Skill transport type"),
10
- command: z.string().optional().describe("Command to execute (for stdio skills)"),
11
- packageName: z.string().optional().describe("Package name for npx/uvx (for stdio skills)"),
12
- args: z.array(z.string()).optional().describe("Additional command arguments"),
13
- requiredEnv: z.array(z.string()).optional().describe("Required environment variable names"),
14
- endpoint: z.string().optional().describe("SSE endpoint URL (for SSE skills)"),
15
- description: z.string().optional().describe("Human-readable description"),
16
- rule: z.string().optional().describe("Usage rules for the LLM"),
17
- pick: z.array(z.string()).optional().describe("Tool names to include (whitelist)"),
18
- omit: z.array(z.string()).optional().describe("Tool names to exclude (blacklist)"),
19
- },
20
- }, async (input) => {
21
- try {
22
- return successToolResult(await callbacks.addSkill(input));
23
- }
24
- catch (e) {
25
- if (e instanceof Error)
26
- return errorToolResult(e);
27
- throw e;
28
- }
29
- });
30
- }
31
- export function registerRemoveSkill(server, callbacks) {
32
- server.registerTool("removeSkill", {
33
- title: "Remove skill",
34
- description: "Dynamically remove an MCP skill by name. Disconnects and removes the skill.",
35
- inputSchema: {
36
- skillName: z.string().describe("Name of the skill to remove"),
37
- },
38
- }, async (input) => {
39
- try {
40
- await callbacks.removeSkill(input.skillName);
41
- return successToolResult({ removed: input.skillName });
42
- }
43
- catch (e) {
44
- if (e instanceof Error)
45
- return errorToolResult(e);
46
- throw e;
47
- }
48
- });
49
- }
50
- export function registerAddDelegate(server, callbacks) {
51
- server.registerTool("addDelegate", {
52
- title: "Add delegate",
53
- description: "Dynamically add a delegate expert. Returns the delegate tool name so you know what to call.",
54
- inputSchema: {
55
- expertKey: z.string().describe("Key of the expert to add as a delegate"),
56
- },
57
- }, async (input) => {
58
- try {
59
- return successToolResult(await callbacks.addDelegate(input.expertKey));
60
- }
61
- catch (e) {
62
- if (e instanceof Error)
63
- return errorToolResult(e);
64
- throw e;
65
- }
66
- });
67
- }
68
- export function registerRemoveDelegate(server, callbacks) {
69
- server.registerTool("removeDelegate", {
70
- title: "Remove delegate",
71
- description: "Dynamically remove a delegate expert by name.",
72
- inputSchema: {
73
- expertName: z.string().describe("Name of the delegate expert to remove"),
74
- },
75
- }, async (input) => {
76
- try {
77
- await callbacks.removeDelegate(input.expertName);
78
- return successToolResult({ removed: input.expertName });
79
- }
80
- catch (e) {
81
- if (e instanceof Error)
82
- return errorToolResult(e);
83
- throw e;
84
- }
85
- });
86
- }
87
- export function registerCreateExpert(server, callbacks) {
88
- server.registerTool("createExpert", {
89
- title: "Create expert",
90
- description: "Dynamically create an expert definition in memory. Returns the expert key so you can add it as a delegate.",
91
- inputSchema: {
92
- key: z.string().describe("Unique expert key (kebab-case)"),
93
- instruction: z.string().describe("System instruction for the expert"),
94
- description: z.string().optional().describe("Human-readable description"),
95
- version: z.string().optional().describe("Semantic version (defaults to 1.0.0)"),
96
- skills: z
97
- .record(z.string(), z.object({
98
- type: z.enum(["mcpStdioSkill", "mcpSseSkill"]).describe("Skill transport type"),
99
- command: z.string().optional().describe("Command to execute (for stdio skills)"),
100
- packageName: z
101
- .string()
102
- .optional()
103
- .describe("Package name for npx/uvx (for stdio skills)"),
104
- args: z.array(z.string()).optional().describe("Additional command arguments"),
105
- requiredEnv: z
106
- .array(z.string())
107
- .optional()
108
- .describe("Required environment variable names"),
109
- endpoint: z.string().optional().describe("SSE endpoint URL (for SSE skills)"),
110
- description: z.string().optional().describe("Human-readable description"),
111
- rule: z.string().optional().describe("Usage rules for the LLM"),
112
- pick: z.array(z.string()).optional().describe("Tool names to include (whitelist)"),
113
- omit: z.array(z.string()).optional().describe("Tool names to exclude (blacklist)"),
114
- lazyInit: z.boolean().optional().describe("Lazy initialization"),
115
- }))
116
- .optional()
117
- .describe("Skills map (defaults to @perstack/base)"),
118
- delegates: z.array(z.string()).optional().describe("Expert keys to delegate to"),
119
- tags: z.array(z.string()).optional().describe("Tags for categorization"),
120
- providerTools: z.array(z.string()).optional().describe("Provider-specific tool names"),
121
- },
122
- }, async (input) => {
123
- try {
124
- return successToolResult(await callbacks.createExpert(input));
125
- }
126
- catch (e) {
127
- if (e instanceof Error)
128
- return errorToolResult(e);
129
- throw e;
130
- }
131
- });
132
- }
133
- export function registerAddDelegateFromConfig(server, callbacks) {
134
- server.registerTool("addDelegateFromConfig", {
135
- title: "Add delegate from config",
136
- description: "Load all experts from a perstack.toml config file and add the specified one as a delegate. This is a shortcut that combines reading the config, creating the expert, and adding it as a delegate in a single step.",
137
- inputSchema: {
138
- configPath: z.string().describe("Path to the perstack.toml config file"),
139
- delegateExpertName: z
140
- .string()
141
- .describe("Name of the expert in the config to add as a delegate"),
142
- },
143
- }, async (input) => {
144
- try {
145
- return successToolResult(await callbacks.addDelegateFromConfig(input));
146
- }
147
- catch (e) {
148
- if (e instanceof Error)
149
- return errorToolResult(e);
150
- throw e;
151
- }
152
- });
153
- }
154
- export function registerSkillManagementTools(server, callbacks) {
155
- registerAddSkill(server, callbacks);
156
- registerRemoveSkill(server, callbacks);
157
- registerAddDelegate(server, callbacks);
158
- registerRemoveDelegate(server, callbacks);
159
- registerCreateExpert(server, callbacks);
160
- registerAddDelegateFromConfig(server, callbacks);
161
- }
162
- //# sourceMappingURL=skill-management.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-management.js","sourceRoot":"","sources":["../../../src/tools/skill-management.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function todo(input: {
3
- newTodos?: string[];
4
- completedTodos?: number[];
5
- }): Promise<{
6
- todos: {
7
- id: number;
8
- title: string;
9
- completed: boolean;
10
- }[];
11
- }>;
12
- export declare function clearTodo(): Promise<{
13
- todos: {
14
- id: number;
15
- title: string;
16
- completed: boolean;
17
- }[];
18
- }>;
19
- export declare function getRemainingTodos(): {
20
- id: number;
21
- title: string;
22
- completed: boolean;
23
- }[];
24
- export declare function registerTodo(server: McpServer): void;
25
- export declare function registerClearTodo(server: McpServer): void;
26
- //# sourceMappingURL=todo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../../src/tools/todo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAiCxE,wBAAsB,IAAI,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;YA3BrE,MAAM;eAAS,MAAM;mBAAa,OAAO;;GA6BvD;AACD,wBAAsB,SAAS;;YA9BhB,MAAM;eAAS,MAAM;mBAAa,OAAO;;GAgCvD;AACD,wBAAgB,iBAAiB;QAjClB,MAAM;WAAS,MAAM;eAAa,OAAO;IAmCvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,QAoB7C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAiBlD"}
@@ -1,74 +0,0 @@
1
- import { z } from "zod/v4";
2
- import { errorToolResult, successToolResult } from "../lib/tool-result.js";
3
- class Todo {
4
- currentTodoId = 0;
5
- todos = [];
6
- processTodo(input) {
7
- const { newTodos, completedTodos } = input;
8
- if (newTodos) {
9
- this.todos.push(...newTodos.map((title) => ({ id: this.currentTodoId++, title, completed: false })));
10
- }
11
- if (completedTodos) {
12
- this.todos = this.todos.map((todo) => ({
13
- ...todo,
14
- completed: todo.completed || completedTodos.includes(todo.id),
15
- }));
16
- }
17
- return {
18
- todos: this.todos,
19
- };
20
- }
21
- clearTodo() {
22
- this.todos = [];
23
- this.currentTodoId = 0;
24
- return {
25
- todos: this.todos,
26
- };
27
- }
28
- }
29
- const todoSingleton = new Todo();
30
- export async function todo(input) {
31
- return todoSingleton.processTodo(input);
32
- }
33
- export async function clearTodo() {
34
- return todoSingleton.clearTodo();
35
- }
36
- export function getRemainingTodos() {
37
- return todoSingleton.todos.filter((t) => !t.completed);
38
- }
39
- export function registerTodo(server) {
40
- server.registerTool("todo", {
41
- title: "todo",
42
- description: "Manage a todo list: add tasks and mark them completed.",
43
- inputSchema: {
44
- newTodos: z.array(z.string()).describe("New todos to add").optional(),
45
- completedTodos: z.array(z.number()).describe("Todo ids that are completed").optional(),
46
- },
47
- }, async (input) => {
48
- try {
49
- return successToolResult(await todo(input));
50
- }
51
- catch (e) {
52
- if (e instanceof Error)
53
- return errorToolResult(e);
54
- throw e;
55
- }
56
- });
57
- }
58
- export function registerClearTodo(server) {
59
- server.registerTool("clearTodo", {
60
- title: "clearTodo",
61
- description: "Clear all todos.",
62
- inputSchema: {},
63
- }, async () => {
64
- try {
65
- return successToolResult(await clearTodo());
66
- }
67
- catch (e) {
68
- if (e instanceof Error)
69
- return errorToolResult(e);
70
- throw e;
71
- }
72
- });
73
- }
74
- //# sourceMappingURL=todo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/tools/todo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,IAAI;IACR,aAAa,GAAG,CAAC,CAAA;IACjB,KAAK,GAAwD,EAAE,CAAA;IACxD,WAAW,CAAC,KAAyD;QAC1E,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACpF,CAAA;QACH,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrC,GAAG,IAAI;gBACP,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;aAC9D,CAAC,CAAC,CAAA;QACL,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAA;IACH,CAAC;IACM,SAAS;QACd,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAA;IACH,CAAC;CACF;AACD,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAA;AAChC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAyD;IAClF,OAAO,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,aAAa,CAAC,SAAS,EAAE,CAAA;AAClC,CAAC;AACD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;YACrE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,QAAQ,EAAE;SACvF;KACF,EACD,KAAK,EAAE,KAAyD,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,KAAK;gBAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAA;YACjD,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,SAAS,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,KAAK;gBAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAA;YACjD,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function writeTextFile(input: {
3
- path: string;
4
- text: string;
5
- }): Promise<{
6
- path: string;
7
- text: string;
8
- }>;
9
- export declare function registerWriteTextFile(server: McpServer): void;
10
- //# sourceMappingURL=write-text-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-text-file.d.ts","sourceRoot":"","sources":["../../../src/tools/write-text-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAMxE,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;;;GAcxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAoBtD"}
@@ -1,41 +0,0 @@
1
- import { mkdir, stat } from "node:fs/promises";
2
- import { dirname } from "node:path";
3
- import { z } from "zod/v4";
4
- import { validatePath } from "../lib/path.js";
5
- import { safeWriteFile } from "../lib/safe-file.js";
6
- import { errorToolResult, successToolResult } from "../lib/tool-result.js";
7
- export async function writeTextFile(input) {
8
- const { path, text } = input;
9
- const validatedPath = await validatePath(path);
10
- const stats = await stat(validatedPath).catch(() => null);
11
- if (stats && !(stats.mode & 0o200)) {
12
- throw new Error(`File ${path} is not writable`);
13
- }
14
- const dir = dirname(validatedPath);
15
- await mkdir(dir, { recursive: true });
16
- await safeWriteFile(validatedPath, text);
17
- return {
18
- path: validatedPath,
19
- text,
20
- };
21
- }
22
- export function registerWriteTextFile(server) {
23
- server.registerTool("writeTextFile", {
24
- title: "writeTextFile",
25
- description: "Create or overwrite a UTF-8 text file. Creates parent directories as needed.",
26
- inputSchema: {
27
- path: z.string().describe("Target file path (relative or absolute)."),
28
- text: z.string().describe("Text to write to the file."),
29
- },
30
- }, async (input) => {
31
- try {
32
- return successToolResult(await writeTextFile(input));
33
- }
34
- catch (e) {
35
- if (e instanceof Error)
36
- return errorToolResult(e);
37
- throw e;
38
- }
39
- });
40
- }
41
- //# sourceMappingURL=write-text-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-text-file.js","sourceRoot":"","sources":["../../../src/tools/write-text-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAqC;IACvE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACzD,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAA;IACjD,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAClC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IACxC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,IAAI;KACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACxD;KACF,EACD,KAAK,EAAE,KAAqC,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,KAAK;gBAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAA;YACjD,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}