Перейти до основного вмісту

Інструменти

Сервер надає 63 інструменти: п’ять інструментів сеансу, три інструменти читання, 54 інструменти редагування, по одному на кожну операцію редагування, і erd_batch, який виконує кілька інструментів редагування як одну зміну.

Кожен інструмент, крім erd_list_documents, приймає першим аргументом path документа, і в таблицях нижче його пропущено. Аргумент, позначений ?, необов’язковий.

Інструменти сеансу​

ІнструментАргументиЩо робить
erd_list_documentsПерелічує ERD-документи з полями path, open, active, dirty і readonly: документи редактора, який обслуговує робочий каталог (в IDE від JetBrains це охоплює всі відкриті проєкти), а інакше — ERD-файли в межах робочого каталогу.
erd_open_documentcreate?Відкриває документ для редагування в ERD Editor того редактора, який його обслуговує, якщо такий є. З аргументом create спершу створює файл, якщо його немає, а до назви без розширення додається .erd.json.
erd_saveЗберігає документ, який тримає редактор. VS Code залишає зміни агента незбереженими, доки не викликано цей інструмент; Obsidian та IDE від JetBrains зберігають їх так само, як і ваші, а цей інструмент записує їх одразу. У режимі Headless кожна зміна вже записана, і цей інструмент нічого не робить.
erd_undoВідміняє останню зміну, зроблену цим агентом, і ніколи — вашу. Виклики, що не створили кроку відміни, він пропускає й називає.
erd_redoПовторно застосовує зміну, яку останньою відмінив erd_undo.

Про те, що роблять збереження й відміна в кожному режимі, див. режими Live і Headless.

Читання документа​

ІнструментАргументиЩо робить
erd_listquery?, offset?, limit?, namesOnly?Налаштування й лічильники, потім сторінка таблиць з їхніми індексами та зв’язками; кожна таблиця подається з ідентифікатором, положенням і розміром на полотні, кількістю стовпців і групою таблиць, якщо вона входить до групи. Якщо це не пошук, після таблиць ідуть групи таблиць, а потім нотатки.
erd_gettableIds?, tableNames?, relationshipIds?, indexIds?, memoIds?, tableGroupIds?Названі сутності повністю: таблиці з їхніми стовпцями та групою таблиць, зв’язки з їхніми стовпцями та значеннями onDelete і onUpdate, індекси з їхніми стовпцями, нотатки з їхнім текстом, групи таблиць з їхніми таблицями.
erd_readformat, vendor?, statements?, header?, tableIds?, tableNames?, groupNames?Увесь документ одразу в одному з чотирьох форматів або DDL лише деяких таблиць чи груп таблиць.

Агент знаходить ідентифікатори за допомогою erd_list, читає стовпці та інші подробиці за допомогою erd_get і передає ці ідентифікатори інструментам редагування. Розмір таблиці в erd_list — це прямокутник, який вона займає на полотні: висота точна, ширина приблизна. Група таблиць подається прямокутником, який вона зберігає, разом із назвою, кольором і кількістю таблиць у ній. Кожен зв’язок подається один раз, разом з однією з двох його таблиць. Інструменти erd_list і erd_read повідомляють ті налаштування, які зберігає файл, — див. налаштування.

erd_read приймає один із чотирьох форматів:

formatЩо повертає
snapshotКомпактний JSON з усіма сутностями та їхніми ідентифікаторами, включно з групами таблиць, і налаштуваннями разом зі скриптами схеми SQL. Він пропускає те, що в різних користувачів різне: виміряні ширини, порядок накладання, область перегляду та вкладку. Для великої схеми він великий.
sqlDDL для однієї з восьми баз даних: 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, 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 заголовок не записується, як і для будь-якої бази даних, поки назва бази даних порожня або не є простим ідентифікатором.
  • groupNames: таблиці груп таблиць, заданих назвами в будь-якому регістрі, разом із таблицями з tableIds і tableNames. Назва, яка не збігається з жодною групою, відхиляється з кодом notFound. Група без таблиць не додає жодної таблиці, а читання, у якому зовсім не залишилося таблиць, як-от коли всі названі групи порожні й жодної таблиці не названо, відхиляється з кодом invalidArgs.

statements і header застосовуються й до DDL деяких таблиць. Вони працюють так само, як параметри Statements і Header на вкладці схеми SQL редактора, хоча на вкладці початково вибрано If not exists і CREATE + USE. Назви беруться в лапки того типу, який зберігає файл, тобто заблокованого, поки 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_get наводить ідентифікатори й назви, які нічого не позначають, у полі missing, а ідентифікатори, для яких не вистачило місця в одній відповіді, — у полі notReturned, щоб їх можна було запитати знову.
  • Читання, завелике для однієї відповіді, відхиляється з кодом tooLarge і поясненням, як його звузити.

