/interface-edit — правка командного интерфейса
MCP routing
- Preferred path: use MCP
unicatoolunica.applyс операциямиcommandVisibility.set,commandPlacement.set,commandOrder.set,groupOrder.setиsubsystemOrder.set. - Do not call internal MCP/CLI adapters directly. They are hidden behind
unicaand synchronized by the orchestrator. - Интерфейс называет адрес:
args.atвида<набор>:Subsystem.<Имя>.Interface. Пути кCommandInterface.xmlнаружу нет; путь из диффа или лога переводит в адрес аварийныйunica.resolve. - Всегда сначала
dryRun: true. ПрименяйdryRun: falseтолько когда пользователь явно попросил внести именно эту правку, и только сifRevиз предпросмотра.
Команда лежит в аргументах, а не в адресе. Имя команды в интерфейсе — это
ссылка на команду, живущую в другом месте (CommonCommand.Печать,
Catalog.Валюты.Command.Создать). Адрес несёт интерфейс, потому что предмет
правки — место, которое подсистема команде отводит, а не сама команда.
Операции
| Операция | at |
args |
Секция файла |
|---|---|---|---|
commandVisibility.set |
…Subsystem.<Имя>.Interface |
items: [{command, visible}] |
CommandsVisibility |
commandPlacement.set |
…Subsystem.<Имя>.Interface |
items: [{command, group?, placement?}] |
CommandsPlacement |
commandOrder.set |
…Subsystem.<Имя>.Interface |
values: {group?, commands: […]} |
CommandsOrder |
groupOrder.set |
…Subsystem.<Имя>.Interface |
values: {groups: […]} |
GroupsOrder |
subsystemOrder.set |
<набор>:Configuration |
values: {subsystems: […]} |
SubsystemsOrder |
Порядок подсистем верхнего уровня метит в корень конфигурации. Корневой документ несёт единственную секцию, поэтому узла у него нет — он описан свойством корня.
Порядок задаётся целиком. commandOrder.set и groupOrder.set принимают
полную последовательность и заменяют секцию: частичный список некуда вставить,
потому что порядок — отношение между всеми элементами, а не свойство одного.
Каждая операция правит свою секцию и ничью больше. В частности, правка
видимости касается только общего значения: переопределения по ролям в том же
блоке остаются нетронутыми. Их число видно в чтении полем roleOverrides —
если оно не ноль, visible не вся правда о видимости команды.
Порядок
- Найди подсистему:
unica.search {corpus: "names", kind: "Subsystem"}. - Прочти интерфейс:
unica.view {at: "…Subsystem.<Имя>.Interface"}— ветвиCommand,GroupиSubsystemпоказывают команды, порядок групп и порядок дочерних подсистем. - Предпросмотр:
unica.applyсdryRun: true; ответ несёт план иifRev. - Применение: тот же вызов с
dryRun: falseи этимifRev.
Примеры
Скрыть одну команду и показать другую
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Subsystem.Продажи",
"ops": [
{
"op": "commandVisibility.set",
"args": {
"at": "main:Subsystem.Продажи.Interface",
"items": [
{"command": "Catalog.Товары.StandardCommand.OpenList", "visible": false},
{"command": "Report.Продажи.Command.Отчёт", "visible": true}
]
}
}
],
"dryRun": true
}
}
}
Разместить команду и задать порядок в группе
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Subsystem.Продажи",
"ops": [
{
"op": "commandPlacement.set",
"args": {
"at": "main:Subsystem.Продажи.Interface",
"items": [{"command": "Report.Продажи.Command.Отчёт", "group": "NavigationPanelImportant"}]
}
},
{
"op": "commandOrder.set",
"args": {
"at": "main:Subsystem.Продажи.Interface",
"values": {
"group": "NavigationPanelImportant",
"commands": [
"Report.Продажи.Command.Отчёт",
"Catalog.Товары.StandardCommand.OpenList"
]
}
}
}
],
"dryRun": false,
"ifRev": "<rev из предпросмотра>"
}
}
}
Порядок подсистем верхнего уровня
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Configuration",
"ops": [
{
"op": "subsystemOrder.set",
"args": {
"at": "main:Configuration",
"values": {"subsystems": ["Subsystem.Продажи", "Subsystem.Склад"]}
}
}
],
"dryRun": true
}
}
}