@within-7/minto 0.3.9 → 0.3.10
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.
- package/dist/commands/agents/AgentsCommand.js +459 -655
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/types.js +1 -0
- package/dist/commands/agents/types.js.map +2 -2
- package/dist/commands/agents/utils/fileOperations.js +96 -36
- package/dist/commands/agents/utils/fileOperations.js.map +3 -3
- package/dist/commands/agents/utils/index.js +3 -1
- package/dist/commands/agents/utils/index.js.map +2 -2
- package/dist/commands/context.js +54 -23
- package/dist/commands/context.js.map +2 -2
- package/dist/commands/export.js +673 -93
- package/dist/commands/export.js.map +2 -2
- package/dist/commands/language.js +19 -46
- package/dist/commands/language.js.map +2 -2
- package/dist/commands/mcp-interactive.js +419 -217
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +415 -66
- package/dist/commands/model.js.map +2 -2
- package/dist/commands/permissions.js +75 -49
- package/dist/commands/permissions.js.map +2 -2
- package/dist/commands/plugin.js +882 -185
- package/dist/commands/plugin.js.map +3 -3
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/sandbox.js +168 -70
- package/dist/commands/sandbox.js.map +2 -2
- package/dist/commands/setup.js +593 -107
- package/dist/commands/setup.js.map +2 -2
- package/dist/commands/stats.js +188 -131
- package/dist/commands/stats.js.map +2 -2
- package/dist/commands/status.js +75 -13
- package/dist/commands/status.js.map +2 -2
- package/dist/commands/undo.js +138 -174
- package/dist/commands/undo.js.map +2 -2
- package/dist/commands.js.map +1 -1
- package/dist/components/Help.js +165 -32
- package/dist/components/Help.js.map +2 -2
- package/dist/components/InfoPanel/InfoPanel.js +123 -0
- package/dist/components/InfoPanel/InfoPanel.js.map +7 -0
- package/dist/components/InfoPanel/index.js +5 -0
- package/dist/components/InfoPanel/index.js.map +7 -0
- package/dist/components/InfoPanel/types.js +1 -0
- package/dist/components/InfoPanel/types.js.map +7 -0
- package/dist/components/ModelSelector/BrandTextInput.js +43 -0
- package/dist/components/ModelSelector/BrandTextInput.js.map +7 -0
- package/dist/components/ModelSelector/ModelSelector.js +419 -501
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/ModelSelector/WizardContainer.js +45 -0
- package/dist/components/ModelSelector/WizardContainer.js.map +7 -0
- package/dist/components/ModelSelector/index.js +1 -3
- package/dist/components/ModelSelector/index.js.map +2 -2
- package/dist/components/PromptInput.js +5 -5
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/SimpleSelector/SimpleSelector.js +154 -0
- package/dist/components/SimpleSelector/SimpleSelector.js.map +7 -0
- package/dist/components/SimpleSelector/index.js +5 -0
- package/dist/components/SimpleSelector/index.js.map +7 -0
- package/dist/components/SimpleSelector/types.js +1 -0
- package/dist/components/SimpleSelector/types.js.map +7 -0
- package/dist/components/StatusOverlayContent.js +21 -0
- package/dist/components/StatusOverlayContent.js.map +7 -0
- package/dist/components/TabbedListView/ScrollableList.js +31 -5
- package/dist/components/TabbedListView/ScrollableList.js.map +2 -2
- package/dist/components/TabbedListView/TabbedListView.js +122 -47
- package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
- package/dist/core/backupHook.js +29 -0
- package/dist/core/backupHook.js.map +7 -0
- package/dist/core/config/defaults.js +8 -2
- package/dist/core/config/defaults.js.map +2 -2
- package/dist/core/config/schema.js +14 -2
- package/dist/core/config/schema.js.map +2 -2
- package/dist/core/costTracker.js +0 -16
- package/dist/core/costTracker.js.map +2 -2
- package/dist/cost-tracker.js +0 -16
- package/dist/cost-tracker.js.map +2 -2
- package/dist/entrypoints/bootstrap.js +3 -1
- package/dist/entrypoints/bootstrap.js.map +2 -2
- package/dist/entrypoints/cli.js +32 -0
- package/dist/entrypoints/cli.js.map +2 -2
- package/dist/i18n/locales/en.js +300 -1
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.js +301 -2
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/i18n/types.js.map +1 -1
- package/dist/services/customCommands.js +30 -8
- package/dist/services/customCommands.js.map +2 -2
- package/dist/services/plugins/lspServers.js +1 -1
- package/dist/services/plugins/lspServers.js.map +2 -2
- package/dist/services/plugins/pluginRuntime.js +2 -1
- package/dist/services/plugins/pluginRuntime.js.map +2 -2
- package/dist/services/plugins/pluginValidation.js +10 -3
- package/dist/services/plugins/pluginValidation.js.map +2 -2
- package/dist/services/plugins/skillMarketplace.js +16 -8
- package/dist/services/plugins/skillMarketplace.js.map +2 -2
- package/dist/services/systemReminder.js +17 -6
- package/dist/services/systemReminder.js.map +2 -2
- package/dist/tools/FileEditTool/FileEditTool.js +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileWriteTool/FileWriteTool.js +7 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js +7 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +2 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +9 -6
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/types/PermissionMode.js.map +1 -1
- package/dist/types/plugin.js +2 -4
- package/dist/types/plugin.js.map +2 -2
- package/dist/utils/agentHookExecutor.js +1 -4
- package/dist/utils/agentHookExecutor.js.map +2 -2
- package/dist/utils/agentLoader.js +67 -13
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/agentMemory.js.map +2 -2
- package/dist/utils/claudeCodeSync.js +439 -0
- package/dist/utils/claudeCodeSync.js.map +7 -0
- package/dist/utils/config.js +1 -23
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/execFileNoThrow.js +2 -1
- package/dist/utils/execFileNoThrow.js.map +2 -2
- package/dist/utils/marketplaceManager.js +80 -43
- package/dist/utils/marketplaceManager.js.map +2 -2
- package/dist/utils/messages.js +2 -2
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/pluginInstaller.js +34 -24
- package/dist/utils/pluginInstaller.js.map +2 -2
- package/dist/utils/pluginLoader.js +48 -25
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/repoFetcher.js +110 -0
- package/dist/utils/repoFetcher.js.map +7 -0
- package/dist/utils/skillLoader.js +18 -6
- package/dist/utils/skillLoader.js.map +2 -2
- package/dist/utils/stringSubstitution.js +4 -5
- package/dist/utils/stringSubstitution.js.map +2 -2
- package/dist/utils/teamConfig.js +153 -13
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/terminal.js +1 -1
- package/dist/utils/terminal.js.map +2 -2
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,66 +1,92 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { Box, Text, useInput } from "ink";
|
|
1
|
+
import React from "react";
|
|
3
2
|
import {
|
|
4
3
|
getPermissionRuleEngine
|
|
5
4
|
} from "../core/permissions/index.js";
|
|
6
5
|
import { SEMANTIC_COLORS } from "../constants/colors.js";
|
|
7
|
-
|
|
6
|
+
import { SimpleSelector } from "../components/SimpleSelector/index.js";
|
|
7
|
+
import { t } from "../i18n/index.js";
|
|
8
|
+
function getDecisionIcon(decision) {
|
|
9
|
+
switch (decision) {
|
|
10
|
+
case "allow":
|
|
11
|
+
return "\u2713";
|
|
12
|
+
case "deny":
|
|
13
|
+
return "\u2717";
|
|
14
|
+
case "ask":
|
|
15
|
+
return "?";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function getDecisionColor(decision) {
|
|
19
|
+
switch (decision) {
|
|
20
|
+
case "allow":
|
|
21
|
+
return SEMANTIC_COLORS.success;
|
|
22
|
+
case "deny":
|
|
23
|
+
return SEMANTIC_COLORS.error;
|
|
24
|
+
case "ask":
|
|
25
|
+
return "#FFB86C";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function formatDecision(decision) {
|
|
29
|
+
switch (decision) {
|
|
30
|
+
case "allow":
|
|
31
|
+
return "ALLOW";
|
|
32
|
+
case "deny":
|
|
33
|
+
return "DENY";
|
|
34
|
+
case "ask":
|
|
35
|
+
return "ASK";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function rulesToSelectorItems(rules) {
|
|
39
|
+
return rules.map((rule) => ({
|
|
40
|
+
id: rule.id,
|
|
41
|
+
label: `${formatDecision(rule.decision).padEnd(6)} ${rule.pattern}`,
|
|
42
|
+
description: rule.description ? `P${rule.priority} - ${rule.description}` : `P${rule.priority}`,
|
|
43
|
+
statusIcon: getDecisionIcon(rule.decision),
|
|
44
|
+
statusColor: getDecisionColor(rule.decision),
|
|
45
|
+
category: rule.scope === "project" ? "Project Rules" : "Global Rules"
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
const PermissionsView = ({
|
|
8
49
|
rules,
|
|
9
50
|
defaultDecision,
|
|
10
51
|
onDone
|
|
11
52
|
}) => {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
case "ask":
|
|
41
|
-
return "? ASK";
|
|
53
|
+
const items = rulesToSelectorItems(rules);
|
|
54
|
+
if (rules.length === 0) {
|
|
55
|
+
return /* @__PURE__ */ React.createElement(
|
|
56
|
+
SimpleSelector,
|
|
57
|
+
{
|
|
58
|
+
title: t("commands.permissions.description"),
|
|
59
|
+
subtitle: `${t("common.default")}: ${formatDecision(defaultDecision)}`,
|
|
60
|
+
items: [
|
|
61
|
+
{
|
|
62
|
+
id: "empty",
|
|
63
|
+
label: "No custom rules defined. Using default rules."
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
onSelect: () => onDone(),
|
|
67
|
+
onClose: () => onDone()
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return /* @__PURE__ */ React.createElement(
|
|
72
|
+
SimpleSelector,
|
|
73
|
+
{
|
|
74
|
+
title: "Permission Rules",
|
|
75
|
+
subtitle: `${t("common.default")}: ${formatDecision(defaultDecision)}`,
|
|
76
|
+
items,
|
|
77
|
+
groupByCategory: true,
|
|
78
|
+
onSelect: () => {
|
|
79
|
+
},
|
|
80
|
+
onClose: () => onDone()
|
|
42
81
|
}
|
|
43
|
-
|
|
44
|
-
const renderRule = (rule, index) => {
|
|
45
|
-
const isSelected = index === selectedIndex;
|
|
46
|
-
return /* @__PURE__ */ React.createElement(Box, { key: rule.id, paddingLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: isSelected ? "cyan" : void 0 }, isSelected ? "\u25B6 " : " ", /* @__PURE__ */ React.createElement(Text, { color: getDecisionColor(rule.decision) }, formatDecision(rule.decision).padEnd(10)), /* @__PURE__ */ React.createElement(Text, { bold: true }, rule.pattern.padEnd(30)), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "P", rule.priority), rule.description && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " - ", rule.description)));
|
|
47
|
-
};
|
|
48
|
-
let displayIndex = 0;
|
|
49
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginY: 1 }, /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true }, "Permission Rules")), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "Default decision: "), /* @__PURE__ */ React.createElement(Text, { color: getDecisionColor(defaultDecision), bold: true }, formatDecision(defaultDecision)))), projectRules.length > 0 && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "blue" }, "Project Rules (", projectRules.length, ")")), projectRules.map((rule) => {
|
|
50
|
-
const result = renderRule(rule, displayIndex);
|
|
51
|
-
displayIndex++;
|
|
52
|
-
return result;
|
|
53
|
-
})), globalRules.length > 0 && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "magenta" }, "Global Rules (", globalRules.length, ")")), globalRules.map((rule) => {
|
|
54
|
-
const result = renderRule(rule, displayIndex);
|
|
55
|
-
displayIndex++;
|
|
56
|
-
return result;
|
|
57
|
-
})), rules.length === 0 && /* @__PURE__ */ React.createElement(Box, { paddingLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "No custom rules defined. Using default rules.")), /* @__PURE__ */ React.createElement(Box, { marginTop: 2 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\u2191/\u2193: Navigate | q/Esc: Exit")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "Legend: ", /* @__PURE__ */ React.createElement(Text, { color: "green" }, "ALLOW"), " = auto-approve,", " ", /* @__PURE__ */ React.createElement(Text, { color: "red" }, "DENY"), " = block, ", /* @__PURE__ */ React.createElement(Text, { color: "yellow" }, "ASK"), " ", "= prompt user")));
|
|
82
|
+
);
|
|
58
83
|
};
|
|
59
84
|
const command = {
|
|
60
85
|
name: "permissions",
|
|
61
86
|
description: "View and manage permission rules for tool access",
|
|
62
87
|
isEnabled: true,
|
|
63
88
|
isHidden: false,
|
|
89
|
+
hidePromptInput: true,
|
|
64
90
|
type: "local-jsx",
|
|
65
91
|
aliases: ["perms"],
|
|
66
92
|
userFacingName() {
|
|
@@ -71,7 +97,7 @@ const command = {
|
|
|
71
97
|
const rules = engine.getRules();
|
|
72
98
|
const defaultDecision = engine.getDefaultDecision();
|
|
73
99
|
return /* @__PURE__ */ React.createElement(
|
|
74
|
-
|
|
100
|
+
PermissionsView,
|
|
75
101
|
{
|
|
76
102
|
rules,
|
|
77
103
|
defaultDecision,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/commands/permissions.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Permissions Command\n *\n * View and manage permission rules for tool access.\n */\n\nimport React
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * Permissions Command\n *\n * View and manage permission rules for tool access.\n * Uses SimpleSelector with groupByCategory for consistent UI.\n */\n\nimport React from 'react'\nimport { Box, Text } from 'ink'\nimport type { Command } from '@commands'\nimport {\n getPermissionRuleEngine,\n type PatternPermissionRule,\n type RulePermissionDecision,\n} from '../core/permissions'\nimport { SEMANTIC_COLORS } from '@constants/colors'\nimport { SimpleSelector } from '@components/SimpleSelector'\nimport type { SelectorItem } from '@components/SimpleSelector'\nimport { t } from '@i18n'\n\nfunction getDecisionIcon(decision: RulePermissionDecision): string {\n switch (decision) {\n case 'allow':\n return '\\u2713'\n case 'deny':\n return '\\u2717'\n case 'ask':\n return '?'\n }\n}\n\nfunction getDecisionColor(decision: RulePermissionDecision): string {\n switch (decision) {\n case 'allow':\n return SEMANTIC_COLORS.success\n case 'deny':\n return SEMANTIC_COLORS.error\n case 'ask':\n return '#FFB86C' // warning\n }\n}\n\nfunction formatDecision(decision: RulePermissionDecision): string {\n switch (decision) {\n case 'allow':\n return 'ALLOW'\n case 'deny':\n return 'DENY'\n case 'ask':\n return 'ASK'\n }\n}\n\nfunction rulesToSelectorItems(rules: PatternPermissionRule[]): SelectorItem[] {\n return rules.map(rule => ({\n id: rule.id,\n label: `${formatDecision(rule.decision).padEnd(6)} ${rule.pattern}`,\n description: rule.description\n ? `P${rule.priority} - ${rule.description}`\n : `P${rule.priority}`,\n statusIcon: getDecisionIcon(rule.decision),\n statusColor: getDecisionColor(rule.decision),\n category: rule.scope === 'project' ? 'Project Rules' : 'Global Rules',\n }))\n}\n\ninterface PermissionsViewProps {\n rules: PatternPermissionRule[]\n defaultDecision: RulePermissionDecision\n onDone: (result?: string) => void\n}\n\nconst PermissionsView: React.FC<PermissionsViewProps> = ({\n rules,\n defaultDecision,\n onDone,\n}) => {\n const items = rulesToSelectorItems(rules)\n\n if (rules.length === 0) {\n return (\n <SimpleSelector\n title={t('commands.permissions.description')}\n subtitle={`${t('common.default')}: ${formatDecision(defaultDecision)}`}\n items={[\n {\n id: 'empty',\n label: 'No custom rules defined. Using default rules.',\n },\n ]}\n onSelect={() => onDone()}\n onClose={() => onDone()}\n />\n )\n }\n\n return (\n <SimpleSelector\n title=\"Permission Rules\"\n subtitle={`${t('common.default')}: ${formatDecision(defaultDecision)}`}\n items={items}\n groupByCategory={true}\n onSelect={() => {\n /* read-only for now */\n }}\n onClose={() => onDone()}\n />\n )\n}\n\nconst command: Command = {\n name: 'permissions',\n description: 'View and manage permission rules for tool access',\n isEnabled: true,\n isHidden: false,\n hidePromptInput: true,\n type: 'local-jsx',\n aliases: ['perms'],\n\n userFacingName() {\n return this.name\n },\n\n async call(onDone, _context) {\n const engine = getPermissionRuleEngine()\n const rules = engine.getRules()\n const defaultDecision = engine.getDefaultDecision()\n\n return (\n <PermissionsView\n rules={rules}\n defaultDecision={defaultDecision}\n onDone={onDone}\n />\n )\n },\n}\n\nexport default command\n"],
|
|
5
|
+
"mappings": "AAOA,OAAO,WAAW;AAGlB;AAAA,EACE;AAAA,OAGK;AACP,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAE/B,SAAS,SAAS;AAElB,SAAS,gBAAgB,UAA0C;AACjE,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,iBAAiB,UAA0C;AAClE,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,gBAAgB;AAAA,IACzB,KAAK;AACH,aAAO,gBAAgB;AAAA,IACzB,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,eAAe,UAA0C;AAChE,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,qBAAqB,OAAgD;AAC5E,SAAO,MAAM,IAAI,WAAS;AAAA,IACxB,IAAI,KAAK;AAAA,IACT,OAAO,GAAG,eAAe,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,IACjE,aAAa,KAAK,cACd,IAAI,KAAK,QAAQ,MAAM,KAAK,WAAW,KACvC,IAAI,KAAK,QAAQ;AAAA,IACrB,YAAY,gBAAgB,KAAK,QAAQ;AAAA,IACzC,aAAa,iBAAiB,KAAK,QAAQ;AAAA,IAC3C,UAAU,KAAK,UAAU,YAAY,kBAAkB;AAAA,EACzD,EAAE;AACJ;AAQA,MAAM,kBAAkD,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,qBAAqB,KAAK;AAExC,MAAI,MAAM,WAAW,GAAG;AACtB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,kCAAkC;AAAA,QAC3C,UAAU,GAAG,EAAE,gBAAgB,CAAC,KAAK,eAAe,eAAe,CAAC;AAAA,QACpE,OAAO;AAAA,UACL;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,UAAU,MAAM,OAAO;AAAA,QACvB,SAAS,MAAM,OAAO;AAAA;AAAA,IACxB;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAU,GAAG,EAAE,gBAAgB,CAAC,KAAK,eAAe,eAAe,CAAC;AAAA,MACpE;AAAA,MACA,iBAAiB;AAAA,MACjB,UAAU,MAAM;AAAA,MAEhB;AAAA,MACA,SAAS,MAAM,OAAO;AAAA;AAAA,EACxB;AAEJ;AAEA,MAAM,UAAmB;AAAA,EACvB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,SAAS,CAAC,OAAO;AAAA,EAEjB,iBAAiB;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,QAAQ,UAAU;AAC3B,UAAM,SAAS,wBAAwB;AACvC,UAAM,QAAQ,OAAO,SAAS;AAC9B,UAAM,kBAAkB,OAAO,mBAAmB;AAElD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,IAAO,sBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|