zelari-code 0.7.9 → 0.7.11

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 (108) hide show
  1. package/LICENSE +37 -37
  2. package/README.md +320 -295
  3. package/bin/zelari-code.js +62 -62
  4. package/dist/cli/app.js +33 -3
  5. package/dist/cli/app.js.map +1 -1
  6. package/dist/cli/components/LiveRegion.js +7 -3
  7. package/dist/cli/components/LiveRegion.js.map +1 -1
  8. package/dist/cli/components/SelectList.js +67 -0
  9. package/dist/cli/components/SelectList.js.map +1 -0
  10. package/dist/cli/components/Spinner.js +51 -0
  11. package/dist/cli/components/Spinner.js.map +1 -0
  12. package/dist/cli/components/SplashScreen.js +85 -85
  13. package/dist/cli/components/StatusBar.js +42 -34
  14. package/dist/cli/components/StatusBar.js.map +1 -1
  15. package/dist/cli/headless.js +10 -10
  16. package/dist/cli/hooks/useSlashDispatch.js +11 -1
  17. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  18. package/dist/cli/keyStore.js +2 -2
  19. package/dist/cli/keyStore.js.map +1 -1
  20. package/dist/cli/main.bundled.js +15146 -14919
  21. package/dist/cli/main.bundled.js.map +4 -4
  22. package/dist/cli/main.js +1 -1
  23. package/dist/cli/main.js.map +1 -1
  24. package/dist/cli/modelDiscovery.js +42 -5
  25. package/dist/cli/modelDiscovery.js.map +1 -1
  26. package/dist/cli/provider/openai-compatible.js +4 -2
  27. package/dist/cli/provider/openai-compatible.js.map +1 -1
  28. package/dist/cli/slashCommands.js +22 -5
  29. package/dist/cli/slashCommands.js.map +1 -1
  30. package/dist/cli/slashHandlers/provider.js +102 -5
  31. package/dist/cli/slashHandlers/provider.js.map +1 -1
  32. package/package.json +2 -2
  33. package/dist/agents/advancedTools.js +0 -115
  34. package/dist/agents/advancedTools.js.map +0 -1
  35. package/dist/agents/councilApi.js +0 -375
  36. package/dist/agents/councilApi.js.map +0 -1
  37. package/dist/agents/councilDirectives.js +0 -100
  38. package/dist/agents/councilDirectives.js.map +0 -1
  39. package/dist/agents/promoteMember.js +0 -210
  40. package/dist/agents/promoteMember.js.map +0 -1
  41. package/dist/agents/promptModules.js +0 -139
  42. package/dist/agents/promptModules.js.map +0 -1
  43. package/dist/agents/roles.js +0 -299
  44. package/dist/agents/roles.js.map +0 -1
  45. package/dist/agents/skills/builtin/debugging.js +0 -248
  46. package/dist/agents/skills/builtin/debugging.js.map +0 -1
  47. package/dist/agents/skills/builtin/docs.js +0 -301
  48. package/dist/agents/skills/builtin/docs.js.map +0 -1
  49. package/dist/agents/skills/builtin/git-ops.js +0 -301
  50. package/dist/agents/skills/builtin/git-ops.js.map +0 -1
  51. package/dist/agents/skills/builtin/planning.js +0 -335
  52. package/dist/agents/skills/builtin/planning.js.map +0 -1
  53. package/dist/agents/skills/builtin/refactoring.js +0 -261
  54. package/dist/agents/skills/builtin/refactoring.js.map +0 -1
  55. package/dist/agents/skills/builtin/review.js +0 -302
  56. package/dist/agents/skills/builtin/review.js.map +0 -1
  57. package/dist/agents/skills/builtin/testing.js +0 -245
  58. package/dist/agents/skills/builtin/testing.js.map +0 -1
  59. package/dist/agents/skills.js +0 -272
  60. package/dist/agents/skills.js.map +0 -1
  61. package/dist/agents/systemPromptBuilder.js +0 -151
  62. package/dist/agents/systemPromptBuilder.js.map +0 -1
  63. package/dist/agents/toolSchemas.js +0 -249
  64. package/dist/agents/toolSchemas.js.map +0 -1
  65. package/dist/agents/tools.js +0 -196
  66. package/dist/agents/tools.js.map +0 -1
  67. package/dist/agents/vaultTools.js +0 -134
  68. package/dist/agents/vaultTools.js.map +0 -1
  69. package/dist/cli/components/CollapsibleToolOutput.js +0 -43
  70. package/dist/cli/components/CollapsibleToolOutput.js.map +0 -1
  71. package/dist/cli/components/Header.js +0 -38
  72. package/dist/cli/components/Header.js.map +0 -1
  73. package/dist/main/core/AgentHarness.js +0 -467
  74. package/dist/main/core/AgentHarness.js.map +0 -1
  75. package/dist/main/core/providerStream.js +0 -99
  76. package/dist/main/core/providerStream.js.map +0 -1
  77. package/dist/main/core/sessionJsonl.js +0 -99
  78. package/dist/main/core/sessionJsonl.js.map +0 -1
  79. package/dist/main/core/tools/auditLog.js +0 -26
  80. package/dist/main/core/tools/auditLog.js.map +0 -1
  81. package/dist/main/core/tools/builtin/filesystem.js +0 -110
  82. package/dist/main/core/tools/builtin/filesystem.js.map +0 -1
  83. package/dist/main/core/tools/builtin/listFiles.js +0 -86
  84. package/dist/main/core/tools/builtin/listFiles.js.map +0 -1
  85. package/dist/main/core/tools/builtin/search.js +0 -56
  86. package/dist/main/core/tools/builtin/search.js.map +0 -1
  87. package/dist/main/core/tools/builtin/shell.js +0 -51
  88. package/dist/main/core/tools/builtin/shell.js.map +0 -1
  89. package/dist/main/core/tools/registry.js +0 -71
  90. package/dist/main/core/tools/registry.js.map +0 -1
  91. package/dist/main/core/tools/toolTypes.js +0 -8
  92. package/dist/main/core/tools/toolTypes.js.map +0 -1
  93. package/dist/main/core/tools/zodBridge.js +0 -56
  94. package/dist/main/core/tools/zodBridge.js.map +0 -1
  95. package/dist/shared/eventBus.js +0 -104
  96. package/dist/shared/eventBus.js.map +0 -1
  97. package/dist/shared/events.js +0 -73
  98. package/dist/shared/events.js.map +0 -1
  99. package/dist/shared/index.js +0 -8
  100. package/dist/shared/index.js.map +0 -1
  101. package/dist/types/context.js +0 -3
  102. package/dist/types/context.js.map +0 -1
  103. package/dist/types/index.js +0 -2
  104. package/dist/types/index.js.map +0 -1
  105. package/dist/types/knowledge.js +0 -2
  106. package/dist/types/knowledge.js.map +0 -1
  107. package/dist/types/systemTypes.js +0 -10
  108. package/dist/types/systemTypes.js.map +0 -1
