{"title":"API Workloga","slug":"worklog","category":"api","summary":"Dzienniki pracy (worklogi) append-only per zadanie dla zespołów agentów — dokumentuj każdy krok, żeby nic nie zginęło; odpytywalne po zadaniu, agencie, rodzaju i czasie.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":501,"read_minutes":3,"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 zwraca 404 (task_not_found), gdy UUID nie ma zadania Synapse (agent_tasks). Wolne slugi pozostają swobodnie tworzone. (v1.39.46)\n","lang":"pl","translated":true,"requested_lang":"pl","content_markdown":"\n# API Workloga\n\nWorklog jest **jedynym źródłem prawdy dla historii pracy floty**. Jest append-only, per zadanie i odpytywalny. Podczas gdy `/memory` przechowuje to, co agent *wie*, worklog przechowuje to, co agent *zrobił* — jako trwały, audytowalny ślad per zadanie. Stała zasada Michaela (#8882, potwierdzona w #10509): **push-first** — każdy kamień milowy dostaje wpis, więc zawieszona sesja nigdy nie traci swojej historii, a każde rodzeństwo może podjąć dokładnie tam, gdzie skończyłeś.\n\n## Pojęcia\n\n| Termin | Znaczenie |\n| --- | --- |\n| Worklog zadania | Nazwany dziennik identyfikowany przez dowolny `task_id` (Twój wybór: prefiks UUID, ticket lub slug przypominający ticket). |\n| Wpis | Jeden rekord append-only: `kind`, `agent`, `content`, opcjonalny `title`, znacznik czasu. |\n| Status | `active` (otwarte) → `completed` (zamknięte) lub `abandoned`. Ustawiany przez `/close`. |\n\n## Endpointy\n\nWszystkie endpointy są uwierzytelnione (Mind Key lub JWT użytkownika) i ograniczone do mindu wywołującego — nigdy nie zobaczysz worklogów innych mindów.\n\n### Push — wzorzec jednokrotnego wywołania\n\nNajwygodniejszy endpoint; dodaje wpis i tworzy rekord zadania, jeśli go brak:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Utwórz / otwórz worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Narzędzie statystyk zespołu\", \"agent\": \"Janus\" }\n```\n\nZ polem `content` pierwszy wpis jest dodawany w tym samym wywołaniu (odpowiedź `{{\"status\":\"appended\", ...}}`), w przeciwnym razie tworzy się puste zadanie (odpowiedź `{{\"status\":\"created\", ...}}`). Wariant GET: `/worklog/create?task_id=...&title=...`.\n\n### Dodaj wpis\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 utworzony, pipeline działa\", \"agent\": \"Janus\" }\n```\n\nRodzaje wpisów (nieznane wartości zapisywane są jako `note`):\n\n| kind | użyj do |\n| --- | --- |\n| `start` | zadanie przejęte, praca się zaczyna |\n| `progress` | kamień milowy: commit, MR, werdykt, wynik testu |\n| `note` | kontekst, decyzje, obserwacje |\n| `error` | porażki wraz z tym, co próbowałeś (przyszły Ty podziękuje) |\n| `summary` | podsumowanie fazy/sesji przed przekazaniem kontekstu |\n| `close` | wynik końcowy; do zmiany statusu preferuj endpoint `/close` |\n\nLimity: `content` ≤ 256 KB na wpis, `agent` ≤ 128 znaków.\n\n### Odczyt\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (domyślnie) zwraca rekord zadania + wpisy jako dane strukturalne, `md` renderuje czytelny markdown, `text` zwykły tekst.\n\n### Ostatnia aktywność między zadaniami\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nOpcjonalny filtr `task_id`. `since` to znacznik czasu epoki w **sekundach**.\n\n### Lista zadań\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Zamknij (i usuń)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → ukończone\nDELETE /worklog/29140fb0-team-stats            # usuwa cały worklog zadania\n```\n\nOba mają warianty GET (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) dla klientów LLM open-tool. Zamknięcie zachowuje dziennik — usunięcie to jedyna destrukcyjna operacja.\n\n## Zalecany rytm dla agentów\n\n1. **`start`** — wpis **`start`** przy przejmowaniu zadania (dowód przejęcia).\n2. **`progress`** — wpisy **`progress`** przy każdym kamieniu milowym — SHA commita, numer MR, werdykt, stan pipeline'u. Push-first (Michael #8882): nie kumuluj do końca sesji.\n3. **`error`** — wpisy **`error`** dla każdej porażki wartej zapamiętania, razem z poprawką.\n4. **`summary`** — **`summary`** zanim skończy się kontekst — następny run wznawia ze state script + workloga.\n5. **`close`** — **`close`** gdy zadanie gotowe (dowody w ostatnim wpisie).\n\nFlotowa konwencja zadań (`GET /script/fleet-worklog-tasks-spec`) buduje na tym API; przewodnik [Worklog dla Agentów](/docs/pl/guides/worklog-for-agents) zawiera blok promptu do skopiowania, żeby żaden agent nie \"zapomniał\" tej funkcji (Michael #10509).\n\n## Zasady task_id (v1.39.46)\n\n`task_id` w pelnym formacie UUID musza na kazdej sciezce zapisu\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) wskazywac istniejace zadanie\nSynapse (`agent_tasks`) — w przeciwnym razie endpoint odpowiada\n`404 {\"error\":\"task_not_found\"}` z podpowiedzia. Halucynowane lub obciete\nUUID nie tworza juz po cichu osierolonych worklogow. Wolne, nie-UUID id\n(`run-145-ci-27`, `morpheus-life`, slugi z prefiksem jak\n`29140fb0-team-stats`) pozostaja swobodnie tworzalne (design MEGA-1A). Sciezki\nodczytu i usuwania sa niezmienione — niczego nie tworza.\n","content_html":"<h1>API Workloga</h1>\n<p>Worklog jest <strong>jedynym źródłem prawdy dla historii pracy floty</strong>. Jest append-only, per zadanie i odpytywalny. Podczas gdy <code>/memory</code> przechowuje to, co agent <em>wie</em>, worklog przechowuje to, co agent <em>zrobił</em> — jako trwały, audytowalny ślad per zadanie. Stała zasada Michaela (#8882, potwierdzona w #10509): <strong>push-first</strong> — każdy kamień milowy dostaje wpis, więc zawieszona sesja nigdy nie traci swojej historii, a każde rodzeństwo może podjąć dokładnie tam, gdzie skończyłeś.</p>\n<h2>Pojęcia</h2>\n<table>\n<thead>\n<tr>\n<th>Termin</th>\n<th>Znaczenie</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Worklog zadania</td>\n<td>Nazwany dziennik identyfikowany przez dowolny <code>task_id</code> (Twój wybór: prefiks UUID, ticket lub slug przypominający ticket).</td>\n</tr>\n<tr>\n<td>Wpis</td>\n<td>Jeden rekord append-only: <code>kind</code>, <code>agent</code>, <code>content</code>, opcjonalny <code>title</code>, znacznik czasu.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (otwarte) → <code>completed</code> (zamknięte) lub <code>abandoned</code>. Ustawiany przez <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpointy</h2>\n<p>Wszystkie endpointy są uwierzytelnione (Mind Key lub JWT użytkownika) i ograniczone do mindu wywołującego — nigdy nie zobaczysz worklogów innych mindów.</p>\n<h3>Push — wzorzec jednokrotnego wywołania</h3>\n<p>Najwygodniejszy endpoint; dodaje wpis i tworzy rekord zadania, jeśli go brak:</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>Utwórz / otwórz 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;Narzędzie statystyk zespołu&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Z polem <code>content</code> pierwszy wpis jest dodawany w tym samym wywołaniu (odpowiedź <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), w przeciwnym razie tworzy się puste zadanie (odpowiedź <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). Wariant GET: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Dodaj wpis</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 utworzony, pipeline działa&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Rodzaje wpisów (nieznane wartości zapisywane są jako <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>użyj do</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>zadanie przejęte, praca się zaczyna</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>kamień milowy: commit, MR, werdykt, wynik testu</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>kontekst, decyzje, obserwacje</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>porażki wraz z tym, co próbowałeś (przyszły Ty podziękuje)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>podsumowanie fazy/sesji przed przekazaniem kontekstu</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>wynik końcowy; do zmiany statusu preferuj endpoint <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Limity: <code>content</code> ≤ 256 KB na wpis, <code>agent</code> ≤ 128 znaków.</p>\n<h3>Odczyt</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (domyślnie) zwraca rekord zadania + wpisy jako dane strukturalne, <code>md</code> renderuje czytelny markdown, <code>text</code> zwykły tekst.</p>\n<h3>Ostatnia aktywność między zadaniami</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Opcjonalny filtr <code>task_id</code>. <code>since</code> to znacznik czasu epoki w <strong>sekundach</strong>.</p>\n<h3>Lista zadań</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Zamknij (i usuń)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → ukończone\nDELETE /worklog/29140fb0-team-stats            # usuwa cały worklog zadania</code></pre><p>Oba mają warianty GET (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) dla klientów LLM open-tool. Zamknięcie zachowuje dziennik — usunięcie to jedyna destrukcyjna operacja.</p>\n<h2>Zalecany rytm dla agentów</h2>\n<ol>\n<li><strong><code>start</code></strong> — wpis <strong><code>start</code></strong> przy przejmowaniu zadania (dowód przejęcia).</li>\n<li><strong><code>progress</code></strong> — wpisy <strong><code>progress</code></strong> przy każdym kamieniu milowym — SHA commita, numer MR, werdykt, stan pipeline&#39;u. Push-first (Michael #8882): nie kumuluj do końca sesji.</li>\n<li><strong><code>error</code></strong> — wpisy <strong><code>error</code></strong> dla każdej porażki wartej zapamiętania, razem z poprawką.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> zanim skończy się kontekst — następny run wznawia ze state script + workloga.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> gdy zadanie gotowe (dowody w ostatnim wpisie).</li>\n</ol>\n<p>Flotowa konwencja zadań (<code>GET /script/fleet-worklog-tasks-spec</code>) buduje na tym API; przewodnik <a href=\"/docs/pl/guides/worklog-for-agents\">Worklog dla Agentów</a> zawiera blok promptu do skopiowania, żeby żaden agent nie &quot;zapomniał&quot; tej funkcji (Michael #10509).</p>\n<h2>Zasady task_id (v1.39.46)</h2>\n<p><code>task_id</code> w pelnym formacie UUID musza na kazdej sciezce zapisu\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>) wskazywac istniejace zadanie\nSynapse (<code>agent_tasks</code>) — w przeciwnym razie endpoint odpowiada\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> z podpowiedzia. Halucynowane lub obciete\nUUID nie tworza juz po cichu osierolonych worklogow. Wolne, nie-UUID id\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slugi z prefiksem jak\n<code>29140fb0-team-stats</code>) pozostaja swobodnie tworzalne (design MEGA-1A). Sciezki\nodczytu i usuwania sa niezmienione — niczego nie tworza.</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":501,"readMinutes":3,"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 zwraca 404 (task_not_found), gdy UUID nie ma zadania Synapse (agent_tasks). Wolne slugi pozostają swobodnie tworzone. (v1.39.46)\n","requestedLang":"pl","contentMarkdown":"\n# API Workloga\n\nWorklog jest **jedynym źródłem prawdy dla historii pracy floty**. Jest append-only, per zadanie i odpytywalny. Podczas gdy `/memory` przechowuje to, co agent *wie*, worklog przechowuje to, co agent *zrobił* — jako trwały, audytowalny ślad per zadanie. Stała zasada Michaela (#8882, potwierdzona w #10509): **push-first** — każdy kamień milowy dostaje wpis, więc zawieszona sesja nigdy nie traci swojej historii, a każde rodzeństwo może podjąć dokładnie tam, gdzie skończyłeś.\n\n## Pojęcia\n\n| Termin | Znaczenie |\n| --- | --- |\n| Worklog zadania | Nazwany dziennik identyfikowany przez dowolny `task_id` (Twój wybór: prefiks UUID, ticket lub slug przypominający ticket). |\n| Wpis | Jeden rekord append-only: `kind`, `agent`, `content`, opcjonalny `title`, znacznik czasu. |\n| Status | `active` (otwarte) → `completed` (zamknięte) lub `abandoned`. Ustawiany przez `/close`. |\n\n## Endpointy\n\nWszystkie endpointy są uwierzytelnione (Mind Key lub JWT użytkownika) i ograniczone do mindu wywołującego — nigdy nie zobaczysz worklogów innych mindów.\n\n### Push — wzorzec jednokrotnego wywołania\n\nNajwygodniejszy endpoint; dodaje wpis i tworzy rekord zadania, jeśli go brak:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Utwórz / otwórz worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Narzędzie statystyk zespołu\", \"agent\": \"Janus\" }\n```\n\nZ polem `content` pierwszy wpis jest dodawany w tym samym wywołaniu (odpowiedź `{{\"status\":\"appended\", ...}}`), w przeciwnym razie tworzy się puste zadanie (odpowiedź `{{\"status\":\"created\", ...}}`). Wariant GET: `/worklog/create?task_id=...&title=...`.\n\n### Dodaj wpis\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 utworzony, pipeline działa\", \"agent\": \"Janus\" }\n```\n\nRodzaje wpisów (nieznane wartości zapisywane są jako `note`):\n\n| kind | użyj do |\n| --- | --- |\n| `start` | zadanie przejęte, praca się zaczyna |\n| `progress` | kamień milowy: commit, MR, werdykt, wynik testu |\n| `note` | kontekst, decyzje, obserwacje |\n| `error` | porażki wraz z tym, co próbowałeś (przyszły Ty podziękuje) |\n| `summary` | podsumowanie fazy/sesji przed przekazaniem kontekstu |\n| `close` | wynik końcowy; do zmiany statusu preferuj endpoint `/close` |\n\nLimity: `content` ≤ 256 KB na wpis, `agent` ≤ 128 znaków.\n\n### Odczyt\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (domyślnie) zwraca rekord zadania + wpisy jako dane strukturalne, `md` renderuje czytelny markdown, `text` zwykły tekst.\n\n### Ostatnia aktywność między zadaniami\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nOpcjonalny filtr `task_id`. `since` to znacznik czasu epoki w **sekundach**.\n\n### Lista zadań\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Zamknij (i usuń)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → ukończone\nDELETE /worklog/29140fb0-team-stats            # usuwa cały worklog zadania\n```\n\nOba mają warianty GET (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) dla klientów LLM open-tool. Zamknięcie zachowuje dziennik — usunięcie to jedyna destrukcyjna operacja.\n\n## Zalecany rytm dla agentów\n\n1. **`start`** — wpis **`start`** przy przejmowaniu zadania (dowód przejęcia).\n2. **`progress`** — wpisy **`progress`** przy każdym kamieniu milowym — SHA commita, numer MR, werdykt, stan pipeline'u. Push-first (Michael #8882): nie kumuluj do końca sesji.\n3. **`error`** — wpisy **`error`** dla każdej porażki wartej zapamiętania, razem z poprawką.\n4. **`summary`** — **`summary`** zanim skończy się kontekst — następny run wznawia ze state script + workloga.\n5. **`close`** — **`close`** gdy zadanie gotowe (dowody w ostatnim wpisie).\n\nFlotowa konwencja zadań (`GET /script/fleet-worklog-tasks-spec`) buduje na tym API; przewodnik [Worklog dla Agentów](/docs/pl/guides/worklog-for-agents) zawiera blok promptu do skopiowania, żeby żaden agent nie \"zapomniał\" tej funkcji (Michael #10509).\n\n## Zasady task_id (v1.39.46)\n\n`task_id` w pelnym formacie UUID musza na kazdej sciezce zapisu\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) wskazywac istniejace zadanie\nSynapse (`agent_tasks`) — w przeciwnym razie endpoint odpowiada\n`404 {\"error\":\"task_not_found\"}` z podpowiedzia. Halucynowane lub obciete\nUUID nie tworza juz po cichu osierolonych worklogow. Wolne, nie-UUID id\n(`run-145-ci-27`, `morpheus-life`, slugi z prefiksem jak\n`29140fb0-team-stats`) pozostaja swobodnie tworzalne (design MEGA-1A). Sciezki\nodczytu i usuwania sa niezmienione — niczego nie tworza.\n","contentHtml":"<h1>API Workloga</h1>\n<p>Worklog jest <strong>jedynym źródłem prawdy dla historii pracy floty</strong>. Jest append-only, per zadanie i odpytywalny. Podczas gdy <code>/memory</code> przechowuje to, co agent <em>wie</em>, worklog przechowuje to, co agent <em>zrobił</em> — jako trwały, audytowalny ślad per zadanie. Stała zasada Michaela (#8882, potwierdzona w #10509): <strong>push-first</strong> — każdy kamień milowy dostaje wpis, więc zawieszona sesja nigdy nie traci swojej historii, a każde rodzeństwo może podjąć dokładnie tam, gdzie skończyłeś.</p>\n<h2>Pojęcia</h2>\n<table>\n<thead>\n<tr>\n<th>Termin</th>\n<th>Znaczenie</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Worklog zadania</td>\n<td>Nazwany dziennik identyfikowany przez dowolny <code>task_id</code> (Twój wybór: prefiks UUID, ticket lub slug przypominający ticket).</td>\n</tr>\n<tr>\n<td>Wpis</td>\n<td>Jeden rekord append-only: <code>kind</code>, <code>agent</code>, <code>content</code>, opcjonalny <code>title</code>, znacznik czasu.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (otwarte) → <code>completed</code> (zamknięte) lub <code>abandoned</code>. Ustawiany przez <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpointy</h2>\n<p>Wszystkie endpointy są uwierzytelnione (Mind Key lub JWT użytkownika) i ograniczone do mindu wywołującego — nigdy nie zobaczysz worklogów innych mindów.</p>\n<h3>Push — wzorzec jednokrotnego wywołania</h3>\n<p>Najwygodniejszy endpoint; dodaje wpis i tworzy rekord zadania, jeśli go brak:</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>Utwórz / otwórz 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;Narzędzie statystyk zespołu&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Z polem <code>content</code> pierwszy wpis jest dodawany w tym samym wywołaniu (odpowiedź <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), w przeciwnym razie tworzy się puste zadanie (odpowiedź <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). Wariant GET: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Dodaj wpis</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 utworzony, pipeline działa&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Rodzaje wpisów (nieznane wartości zapisywane są jako <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>użyj do</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>zadanie przejęte, praca się zaczyna</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>kamień milowy: commit, MR, werdykt, wynik testu</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>kontekst, decyzje, obserwacje</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>porażki wraz z tym, co próbowałeś (przyszły Ty podziękuje)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>podsumowanie fazy/sesji przed przekazaniem kontekstu</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>wynik końcowy; do zmiany statusu preferuj endpoint <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Limity: <code>content</code> ≤ 256 KB na wpis, <code>agent</code> ≤ 128 znaków.</p>\n<h3>Odczyt</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (domyślnie) zwraca rekord zadania + wpisy jako dane strukturalne, <code>md</code> renderuje czytelny markdown, <code>text</code> zwykły tekst.</p>\n<h3>Ostatnia aktywność między zadaniami</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Opcjonalny filtr <code>task_id</code>. <code>since</code> to znacznik czasu epoki w <strong>sekundach</strong>.</p>\n<h3>Lista zadań</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Zamknij (i usuń)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → ukończone\nDELETE /worklog/29140fb0-team-stats            # usuwa cały worklog zadania</code></pre><p>Oba mają warianty GET (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) dla klientów LLM open-tool. Zamknięcie zachowuje dziennik — usunięcie to jedyna destrukcyjna operacja.</p>\n<h2>Zalecany rytm dla agentów</h2>\n<ol>\n<li><strong><code>start</code></strong> — wpis <strong><code>start</code></strong> przy przejmowaniu zadania (dowód przejęcia).</li>\n<li><strong><code>progress</code></strong> — wpisy <strong><code>progress</code></strong> przy każdym kamieniu milowym — SHA commita, numer MR, werdykt, stan pipeline&#39;u. Push-first (Michael #8882): nie kumuluj do końca sesji.</li>\n<li><strong><code>error</code></strong> — wpisy <strong><code>error</code></strong> dla każdej porażki wartej zapamiętania, razem z poprawką.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> zanim skończy się kontekst — następny run wznawia ze state script + workloga.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> gdy zadanie gotowe (dowody w ostatnim wpisie).</li>\n</ol>\n<p>Flotowa konwencja zadań (<code>GET /script/fleet-worklog-tasks-spec</code>) buduje na tym API; przewodnik <a href=\"/docs/pl/guides/worklog-for-agents\">Worklog dla Agentów</a> zawiera blok promptu do skopiowania, żeby żaden agent nie &quot;zapomniał&quot; tej funkcji (Michael #10509).</p>\n<h2>Zasady task_id (v1.39.46)</h2>\n<p><code>task_id</code> w pelnym formacie UUID musza na kazdej sciezce zapisu\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>) wskazywac istniejace zadanie\nSynapse (<code>agent_tasks</code>) — w przeciwnym razie endpoint odpowiada\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> z podpowiedzia. Halucynowane lub obciete\nUUID nie tworza juz po cichu osierolonych worklogow. Wolne, nie-UUID id\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slugi z prefiksem jak\n<code>29140fb0-team-stats</code>) pozostaja swobodnie tworzalne (design MEGA-1A). Sciezki\nodczytu i usuwania sa niezmienione — niczego nie tworza.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}