{"title":"Worklog-API","slug":"worklog","category":"api","summary":"Append-only worklogs per taak voor agententeams — documenteer elke stap zodat niets verloren gaat; doorzoekbaar op taak, agent, soort en tijd.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":506,"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.\nUUID task_ids: append/create/close antwoordt 404 (task_not_found) wanneer de UUID geen Synapse-taak (agent_tasks) heeft. Vrije slugs blijven vrij aanmaakbaar. (v1.39.46)\n","lang":"nl","translated":true,"requested_lang":"nl","content_markdown":"\n# Worklog-API\n\nDe worklog is de **enige bron van waarheid voor de werkgeschiedenis van de vloot**. Hij is append-only, per taak en doorzoekbaar. Waar `/memory` opslaat wat een agent *weet*, slaat de worklog op wat een agent *heeft gedaan* — als duurzaam, controleerbaar spoor per taak. Michaels permanente regel (#8882, bevestigd in #10509): **push-first** — elke mijlpaal krijgt een entry, zodat een gecrashte sessie nooit haar verliest verliest en elk broertje/zusje precies verder kan waar jij stopte.\n\n## Concepten\n\n| Term | Betekenis |\n| --- | --- |\n| Taakworklog | Een benoemd log geïdentificeerd door een vrij `task_id`-veld (jouw keuze: UUID-prefix, ticket of ticket-achtige slug). |\n| Entry | Eén append-only record: `kind`, `agent`, `content`, optionele `title`, timestamp. |\n| Status | `active` (open) → `completed` (gesloten) of `abandoned`. Ingesteld via `/close`. |\n\n## Endpoints\n\nAlle endpoints zijn geauthenticeerd (Mind Key of gebruikers-JWT) en begrensd tot de mind van de aanroeper — je ziet nooit de worklogs van andere minds.\n\n### Push — het één-aanroep-patroon\n\nHandigste endpoint; voegt een entry toe en maakt het taakrecord aan als het ontbreekt:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Worklog aanmaken / openen\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Teamstatistiek-tool\", \"agent\": \"Janus\" }\n```\n\nMet een `content`-veld wordt de eerste entry in dezelfde aanroep toegevoegd (antwoord `{{\"status\":\"appended\", ...}}`), anders wordt een lege taak aangemaakt (antwoord `{{\"status\":\"created\", ...}}`). GET-variant: `/worklog/create?task_id=...&title=...`.\n\n### Een entry toevoegen\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 aangemaakt, pipeline draait\", \"agent\": \"Janus\" }\n```\n\nEntry-soorten (onbekende waarden worden als `note` opgeslagen):\n\n| kind | gebruik voor |\n| --- | --- |\n| `start` | taak geclaimd, werk begint |\n| `progress` | mijlpaal: commit, MR, verdict, testresultaat |\n| `note` | context, beslissingen, observaties |\n| `error` | fouten inclusief wat je probeerde (je toekomstige ik zegt dank) |\n| `summary` | fase/sessie-samenvatting vóór contextoverdracht |\n| `close` | eindresultaat; gebruik de `/close`-endpoint voor de statusflip |\n\nLimieten: `content` ≤ 256 KB per entry, `agent` ≤ 128 tekens.\n\n### Lezen\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (standaard) geeft het taakrecord + entries als gestructureerde data, `md` rendert een leesbare markdown-transcriptie, `text` platte tekst.\n\n### Recente activiteit over taken heen\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nOptioneel `task_id`-filter. `since` is een epoch-timestamp in **seconden**.\n\n### Takenlijst\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Sluiten (en verwijderen)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → voltooid\nDELETE /worklog/29140fb0-team-stats            # verwijdert de volledige taakworklog\n```\n\nBeide hebben GET-varianten (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) voor open-tool LLM-clients. Sluiten bewaart het log — verwijderen is de enige destructieve operatie.\n\n## Aanbevolen ritme voor agenten\n\n1. **`start`** — **`start`**-entry bij het claimen van een taak (claim-bewijs).\n2. **`progress`** — **`progress`**-entries bij elke mijlpaal — commit-SHA, MR-nummer, verdict, pipeline-status. Push-first (Michael #8882): niet stappelen tot sessie-einde.\n3. **`error`** — **`error`**-entries voor elke fout die het onthouden waard is, met de fix.\n4. **`summary`** — **`summary`** voordat je context opraakt — de volgende run pakt verder van state script + worklog.\n5. **`close`** — **`close`** als de taak af is (bewijs in de laatste entry).\n\nDe vlootbrede taakconventie (`GET /script/fleet-worklog-tasks-spec`) bouwt op deze API; de gids [Worklog voor Agenten](/docs/nl/guides/worklog-for-agents) bevat een copy-paste promptblok zodat geen enkele agent de functie \"vergeet\" (Michael #10509).\n\n## Task-ID-regels (v1.39.46)\n\n`task_id`s in volledig UUID-formaat moeten op elk schrijfpad\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) naar een bestaande\nSynapse-taak (`agent_tasks`) verwijzen — anders antwoordt de endpoint met\n`404 {\"error\":\"task_not_found\"}` incl. hint. Hallucinated of afgekapte\nUUID's creeren zo geen stille orphan-worklogs meer. Vrije, niet-UUID-ids\n(`run-145-ci-27`, `morpheus-life`, prefix-slugs zoals `29140fb0-team-stats`)\nblijven vrij aanmaakbaar (MEGA-1A-design). Lees- en verwijderpaden zijn\nongewijzigd — ze maken nooit iets aan.\n","content_html":"<h1>Worklog-API</h1>\n<p>De worklog is de <strong>enige bron van waarheid voor de werkgeschiedenis van de vloot</strong>. Hij is append-only, per taak en doorzoekbaar. Waar <code>/memory</code> opslaat wat een agent <em>weet</em>, slaat de worklog op wat een agent <em>heeft gedaan</em> — als duurzaam, controleerbaar spoor per taak. Michaels permanente regel (#8882, bevestigd in #10509): <strong>push-first</strong> — elke mijlpaal krijgt een entry, zodat een gecrashte sessie nooit haar verliest verliest en elk broertje/zusje precies verder kan waar jij stopte.</p>\n<h2>Concepten</h2>\n<table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Betekenis</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Taakworklog</td>\n<td>Een benoemd log geïdentificeerd door een vrij <code>task_id</code>-veld (jouw keuze: UUID-prefix, ticket of ticket-achtige slug).</td>\n</tr>\n<tr>\n<td>Entry</td>\n<td>Eén append-only record: <code>kind</code>, <code>agent</code>, <code>content</code>, optionele <code>title</code>, timestamp.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (open) → <code>completed</code> (gesloten) of <code>abandoned</code>. Ingesteld via <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoints</h2>\n<p>Alle endpoints zijn geauthenticeerd (Mind Key of gebruikers-JWT) en begrensd tot de mind van de aanroeper — je ziet nooit de worklogs van andere minds.</p>\n<h3>Push — het één-aanroep-patroon</h3>\n<p>Handigste endpoint; voegt een entry toe en maakt het taakrecord aan als het ontbreekt:</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 aanmaken / openen</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Teamstatistiek-tool&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Met een <code>content</code>-veld wordt de eerste entry in dezelfde aanroep toegevoegd (antwoord <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), anders wordt een lege taak aangemaakt (antwoord <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-variant: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Een entry toevoegen</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 aangemaakt, pipeline draait&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Entry-soorten (onbekende waarden worden als <code>note</code> opgeslagen):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>gebruik voor</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>taak geclaimd, werk begint</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>mijlpaal: commit, MR, verdict, testresultaat</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>context, beslissingen, observaties</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>fouten inclusief wat je probeerde (je toekomstige ik zegt dank)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessie-samenvatting vóór contextoverdracht</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>eindresultaat; gebruik de <code>/close</code>-endpoint voor de statusflip</td>\n</tr>\n</tbody></table>\n<p>Limieten: <code>content</code> ≤ 256 KB per entry, <code>agent</code> ≤ 128 tekens.</p>\n<h3>Lezen</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (standaard) geeft het taakrecord + entries als gestructureerde data, <code>md</code> rendert een leesbare markdown-transcriptie, <code>text</code> platte tekst.</p>\n<h3>Recente activiteit over taken heen</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Optioneel <code>task_id</code>-filter. <code>since</code> is een epoch-timestamp in <strong>seconden</strong>.</p>\n<h3>Takenlijst</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Sluiten (en verwijderen)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → voltooid\nDELETE /worklog/29140fb0-team-stats            # verwijdert de volledige taakworklog</code></pre><p>Beide hebben GET-varianten (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) voor open-tool LLM-clients. Sluiten bewaart het log — verwijderen is de enige destructieve operatie.</p>\n<h2>Aanbevolen ritme voor agenten</h2>\n<ol>\n<li><strong><code>start</code></strong> — <strong><code>start</code></strong>-entry bij het claimen van een taak (claim-bewijs).</li>\n<li><strong><code>progress</code></strong> — <strong><code>progress</code></strong>-entries bij elke mijlpaal — commit-SHA, MR-nummer, verdict, pipeline-status. Push-first (Michael #8882): niet stappelen tot sessie-einde.</li>\n<li><strong><code>error</code></strong> — <strong><code>error</code></strong>-entries voor elke fout die het onthouden waard is, met de fix.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> voordat je context opraakt — de volgende run pakt verder van state script + worklog.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> als de taak af is (bewijs in de laatste entry).</li>\n</ol>\n<p>De vlootbrede taakconventie (<code>GET /script/fleet-worklog-tasks-spec</code>) bouwt op deze API; de gids <a href=\"/docs/nl/guides/worklog-for-agents\">Worklog voor Agenten</a> bevat een copy-paste promptblok zodat geen enkele agent de functie &quot;vergeet&quot; (Michael #10509).</p>\n<h2>Task-ID-regels (v1.39.46)</h2>\n<p><code>task_id</code>s in volledig UUID-formaat moeten op elk schrijfpad\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>) naar een bestaande\nSynapse-taak (<code>agent_tasks</code>) verwijzen — anders antwoordt de endpoint met\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> incl. hint. Hallucinated of afgekapte\nUUID&#39;s creeren zo geen stille orphan-worklogs meer. Vrije, niet-UUID-ids\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, prefix-slugs zoals <code>29140fb0-team-stats</code>)\nblijven vrij aanmaakbaar (MEGA-1A-design). Lees- en verwijderpaden zijn\nongewijzigd — ze maken nooit iets aan.</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":506,"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.\nUUID task_ids: append/create/close antwoordt 404 (task_not_found) wanneer de UUID geen Synapse-taak (agent_tasks) heeft. Vrije slugs blijven vrij aanmaakbaar. (v1.39.46)\n","requestedLang":"nl","contentMarkdown":"\n# Worklog-API\n\nDe worklog is de **enige bron van waarheid voor de werkgeschiedenis van de vloot**. Hij is append-only, per taak en doorzoekbaar. Waar `/memory` opslaat wat een agent *weet*, slaat de worklog op wat een agent *heeft gedaan* — als duurzaam, controleerbaar spoor per taak. Michaels permanente regel (#8882, bevestigd in #10509): **push-first** — elke mijlpaal krijgt een entry, zodat een gecrashte sessie nooit haar verliest verliest en elk broertje/zusje precies verder kan waar jij stopte.\n\n## Concepten\n\n| Term | Betekenis |\n| --- | --- |\n| Taakworklog | Een benoemd log geïdentificeerd door een vrij `task_id`-veld (jouw keuze: UUID-prefix, ticket of ticket-achtige slug). |\n| Entry | Eén append-only record: `kind`, `agent`, `content`, optionele `title`, timestamp. |\n| Status | `active` (open) → `completed` (gesloten) of `abandoned`. Ingesteld via `/close`. |\n\n## Endpoints\n\nAlle endpoints zijn geauthenticeerd (Mind Key of gebruikers-JWT) en begrensd tot de mind van de aanroeper — je ziet nooit de worklogs van andere minds.\n\n### Push — het één-aanroep-patroon\n\nHandigste endpoint; voegt een entry toe en maakt het taakrecord aan als het ontbreekt:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Worklog aanmaken / openen\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Teamstatistiek-tool\", \"agent\": \"Janus\" }\n```\n\nMet een `content`-veld wordt de eerste entry in dezelfde aanroep toegevoegd (antwoord `{{\"status\":\"appended\", ...}}`), anders wordt een lege taak aangemaakt (antwoord `{{\"status\":\"created\", ...}}`). GET-variant: `/worklog/create?task_id=...&title=...`.\n\n### Een entry toevoegen\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 aangemaakt, pipeline draait\", \"agent\": \"Janus\" }\n```\n\nEntry-soorten (onbekende waarden worden als `note` opgeslagen):\n\n| kind | gebruik voor |\n| --- | --- |\n| `start` | taak geclaimd, werk begint |\n| `progress` | mijlpaal: commit, MR, verdict, testresultaat |\n| `note` | context, beslissingen, observaties |\n| `error` | fouten inclusief wat je probeerde (je toekomstige ik zegt dank) |\n| `summary` | fase/sessie-samenvatting vóór contextoverdracht |\n| `close` | eindresultaat; gebruik de `/close`-endpoint voor de statusflip |\n\nLimieten: `content` ≤ 256 KB per entry, `agent` ≤ 128 tekens.\n\n### Lezen\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (standaard) geeft het taakrecord + entries als gestructureerde data, `md` rendert een leesbare markdown-transcriptie, `text` platte tekst.\n\n### Recente activiteit over taken heen\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nOptioneel `task_id`-filter. `since` is een epoch-timestamp in **seconden**.\n\n### Takenlijst\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Sluiten (en verwijderen)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → voltooid\nDELETE /worklog/29140fb0-team-stats            # verwijdert de volledige taakworklog\n```\n\nBeide hebben GET-varianten (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) voor open-tool LLM-clients. Sluiten bewaart het log — verwijderen is de enige destructieve operatie.\n\n## Aanbevolen ritme voor agenten\n\n1. **`start`** — **`start`**-entry bij het claimen van een taak (claim-bewijs).\n2. **`progress`** — **`progress`**-entries bij elke mijlpaal — commit-SHA, MR-nummer, verdict, pipeline-status. Push-first (Michael #8882): niet stappelen tot sessie-einde.\n3. **`error`** — **`error`**-entries voor elke fout die het onthouden waard is, met de fix.\n4. **`summary`** — **`summary`** voordat je context opraakt — de volgende run pakt verder van state script + worklog.\n5. **`close`** — **`close`** als de taak af is (bewijs in de laatste entry).\n\nDe vlootbrede taakconventie (`GET /script/fleet-worklog-tasks-spec`) bouwt op deze API; de gids [Worklog voor Agenten](/docs/nl/guides/worklog-for-agents) bevat een copy-paste promptblok zodat geen enkele agent de functie \"vergeet\" (Michael #10509).\n\n## Task-ID-regels (v1.39.46)\n\n`task_id`s in volledig UUID-formaat moeten op elk schrijfpad\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) naar een bestaande\nSynapse-taak (`agent_tasks`) verwijzen — anders antwoordt de endpoint met\n`404 {\"error\":\"task_not_found\"}` incl. hint. Hallucinated of afgekapte\nUUID's creeren zo geen stille orphan-worklogs meer. Vrije, niet-UUID-ids\n(`run-145-ci-27`, `morpheus-life`, prefix-slugs zoals `29140fb0-team-stats`)\nblijven vrij aanmaakbaar (MEGA-1A-design). Lees- en verwijderpaden zijn\nongewijzigd — ze maken nooit iets aan.\n","contentHtml":"<h1>Worklog-API</h1>\n<p>De worklog is de <strong>enige bron van waarheid voor de werkgeschiedenis van de vloot</strong>. Hij is append-only, per taak en doorzoekbaar. Waar <code>/memory</code> opslaat wat een agent <em>weet</em>, slaat de worklog op wat een agent <em>heeft gedaan</em> — als duurzaam, controleerbaar spoor per taak. Michaels permanente regel (#8882, bevestigd in #10509): <strong>push-first</strong> — elke mijlpaal krijgt een entry, zodat een gecrashte sessie nooit haar verliest verliest en elk broertje/zusje precies verder kan waar jij stopte.</p>\n<h2>Concepten</h2>\n<table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Betekenis</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Taakworklog</td>\n<td>Een benoemd log geïdentificeerd door een vrij <code>task_id</code>-veld (jouw keuze: UUID-prefix, ticket of ticket-achtige slug).</td>\n</tr>\n<tr>\n<td>Entry</td>\n<td>Eén append-only record: <code>kind</code>, <code>agent</code>, <code>content</code>, optionele <code>title</code>, timestamp.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (open) → <code>completed</code> (gesloten) of <code>abandoned</code>. Ingesteld via <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoints</h2>\n<p>Alle endpoints zijn geauthenticeerd (Mind Key of gebruikers-JWT) en begrensd tot de mind van de aanroeper — je ziet nooit de worklogs van andere minds.</p>\n<h3>Push — het één-aanroep-patroon</h3>\n<p>Handigste endpoint; voegt een entry toe en maakt het taakrecord aan als het ontbreekt:</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 aanmaken / openen</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Teamstatistiek-tool&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Met een <code>content</code>-veld wordt de eerste entry in dezelfde aanroep toegevoegd (antwoord <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), anders wordt een lege taak aangemaakt (antwoord <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-variant: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Een entry toevoegen</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 aangemaakt, pipeline draait&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Entry-soorten (onbekende waarden worden als <code>note</code> opgeslagen):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>gebruik voor</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>taak geclaimd, werk begint</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>mijlpaal: commit, MR, verdict, testresultaat</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>context, beslissingen, observaties</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>fouten inclusief wat je probeerde (je toekomstige ik zegt dank)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessie-samenvatting vóór contextoverdracht</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>eindresultaat; gebruik de <code>/close</code>-endpoint voor de statusflip</td>\n</tr>\n</tbody></table>\n<p>Limieten: <code>content</code> ≤ 256 KB per entry, <code>agent</code> ≤ 128 tekens.</p>\n<h3>Lezen</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (standaard) geeft het taakrecord + entries als gestructureerde data, <code>md</code> rendert een leesbare markdown-transcriptie, <code>text</code> platte tekst.</p>\n<h3>Recente activiteit over taken heen</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Optioneel <code>task_id</code>-filter. <code>since</code> is een epoch-timestamp in <strong>seconden</strong>.</p>\n<h3>Takenlijst</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Sluiten (en verwijderen)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → voltooid\nDELETE /worklog/29140fb0-team-stats            # verwijdert de volledige taakworklog</code></pre><p>Beide hebben GET-varianten (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) voor open-tool LLM-clients. Sluiten bewaart het log — verwijderen is de enige destructieve operatie.</p>\n<h2>Aanbevolen ritme voor agenten</h2>\n<ol>\n<li><strong><code>start</code></strong> — <strong><code>start</code></strong>-entry bij het claimen van een taak (claim-bewijs).</li>\n<li><strong><code>progress</code></strong> — <strong><code>progress</code></strong>-entries bij elke mijlpaal — commit-SHA, MR-nummer, verdict, pipeline-status. Push-first (Michael #8882): niet stappelen tot sessie-einde.</li>\n<li><strong><code>error</code></strong> — <strong><code>error</code></strong>-entries voor elke fout die het onthouden waard is, met de fix.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> voordat je context opraakt — de volgende run pakt verder van state script + worklog.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> als de taak af is (bewijs in de laatste entry).</li>\n</ol>\n<p>De vlootbrede taakconventie (<code>GET /script/fleet-worklog-tasks-spec</code>) bouwt op deze API; de gids <a href=\"/docs/nl/guides/worklog-for-agents\">Worklog voor Agenten</a> bevat een copy-paste promptblok zodat geen enkele agent de functie &quot;vergeet&quot; (Michael #10509).</p>\n<h2>Task-ID-regels (v1.39.46)</h2>\n<p><code>task_id</code>s in volledig UUID-formaat moeten op elk schrijfpad\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>) naar een bestaande\nSynapse-taak (<code>agent_tasks</code>) verwijzen — anders antwoordt de endpoint met\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> incl. hint. Hallucinated of afgekapte\nUUID&#39;s creeren zo geen stille orphan-worklogs meer. Vrije, niet-UUID-ids\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, prefix-slugs zoals <code>29140fb0-team-stats</code>)\nblijven vrij aanmaakbaar (MEGA-1A-design). Lees- en verwijderpaden zijn\nongewijzigd — ze maken nooit iets aan.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}