@@ -1,134 +0,0 @@
1
- /** Helper to build a ToolParameter concisely. */
2
- function p(name, type, description, required, extra) {
3
- return { name, type, description, required, ...extra };
4
- }
5
- /**
6
- * Knowledge Vault tools.
7
- *
8
- * These tools operate on KnowledgeDocuments via the ToolContext callbacks
9
- * (which are wired to the Zustand store).
10
- */
11
- export const VAULT_TOOL_DEFINITIONS = [
12
- {
13
- name: 'createDocument',
14
- description: 'Create a new markdown document in the Knowledge Vault.',
15
- category: 'vault',
16
- parameters: [
17
- p('path', 'string', 'Document path (e.g. "notes/architecture"). Must be unique.', true),
18
- p('title', 'string', 'Document title', true),
19
- p('content', 'string', 'Markdown content. Use [[wikilinks]] and #hashtags.', false, { default: '' }),
20
- p('tags', 'string[]', 'Tag list', false, { default: [] }),
21
- p('category', 'string', 'Document category', false),
22
- p('format', 'string', 'Document format', false, { default: 'markdown', enum: ['markdown', 'text', 'json', 'yaml', 'html', 'csv'] }),
23
- ],
24
- execute: (args, ctx) => {
25
- if (!ctx.addDocument)
26
- return 'Vault not available in this context.';
27
- const doc = ctx.addDocument({
28
- path: args['path'] ?? '',
29
- title: args['title'] ?? 'Untitled',
30
- content: args['content'] ?? '',
31
- format: (args['format'] ?? 'markdown'),
32
- tags: args['tags'] ?? [],
33
- frontmatter: {},
34
- category: args['category'] ?? undefined,
35
- workspaceId: ctx.workspaceId,
36
- });
37
- ctx.addActivity('task', 'document created', doc.title);
38
- return `Document "${doc.title}" created at path "${doc.path}".`;
39
- },
40
- },
41
- {
42
- name: 'updateDocument',
43
- description: 'Update an existing Knowledge Vault document (by id).',
44
- category: 'vault',
45
- parameters: [
46
- p('id', 'string', 'Document id to update', true),
47
- p('content', 'string', 'New markdown content', false),
48
- p('title', 'string', 'New title', false),
49
- p('tags', 'string[]', 'New tag list (replaces existing)', false),
50
- p('category', 'string', 'New category', false),
51
- ],
52
- execute: (args, ctx) => {
53
- if (!ctx.updateDocument)
54
- return 'Vault not available in this context.';
55
- const id = args['id'] ?? '';
56
- const updates = {};
57
- if (args['content'] !== undefined)
58
- updates.content = args['content'];
59
- if (args['title'] !== undefined)
60
- updates.title = args['title'];
61
- if (args['tags'] !== undefined)
62
- updates.tags = args['tags'];
63
- if (args['category'] !== undefined)
64
- updates.category = args['category'];
65
- ctx.updateDocument(id, updates);
66
- return `Document ${id} updated.`;
67
- },
68
- },
69
- {
70
- name: 'searchDocuments',
71
- description: 'Search Knowledge Vault documents by free-text query, tag, or category.',
72
- category: 'vault',
73
- parameters: [
74
- p('query', 'string', 'Free-text search query', false),
75
- p('tag', 'string', 'Filter by tag', false),
76
- p('category', 'string', 'Filter by category', false),
77
- p('limit', 'number', 'Max results', false, { default: 10 }),
78
- ],
79
- execute: (args, ctx) => {
80
- if (!ctx.searchDocuments)
81
- return 'Vault search not available in this context.';
82
- const query = args['query'] ?? '';
83
- const tag = args['tag'];
84
- const category = args['category'];
85
- const limit = args['limit'] ?? 10;
86
- let results = ctx.searchDocuments(query);
87
- if (tag)
88
- results = results.filter((d) => (d.tags ?? []).includes(tag));
89
- if (category)
90
- results = results.filter((d) => d.category === category);
91
- results = results.slice(0, limit);
92
- if (results.length === 0)
93
- return 'No matching documents found.';
94
- return results
95
- .map((d) => `- ${d.title} (${d.path}) [${(d.tags ?? []).join(', ')}]`)
96
- .join('\n');
97
- },
98
- },
99
- {
100
- name: 'linkDocuments',
101
- description: 'Create a bidirectional wikilink between two documents by inserting [[target]] into the source.',
102
- category: 'vault',
103
- parameters: [
104
- p('sourceId', 'string', 'Source document id', true),
105
- p('targetPathOrTitle', 'string', 'Target document path or title', true),
106
- p('alias', 'string', 'Optional display alias', false),
107
- ],
108
- execute: (args, ctx) => {
109
- if (!ctx.linkDocuments)
110
- return 'Vault linking not available in this context.';
111
- const sourceId = args['sourceId'] ?? '';
112
- const target = args['targetPathOrTitle'] ?? '';
113
- const alias = args['alias'];
114
- ctx.linkDocuments(sourceId, target, alias);
115
- return `Linked document ${sourceId} → ${target}${alias ? ` (alias: ${alias})` : ''}.`;
116
- },
117
- },
118
- {
119
- name: 'getDocumentBacklinks',
120
- description: 'Retrieve documents that link to a given document.',
121
- category: 'vault',
122
- parameters: [p('id', 'string', 'Target document id', true)],
123
- execute: (args, ctx) => {
124
- if (!ctx.getDocumentBacklinks)
125
- return 'Backlinks not available in this context.';
126
- const id = args['id'] ?? '';
127
- const backlinks = ctx.getDocumentBacklinks(id);
128
- if (backlinks.length === 0)
129
- return 'No backlinks found.';
130
- return backlinks.map((d) => `- ${d.title} (${d.path})`).join('\n');
131
- },
132
- },
133
- ];
134
- //# sourceMappingURL=vaultTools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vaultTools.js","sourceRoot":"","sources":["../../src/agents/vaultTools.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text } from 'ink';
3
- function borderColor(toolName, ok) {
4
- if (ok === false)
5
- return 'red';
6
- const lower = toolName.toLowerCase();
7
- if (lower.includes('read') || lower === 'cat' || lower.includes('grep') || lower.includes('search'))
8
- return 'green';
9
- if (lower.includes('write') || lower.includes('edit'))
10
- return 'yellow';
11
- if (lower === 'bash' || lower === 'shell' || lower === 'exec')
12
- return 'red';
13
- return 'cyan';
14
- }
15
- export function CollapsibleToolOutput(props) {
16
- const { toolName, summary, body, durationMs, ok, defaultExpanded = false } = props;
17
- const isControlled = typeof props.expanded === 'boolean';
18
- const [localExpanded, setLocalExpanded] = useState(defaultExpanded);
19
- const expanded = isControlled ? props.expanded : localExpanded;
20
- const color = borderColor(toolName, ok);
21
- const summaryLine = [
22
- `[${toolName}]`,
23
- summary,
24
- durationMs !== undefined ? `(${durationMs}ms)` : '',
25
- expanded ? '▲' : '▼',
26
- ].filter(Boolean).join(' ');
27
- return (React.createElement(Box, { flexDirection: "column", marginLeft: 2 },
28
- React.createElement(Box, null,
29
- React.createElement(Text, { color: color }, summaryLine)),
30
- expanded && (React.createElement(Box, { flexDirection: "column", marginLeft: 2, borderStyle: "single", borderColor: color, paddingX: 1 }, body.split('\n').map((line, idx) => (
31
- // B12 fix — index keys caused "Encountered two children with the
32
- // same key" warnings when adjacent lines were identical (e.g.
33
- // empty separators in multi-line tool output). Use line content
34
- // with an idx fallback for empty lines.
35
- React.createElement(Text, { key: line || `__blank-${idx}`, dimColor: ok === false }, line)))))));
36
- }
37
- /**
38
- * Pure helper: classify tool color (exported for unit tests).
39
- */
40
- export function classifyToolColor(toolName, ok) {
41
- return borderColor(toolName, ok);
42
- }
43
- //# sourceMappingURL=CollapsibleToolOutput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CollapsibleToolOutput.js","sourceRoot":"","sources":["../../../src/cli/components/CollapsibleToolOutput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAqChC,SAAS,WAAW,CAAC,QAAgB,EAAE,EAAY;IACjD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACpH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACnF,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;IACzD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAE,KAAK,CAAC,QAAoB,CAAC,CAAC,CAAC,aAAa,CAAC;IAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG;QAClB,IAAI,QAAQ,GAAG;QACf,OAAO;QACP,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,EAAE;QACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KACrB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC;QACvC,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,WAAW,CAAQ,CACpC;QACL,QAAQ,IAAI,CACX,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAC5F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACnC,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,wCAAwC;QACxC,oBAAC,IAAI,IAAC,GAAG,EAAE,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,KAAK,IAAG,IAAI,CAAQ,CAC3E,CAAC,CACE,CACP,CACG,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,EAAY;IAC9D,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -1,38 +0,0 @@
1
- import React, { memo } from 'react';
2
- import { Box, Text } from 'ink';
3
- import { formatCost, formatTokens } from '../modelPricing.js';
4
- /**
5
- * B11 fix — wrapped in React.memo so the header doesn't re-render on every
6
- * input keystroke or streaming delta. It only re-renders when its props
7
- * (model, provider, cost, token count, etc.) actually change.
8
- */
9
- function HeaderImpl({ model, provider, skillCount, sessionActive, sessionId, totalTokens, totalCostUsd }) {
10
- const hasCost = typeof totalCostUsd === 'number' && totalCostUsd > 0;
11
- const costStr = hasCost ? formatCost(totalCostUsd) : '$0.0000';
12
- const tokStr = formatTokens(totalTokens ?? 0);
13
- return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "row" },
14
- React.createElement(Text, { bold: true, color: "cyan" }, "zelari-code"),
15
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
16
- React.createElement(Text, null, model),
17
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
18
- React.createElement(Text, null, provider),
19
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
20
- React.createElement(Text, null,
21
- skillCount,
22
- " skills"),
23
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
24
- React.createElement(Text, { color: sessionActive ? 'green' : 'gray' }, sessionActive ? '● active' : '○ idle'),
25
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
26
- React.createElement(Text, { dimColor: true },
27
- "session ",
28
- sessionId),
29
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
30
- React.createElement(Text, { color: hasCost ? 'yellow' : 'gray' }, costStr),
31
- React.createElement(Text, { dimColor: true }, " \u00B7 "),
32
- React.createElement(Text, { color: "gray" },
33
- tokStr,
34
- " tok")));
35
- }
36
- /** B11 — memoized export. Shallow equality suffices (all props are primitives). */
37
- export const Header = memo(HeaderImpl);
38
- //# sourceMappingURL=Header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAc9D;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAe;IACnH,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK;QAC1E,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,kBAAmB;QAC1C,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,QAAE,KAAK,CAAQ;QACpB,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,QAAE,QAAQ,CAAQ;QACvB,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI;YAAE,UAAU;sBAAe;QAChC,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAC1C,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CACjC;QACP,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,QAAQ;;YAAU,SAAS,CAAQ;QACzC,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAG,OAAO,CAAQ;QAC1D,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;YAAE,MAAM;mBAAY,CAClC,CACP,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC"}