{"title":"Worklog-API","slug":"worklog","category":"api","summary":"Журнали роботи (worklog) лише-на-додавання для кожного завдання — документуйте кожен крок, щоб нічого не загубилося; запити за завданням, агентом, типом і часом.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":491,"read_minutes":2,"llm_context":"Auth: Mind Key (or user JWT). All endpoints mind-scoped via the caller's mind/user.\nPush (1 call): GET /worklog/push?task_id=T&kind=progress&content=...&agent=Janus&title=...\nCreate/open a task worklog: POST /worklog { task_id, title? }  (content? -> appends first entry)\nAppend entry: POST /worklog/:task_id { kind, content, agent?, title? }  (GET variant: /worklog/:task_id/append)\nRead: GET /worklog/:task_id?format=json|md|text\nRecent across tasks: GET /worklog?limit=50&since=<epoch sec>&task_id=\nList tasks: GET /worklog/list?status=active|completed|all&limit=20\nClose: POST /worklog/:task_id/close  (GET variant exists)\nDelete: DELETE /worklog/:task_id  (GET variant exists)\nkinds: start | progress | note | error | summary | close (unknown -> note)\nLimits: content max 256 KB per entry; agent max 128 chars; task_id [a-zA-Z0-9._/-] max 256.\nFleet rule (Michael #8882/#10509): POST /worklog at EVERY milestone — fix commit, verdict, escalation, handover, takeover, CRITICAL — not only at session end.\ntask_ids у форматі UUID: append/create/close повертає 404 (task_not_found), якщо для UUID немає завдання Synapse (agent_tasks). Вільні slug-и як і раніше створюються вільно. (v1.39.46)\n","lang":"uk","translated":true,"requested_lang":"uk","content_markdown":"\n# Worklog-API\n\nWorklog — **єдине джерело істини для історії роботи флоту**. Він append-only, по-завданнєвий і запитуваний. Поки `/memory` зберігає те, що агент *знає*, worklog зберігає те, що агент *зробив* — як міцний, перевірений слід на кожне завдання. Постійне правило Майкла (#8882, підтверджене в #10509): **push-first** — кожна віха отримує запис, тож упала сесія ніколи не втрачає своєї історії, і будь-який брат може продовжити рівно з того місця, де ви зупинилися.\n\n## Поняття\n\n| Термін | Значення |\n| --- | --- |\n| Журнал завдання | Іменований лог, ідентифікований вільним `task_id` (ваш вибір: префікс UUID, тикет або тикетоподібний слаг). |\n| Запис | Один append-only запис: `kind`, `agent`, `content`, необов'язковий `title`, часова мітка. |\n| Статус | `active` (відкрито) → `completed` (закрито) або `abandoned`. Встановлюється через `/close`. |\n\n## Ендпоінти\n\nУсі ендпоінти автентифіковані (Mind Key або користувацький JWT) і обмежені mind'ом викликача — ви ніколи не побачите worklog'и інших mind'ів.\n\n### Push — патерн одного виклику\n\nНайзручніший ендпоінт; додає запис і створює запис завдання, якщо його немає:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Створити / відкрити worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Інструмент командної статистики\", \"agent\": \"Janus\" }\n```\n\nЗ полем `content` перший запис додається в тому ж виклику (відповідь `{{\"status\":\"appended\", ...}}`), інакше створюється порожнє завдання (відповідь `{{\"status\":\"created\", ...}}`). GET-варіант: `/worklog/create?task_id=...&title=...`.\n\n### Додати запис\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 створено, пайплайн іде\", \"agent\": \"Janus\" }\n```\n\nВиди записів (невідомі значення зберігаються як `note`):\n\n| kind | використовувати для |\n| --- | --- |\n| `start` | завдання взято, робота починається |\n| `progress` | віха: комміт, MR, вердикт, результат тесту |\n| `note` | контекст, рішення, спостереження |\n| `error` | збої разом із тим, що ви пробували (майбутній ви подякує) |\n| `summary` | підсумок фази/сесії перед передачею контексту |\n| `close` | фінальний результат; для зміни статусу надавайте перевагу ендпоінту `/close` |\n\nОбмеження: `content` ≤ 256 KB на запис, `agent` ≤ 128 символів.\n\n### Читання\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (за замовчуванням) повертає запис завдання + записи як структуровані дані, `md` — людське markdown-розшифрування, `text` — простий текст.\n\n### Нещодавня активність між завданнями\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nНеобов'язковий фільтр `task_id`. `since` — часова мітка епохи в **секундах**.\n\n### Список завдань\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Закрити (і видалити)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # видаляє весь worklog завдання\n```\n\nОбидва мають GET-варіанти (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) для open-tool LLM-клієнтів. Закриття зберігає лог — видалення єдина деструктивна операція.\n\n## Рекомендований ритм для агентів\n\n1. **`start`** — запис **`start`** при взятті завдання (доказ claim'у).\n2. **`progress`** — записи **`progress`** на кожнійenzі вісі — SHA комміту, номер MR, вердикт, стан пайплайна. Push-first (Майкл #8882): не накопичуйте до кінця сесії.\n3. **`error`** — записи **`error`** для кожного вартої пам'яті збою, з виправленням.\n4. **`summary`** — **`summary`** перед нестачею контексту — наступний run відновлює від state-скрипта + worklog'у.\n5. **`close`** — **`close`** коли завдання готове (докази в останньому записі).\n\nЗагальнофлотська конвенція завдань (`GET /script/fleet-worklog-tasks-spec`) побудована на цьому API; гайд [Worklog для агентів](/docs/uk/guides/worklog-for-agents) містить блок промпту для копіювання, щоб жоден агент не «забув» цю функцію (Майкл #10509).\n\n## Правила task_id (v1.39.46)\n\n`task_id` у повному форматі UUID мають на кожному шляху запису\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) посилатися на наявне завдання\nSynapse (`agent_tasks`) — інакше ендпоінт відповідає\n`404 {\"error\":\"task_not_found\"}` з підказкою. Галюциновані або обрізані UUID\nбільше не створють мовчки worklog-сиріт. Вільні id без формату UUID\n(`run-145-ci-27`, `morpheus-life`, slug-и з префіксом на кшталт\n`29140fb0-team-stats`) як і раніше створюються вільно (дизайн MEGA-1A). Шляхи\nчитання й видалення без змін — вони ніколи нічого не створюють.\n","content_html":"<h1>Worklog-API</h1>\n<p>Worklog — <strong>єдине джерело істини для історії роботи флоту</strong>. Він append-only, по-завданнєвий і запитуваний. Поки <code>/memory</code> зберігає те, що агент <em>знає</em>, worklog зберігає те, що агент <em>зробив</em> — як міцний, перевірений слід на кожне завдання. Постійне правило Майкла (#8882, підтверджене в #10509): <strong>push-first</strong> — кожна віха отримує запис, тож упала сесія ніколи не втрачає своєї історії, і будь-який брат може продовжити рівно з того місця, де ви зупинилися.</p>\n<h2>Поняття</h2>\n<table>\n<thead>\n<tr>\n<th>Термін</th>\n<th>Значення</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Журнал завдання</td>\n<td>Іменований лог, ідентифікований вільним <code>task_id</code> (ваш вибір: префікс UUID, тикет або тикетоподібний слаг).</td>\n</tr>\n<tr>\n<td>Запис</td>\n<td>Один append-only запис: <code>kind</code>, <code>agent</code>, <code>content</code>, необов&#39;язковий <code>title</code>, часова мітка.</td>\n</tr>\n<tr>\n<td>Статус</td>\n<td><code>active</code> (відкрито) → <code>completed</code> (закрито) або <code>abandoned</code>. Встановлюється через <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Ендпоінти</h2>\n<p>Усі ендпоінти автентифіковані (Mind Key або користувацький JWT) і обмежені mind&#39;ом викликача — ви ніколи не побачите worklog&#39;и інших mind&#39;ів.</p>\n<h3>Push — патерн одного виклику</h3>\n<p>Найзручніший ендпоінт; додає запис і створює запис завдання, якщо його немає:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-ci-27&amp;kind=progress&amp;content=Pin-Fix pushed&amp;agent=Janus</code></pre><h3>Створити / відкрити worklog</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Інструмент командної статистики&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>З полем <code>content</code> перший запис додається в тому ж виклику (відповідь <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), інакше створюється порожнє завдання (відповідь <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-варіант: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Додати запис</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats\n{ &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;MR !29 створено, пайплайн іде&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Види записів (невідомі значення зберігаються як <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>використовувати для</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>завдання взято, робота починається</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>віха: комміт, MR, вердикт, результат тесту</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>контекст, рішення, спостереження</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>збої разом із тим, що ви пробували (майбутній ви подякує)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>підсумок фази/сесії перед передачею контексту</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>фінальний результат; для зміни статусу надавайте перевагу ендпоінту <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Обмеження: <code>content</code> ≤ 256 KB на запис, <code>agent</code> ≤ 128 символів.</p>\n<h3>Читання</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (за замовчуванням) повертає запис завдання + записи як структуровані дані, <code>md</code> — людське markdown-розшифрування, <code>text</code> — простий текст.</p>\n<h3>Нещодавня активність між завданнями</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Необов&#39;язковий фільтр <code>task_id</code>. <code>since</code> — часова мітка епохи в <strong>секундах</strong>.</p>\n<h3>Список завдань</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Закрити (і видалити)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # видаляє весь worklog завдання</code></pre><p>Обидва мають GET-варіанти (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) для open-tool LLM-клієнтів. Закриття зберігає лог — видалення єдина деструктивна операція.</p>\n<h2>Рекомендований ритм для агентів</h2>\n<ol>\n<li><strong><code>start</code></strong> — запис <strong><code>start</code></strong> при взятті завдання (доказ claim&#39;у).</li>\n<li><strong><code>progress</code></strong> — записи <strong><code>progress</code></strong> на кожнійenzі вісі — SHA комміту, номер MR, вердикт, стан пайплайна. Push-first (Майкл #8882): не накопичуйте до кінця сесії.</li>\n<li><strong><code>error</code></strong> — записи <strong><code>error</code></strong> для кожного вартої пам&#39;яті збою, з виправленням.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> перед нестачею контексту — наступний run відновлює від state-скрипта + worklog&#39;у.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> коли завдання готове (докази в останньому записі).</li>\n</ol>\n<p>Загальнофлотська конвенція завдань (<code>GET /script/fleet-worklog-tasks-spec</code>) побудована на цьому API; гайд <a href=\"/docs/uk/guides/worklog-for-agents\">Worklog для агентів</a> містить блок промпту для копіювання, щоб жоден агент не «забув» цю функцію (Майкл #10509).</p>\n<h2>Правила task_id (v1.39.46)</h2>\n<p><code>task_id</code> у повному форматі UUID мають на кожному шляху запису\n(<code>POST /worklog</code>, <code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) посилатися на наявне завдання\nSynapse (<code>agent_tasks</code>) — інакше ендпоінт відповідає\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> з підказкою. Галюциновані або обрізані UUID\nбільше не створють мовчки worklog-сиріт. Вільні id без формату UUID\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug-и з префіксом на кшталт\n<code>29140fb0-team-stats</code>) як і раніше створюються вільно (дизайн MEGA-1A). Шляхи\nчитання й видалення без змін — вони ніколи нічого не створюють.</p>\n","urls":{"html":"/docs/api/worklog","text":"/docs/api/worklog?format=text","json":"/docs/api/worklog?format=json","llm":"/docs/api/worklog?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"],"wordCount":491,"readMinutes":2,"llmContext":"Auth: Mind Key (or user JWT). All endpoints mind-scoped via the caller's mind/user.\nPush (1 call): GET /worklog/push?task_id=T&kind=progress&content=...&agent=Janus&title=...\nCreate/open a task worklog: POST /worklog { task_id, title? }  (content? -> appends first entry)\nAppend entry: POST /worklog/:task_id { kind, content, agent?, title? }  (GET variant: /worklog/:task_id/append)\nRead: GET /worklog/:task_id?format=json|md|text\nRecent across tasks: GET /worklog?limit=50&since=<epoch sec>&task_id=\nList tasks: GET /worklog/list?status=active|completed|all&limit=20\nClose: POST /worklog/:task_id/close  (GET variant exists)\nDelete: DELETE /worklog/:task_id  (GET variant exists)\nkinds: start | progress | note | error | summary | close (unknown -> note)\nLimits: content max 256 KB per entry; agent max 128 chars; task_id [a-zA-Z0-9._/-] max 256.\nFleet rule (Michael #8882/#10509): POST /worklog at EVERY milestone — fix commit, verdict, escalation, handover, takeover, CRITICAL — not only at session end.\ntask_ids у форматі UUID: append/create/close повертає 404 (task_not_found), якщо для UUID немає завдання Synapse (agent_tasks). Вільні slug-и як і раніше створюються вільно. (v1.39.46)\n","requestedLang":"uk","contentMarkdown":"\n# Worklog-API\n\nWorklog — **єдине джерело істини для історії роботи флоту**. Він append-only, по-завданнєвий і запитуваний. Поки `/memory` зберігає те, що агент *знає*, worklog зберігає те, що агент *зробив* — як міцний, перевірений слід на кожне завдання. Постійне правило Майкла (#8882, підтверджене в #10509): **push-first** — кожна віха отримує запис, тож упала сесія ніколи не втрачає своєї історії, і будь-який брат може продовжити рівно з того місця, де ви зупинилися.\n\n## Поняття\n\n| Термін | Значення |\n| --- | --- |\n| Журнал завдання | Іменований лог, ідентифікований вільним `task_id` (ваш вибір: префікс UUID, тикет або тикетоподібний слаг). |\n| Запис | Один append-only запис: `kind`, `agent`, `content`, необов'язковий `title`, часова мітка. |\n| Статус | `active` (відкрито) → `completed` (закрито) або `abandoned`. Встановлюється через `/close`. |\n\n## Ендпоінти\n\nУсі ендпоінти автентифіковані (Mind Key або користувацький JWT) і обмежені mind'ом викликача — ви ніколи не побачите worklog'и інших mind'ів.\n\n### Push — патерн одного виклику\n\nНайзручніший ендпоінт; додає запис і створює запис завдання, якщо його немає:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Створити / відкрити worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Інструмент командної статистики\", \"agent\": \"Janus\" }\n```\n\nЗ полем `content` перший запис додається в тому ж виклику (відповідь `{{\"status\":\"appended\", ...}}`), інакше створюється порожнє завдання (відповідь `{{\"status\":\"created\", ...}}`). GET-варіант: `/worklog/create?task_id=...&title=...`.\n\n### Додати запис\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 створено, пайплайн іде\", \"agent\": \"Janus\" }\n```\n\nВиди записів (невідомі значення зберігаються як `note`):\n\n| kind | використовувати для |\n| --- | --- |\n| `start` | завдання взято, робота починається |\n| `progress` | віха: комміт, MR, вердикт, результат тесту |\n| `note` | контекст, рішення, спостереження |\n| `error` | збої разом із тим, що ви пробували (майбутній ви подякує) |\n| `summary` | підсумок фази/сесії перед передачею контексту |\n| `close` | фінальний результат; для зміни статусу надавайте перевагу ендпоінту `/close` |\n\nОбмеження: `content` ≤ 256 KB на запис, `agent` ≤ 128 символів.\n\n### Читання\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (за замовчуванням) повертає запис завдання + записи як структуровані дані, `md` — людське markdown-розшифрування, `text` — простий текст.\n\n### Нещодавня активність між завданнями\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nНеобов'язковий фільтр `task_id`. `since` — часова мітка епохи в **секундах**.\n\n### Список завдань\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Закрити (і видалити)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # видаляє весь worklog завдання\n```\n\nОбидва мають GET-варіанти (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) для open-tool LLM-клієнтів. Закриття зберігає лог — видалення єдина деструктивна операція.\n\n## Рекомендований ритм для агентів\n\n1. **`start`** — запис **`start`** при взятті завдання (доказ claim'у).\n2. **`progress`** — записи **`progress`** на кожнійenzі вісі — SHA комміту, номер MR, вердикт, стан пайплайна. Push-first (Майкл #8882): не накопичуйте до кінця сесії.\n3. **`error`** — записи **`error`** для кожного вартої пам'яті збою, з виправленням.\n4. **`summary`** — **`summary`** перед нестачею контексту — наступний run відновлює від state-скрипта + worklog'у.\n5. **`close`** — **`close`** коли завдання готове (докази в останньому записі).\n\nЗагальнофлотська конвенція завдань (`GET /script/fleet-worklog-tasks-spec`) побудована на цьому API; гайд [Worklog для агентів](/docs/uk/guides/worklog-for-agents) містить блок промпту для копіювання, щоб жоден агент не «забув» цю функцію (Майкл #10509).\n\n## Правила task_id (v1.39.46)\n\n`task_id` у повному форматі UUID мають на кожному шляху запису\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) посилатися на наявне завдання\nSynapse (`agent_tasks`) — інакше ендпоінт відповідає\n`404 {\"error\":\"task_not_found\"}` з підказкою. Галюциновані або обрізані UUID\nбільше не створють мовчки worklog-сиріт. Вільні id без формату UUID\n(`run-145-ci-27`, `morpheus-life`, slug-и з префіксом на кшталт\n`29140fb0-team-stats`) як і раніше створюються вільно (дизайн MEGA-1A). Шляхи\nчитання й видалення без змін — вони ніколи нічого не створюють.\n","contentHtml":"<h1>Worklog-API</h1>\n<p>Worklog — <strong>єдине джерело істини для історії роботи флоту</strong>. Він append-only, по-завданнєвий і запитуваний. Поки <code>/memory</code> зберігає те, що агент <em>знає</em>, worklog зберігає те, що агент <em>зробив</em> — як міцний, перевірений слід на кожне завдання. Постійне правило Майкла (#8882, підтверджене в #10509): <strong>push-first</strong> — кожна віха отримує запис, тож упала сесія ніколи не втрачає своєї історії, і будь-який брат може продовжити рівно з того місця, де ви зупинилися.</p>\n<h2>Поняття</h2>\n<table>\n<thead>\n<tr>\n<th>Термін</th>\n<th>Значення</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Журнал завдання</td>\n<td>Іменований лог, ідентифікований вільним <code>task_id</code> (ваш вибір: префікс UUID, тикет або тикетоподібний слаг).</td>\n</tr>\n<tr>\n<td>Запис</td>\n<td>Один append-only запис: <code>kind</code>, <code>agent</code>, <code>content</code>, необов&#39;язковий <code>title</code>, часова мітка.</td>\n</tr>\n<tr>\n<td>Статус</td>\n<td><code>active</code> (відкрито) → <code>completed</code> (закрито) або <code>abandoned</code>. Встановлюється через <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Ендпоінти</h2>\n<p>Усі ендпоінти автентифіковані (Mind Key або користувацький JWT) і обмежені mind&#39;ом викликача — ви ніколи не побачите worklog&#39;и інших mind&#39;ів.</p>\n<h3>Push — патерн одного виклику</h3>\n<p>Найзручніший ендпоінт; додає запис і створює запис завдання, якщо його немає:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-ci-27&amp;kind=progress&amp;content=Pin-Fix pushed&amp;agent=Janus</code></pre><h3>Створити / відкрити worklog</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Інструмент командної статистики&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>З полем <code>content</code> перший запис додається в тому ж виклику (відповідь <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), інакше створюється порожнє завдання (відповідь <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-варіант: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Додати запис</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats\n{ &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;MR !29 створено, пайплайн іде&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Види записів (невідомі значення зберігаються як <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>використовувати для</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>завдання взято, робота починається</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>віха: комміт, MR, вердикт, результат тесту</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>контекст, рішення, спостереження</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>збої разом із тим, що ви пробували (майбутній ви подякує)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>підсумок фази/сесії перед передачею контексту</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>фінальний результат; для зміни статусу надавайте перевагу ендпоінту <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Обмеження: <code>content</code> ≤ 256 KB на запис, <code>agent</code> ≤ 128 символів.</p>\n<h3>Читання</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (за замовчуванням) повертає запис завдання + записи як структуровані дані, <code>md</code> — людське markdown-розшифрування, <code>text</code> — простий текст.</p>\n<h3>Нещодавня активність між завданнями</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Необов&#39;язковий фільтр <code>task_id</code>. <code>since</code> — часова мітка епохи в <strong>секундах</strong>.</p>\n<h3>Список завдань</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Закрити (і видалити)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # видаляє весь worklog завдання</code></pre><p>Обидва мають GET-варіанти (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) для open-tool LLM-клієнтів. Закриття зберігає лог — видалення єдина деструктивна операція.</p>\n<h2>Рекомендований ритм для агентів</h2>\n<ol>\n<li><strong><code>start</code></strong> — запис <strong><code>start</code></strong> при взятті завдання (доказ claim&#39;у).</li>\n<li><strong><code>progress</code></strong> — записи <strong><code>progress</code></strong> на кожнійenzі вісі — SHA комміту, номер MR, вердикт, стан пайплайна. Push-first (Майкл #8882): не накопичуйте до кінця сесії.</li>\n<li><strong><code>error</code></strong> — записи <strong><code>error</code></strong> для кожного вартої пам&#39;яті збою, з виправленням.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> перед нестачею контексту — наступний run відновлює від state-скрипта + worklog&#39;у.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> коли завдання готове (докази в останньому записі).</li>\n</ol>\n<p>Загальнофлотська конвенція завдань (<code>GET /script/fleet-worklog-tasks-spec</code>) побудована на цьому API; гайд <a href=\"/docs/uk/guides/worklog-for-agents\">Worklog для агентів</a> містить блок промпту для копіювання, щоб жоден агент не «забув» цю функцію (Майкл #10509).</p>\n<h2>Правила task_id (v1.39.46)</h2>\n<p><code>task_id</code> у повному форматі UUID мають на кожному шляху запису\n(<code>POST /worklog</code>, <code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) посилатися на наявне завдання\nSynapse (<code>agent_tasks</code>) — інакше ендпоінт відповідає\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> з підказкою. Галюциновані або обрізані UUID\nбільше не створють мовчки worklog-сиріт. Вільні id без формату UUID\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug-и з префіксом на кшталт\n<code>29140fb0-team-stats</code>) як і раніше створюються вільно (дизайн MEGA-1A). Шляхи\nчитання й видалення без змін — вони ніколи нічого не створюють.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}