3. Описание MCP-сервера › 3.5 Репозиторий › repo_write

Пишет в репозиторий: создаёт, правит и удаляет темы, добавляет записи.

Право

«Репозиторий → Изменение данных» (AGENT_REPO_WRITE). Каждое действие пропускает ещё флаг раздела — «Репозиторий».

Параметры

Параметр Тип Что это
action строка topic_create, topic_update, topic_remove или store_write
[repo] число номер раздела из repo_list — для topic_create
[topic] число номер темы из topic_list — для остальных действий
[name] строка имя темы; для topic_create обязательно
[descr] строка что в теме: по нему другие решают, читать ли её
[params] строка свободные слова темы, одна строка — по ним тему тоже находят
[author] строка кто пишет запись: модель, её усилие и тому подобное; для store_write обязательно
[comment] строка одна строка о том, что запись изменила
[body] строка текст записи — всё состояние темы; для store_write обязательно
[body_source] строка файл UTF-8 на этом компьютере — абсолютный путь или путь от папки магазина — с текстом записи, вместо body
[appendix] строка данные к записи, которые читают только когда они нужны
[appendix_source] строка файл UTF-8 с приложением, вместо appendix

topic_create

Новая тема в разделе, пока без записей. Имя темы в разделе одно, регистр не различается.

{"topic": 1, "name": "Телескопы Levenhuk", "saved": "created"}

topic_update

Меняет name, descr и params темы; не указанное поле остаётся прежним.

{"topic": 2, "name": "Окуляры", "saved": "updated"}

topic_remove

Удаляет тему сразу со всеми её записями.

{"topic": 2, "name": "Окуляры", "records": 5}

records — сколько записей ушло вместе с темой.

store_write

Новая запись темы. Запись не меняется: последняя — текущее состояние темы, ранние — её история. Человек записи — логин сессии, время ставит магазин. Метка порядка байтов в начале файла *_source отбрасывается.

{"record": 2, "topic": 1, "name": "Телескопы Levenhuk", "size": 158}

size — размер body в байтах.

Отказы

Ответ Когда
action is one of topic_create, topic_update, topic_remove, store_write нет action или оно другое
repo is the number of a section…, topic is the number of a topic… номер не указан или это не целое число больше нуля
No section … is open to you - repo_list shows yours раздела нет, это папка или у агента в нём нет ни одного флага
No topic … - topic_list of its section shows them темы с таким номером нет
ACCESS_DENIED: your rights in section […] do not hold … в разделе нет флага, который нужен действию
name is required - the name of the topic у новой темы нет имени или оно пустое
The section has topic […] already, id … - write into it тема с таким именем в разделе уже есть — при создании
The section has topic […] already, id … - give this one another name то же при переименовании
Nothing to change - topic_update takes name, descr or params topic_update без полей
author is required… у записи нет author
body is required - the text of the record у записи нет body
body or body_source, not both…, appendix or appendix_source, not both… указаны оба
No such file: …, … is not utf-8 text - save it in utf-8. файла *_source нет или он не в UTF-8

Общие отказы — «Ответы и отказы».