Інструменти
Сервер надає 77 інструментів: п’ять інструментів сеансу, чотири інструменти читання, 67 інструментів редагування, по одному на кожну операцію редагування, і erd_batch, який виконує кілька інструментів редагування як одну зміну.
Кожен інструмент, крім erd_list_documents, приймає першим аргументом path документа, і в таблицях нижче його пропущено.
Аргумент, позначений ?, необов’язковий.
Інструменти сеансу
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_list_documents | Перелічує ERD-документи з полями path, open, active, dirty і readonly: документи редактора, який обслуговує робочий каталог (в IDE від JetBrains це охоплює всі відкриті проєкти), а інакше — ERD-файли в межах робочого каталогу. | |
erd_open_document | create? | Відкриває документ для редагування в ERD Editor того редактора, який його обслуговує, якщо такий є. З аргументом create спершу створює файл, якщо його немає, а до назви без розширення додається .erd.json. |
erd_save | Зберігає документ, який тримає редактор. VS Code залишає зміни агента незбереженими, доки не викликано цей інструмент; Obsidian та IDE від JetBrains зберігають їх так само, як і ваші, а цей інструмент записує їх одразу. У режимі Headless кожна зміна вже записана, про що свідчить saved: true у її результаті, і цей інструмент нічого не робить. | |
erd_undo | Відміняє останню зміну, зроблену цим агентом, і ніколи — вашу. Виклики, що не створили кроку відміни, він пропускає й називає. | |
erd_redo | Повторно застосовує зміну, яку останньою відмінив erd_undo. |
Про те, що роблять збереження й відміна в кожному режимі, див. режими Live і Headless.
Читання документа
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_list | query?, offset?, limit?, namesOnly? | Налаштування й лічильники, потім сторінка таблиць з їхніми індексами та зв’язками; кожна таблиця подається з ідентифікатором, положенням і розміром на полотні, кількістю стовпців, логічною назвою, якщо вона є, і групою таблиць, якщо вона входить до групи. Якщо це не пошук, після таблиць ідуть групи таблиць, нотатки, а потім домени, терміни й слова. |
erd_get | tableIds?, tableNames?, relationshipIds?, indexIds?, memoIds?, tableGroupIds?, wordIds?, termIds?, domainIds? | Названі сутності повністю: таблиці з їхніми стовпцями та групою таблиць, зв’язки з їхніми стовпцями та значеннями onDelete і onUpdate, індекси з їхніми стовпцями, нотатки з їхнім текстом, групи таблиць з їхніми таблицями, а також слова, терміни й домени з усіма полями. |
erd_read | format, vendor?, statements?, header?, logicalNameAsComment?, tableIds?, tableNames?, groupNames? | Увесь документ одразу в одному з чотирьох форматів або DDL лише деяких таблиць чи груп таблиць. |
erd_list_checks | level?, tableIds?, tableNames?, offset?, limit? | Проблеми, які виявляють словники слів, термінів і доменів, у тому вигляді, у якому їх перелічує аркуш Checks на вкладці словника редактора, посторінково. Він нічого не змінює — див. перевірки словника. |
Агент знаходить ідентифікатори за допомогою erd_list, читає стовпці, рядки словників та інші подробиці за допомогою erd_get і передає ці ідентифікатори інструментам редагування.
Розмір таблиці в erd_list — це прямокутник, який вона займає на полотні: висота точна, ширина приблизна.
Група таблиць подається прямокутником, який вона зберігає, разом із назвою, кольором і кількістю таблиць у ній.
Кожен зв’язок подається один раз, разом з однією з двох його таблиць.
Рядок словника подається ідентифікатором, значенням name і тим, що він дає фізичній назві чи стовпцю: dataType домену, physicalName і domainId терміна та abbreviation слова. Кожен словник подає свої рядки в тому порядку, у якому їх показує його аркуш.
Інструменти erd_list і erd_read повідомляють ті налаштування, які зберігає файл, — див. налаштування.
В erd_get і форматі snapshot інструмента erd_read кожна таблиця й кожен стовпець мають logicalName (порожній рядок, якщо логічної назви немає) і nameDerived, що має значення true, поки назву дали словники, тож нова логічна назва сформує її знову, — див. словники.
Кожен стовпець має domainId, як і кожен термін: порожній рядок, якщо домену немає або якщо це домен, якого вже немає в документі.
erd_read приймає один із чотирьох форматів:
format | Що повертає |
|---|---|
snapshot | Компактний JSON з усіма сутностями та їхніми ідентифікаторами, включно з групами таблиць та рядками слів, термінів і доменів, а також налаштуваннями разом зі скриптами схеми SQL. Він пропускає те, що в різних користувачів різне: виміряні ширини, порядок накладання, область перегляду, вкладку й відображення назв. Для великої схеми він великий. |
sql | DDL для однієї з восьми баз даних: Databricks, MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, Snowflake або SQLite. Типове значення vendor — база даних, задана для документа. DDL усього документа містить його скрипти перед таблицями й після них. З tableIds, tableNames або groupNames — лише ці таблиці із зовнішніми ключами, які вони містять, і без скриптів. Зовнішні ключі мають свої дії ON DELETE і ON UPDATE, крім тих, які цільова база даних пропускає, — див. ON DELETE і ON UPDATE. |
json | Увесь документ точно в тому вигляді, у якому збереження записує файл, включно з усіма змінами, які редактор ще не зберіг, — див. форма зберігання. |
scripts | Лише скрипти документа перед таблицями й після них у вигляді {"before":"…","after":"…"}, кожен порожній, якщо його не задано, хоч би якою великою була схема. |
Лише формат sql приймає vendor, statements, header, logicalNameAsComment, tableIds, tableNames і groupNames, а будь-який інший формат їх відхиляє.
statements:create, типове значення;ifNotExists, яке записуєCREATE TABLE IF NOT EXISTSдля MySQL, MariaDB, PostgreSQL, SQLite і Databricks та звичайнийCREATE TABLEдля решти; абоrecreate, яке видаляє таблиці перед їх створенням, а для Snowflake натомість записуєCREATE OR REPLACE TABLE.header:none, типове значення;use, яке вибирає базу даних або схему, задану назвою бази даних документа; абоcreateAndUse, яке спершу її створює. В Oracle є лишеuse, томуcreateAndUseзаписує тамuse, а в PostgreSQL є лишеcreateAndUse, томуuseтам заголовка не записує. Для SQLite заголовок не записується, як і для будь-якої бази даних, поки назва бази даних порожня або не є простим ідентифікатором.logicalNameAsComment:trueзаписує логічну назву таблиці чи стовпця як коментар, поки коментар порожній або складається лише з пробілів, — там, де кожна база даних записує коментарі, і в тій формі, у якій вона це робить, — і зберігає кожен коментар із текстом;false, типове значення, не записує логічної назви — див. логічні назви як коментарі.groupNames: таблиці груп таблиць, заданих назвами в будь-якому регістрі, разом із таблицями зtableIdsіtableNames. Назва, яка не збігається з жодною групою, відхиляється з кодомnotFound. Група без таблиць не додає жодної таблиці, а читання, у якому зовсім не залишилося таблиць, як-от коли всі названі групи порожні й жодної таблиці не названо, відхиляється з кодомinvalidArgs.
statements, header і logicalNameAsComment застосовуються й до DDL деяких таблиць. Вони працюють так само, як параметри Statements і Header та перемикач Write logical names into empty comments на вкладці схеми SQL редактора, хоча на вкладці початково вибрано If not exists і CREATE + USE. Перемикач початково вимкнено, так само як і logicalNameAsComment.
Назви беруться в лапки того типу, який зберігає файл, тобто заблокованого, поки Bracket Type заблоковано, — див. блокування.
Великі схеми
Схеми із сотнями чи тисячами таблиць теж працюють. Читання повертає щонайбільше 40 000 символів, що менше за поріг, після якого Claude Code відкладає результат інструмента у файл.
erd_listза замовчуванням повертає сторінку зі 100 об’єктів, спершу таблиці, потім групи таблиць, нотатки, домени, терміни й слова, з одним наскрізним зсувом для всіх них, і повідомляє за допомогоюnextOffsetіnote, де починається наступна сторінка. Передайте це значенняnextOffsetякoffsetз тим самимquery.queryзнаходить таблиці за словами в назві, логічній назві чи коментарі таблиці або стовпця, у будь-якому регістрі. Таблиці, назви чи логічні назви яких містять більше цих слів, ідуть першими. Пошук не виводить ні груп таблиць, ні нотаток, ні рядків словників.namesOnlyвиводить лише назви таблиць, близько 2000 коротких назв в одній відповіді.erd_getіerd_readприймають не лише ідентифікатори, а йtableNames, аerd_read— ще йgroupNames, тож агент, якого попросили написати SQL-запит до великої схеми, читає DDL лише потрібних йому таблиць.- Словники теж надходять частинами:
erd_listпосторінково виводить їхні рядки після таблиць, аerd_getповертає рядки повністю заdomainIds,termIdsіwordIds. erd_getнаводить ідентифікатори й назви, які нічого не позначають, у поліmissing, а ідентифікатори, для яких не вистачило місця в одній відповіді, — у поліnotReturned, щоб їх можна було запитати знову.erd_list_checksтак само відповідає посторінково — див. перевірки словника.- Читання, завелике для однієї відповіді, відхиляється з кодом
tooLargeі поясненням, як його звузити.
Перевірки словника
erd_list_checks перелічує перевірки аркуша перевірок редактора в тому самому порядку: спершу перевірки слів, потім термінів і доменів — кожного словника в тому порядку, у якому рядки показує його аркуш, — а потім кожної таблиці, після якої йдуть її стовпці.
Як і на аркуші, перевірка виконується лише тоді, коли словник, який вона читає, містить хоча б один рядок. Документ, словники якого не містять жодного слова, терміна чи домену, взагалі не перевіряється: total дорівнює 0, і про це повідомляє note.
level:errorабоwarning— лише для цього рівня; за замовчуванням обидва.tableIdsіtableNames: лише перевірки цих таблиць та їхніх стовпців (назви — у будь-якому регістрі), без власних рядків словників. Ідентифікатор чи назва, які не позначають жодної таблиці, відхиляються з кодомnotFound.offsetіlimit: за замовчуванням сторінка зі 100 перевірок, яка також закінчується там, де заповнюється одна відповідь. Поки є наступні,nextOffsetіnoteповідомляють, де починається наступна сторінка; передайте це значення якoffsetз тими самими фільтрами. Виправивши частину перевірок, перелічіть їх знову від зсуву0: виправлена перевірка зникає зі списку, тож пізніший зсув пропустив би ще не виправлені перевірки.
Відповідь містить total — скільки перевірок залишають фільтри; counts — скільки з них припадає на кожен код, без кодів, на які не припадає жодної; і саму сторінку як checks.
Кожна перевірка повідомляє свої level і code, а також kind і id свого об’єкта: table, column, word, term або domain. Перевірка стовпця додає його tableId і назву його таблиці як table.
name — це назва об’єкта, для таблиці чи стовпця — фізична назва, разом з його logicalName, якщо вона є. field — це те, що читає перевірка: name, logicalName або domainId. text — це те, що вона там знайшла, а suggestions, якщо словники щось пропонують, — те, що слід використати натомість. Тож агент може виправити перевірку без виклику erd_get:
{"level":"warning","code":"physicalNameMismatch","kind":"column","id":"8e1z0q4xk2m7cwd5tfb9h3ynp","tableId":"03h17be2plxpj5n59tqag7ogj","table":"users","name":"id","logicalName":"Member Number","field":"name","text":"id","suggestions":["MBR_NO"]}
code | level | Type на аркуші | Що виявляє |
|---|---|---|---|
duplicateName | error | Duplicate name | Назва, спільна для двох рядків одного словника. Перелічується кожен із цих рядків. |
unknownDomain | error | Unknown domain | Стовпець або термін, прив’язаний до домену, якого вже немає в документі. text — назва цього домену або його ідентифікатор, якщо назва невідома. |
forbiddenWord | error | Forbidden word | Слово, яке якесь слово словника перелічує як заборонене, у логічній назві таблиці чи стовпця або в назві терміна. suggestions — стандартні слова. |
unregisteredWord | warning | Unregistered word | Текст, якого не перелічує жодне слово, у тих самих місцях. |
synonymWord | warning | Synonym | Синонім, ужитий замість стандартного слова, у тих самих місцях. suggestions — стандартні слова. |
physicalNameMismatch | warning | Physical name mismatch | Фізична назва таблиці чи стовпця, що відрізняється від тієї, яку дає термін її логічної назви. Пропозиція — фізична назва терміна або та, яку складають його слова, поки термін її не містить. |
domainTypeMismatch | warning | Domain type mismatch | Стовпець, тип даних якого відрізняється від типу домену, до якого він прив’язаний. text — тип стовпця, а пропозиція — тип домену. |
Як кожна перевірка читає назву, описано в розділі що виявляє кожна перевірка.
Інструменти редагування
Ідентифікатори беруться з erd_list і erd_get або з createdIds виклику, який створив сутність.
Новий ідентифікатор складається з 25 малих літер і цифр, як-от 03h17be2plxpj5n59tqag7ogj, а ідентифікатор, який уже є в документі, зберігає свою форму, тож не робіть жодних висновків із вигляду ідентифікатора.
x і y — це лівий і верхній краї на полотні в пікселях, а колір — це шістнадцятковий колір CSS, як-от #3b82f6, або порожній рядок, який прибирає колір.
Таблиці
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_table | Додає порожню таблицю у вільному місці й повертає її ідентифікатор у createdIds. | |
erd_remove_table | tableId | Видаляє таблицю разом з її стовпцями, індексами та всіма зв’язками, що її стосуються. |
erd_change_table_name | tableId, value | Перейменовує таблицю. Після цього назва вважається заданою вручну, тож пізніша логічна назва залишає її без змін, поки вона не порожня, — див. словники. |
erd_change_table_comment | tableId, value | Задає коментар таблиці. Порожній рядок очищає його. |
erd_set_table_logical_name | tableId, value | Задає логічну назву таблиці. Порожній рядок очищає її й залишає назву. Поки назва таблиці порожня або була сформована, словники формують її з логічної назви — див. словники. Термін не дає таблиці домену. |
erd_change_table_color | tableId, color | Задає колір таблиці. |
erd_move_table | tableId, x, y | Переміщує таблицю в задане місце на полотні. |
erd_move_tables | positions | Переміщує кілька таблиць однією зміною, яку відміняє один виклик erd_undo. positions містить { tableId, x, y } для кожної таблиці, кожну таблицю щонайбільше один раз. |
erd_sort_tables | Розміщує всі таблиці рядами по полотну, спершу ті, що мають найменше стовпців, так само, як їх розміщують erd_import_sql, erd_import_graphql, erd_import_dbml і erd_import_aml. Таблиці однієї групи залишаються разом, а рамка кожної групи підганяється під них. |
Стовпці
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_column | tableId | Додає порожній стовпець до таблиці й повертає його ідентифікатор у createdIds. |
erd_remove_columns | tableId, columnIds | Видаляє стовпці з однієї таблиці разом зі зв’язками та записами індексів, які їх використовують. |
erd_change_column_name | tableId, columnId, value | Перейменовує стовпець. Після цього назва вважається заданою вручну, як і назва таблиці. |
erd_change_column_data_type | tableId, columnId, value | Задає тип даних, як-от INT або VARCHAR(255). Поки синхронізація типів даних у зв’язках увімкнена, зміна поширюється зв’язками в обидва боки, як і в редакторі: тип serial доходить до зовнішніх ключів як цілочисловий тип, який він зберігає, так само, як його копіює erd_add_relationship, а ключ типу serial зберігає свій тип, коли змінюється один з його зовнішніх ключів, і на цьому зміна зупиняється. Вмикати чи вимикати синхронізацію вирішує користувач, а erd_list повідомляє її як relationshipDataTypeSync. Стовпець, прив’язаний до домену, відв’язується від нього, коли йому задають тип, відмінний від типу домену, як і кожен стовпець, до якого доходить синхронізація і новий тип якого відрізняється від типу його власного домену, — див. відв’язування. |
erd_change_column_default | tableId, columnId, value | Задає типове значення у вигляді тексту SQL. Порожній рядок очищає його. |
erd_change_column_comment | tableId, columnId, value | Задає коментар. Порожній рядок очищає його. |
erd_set_column_logical_name | tableId, columnId, value | Задає логічну назву стовпця. Порожній рядок очищає її й залишає назву. Поки назва стовпця порожня або була сформована, словники формують її, а стовпець прив’язується до домену терміна й отримує тип даних домену — див. словники. |
erd_set_column_domain | tableId, columnId, domainId?, domainName? | Прив’язує стовпець до домену, заданого ідентифікатором або назвою — одним із двох. Стовпець отримує тип даних домену, який поширюється зв’язками, поки ввімкнено синхронізацію типів даних у зв’язках, з тим самим відв’язуванням, що й у erd_change_column_data_type. domainId зі значенням null або порожнім рядком чи порожнє значення domainName відв’язує стовпець від домену й зберігає його тип. |
erd_set_column_primary_key | tableId, columnId, value | true робить стовпець частиною первинного ключа, false вилучає його звідти. |
erd_set_column_unique | tableId, columnId, value | Задає, чи є стовпець унікальним. |
erd_set_column_not_null | tableId, columnId, value | Задає, чи є стовпець NOT NULL. |
erd_set_column_auto_increment | tableId, columnId, value | Задає, чи має стовпець автоінкремент. |
erd_move_column | tableId, columnId, targetColumnId | Переміщує стовпець у межах його таблиці на місце іншого стовпця. |
Зв’язки
relationshipType — це кардинальність на кінці біля дочірньої таблиці: ZeroOne, ZeroN, OneOnly або OneN.
Початкова таблиця — батьківська, тобто сторона, на яку посилаються і яка містить первинний ключ, а кінцева таблиця — дочірня.
onDelete і onUpdate — це дії ON DELETE і ON UPDATE зовнішнього ключа: none, noAction, cascade, setNull, setDefault або restrict.
none не записує жодної конструкції, тож діє типова поведінка бази даних — див. ON DELETE і ON UPDATE.
Дія, не вказана в erd_add_relationship або erd_link_columns, має значення none.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_relationship | startTableId, endTableId, relationshipType, onDelete?, onUpdate? | Зв’язує дві таблиці. Копіює первинний ключ батьківської таблиці в дочірню як стовпці зовнішнього ключа, спершу створюючи стовпець первинного ключа, якщо в батьківській таблиці його немає. Кожен стовпець зовнішнього ключа отримує назву так само, як під час малювання зв’язку в редакторі: ключ id таблиці users дає users_id, а ключ, як-от member_id, зберігає свою назву — див. назви стовпців зовнішнього ключа. Кожен копіює тип даних свого ключа, але ключ типу serial дає цілочисловий тип, який він зберігає, як-от integer для serial4, а простий serial залишається serial в усіх базах даних, крім PostgreSQL, MySQL і MariaDB, — див. ідентифікувальні зв’язки. Кожен також бере логічну назву свого ключа й прив’язується до домену, до якого прив’язаний його ключ, якщо тільки ключ типу serial не дає йому іншого типу. createdIds містить новий стовпець ключа, якщо його було створено, стовпці зовнішнього ключа, а останнім — ідентифікатор зв’язку. |
erd_link_columns | startTableId, startColumnIds, endTableId, endColumnIds, relationshipType, onDelete?, onUpdate? | Проводить зв’язок між наявними стовпцями, утворюючи пари з початкових і кінцевих стовпців за їхнім положенням. Він не перейменовує жодного стовпця, не змінює жодного типу даних і не копіює ні логічної назви, ні домену. |
erd_remove_relationship | relationshipId | Видаляє лінію зв’язку. Стовпці зовнішнього ключа зв’язку залишаються в таблиці. |
erd_change_relationship_type | relationshipId, relationshipType | Змінює кардинальність зв’язку. |
erd_change_relationship_on_delete | relationshipId, onDelete | Задає дію ON DELETE зв’язку: що відбувається з дочірніми рядками, коли видаляють батьківський рядок. |
erd_change_relationship_on_update | relationshipId, onUpdate | Задає дію ON UPDATE зв’язку: що відбувається з дочірніми рядками, коли змінюють батьківський ключ. |
erd_add_relationship дає назви стовпцям зовнішнього ключа й копіює логічні назви їхніх ключів під час виконання. Пізніше перейменування ключа чи його логічна назва до них не доходять, тож спершу задайте назви батьківській таблиці та її первинному ключу, а ключу — його логічну назву.
Назви, які він дає, вважаються заданими вручну, тож пізніша логічна назва залишає їх без змін, тоді як erd_derive_physical_names знову віддає їх словникам — див. словники.
Жоден інструмент не змінює стовпці наявного зв’язку так, як це робить зіставлення стовпців у редакторі.
Щоб зіставити зв’язок з іншими стовпцями, виконайте erd_remove_relationship, який залишає його стовпці зовнішнього ключа в таблиці, і erd_link_columns з потрібними стовпцями в одному erd_batch, який відміняє один виклик erd_undo.
Індекси
Ідентифікатор стовпця індексу — це запис у списку стовпців індексу, який повертає erd_get, а не ідентифікатор стовпця таблиці.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_index | tableId | Додає порожній індекс до таблиці й повертає його ідентифікатор у createdIds. |
erd_remove_index | indexId | Видаляє індекс. |
erd_change_index_name | indexId, value | Перейменовує індекс. |
erd_set_index_unique | indexId, value | Задає, чи є індекс унікальним. |
erd_add_index_column | indexId, columnId | Додає стовпець таблиці індексу й повертає ідентифікатор нового стовпця індексу. Стовпець, який уже є в індексі, залишається без змін. |
erd_remove_index_column | indexId, indexColumnId | Видаляє один стовпець з індексу. |
erd_move_index_column | indexId, indexColumnId, targetIndexColumnId | Переміщує стовпець у межах індексу на місце іншого його стовпця. |
erd_set_index_column_order | indexId, indexColumnId, orderType | Задає порядок сортування одного стовпця в індексі, ASC або DESC. |
Нотатки
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_memo | Додає порожню нотатку у вільному місці й повертає її ідентифікатор у createdIds. | |
erd_remove_memo | memoId | Видаляє нотатку. |
erd_change_memo_value | memoId, value | Замінює текст нотатки. |
erd_change_memo_color | memoId, color | Задає колір нотатки. |
erd_move_memo | memoId, x, y | Переміщує нотатку в задане місце на полотні. |
erd_resize_memo | memoId, width, height | Змінює розмір нотатки. Ширина має бути щонайменше близько 116 пікселів, а висота — щонайменше 100. Не створює кроку відміни, бо редактор фіксує зміну розміру нотатки, лише якщо її зроблено перетягуванням. |
Поки нотатки приховано через View Option → Memos, erd_add_memo однаково додає нотатку, і вона залишається прихованою, доки нотатки знову не буде показано.
erd_list і erd_get також виводять приховані нотатки.
Групи таблиць
Група таблиць — це іменована рамка, намальована позаду її таблиць, а її колір видно на рамці й на заголовках її таблиць — див. групи таблиць.
Таблиця входить щонайбільше до однієї групи. erd_move_table, erd_move_tables і erd_move_table_group ніколи не змінюють набору таблиць у групі, хоч би куди вони ставили таблицю, тоді як у редакторі таблиця потрапляє до групи або виходить із неї там, де її відпускають, — див. додавання й вилучення таблиць. erd_add_table_group і erd_set_table_group додають таблиці до групи, а erd_remove_table_group залишає її таблиці поза будь-якою групою.
Група зберігає прямокутник щонайменше 160 пікселів завширшки й 100 заввишки, включно зі смугою заголовка, а редактор малює рамку, збільшену так, щоб умістити кожну з її таблиць.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_table_group | name, color?, x?, y?, width?, height?, tableIds? | Додає групу й повертає її ідентифікатор у createdIds. Передайте або tableIds, або прямокутник: x, y, width і height разом. З tableIds кожна таблиця виходить із групи, у якій була, а прямокутник підганяється під них так само, як під час групування виділених таблиць. Прямокутник охоплює кожну таблицю, що не входить до жодної групи й центр якої лежить у ньому, як і під час малювання групи. Порожнє значення name залишає групу без назви. Один виклик erd_undo видаляє групу й повертає кожну таблицю до групи, у якій вона була. |
erd_remove_table_group | groupId | Видаляє групу. Її таблиці залишаються на своїх місцях поза будь-якою групою. |
erd_change_table_group_name | groupId, value | Перейменовує групу. Порожній рядок залишає її без назви. |
erd_change_table_group_color | groupId, color | Задає колір групи. |
erd_move_table_group | groupId, x, y | Переміщує групу так, щоб її прямокутник починався в цій точці, і зсуває її таблиці на ту саму відстань, як це робить перетягування смуги заголовка. Переміщення менш ніж на 20 пікселів, якщо скласти зсуви по горизонталі й вертикалі, не створює кроку відміни. Починаючи з версії сервера 1.2.0, переміщення доходить до редактора як точки, в яких закінчуються група та її таблиці, тож із розширенням для VS Code версії 4.3.0 або новішої чи плагіном для Obsidian або JetBrains версії 1.3.0 або новішої переміщення групи чи однієї з її таблиць, зроблене там у той самий момент, закінчується на одному з двох положень, ніколи на їхній сумі — див. зміни в один і той самий момент. |
erd_resize_table_group | groupId, x?, y?, width, height | Задає прямокутник групи, а її таблиці залишаються на своїх місцях. Якщо x і y не вказано, кут групи зберігається. Прямокутник, який не вмістив би таблиці групи з їхніми відступами, відхиляється з повідомленням, що називає рамку, яку він має вмістити. |
erd_set_table_group | tableIds, groupId | Додає таблиці до групи, і кожна з них виходить із групи, у якій була. groupId зі значенням null або порожнім рядком вилучає їх з усіх груп. |
Поки групи приховано через View Option → Table Groups, ці інструменти однаково додають і змінюють групи, які залишаються прихованими, доки групи не буде показано, — див. приховування груп.
erd_sort_tables тримає таблиці кожної групи разом, erd_import_dbml і erd_import_json імпортують групи — див. імпорт, — а erd_read записує DDL вибраних груп за допомогою groupNames.
Випуск ERD Editor, що вийшов раніше, ніж з’явилися групи таблиць, під час збереження файлу відкидає його групи, як це роблять розширення для VS Code до версії 4.0.0 і плагіни для Obsidian та JetBrains до версії 1.0.0, — див. оновлення.
Словники
Ці інструменти редагують три словники вкладки словника редактора, за якими логічна назва таблиці чи стовпця формує фізичну назву:
- Слово — це стандартне слово для складання логічних назв разом зі скороченням, яке воно записує у фізичну назву, як-от
MemberіMBR. - Термін — це ціла логічна назва разом із фізичною назвою, яку він дає, а для стовпця — ще й доменом, до якого він його прив’язує, як-от
Member NumberзMBR_NOтаIdentifier. - Домен — це іменований тип даних, до якого прив’язуються стовпці, як-от
IdentifierдляINT.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_word | name, abbreviation, englishName?, description?, synonyms?, forbiddenWords? | Додає слово в кінець словника слів і повертає його ідентифікатор у createdIds. synonyms і forbiddenWords розділяються комами: це інші написання слова та слова, які не можна вживати замість нього. |
erd_update_word | wordId, name?, abbreviation?, englishName?, description?, synonyms?, forbiddenWords? | Змінює передані поля, а решту залишає без змін. |
erd_remove_word | wordId | Видаляє слово. |
erd_add_term | name, physicalName?, domainId?, domainName?, description?, synonyms? | Додає термін у кінець словника термінів і повертає його ідентифікатор у createdIds. Без physicalName фізичну назву складають слова, якщо можуть, як-от MBR_NO для Member Number. |
erd_update_term | termId, name?, physicalName?, domainId?, domainName?, description?, synonyms? | Змінює передані поля, а решту залишає без змін. Значення name, передане, поки термін не містить фізичної назви, або разом із порожнім physicalName, також записує фізичну назву, яку складають його слова, якщо вони її складають. |
erd_remove_term | termId | Видаляє термін. |
erd_add_domain | name, category?, dataType, description? | Додає домен у кінець словника доменів і повертає його ідентифікатор у createdIds. category групує домени, як-от Number або Text. |
erd_update_domain | domainId, name?, category?, dataType?, description? | Змінює передані поля, а решту залишає без змін. Нове значення dataType доходить до кожного стовпця, прив’язаного до домену, і поширюється зв’язками, поки ввімкнено синхронізацію типів даних у зв’язках, з тим самим відв’язуванням, що й у erd_change_column_data_type. |
erd_remove_domain | domainId | Видаляє домен. Стовпці, прив’язані до нього, зберігають свій тип даних, а вони й терміни, прив’язані до нього, не показують жодного домену: їхній domainId читається як порожній рядок. erd_undo повертає прив’язки, а під час збереження вони не потрапляють до файлу. |
erd_derive_physical_names | scope, tableId?, columnId? | Повторно формує фізичні назви з логічних назв, як це робить повторне формування фізичних назв у редакторі, для одного стовпця, однієї таблиці або всього документа. |
- Словник містить кожну назву лише один раз, тож назва, яку вже містить інший рядок того самого словника, відхиляється з кодом
invalidArgs. Назви порівнюються без початкових і кінцевих пробілів, з урахуванням регістру, тожMemberіmember— це дві назви. - Оновлення називає рядок за ідентифікатором і передає щонайменше одне поле. Значення, які рядок уже містить, нічого не змінюють і не створюють кроку відміни; додавання чи видалення завжди його створює.
- Домен терміна задається або через
domainId(nullчи порожній рядок — без домену), або черезdomainName(порожній рядок — без домену).domainNameбере перший домен із такою назвою в порядку словника, порівнюючи назви так само, як описано вище. Передавання обох аргументів або значенняdomainName, якого не має жоден домен, відхиляється.erd_set_column_domainприймає домен так само. - Зміна чи видалення слова або терміна нічого не перейменовує й нічого не відв’язує: назви й домени, які вони дали, залишаються без змін.
erd_derive_physical_namesповторно формує назви й прив’язує домен, який термін дає тепер, але стовпець, якому тепер не відповідає жоден термін або термін якого не дає домену, зберігає домен, до якого прив’язаний.erd_set_column_domainз порожнімdomainIdвідв’язує його. - Жоден інструмент не імпортує й не експортує словник як CSV, не сортує словник і не вставляє рядки в задане місце, як це робить вкладка словника.
erd_list виводить рядки, erd_get повертає всі поля, формат snapshot інструмента erd_read містить їх усі, а erd_list_checks виводить проблеми, які виявляють словники, — див. читання документа.
erd_set_table_logical_name і erd_set_column_logical_name формують фізичну назву так само, як редактор під час введення логічної назви, — див. формування фізичних назв:
- Назва формується лише тоді, коли вона порожня або сама була сформована, що інструменти читання показують як
nameDerived: true. Непорожня назва, задана вручну, залишається, і записується лише логічна назва.erd_change_table_name,erd_change_column_name, імпорт SQL, GraphQL, DBML і AML, а також стовпці зовнішнього ключа, яким дає назвиerd_add_relationship, — усі вони задають назви вручну. Назву, перейменовану на порожній рядок, наступна логічна назва формує знову. - Першим іде термін, назва якого збігається з логічною назвою, з порівнянням так само, як для назв у словнику. Він дає свою фізичну назву або ту, яку складають його слова, поки він її не містить. Для стовпця також прив’язується домен терміна, навіть коли назва не формується, і стовпець отримує тип даних домену, який поширюється зв’язками, поки ввімкнено синхронізацію типів даних у зв’язках.
- Якщо такого терміна немає, назву складають слова, скорочення яких з’єднуються підкресленнями:
Member NumberдаєMBR_NO. Тут або все, або нічого: синонім, заборонене слово, текст, якого не перелічує жодне слово, або слово без скорочення нічого не складають, і назва залишається такою, як була. Слова не прив’язують домену, як і термін без домену, тож стовпець зберігає домен, до якого прив’язаний. - Стовпець, сформовану назву якого вже має інший стовпець його таблиці (у будь-якому регістрі), зберігає свою назву, свій
nameDerivedі свій домен. - Очищення логічної назви залишає фізичну назву без змін. Виклик, логічна назва якого й те, що вона формує, уже на місці, нічого не змінює й не створює кроку відміни.
erd_derive_physical_names приймає scope: column з tableId і columnId — для цього стовпця; table з tableId — для назви таблиці й кожного її стовпця; або document без ідентифікатора — для кожної таблиці та її стовпців. Значення scope, для якого бракує потрібного ідентифікатора або передано ідентифікатор, якого воно не приймає, відхиляється.
Кожну охоплену назву, що має логічну назву, зокрема й задану вручну, знову формують словники, і вона отримує те, що вони дають тепер: фізичну назву терміна, а для стовпця — ще й його домен і тип, або інакше назву, складену зі слів, яка залишає домен стовпця без змін. Логічна назва, яка нічого не формує, залишає назву без змін, але nameDerived тепер має значення true. Назва без логічної назви залишається без змін, як і стовпець, нову назву якого має інший стовпець його таблиці, як-от другий зовнішній ключ до тієї самої таблиці, — він також зберігає свій nameDerived. Один виклик erd_undo відміняє весь виклик.
Назви імпортованої схеми задано вручну, тож, щоб дати їй назви за словниками, задайте логічні назви, а потім викличте erd_derive_physical_names. Цей виклик дає власну фізичну назву терміна, а вона не складається заново, коли змінюються слова терміна. Тому після зміни слів терміна спершу оновіть термін: передайте його name з порожнім physicalName, щоб слова склали фізичну назву заново, або передайте нове значення physicalName.
Випуск ERD Editor, що вийшов раніше, ніж з’явилася вкладка словника, під час збереження файлу відкидає його логічні назви, прив’язки до доменів і рядки словників, як це роблять розширення для VS Code до версії 4.2.0 і плагіни для Obsidian та JetBrains до версії 1.2.0. З них розширення версії 4.0.0 або 4.1.0 і плагіни версії 1.0.0 або 1.1.0 і далі редагують у режимі Live разом із сервером, але не показують і не зберігають логічних назв, прив’язок до доменів і рядків словників, які записує агент, — див. оновлення.
Налаштування
Агент задає налаштування самої схеми: базу даних, її назву та скрипти схеми SQL.
Усі інші налаштування, які зберігає документ, задає користувач у редакторі: відображення назв, перемикачі параметрів відображення, параметри вкладки налаштувань, мову та стилі назв генератора коду, тип лапок і блокування.
Жоден інструмент їх не змінює, крім імпорту в режимі replace: erd_import_json переносить налаштування й блокування документа, який він завантажує, а інші чотири повертають область перегляду на початок полотна — див. імпорт.
Версія сервера 1.0.0 вилучила інструменти, які їх задавали: erd_set_language, erd_set_table_name_case, erd_set_column_name_case, erd_set_bracket_type, erd_set_relationship_data_type_sync, erd_set_relationship_optimization, erd_set_column_order, erd_set_max_width_comment, erd_set_ignore_save_settings і erd_set_show.
erd_list і формат snapshot інструмента erd_read повідомляють налаштування так, як їх зберігає файл, а lockSettings містить по одному прапорцю на кожне блокування: viewport, canvasType, language, tableNameCase, columnNameCase, bracketType і unlockNameViewMode.
Останній читається навпаки: він має значення false, поки блокування Name View увімкнено, як у новому документі та у файлі, збереженому до появи цього блокування, і true, щойно користувач вимкне блокування.
Для заблокованої мови, стилю назв чи типу лапок повідомляється заблоковане значення, тобто те, яке зберігає файл і з яким відкривається кожен редактор, хоч би що показував екран редактора. Область перегляду, вкладка й відображення назв не повідомляються. Агент читає й записує логічні назви незалежно від того, що показує відображення назв.
erd_set_ddl_script створює крок відміни. erd_set_database і erd_set_database_name його не створюють, тож erd_undo не може їх відмінити.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_set_database | value | Задає базу даних: MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, SQLite, Databricks або Snowflake. Цим визначаються типи даних бази даних і DDL, який записує erd_read, коли vendor не вказано. |
erd_set_database_name | value | Задає назву бази даних, яку вказують заголовки use і createAndUse інструмента erd_read. |
erd_set_ddl_script | position, sql | Задає один із двох скриптів, що записуються навколо таблиць, — див. скрипти перед таблицями й після них. position має значення before, що записується перед таблицями, як-от CREATE EXTENSION або CREATE SCHEMA, або after, що записується після них, як-от GRANT або CREATE VIEW. sql замінює весь скрипт і має щонайбільше 10 000 символів, а порожній рядок видаляє скрипт. Спершу прочитайте поточний скрипт за допомогою формату scripts інструмента erd_read. |
Скрипт потрапляє в DDL кожної бази даних без змін, тож пишіть його для бази даних документа. Для MSSQL після скрипта, останній рядок якого не GO, додається рядок GO.
Випуск ERD Editor, що вийшов раніше, ніж з’явилися ці скрипти, під час збереження файлу відкидає його скрипти, як це роблять розширення для VS Code до версії 4.0.0 і плагіни для Obsidian та JetBrains до версії 1.0.0, — див. оновлення.
Імпорт
Ці інструменти читають схему так само, як меню імпорту редактора, — див. імпорт і експорт файлів.
Кожен приймає текст як value, а також mode: replace, типове значення, або append.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_import_sql | value, mode? | Завантажує SQL DDL, оператори CREATE TABLE і подібні. |
erd_import_graphql | value, mode? | Завантажує GraphQL SDL. |
erd_import_dbml | value, mode? | Завантажує DBML. Кожен TableGroup стає групою таблиць із тих таблиць, які в ньому названо, — див. DBML. |
erd_import_aml | value, mode? | Завантажує AML. |
erd_import_json | value, mode? | Завантажує JSON-документ erd-editor, як-от інший файл .erd.json. |
replace замінює документ, а erd_undo відновлює попередній:
erd_import_sql,erd_import_graphql,erd_import_dbmlіerd_import_amlзамінюють усі таблиці, зв’язки, індекси, нотатки й групи таблиць. Вони зберігають налаштування документа, включно з блокуваннями, крім області перегляду, яка повертається на початок полотна з масштабом 100%, а також зберігають словники слів, термінів і доменів документа. Таблиці, які вони приносять, не мають логічних назв і не прив’язані до жодного домену.erd_import_jsonзамінює весь документ разом із його налаштуваннями й словниками: налаштування, блокування, слова, терміни й домени з JSON займають місце тих, що є в цьому документі, а JSON без записаних блокувань вмикає всі блокування й ставить область перегляду на початок полотна. Кожен користувач зберігає власне відображення назв, якщо тільки в JSON не вимкнено блокуванняName View, — тоді переноситься відображення назв із JSON. Щоб зберегти налаштування цього документа, починайте з тексту, який повертає форматjsonінструментаerd_read. Порожній текст дає новий документ, такий самий, як той, що створюєerd_open_documentз аргументомcreate.
У редакторі з розширенням для VS Code версії 4.3.0 або новішої чи плагіном для Obsidian або JetBrains версії 1.3.0 або новішої replace та його erd_undo чи erd_redo також завершують малювання зв’язку — див. Live.
append додає імпортоване до документа, як це робить імпорт із додаванням у редакторі, а один виклик erd_undo прибирає все додане:
- Вміст тексту з’являється як нові сутності з новими ідентифікаторами в блоці, який розміщується під усім вмістом документа, включно з прихованими нотатками й групами таблиць, і вирівнюється за лівим краєм цього вмісту. Кожна наявна таблиця й кожне налаштування залишаються, зокрема таблиця з тією самою назвою: за назвою нічого не об’єднується.
- Зв’язки та індекси додаються лише для таблиць, які приносить імпорт, тож зовнішній ключ до таблиці, яку текст не оголошує, відкидається.
erd_import_sql,erd_import_graphqlіerd_import_amlдодають таблиці з їхніми зв’язками та індексами, аerd_import_dbml— ще й свої групи таблиць.erd_import_jsonдодає таблиці, зв’язки, індекси, нотатки й групи таблиць, але ніколи не свої налаштування, і відхиляє порожній текст. Його таблиці й стовпці приносять свої логічні назви, але жоден стовпець не прив’язаний до домену, і жодне слово, термін чи домен із JSON не переноситься.
JSON-документ зберігає власне розміщення, включно з групами таблиць: у режимі replace — там, де він розміщує свої таблиці, а в режимі append — усередині доданого блоку.
Таблиці з SQL, GraphQL, DBML і AML розставляються рядами, спершу ті, що мають найменше стовпців, причому таблиці кожної групи йдуть разом, так, як їх розміщує erd_sort_tables, і ніколи не в режимі Flow, у якому їх розміщує власний імпорт редактора, коли це можливо. Ці чотири інструменти відхиляють порожній текст в обох режимах.
erd_batch
erd_batch виконує кілька інструментів редагування по черзі як одну зміну, усі або жодного.
operationsмістить до 100 записів, кожен вигляду{ tool, as?, args? }, деtool— це інструмент редагування, аargs— аргументи інструмента безpath. Інструмент читання, як-отerd_list_checks, відхиляється.- Спершу операції пробно виконуються на копії документа. Відхилену операцію буде названо, як-от
operations[1] erd_remove_table: …, і нічого не буде застосовано. - Один виклик
erd_undoвідміняє весь пакет, крім операцій, які він не може відмінити і які названо в поліundoNoteрезультату: операцій інструментів, що не створюють кроку відміни, як-отerd_set_database, і операцій, які змінили документ, не створивши його, як-от короткий викликerd_move_table_group. Пакет, який зовсім не створив кроку відміни,erd_undoпропускає.historyEntriesу результаті рахує записи в історії змін редактора всередині пакета, а не викликиerd_undo. - У режимі Live редактор приймає весь пакет або жодної його частини.
Агент не може до виклику знати ідентифікаторів, які створить пакет, тож операція, названа за допомогою as, дає змогу пізнішій операції посилатися на них: $name або $name.0 — на її перший створений ідентифікатор, $name.1 — на другий, а $name.last — на останній.
Назва складається з літер ASCII, цифр і символів підкреслення, не починається з цифри й позначає лише одну операцію.
Посилання розв’язується лише там, де аргумент приймає ідентифікатор сутності, зокрема wordId, termId і domainId, тож назва чи коментар із текстом $x залишаються текстом.
Значення domainName теж є текстом, але воно читається, коли виконується його операція, тож може називати домен, доданий попередньою операцією пакета.
Таблиця з її стовпцями та зв’язок за один виклик:
{
"path": "shop.erd.json",
"operations": [
{ "tool": "erd_add_table", "as": "users" },
{ "tool": "erd_change_table_name", "args": { "tableId": "$users", "value": "users" } },
{ "tool": "erd_add_column", "as": "uid", "args": { "tableId": "$users" } },
{ "tool": "erd_change_column_name", "args": { "tableId": "$users", "columnId": "$uid", "value": "id" } },
{ "tool": "erd_change_column_data_type", "args": { "tableId": "$users", "columnId": "$uid", "value": "BIGINT" } },
{ "tool": "erd_set_column_primary_key", "args": { "tableId": "$users", "columnId": "$uid", "value": true } },
{ "tool": "erd_add_table", "as": "orders" },
{ "tool": "erd_change_table_name", "args": { "tableId": "$orders", "value": "orders" } },
{ "tool": "erd_add_relationship", "args": { "startTableId": "$users", "endTableId": "$orders", "relationshipType": "ZeroN", "onDelete": "cascade" } }
]
}
Таблиця users та її ключ id отримують назви ще до створення зв’язку, тож стовпець зовнішнього ключа, який зв’язок додає до orders, має назву users_id.
Слова, домен і термін, а потім таблиця, назви якої формуються з них за логічними назвами:
{
"path": "shop.erd.json",
"operations": [
{ "tool": "erd_add_word", "args": { "name": "Member", "abbreviation": "MBR" } },
{ "tool": "erd_add_word", "args": { "name": "Number", "abbreviation": "NO" } },
{ "tool": "erd_add_word", "args": { "name": "Name", "abbreviation": "NM" } },
{ "tool": "erd_add_domain", "as": "identifier", "args": { "name": "Identifier", "dataType": "INT" } },
{ "tool": "erd_add_term", "args": { "name": "Member Number", "domainId": "$identifier" } },
{ "tool": "erd_add_table", "as": "members" },
{ "tool": "erd_set_table_logical_name", "args": { "tableId": "$members", "value": "Member" } },
{ "tool": "erd_add_column", "as": "no", "args": { "tableId": "$members" } },
{ "tool": "erd_set_column_logical_name", "args": { "tableId": "$members", "columnId": "$no", "value": "Member Number" } },
{ "tool": "erd_add_column", "as": "nm", "args": { "tableId": "$members" } },
{ "tool": "erd_set_column_logical_name", "args": { "tableId": "$members", "columnId": "$nm", "value": "Member Name" } }
]
}
Фізичну назву терміна MBR_NO складають його слова, а таблиця отримує назву MBR. Стовпець Member Number бере MBR_NO терміна та його домен, тож він прив’язаний до Identifier і має тип INT, а назва стовпця Member Name, якого немає серед термінів, складається як MBR_NM.
Результати
Редагування повертає один рядок JSON:
{"tool":"erd_add_table","mode":"live","createdIds":["03h17be2plxpj5n59tqag7ogj"],"batches":1,"historyEntries":1}
| Поле | Значення |
|---|---|
mode | live або headless — див. режими Live і Headless. |
saved | true у результаті кожної зміни в режимі Headless, erd_batch, erd_undo і erd_redo: на момент відповіді виклику файл уже містить зміну, тож зберігати нічого не потрібно. Результат у режимі Live не має saved, бо зміну тримає редактор, — див. збереження. |
createdIds | Ідентифікатори того, що створив виклик, по порядку. |
batches, historyEntries | Скільки пакетів змін надіслав виклик і скільки записів в історії змін редактора він створив. |
undoable, undoNote | undoable дорівнює false, коли erd_undo пропустить цей виклик, а undoNote пояснює чому: інструмент не створює кроку відміни, виклик змінив документ, не створивши його, як це робить erd_move_table_group менш ніж на 20 пікселів, або документ уже мав це значення. Результат erd_batch завжди містить undoNote. Якщо пакет створив крок відміни, примітка повідомляє, що один виклик erd_undo відміняє пакет, і називає кожну операцію, яку він не відміняє; якщо не створив, результат містить undoable: false, а примітка повідомляє, що erd_undo його пропускає. |
mismatch | Є, коли виклик створив іншу кількість пакетів або записів в історії змін, ніж оголошує інструмент. |
notes | Є, коли щось змінилося в сеансі, як-от коли редактор завершив роботу або перестав обслуговувати документ чи коли файл змінився на диску. |
Відмова — це результат з помилкою, що містить код і повідомлення, яке пояснює, що робити:
{"error":{"code":"notFound","message":"tableId nope names no live table; read the document for current ids"}}
code | Причина |
|---|---|
notFound | Ідентифікатор не вказує ні на що наявне, або файлу не існує. |
invalidArgs | Аргумент відсутній або має неправильне значення. |
invalidPath | Шлях не вказує на ERD-документ. У Windows — також шлях з назвою, яку Windows не зберігає так, як її написано, або шлях до документа, який редактор тримає за іншим шляхом, названим у повідомленні. |
invalidDocument | Файл не є документом, який редактор може прочитати. |
tooLarge | Результат читання не вміщується в одну відповідь. |
blocked | Документ тримає редактор з вимкненим хабом. Повідомлення пояснює, як його ввімкнути: у VS Code позначте робочу область як довірену й увімкніть dineug.erd-editor.agentHub.enabled або перезавантажте вікно; в Obsidian увімкніть параметр Coding agents або перезавантажте Obsidian; в IDE від JetBrains увімкніть параметр Coding agents або, якщо його вже ввімкнено, перезапустіть IDE. |
hubDisabled | IDE від JetBrains тримає документ лише в проєкті, якому вона не довіряє. Читання й далі працює; щоб агент міг редагувати, позначте проєкт як довірений. |
conflict | Файл змінився на диску під час виклику. Нічого не записано. |
hubAppeared, hubGone | Редактор почав обслуговувати документ, який агент редагував на диску, або редактор, що його обслуговував, досі працює, але його файл блокування та з’єднання зникли. Нічого не записано. |
notSaved | erd_save не зміг зберегти документ редактора. |
readonly | Редактор тримає документ у режимі лише для читання, як-от файл, який він не може записати або не може прочитати як діаграму. Якщо редактора немає, сам файл доступний лише для читання, як-от файл Perforce або TFVC, який не взято на редагування. Нічого не записано. |
protocolMismatch | Розширення чи плагін ERD Editor у редакторі та сервер використовують різні версії протоколу, як-от сервер версії 1.0.0 або новішої з розширенням для VS Code версії 3.x. Читання теж відхиляється, а повідомлення називає сторону, яку треба оновити, — див. оновлення. |
hubUnreachable, timeout, disconnected | Хаб редактора не прийняв з’єднання, не відповів протягом 30 секунд або розірвав з’єднання під час виклику. У Windows hubUnreachable також означає, що система Windows не допустила агента до хаба: редактор працює з більшими правами, ніж агент, як-от коли його запущено від імені адміністратора, а агента — ні, або агент працює в пісочниці. |
Інші коди трапляються рідше, і кожна відмова містить повідомлення, яке пояснює, що сталося.
Інструменти редагування, erd_batch і чотири інструменти читання відхиляють аргумент, якого вони не оголошують, або аргумент неправильного типу, повертаючи помилку JSON-RPC invalid params (-32602) ще до того, як торкнутися документа, тож аргумент з помилкою в назві ніколи не відкидається мовчки.
П’ять інструментів сеансу ігнорують невідомі їм аргументи.