Інструменти редагування​

Ідентифікатори беруться з erd_list і erd_get або з createdIds виклику, який створив сутність. Новий ідентифікатор складається з 25 малих літер і цифр, як-от 03h17be2plxpj5n59tqag7ogj, а ідентифікатор, який уже є в документі, зберігає свою форму, тож не робіть жодних висновків із вигляду ідентифікатора. x і y — це лівий і верхній краї на полотні в пікселях, а колір — це шістнадцятковий колір CSS, як-от #3b82f6, або порожній рядок, який прибирає колір.

Таблиці​

ІнструментАргументиЩо робить
erd_add_tableДодає порожню таблицю у вільному місці й повертає її ідентифікатор у createdIds.
erd_remove_tabletableIdВидаляє таблицю разом з її стовпцями, індексами та всіма зв’язками, що її стосуються.
erd_change_table_nametableId, valueПерейменовує таблицю.
erd_change_table_commenttableId, valueЗадає коментар таблиці. Порожній рядок очищає його.
erd_change_table_colortableId, colorЗадає колір таблиці.
erd_move_tabletableId, x, yПереміщує таблицю в задане місце на полотні.
erd_move_tablespositionsПереміщує кілька таблиць однією зміною, яку відміняє один виклик erd_undo. positions містить { tableId, x, y } для кожної таблиці, кожну таблицю щонайбільше один раз.
erd_sort_tablesРозміщує всі таблиці рядами по полотну, спершу ті, що мають найменше стовпців, так само, як їх розміщують erd_import_sql, erd_import_graphql, erd_import_dbml і erd_import_aml. Таблиці однієї групи залишаються разом, а рамка кожної групи підганяється під них.

Стовпці​

ІнструментАргументиЩо робить
erd_add_columntableIdДодає порожній стовпець до таблиці й повертає його ідентифікатор у createdIds.
erd_remove_columnstableId, columnIdsВидаляє стовпці з однієї таблиці разом зі зв’язками та записами індексів, які їх використовують.
erd_change_column_nametableId, columnId, valueПерейменовує стовпець.
erd_change_column_data_typetableId, columnId, valueЗадає тип даних, як-от INT або VARCHAR(255). Поки синхронізація типів даних у зв’язках увімкнена, зміна поширюється зв’язками в обидва боки, як і в редакторі: тип serial доходить до зовнішніх ключів як цілочисельний тип, який він зберігає, так само, як його копіює erd_add_relationship, а ключ типу serial зберігає свій тип, коли змінюється один з його зовнішніх ключів, і на цьому зміна зупиняється. Вмикати чи вимикати синхронізацію вирішує користувач, а erd_list повідомляє її як relationshipDataTypeSync.
erd_change_column_defaulttableId, columnId, valueЗадає типове значення у вигляді тексту SQL. Порожній рядок очищає його.
erd_change_column_commenttableId, columnId, valueЗадає коментар. Порожній рядок очищає його.
erd_set_column_primary_keytableId, columnId, valuetrue робить стовпець частиною первинного ключа, false вилучає його звідти.
erd_set_column_uniquetableId, columnId, valueЗадає, чи є стовпець унікальним.
erd_set_column_not_nulltableId, columnId, valueЗадає, чи є стовпець NOT NULL.
erd_set_column_auto_incrementtableId, columnId, valueЗадає, чи має стовпець автоінкремент.
erd_move_columntableId, 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_relationshipstartTableId, endTableId, relationshipType, onDelete?, onUpdate?Зв’язує дві таблиці. Копіює первинний ключ батьківської таблиці в дочірню як стовпці зовнішнього ключа, спершу створюючи стовпець первинного ключа, якщо в батьківській таблиці його немає. Кожен стовпець зовнішнього ключа отримує назву так само, як під час малювання зв’язку в редакторі: ключ id таблиці users дає users_id, а ключ, як-от member_id, зберігає свою назву — див. назви стовпців зовнішнього ключа. Кожен копіює тип даних свого ключа, але ключ типу serial дає цілочисельний тип, який він зберігає, як-от integer для serial4, а простий serial залишається serial в усіх базах даних, крім PostgreSQL, MySQL і MariaDB, — див. ідентифікувальні зв’язки. createdIds містить новий стовпець ключа, якщо його було створено, стовпці зовнішнього ключа, а останнім — ідентифікатор зв’язку.
erd_link_columnsstartTableId, startColumnIds, endTableId, endColumnIds, relationshipType, onDelete?, onUpdate?Проводить зв’язок між наявними стовпцями, утворюючи пари з початкових і кінцевих стовпців за їхнім положенням. Він не перейменовує жодного стовпця й не змінює жодного типу даних.
erd_remove_relationshiprelationshipIdВидаляє лінію зв’язку. Стовпці зовнішнього ключа зв’язку залишаються в таблиці.
erd_change_relationship_typerelationshipId, relationshipTypeЗмінює кардинальність зв’язку.
erd_change_relationship_on_deleterelationshipId, onDeleteЗадає дію ON DELETE зв’язку: що відбувається з дочірніми рядками, коли видаляють батьківський рядок.
erd_change_relationship_on_updaterelationshipId, onUpdateЗадає дію ON UPDATE зв’язку: що відбувається з дочірніми рядками, коли змінюють батьківський ключ.

