{"title":"Worklog-API","slug":"worklog","category":"api","summary":"Append-only workloggar per uppgift för agentteam — dokumentera varje steg så att inget går förlorat; sökbart per uppgift, agent, typ och tid.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":481,"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.\nUUID task_ids: append/create/close svarar 404 (task_not_found) när UUID:t inte har någon Synapse-uppgift (agent_tasks). Fria slugs kan fortfarande skapas fritt. (v1.39.46)\n","lang":"sv","translated":true,"requested_lang":"sv","content_markdown":"\n# Worklog-API\n\nWorklogen är **den enda sanna källan för flottans arbetshistorik**. Den är append-only, per uppgift och sökbar. Medan `/memory` lagrar vad en agent *vet*, lagrar worklogen vad en agent *gjort* — som ett hållbart, granskbart spår per uppgift. Michaels stående regel (#8882, bekräftad i #10509): **push-first** — varje milstolpe får en post, så att en kraschad session aldrig förlorar sin historia och vilket syskon som helst kan fortsätta exakt där du slutade.\n\n## Begrepp\n\n| Term | Betydelse |\n| --- | --- |\n| Uppgiftsworklog | En namngiven logg identifierad av ett fritt `task_id` (ditt val: UUID-prefix, ärende-ID eller ärendelik slug). |\n| Post | En append-only-post: `kind`, `agent`, `content`, valfri `title`, tidsstämpel. |\n| Status | `active` (öppen) → `completed` (stängd) eller `abandoned`. Sätts via `/close`. |\n\n## Endpoints\n\nAlla endpoints är autentiserade (Mind Key eller användar-JWT) och avgränsade till anroparens mind — du ser aldrig andra minders workloggar.\n\n### Push — mönstret med ett anrop\n\nDen bekvämaste endpointen; lägger till en post och skapar uppgiftsposten om den saknas:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Skapa / öppna en worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Teamstatistik-verktyg\", \"agent\": \"Janus\" }\n```\n\nMed ett `content`-fält läggs den första posten till i samma anrop (svar `{{\"status\":\"appended\", ...}}`), annars skapas en tom uppgift (svar `{{\"status\":\"created\", ...}}`). GET-variant: `/worklog/create?task_id=...&title=...`.\n\n### Lägga till en post\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 skapad, pipeline kör\", \"agent\": \"Janus\" }\n```\n\nPosttyper (okända värden lagras som `note`):\n\n| kind | används för |\n| --- | --- |\n| `start` | uppgift tagen, arbetet börjar |\n| `progress` | milstolpe: commit, MR, utlåtande, testresultat |\n| `note` | kontext, beslut, iakttagelser |\n| `error` | fel inklusive vad du försökte (ditt framtida jag tackar) |\n| `summary` | fas/sessionssammanfattning före kontextöverlämning |\n| `close` | slutresultat; använd `/close`-endpointen för statusbytet |\n\nGränser: `content` ≤ 256 KB per post, `agent` ≤ 128 tecken.\n\n### Läsa\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (standard) returnerar uppgiftsposten + poster som strukturerad data, `md` renderar en läsbar markdown-transkription, `text` ren text.\n\n### Senaste aktivitet över uppgifter\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nValfritt `task_id`-filter. `since` är en epoch-tidsstämpel i **sekunder**.\n\n### Lista uppgifter\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Stänga (och radera)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → slutförd\nDELETE /worklog/29140fb0-team-stats            # tar bort hela uppgiftens worklog\n```\n\nBåda har GET-varianter (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) för open-tool LLM-klienter. Stängning bevarar loggen — radering är den enda destruktiva operationen.\n\n## Rekommenderad rytm för agenter\n\n1. **`start`** — **`start`**-post när du tar en uppgift (bevis på claim).\n2. **`progress`** — **`progress`**-poster vid varje milstolpe — commit-SHA, MR-nummer, utlåtande, pipeline-status. Push-first (Michael #8882): inte bunta till sessionsslutet.\n3. **`error`** — **`error`**-poster för varje fel värt att minnas, med fixen.\n4. **`summary`** — **`summary`** innan kontexten tar slut — nästa run återupptar från state script + worklogen.\n5. **`close`** — **`close`** när uppgiften är klar (bevis i den sista posten).\n\nFlottövergripande uppgiftskonvention (`GET /script/fleet-worklog-tasks-spec`) bygger på detta API; guiden [Worklog för agenter](/docs/sv/guides/worklog-for-agents) innehåller ett kopiera-klistra-promptblock så att ingen agent \"glömmer\" funktionen (Michael #10509).\n\n## Task-ID-regler (v1.39.46)\n\n`task_id`:s i fullt UUID-format maste pa varje skrivvag (`POST /worklog`,\n`GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) referera en befintlig\nSynapse-uppgift (`agent_tasks`) — annars svarar endpointen\n`404 {\"error\":\"task_not_found\"}` med en ledtrad. Hallucinerade eller\navkapade UUID skapar inte langre tyst foraldlösa worklog-uppgifter. Fria,\nicke-UUID-id:n (`run-145-ci-27`, `morpheus-life`, prefix-slugs som\n`29140fb0-team-stats`) kan fortfarande skapas fritt (MEGA-1A-design).\nLas- och raderingsvagar ar oforandrade — de skapar aldrig nagot.\n","content_html":"<h1>Worklog-API</h1>\n<p>Worklogen är <strong>den enda sanna källan för flottans arbetshistorik</strong>. Den är append-only, per uppgift och sökbar. Medan <code>/memory</code> lagrar vad en agent <em>vet</em>, lagrar worklogen vad en agent <em>gjort</em> — som ett hållbart, granskbart spår per uppgift. Michaels stående regel (#8882, bekräftad i #10509): <strong>push-first</strong> — varje milstolpe får en post, så att en kraschad session aldrig förlorar sin historia och vilket syskon som helst kan fortsätta exakt där du slutade.</p>\n<h2>Begrepp</h2>\n<table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Betydelse</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Uppgiftsworklog</td>\n<td>En namngiven logg identifierad av ett fritt <code>task_id</code> (ditt val: UUID-prefix, ärende-ID eller ärendelik slug).</td>\n</tr>\n<tr>\n<td>Post</td>\n<td>En append-only-post: <code>kind</code>, <code>agent</code>, <code>content</code>, valfri <code>title</code>, tidsstämpel.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (öppen) → <code>completed</code> (stängd) eller <code>abandoned</code>. Sätts via <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoints</h2>\n<p>Alla endpoints är autentiserade (Mind Key eller användar-JWT) och avgränsade till anroparens mind — du ser aldrig andra minders workloggar.</p>\n<h3>Push — mönstret med ett anrop</h3>\n<p>Den bekvämaste endpointen; lägger till en post och skapar uppgiftsposten om den saknas:</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>Skapa / öppna en 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;Teamstatistik-verktyg&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Med ett <code>content</code>-fält läggs den första posten till i samma anrop (svar <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), annars skapas en tom uppgift (svar <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-variant: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Lägga till en post</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 skapad, pipeline kör&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Posttyper (okända värden lagras som <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>används för</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>uppgift tagen, arbetet börjar</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>milstolpe: commit, MR, utlåtande, testresultat</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>kontext, beslut, iakttagelser</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>fel inklusive vad du försökte (ditt framtida jag tackar)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fas/sessionssammanfattning före kontextöverlämning</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>slutresultat; använd <code>/close</code>-endpointen för statusbytet</td>\n</tr>\n</tbody></table>\n<p>Gränser: <code>content</code> ≤ 256 KB per post, <code>agent</code> ≤ 128 tecken.</p>\n<h3>Läsa</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (standard) returnerar uppgiftsposten + poster som strukturerad data, <code>md</code> renderar en läsbar markdown-transkription, <code>text</code> ren text.</p>\n<h3>Senaste aktivitet över uppgifter</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Valfritt <code>task_id</code>-filter. <code>since</code> är en epoch-tidsstämpel i <strong>sekunder</strong>.</p>\n<h3>Lista uppgifter</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Stänga (och radera)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → slutförd\nDELETE /worklog/29140fb0-team-stats            # tar bort hela uppgiftens worklog</code></pre><p>Båda har GET-varianter (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) för open-tool LLM-klienter. Stängning bevarar loggen — radering är den enda destruktiva operationen.</p>\n<h2>Rekommenderad rytm för agenter</h2>\n<ol>\n<li><strong><code>start</code></strong> — <strong><code>start</code></strong>-post när du tar en uppgift (bevis på claim).</li>\n<li><strong><code>progress</code></strong> — <strong><code>progress</code></strong>-poster vid varje milstolpe — commit-SHA, MR-nummer, utlåtande, pipeline-status. Push-first (Michael #8882): inte bunta till sessionsslutet.</li>\n<li><strong><code>error</code></strong> — <strong><code>error</code></strong>-poster för varje fel värt att minnas, med fixen.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> innan kontexten tar slut — nästa run återupptar från state script + worklogen.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> när uppgiften är klar (bevis i den sista posten).</li>\n</ol>\n<p>Flottövergripande uppgiftskonvention (<code>GET /script/fleet-worklog-tasks-spec</code>) bygger på detta API; guiden <a href=\"/docs/sv/guides/worklog-for-agents\">Worklog för agenter</a> innehåller ett kopiera-klistra-promptblock så att ingen agent &quot;glömmer&quot; funktionen (Michael #10509).</p>\n<h2>Task-ID-regler (v1.39.46)</h2>\n<p><code>task_id</code>:s i fullt UUID-format maste pa varje skrivvag (<code>POST /worklog</code>,\n<code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) referera en befintlig\nSynapse-uppgift (<code>agent_tasks</code>) — annars svarar endpointen\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> med en ledtrad. Hallucinerade eller\navkapade UUID skapar inte langre tyst foraldlösa worklog-uppgifter. Fria,\nicke-UUID-id:n (<code>run-145-ci-27</code>, <code>morpheus-life</code>, prefix-slugs som\n<code>29140fb0-team-stats</code>) kan fortfarande skapas fritt (MEGA-1A-design).\nLas- och raderingsvagar ar oforandrade — de skapar aldrig nagot.</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":481,"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.\nUUID task_ids: append/create/close svarar 404 (task_not_found) när UUID:t inte har någon Synapse-uppgift (agent_tasks). Fria slugs kan fortfarande skapas fritt. (v1.39.46)\n","requestedLang":"sv","contentMarkdown":"\n# Worklog-API\n\nWorklogen är **den enda sanna källan för flottans arbetshistorik**. Den är append-only, per uppgift och sökbar. Medan `/memory` lagrar vad en agent *vet*, lagrar worklogen vad en agent *gjort* — som ett hållbart, granskbart spår per uppgift. Michaels stående regel (#8882, bekräftad i #10509): **push-first** — varje milstolpe får en post, så att en kraschad session aldrig förlorar sin historia och vilket syskon som helst kan fortsätta exakt där du slutade.\n\n## Begrepp\n\n| Term | Betydelse |\n| --- | --- |\n| Uppgiftsworklog | En namngiven logg identifierad av ett fritt `task_id` (ditt val: UUID-prefix, ärende-ID eller ärendelik slug). |\n| Post | En append-only-post: `kind`, `agent`, `content`, valfri `title`, tidsstämpel. |\n| Status | `active` (öppen) → `completed` (stängd) eller `abandoned`. Sätts via `/close`. |\n\n## Endpoints\n\nAlla endpoints är autentiserade (Mind Key eller användar-JWT) och avgränsade till anroparens mind — du ser aldrig andra minders workloggar.\n\n### Push — mönstret med ett anrop\n\nDen bekvämaste endpointen; lägger till en post och skapar uppgiftsposten om den saknas:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Skapa / öppna en worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Teamstatistik-verktyg\", \"agent\": \"Janus\" }\n```\n\nMed ett `content`-fält läggs den första posten till i samma anrop (svar `{{\"status\":\"appended\", ...}}`), annars skapas en tom uppgift (svar `{{\"status\":\"created\", ...}}`). GET-variant: `/worklog/create?task_id=...&title=...`.\n\n### Lägga till en post\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 skapad, pipeline kör\", \"agent\": \"Janus\" }\n```\n\nPosttyper (okända värden lagras som `note`):\n\n| kind | används för |\n| --- | --- |\n| `start` | uppgift tagen, arbetet börjar |\n| `progress` | milstolpe: commit, MR, utlåtande, testresultat |\n| `note` | kontext, beslut, iakttagelser |\n| `error` | fel inklusive vad du försökte (ditt framtida jag tackar) |\n| `summary` | fas/sessionssammanfattning före kontextöverlämning |\n| `close` | slutresultat; använd `/close`-endpointen för statusbytet |\n\nGränser: `content` ≤ 256 KB per post, `agent` ≤ 128 tecken.\n\n### Läsa\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (standard) returnerar uppgiftsposten + poster som strukturerad data, `md` renderar en läsbar markdown-transkription, `text` ren text.\n\n### Senaste aktivitet över uppgifter\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nValfritt `task_id`-filter. `since` är en epoch-tidsstämpel i **sekunder**.\n\n### Lista uppgifter\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Stänga (och radera)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → slutförd\nDELETE /worklog/29140fb0-team-stats            # tar bort hela uppgiftens worklog\n```\n\nBåda har GET-varianter (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) för open-tool LLM-klienter. Stängning bevarar loggen — radering är den enda destruktiva operationen.\n\n## Rekommenderad rytm för agenter\n\n1. **`start`** — **`start`**-post när du tar en uppgift (bevis på claim).\n2. **`progress`** — **`progress`**-poster vid varje milstolpe — commit-SHA, MR-nummer, utlåtande, pipeline-status. Push-first (Michael #8882): inte bunta till sessionsslutet.\n3. **`error`** — **`error`**-poster för varje fel värt att minnas, med fixen.\n4. **`summary`** — **`summary`** innan kontexten tar slut — nästa run återupptar från state script + worklogen.\n5. **`close`** — **`close`** när uppgiften är klar (bevis i den sista posten).\n\nFlottövergripande uppgiftskonvention (`GET /script/fleet-worklog-tasks-spec`) bygger på detta API; guiden [Worklog för agenter](/docs/sv/guides/worklog-for-agents) innehåller ett kopiera-klistra-promptblock så att ingen agent \"glömmer\" funktionen (Michael #10509).\n\n## Task-ID-regler (v1.39.46)\n\n`task_id`:s i fullt UUID-format maste pa varje skrivvag (`POST /worklog`,\n`GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) referera en befintlig\nSynapse-uppgift (`agent_tasks`) — annars svarar endpointen\n`404 {\"error\":\"task_not_found\"}` med en ledtrad. Hallucinerade eller\navkapade UUID skapar inte langre tyst foraldlösa worklog-uppgifter. Fria,\nicke-UUID-id:n (`run-145-ci-27`, `morpheus-life`, prefix-slugs som\n`29140fb0-team-stats`) kan fortfarande skapas fritt (MEGA-1A-design).\nLas- och raderingsvagar ar oforandrade — de skapar aldrig nagot.\n","contentHtml":"<h1>Worklog-API</h1>\n<p>Worklogen är <strong>den enda sanna källan för flottans arbetshistorik</strong>. Den är append-only, per uppgift och sökbar. Medan <code>/memory</code> lagrar vad en agent <em>vet</em>, lagrar worklogen vad en agent <em>gjort</em> — som ett hållbart, granskbart spår per uppgift. Michaels stående regel (#8882, bekräftad i #10509): <strong>push-first</strong> — varje milstolpe får en post, så att en kraschad session aldrig förlorar sin historia och vilket syskon som helst kan fortsätta exakt där du slutade.</p>\n<h2>Begrepp</h2>\n<table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Betydelse</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Uppgiftsworklog</td>\n<td>En namngiven logg identifierad av ett fritt <code>task_id</code> (ditt val: UUID-prefix, ärende-ID eller ärendelik slug).</td>\n</tr>\n<tr>\n<td>Post</td>\n<td>En append-only-post: <code>kind</code>, <code>agent</code>, <code>content</code>, valfri <code>title</code>, tidsstämpel.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (öppen) → <code>completed</code> (stängd) eller <code>abandoned</code>. Sätts via <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoints</h2>\n<p>Alla endpoints är autentiserade (Mind Key eller användar-JWT) och avgränsade till anroparens mind — du ser aldrig andra minders workloggar.</p>\n<h3>Push — mönstret med ett anrop</h3>\n<p>Den bekvämaste endpointen; lägger till en post och skapar uppgiftsposten om den saknas:</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>Skapa / öppna en 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;Teamstatistik-verktyg&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Med ett <code>content</code>-fält läggs den första posten till i samma anrop (svar <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), annars skapas en tom uppgift (svar <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-variant: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Lägga till en post</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 skapad, pipeline kör&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Posttyper (okända värden lagras som <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>används för</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>uppgift tagen, arbetet börjar</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>milstolpe: commit, MR, utlåtande, testresultat</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>kontext, beslut, iakttagelser</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>fel inklusive vad du försökte (ditt framtida jag tackar)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fas/sessionssammanfattning före kontextöverlämning</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>slutresultat; använd <code>/close</code>-endpointen för statusbytet</td>\n</tr>\n</tbody></table>\n<p>Gränser: <code>content</code> ≤ 256 KB per post, <code>agent</code> ≤ 128 tecken.</p>\n<h3>Läsa</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (standard) returnerar uppgiftsposten + poster som strukturerad data, <code>md</code> renderar en läsbar markdown-transkription, <code>text</code> ren text.</p>\n<h3>Senaste aktivitet över uppgifter</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Valfritt <code>task_id</code>-filter. <code>since</code> är en epoch-tidsstämpel i <strong>sekunder</strong>.</p>\n<h3>Lista uppgifter</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Stänga (och radera)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → slutförd\nDELETE /worklog/29140fb0-team-stats            # tar bort hela uppgiftens worklog</code></pre><p>Båda har GET-varianter (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) för open-tool LLM-klienter. Stängning bevarar loggen — radering är den enda destruktiva operationen.</p>\n<h2>Rekommenderad rytm för agenter</h2>\n<ol>\n<li><strong><code>start</code></strong> — <strong><code>start</code></strong>-post när du tar en uppgift (bevis på claim).</li>\n<li><strong><code>progress</code></strong> — <strong><code>progress</code></strong>-poster vid varje milstolpe — commit-SHA, MR-nummer, utlåtande, pipeline-status. Push-first (Michael #8882): inte bunta till sessionsslutet.</li>\n<li><strong><code>error</code></strong> — <strong><code>error</code></strong>-poster för varje fel värt att minnas, med fixen.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> innan kontexten tar slut — nästa run återupptar från state script + worklogen.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> när uppgiften är klar (bevis i den sista posten).</li>\n</ol>\n<p>Flottövergripande uppgiftskonvention (<code>GET /script/fleet-worklog-tasks-spec</code>) bygger på detta API; guiden <a href=\"/docs/sv/guides/worklog-for-agents\">Worklog för agenter</a> innehåller ett kopiera-klistra-promptblock så att ingen agent &quot;glömmer&quot; funktionen (Michael #10509).</p>\n<h2>Task-ID-regler (v1.39.46)</h2>\n<p><code>task_id</code>:s i fullt UUID-format maste pa varje skrivvag (<code>POST /worklog</code>,\n<code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) referera en befintlig\nSynapse-uppgift (<code>agent_tasks</code>) — annars svarar endpointen\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> med en ledtrad. Hallucinerade eller\navkapade UUID skapar inte langre tyst foraldlösa worklog-uppgifter. Fria,\nicke-UUID-id:n (<code>run-145-ci-27</code>, <code>morpheus-life</code>, prefix-slugs som\n<code>29140fb0-team-stats</code>) kan fortfarande skapas fritt (MEGA-1A-design).\nLas- och raderingsvagar ar oforandrade — de skapar aldrig nagot.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}