erd_add_relationship дає назви стовпцям зовнішнього ключа під час виконання, тож спершу задайте назви батьківській таблиці та її первинному ключу.

Жоден інструмент не змінює стовпці наявного зв’язку так, як це робить зіставлення стовпців у редакторі. Щоб зіставити зв’язок з іншими стовпцями, виконайте erd_remove_relationship, який залишає його стовпці зовнішнього ключа в таблиці, і erd_link_columns з потрібними стовпцями в одному erd_batch, який відміняє один виклик erd_undo.

Індекси​

Ідентифікатор стовпця індексу — це запис у списку стовпців індексу, який повертає erd_get, а не ідентифікатор стовпця таблиці.

ІнструментАргументиЩо робить
erd_add_indextableIdДодає порожній індекс до таблиці й повертає його ідентифікатор у createdIds.
erd_remove_indexindexIdВидаляє індекс.
erd_change_index_nameindexId, valueПерейменовує індекс.
erd_set_index_uniqueindexId, valueЗадає, чи є індекс унікальним.
erd_add_index_columnindexId, columnIdДодає стовпець таблиці індексу й повертає ідентифікатор нового стовпця індексу. Стовпець, який уже є в індексі, залишається без змін.
erd_remove_index_columnindexId, indexColumnIdВидаляє один стовпець з індексу.
erd_move_index_columnindexId, indexColumnId, targetIndexColumnIdПереміщує стовпець у межах індексу на місце іншого його стовпця.
erd_set_index_column_orderindexId, indexColumnId, orderTypeЗадає порядок сортування одного стовпця в індексі, ASC або DESC.

Нотатки​

ІнструментАргументиЩо робить
erd_add_memoДодає порожню нотатку у вільному місці й повертає її ідентифікатор у createdIds.
erd_remove_memomemoIdВидаляє нотатку.
erd_change_memo_valuememoId, valueЗамінює текст нотатки.
erd_change_memo_colormemoId, colorЗадає колір нотатки.
erd_move_memomemoId, x, yПереміщує нотатку в задане місце на полотні.
erd_resize_memomemoId, 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_groupname, color?, x?, y?, width?, height?, tableIds?Додає групу й повертає її ідентифікатор у createdIds. Передайте або tableIds, або прямокутник: x, y, width і height разом. З tableIds кожна таблиця виходить із групи, у якій була, а прямокутник підганяється під них так само, як під час групування виділених таблиць. Прямокутник охоплює кожну таблицю, що не входить до жодної групи й центр якої лежить у ньому, як і під час малювання групи. Порожнє значення name залишає групу без назви. Один виклик erd_undo видаляє групу й повертає кожну таблицю до групи, у якій вона була.
erd_remove_table_groupgroupIdВидаляє групу. Її таблиці залишаються на своїх місцях поза будь-якою групою.
erd_change_table_group_namegroupId, valueПерейменовує групу. Порожній рядок залишає її без назви.
erd_change_table_group_colorgroupId, colorЗадає колір групи.
erd_move_table_groupgroupId, x, yПереміщує групу так, щоб її прямокутник починався в цій точці, і зсуває її таблиці на ту саму відстань, як це робить перетягування смуги заголовка. Переміщення менш ніж на 20 пікселів, якщо скласти зсуви по горизонталі й вертикалі, не створює кроку відміни.
erd_resize_table_groupgroupId, x?, y?, width, heightЗадає прямокутник групи, а її таблиці залишаються на своїх місцях. Якщо x і y не вказано, кут групи зберігається. Прямокутник, який не вмістив би таблиці групи з їхніми відступами, відхиляється з повідомленням, що називає рамку, яку він має вмістити.
erd_set_table_grouptableIds, 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, — див. оновлення.

Налаштування​

Агент задає налаштування самої схеми: базу даних, її назву та скрипти схеми 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. Для заблокованої мови, стилю назв чи типу лапок повідомляється заблоковане значення, тобто те, яке зберігає файл і з яким відкривається кожен редактор, хоч би що показував екран редактора. Область перегляду та вкладка не повідомляються.

erd_set_ddl_script створює крок відміни. erd_set_database і erd_set_database_name його не створюють, тож erd_undo не може їх відмінити.

ІнструментАргументиЩо робить
erd_set_databasevalueЗадає базу даних: MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, SQLite, Databricks або Snowflake. Цим визначаються типи даних бази даних і DDL, який записує erd_read, коли vendor не вказано.
erd_set_database_namevalueЗадає назву бази даних, яку вказують заголовки use і createAndUse інструмента erd_read.
erd_set_ddl_scriptposition, 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_sqlvalue, mode?Завантажує SQL DDL, оператори CREATE TABLE і подібні.
erd_import_graphqlvalue, mode?Завантажує GraphQL SDL.
erd_import_dbmlvalue, mode?Завантажує DBML. Кожен TableGroup стає групою таблиць із тих таблиць, які в ньому названо, — див. DBML.
erd_import_amlvalue, mode?Завантажує AML.
erd_import_jsonvalue, 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 інструмента erd_read. Порожній текст дає новий документ, такий самий, як той, що створює erd_open_document з аргументом create.

append додає імпортоване до документа, як це робить імпорт із додаванням у редакторі, а один виклик erd_undo прибирає все додане:

  • Вміст тексту з’являється як нові сутності з новими ідентифікаторами в блоці, який розміщується під усім вмістом документа, включно з прихованими нотатками й групами таблиць, і вирівнюється за лівим краєм цього вмісту. Кожна наявна таблиця й кожне налаштування залишаються, зокрема таблиця з тією самою назвою: за назвою нічого не об’єднується.
  • Зв’язки та індекси додаються лише для таблиць, які приносить імпорт, тож зовнішній ключ до таблиці, яку текст не оголошує, відкидається.
  • erd_import_sql, erd_import_graphql і erd_import_aml додають таблиці з їхніми зв’язками та індексами, а erd_import_dbml — ще й свої групи таблиць. erd_import_json додає таблиці, зв’язки, індекси, нотатки й групи таблиць, але ніколи не свої налаштування, і відхиляє порожній текст.

JSON-документ зберігає власне розміщення, включно з групами таблиць: у режимі replace — там, де він розміщує свої таблиці, а в режимі append — усередині доданого блоку. Таблиці з SQL, GraphQL, DBML і AML розставляються рядами, спершу ті, що мають найменше стовпців, причому таблиці кожної групи йдуть разом, так, як їх розміщує erd_sort_tables, і ніколи не в режимі Flow, у якому їх розміщує власний імпорт редактора, коли це можливо. Ці чотири інструменти відхиляють порожній текст в обох режимах.

erd_batch​

erd_batch виконує кілька інструментів редагування по черзі як одну зміну, усі або жодного.

  • operations містить до 100 записів, кожен вигляду { tool, as?, args? }, де args — це аргументи інструмента без path.
  • Спершу операції пробно виконуються на копії документа. Відхилену операцію буде названо, як-от 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, цифр і символів підкреслення, не починається з цифри й позначає лише одну операцію. Посилання розв’язується лише там, де аргумент приймає ідентифікатор сутності, тож назва чи коментар із текстом $x залишаються текстом.

Таблиця з її стовпцями та зв’язок за один виклик:

{
"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.

Результати​

Редагування повертає один рядок JSON:

{"tool":"erd_add_table","mode":"live","createdIds":["03h17be2plxpj5n59tqag7ogj"],"batches":1,"historyEntries":1}
ПолеЗначення
modelive або headless — див. режими Live і Headless.
createdIdsІдентифікатори того, що створив виклик, по порядку.
batches, historyEntriesСкільки пакетів змін надіслав виклик і скільки записів в історії змін редактора він створив.
undoable, undoNoteundoable дорівнює 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.
hubDisabledIDE від JetBrains тримає документ лише в проєкті, якому вона не довіряє. Читання й далі працює; щоб агент міг редагувати, позначте проєкт як довірений.
conflictФайл змінився на диску під час виклику. Нічого не записано.
hubAppeared, hubGoneРедактор почав обслуговувати документ, який агент редагував на диску, або редактор, що його обслуговував, досі працює, але його файл блокування та з’єднання зникли. Нічого не записано.
notSavederd_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) ще до того, як торкнутися документа, тож аргумент з помилкою в назві ніколи не відкидається мовчки. П’ять інструментів сеансу ігнорують невідомі їм аргументи.