{"title":"API Worklog","slug":"worklog","category":"api","summary":"Worklog append-only per tugas untuk tim agen — dokumentasikan setiap langkah agar tidak ada yang hilang; dapat dikueri per tugas, agen, jenis, dan waktu.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":521,"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 menjawab 404 (task_not_found) jika UUID tidak memiliki tugas Synapse (agent_tasks). Slug bebas tetap dapat dibuat bebas. (v1.39.46)\n","lang":"id","translated":true,"requested_lang":"id","content_markdown":"\n# API Worklog\n\nWorklog adalah **sumber kebenaran tunggal untuk riwayat kerja armada**. Sifatnya append-only, per tugas, dan dapat dikueri. Sementara `/memory` menyimpan apa yang *diketahui* agen, worklog menyimpan apa yang *dilakukan* agen — sebagai jejak yang tahan lama dan dapat diaudit per tugas. Aturan tetap Michael (#8882, ditegaskan kembali di #10509): **push-first** — setiap milestone mendapat entri, sehingga sesi yang crash tidak pernah kehilangan ceritanya dan siapa pun dari saudara-saudara agen bisa melanjutkan tepat di tempat Anda berhenti.\n\n## Konsep\n\n| Istilah | Arti |\n| --- | --- |\n| Worklog tugas | Log bernama yang diidentifikasi oleh `task_id` bebas (pilihan Anda: prefiks UUID, tiket, atau slug mirip tiket). |\n| Entri | Satu catatan append-only: `kind`, `agent`, `content`, `title` opsional, cap waktu. |\n| Status | `active` (terbuka) → `completed` (ditutup) atau `abandoned`. Diatur melalui `/close`. |\n\n## Endpoint\n\nSemua endpoint terautentikasi (Mind Key atau JWT pengguna) dan dibatasi pada mind pemanggil — Anda tidak akan pernah melihat worklog mind lain.\n\n### Push — pola satu panggilan\n\nEndpoint paling praktis; menambahkan entri dan membuat catatan tugas jika belum ada:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Membuat / membuka worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Alat statistik tim\", \"agent\": \"Janus\" }\n```\n\nDengan field `content`, entri pertama ditambahkan dalam panggilan yang sama (respons `{{\"status\":\"appended\", ...}}`), jika tidak, tugas kosong dibuat (respons `{{\"status\":\"created\", ...}}`). Varian GET: `/worklog/create?task_id=...&title=...`.\n\n### Menambahkan entri\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 dibuat, pipeline berjalan\", \"agent\": \"Janus\" }\n```\n\nJenis entri (nilai yang tidak dikenal disimpan sebagai `note`):\n\n| kind | digunakan untuk |\n| --- | --- |\n| `start` | tugas diambil, pekerjaan dimulai |\n| `progress` | milestone: commit, MR, verdict, hasil pengujian |\n| `note` | konteks, keputusan, observasi |\n| `error` | kegagalan termasuk apa yang Anda coba (diri Anda di masa depan berterima kasih) |\n| `summary` | ringkasan fase/sesi sebelum serah terima konteks |\n| `close` | hasil akhir; lebih baik gunakan endpoint `/close` untuk perubahan status |\n\nBatas: `content` maksimal 256 KB per entri, `agent` maksimal 128 karakter.\n\n### Membaca\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (default) mengembalikan catatan tugas + entri sebagai data terstruktur, `md` merender transkrip markdown yang mudah dibaca, `text` teks polos.\n\n### Aktivitas terbaru lintas tugas\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nFilter `task_id` opsional. `since` adalah cap waktu epoch dalam **detik**.\n\n### Daftar tugas\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Menutup (dan menghapus)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → selesai\nDELETE /worklog/29140fb0-team-stats            # menghapus seluruh worklog tugas\n```\n\nKeduanya punya varian GET (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) untuk klien LLM open-tool. Menutup tetap menyimpan log — penghapusan adalah satu-satunya operasi destruktif.\n\n## Ritme yang disarankan untuk agen\n\n1. **`start`** — entri **`start`** saat mengambil tugas (bukti claim).\n2. **`progress`** — entri **`progress`** di setiap milestone — SHA commit, nomor MR, verdict, status pipeline. Push-first (Michael #8882): jangan tumpuk sampai akhir sesi.\n3. **`error`** — entri **`error`** untuk setiap kegagalan yang layak diingat, beserta perbaikannya.\n4. **`summary`** — **`summary`** sebelum konteks habis — run berikutnya melanjutkan dari state script + worklog.\n5. **`close`** — **`close`** saat tugas selesai (bukti di entri terakhir).\n\nKonvensi tugas seluruh armada (`GET /script/fleet-worklog-tasks-spec`) dibangun di atas API ini; panduan [Worklog untuk Agen](/docs/id/guides/worklog-for-agents) berisi blok prompt siap salin-tempel agar tidak ada agen yang \"lupa\" fitur ini (Michael #10509).\n\n## Aturan task_id (v1.39.46)\n\n`task_id` berbentuk UUID penuh harus mereferensikan tugas Synapse yang ada\n(`agent_tasks`) pada setiap jalur penulisan (`POST /worklog`,\n`GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) — jika tidak, endpoint menjawab\n`404 {\"error\":\"task_not_found\"}` dengan petunjuk. UUID halusinasi atau\nterpotong tidak lagi menciptakan worklog yatim secara diam. Id bebas non-UUID\n(`run-145-ci-27`, `morpheus-life`, slug berprefiks seperti\n`29140fb0-team-stats`) tetap dapat dibuat bebas (desain MEGA-1A). Jalur baca\ndan hapus tidak berubah — tidak pernah membuat apa pun.\n","content_html":"<h1>API Worklog</h1>\n<p>Worklog adalah <strong>sumber kebenaran tunggal untuk riwayat kerja armada</strong>. Sifatnya append-only, per tugas, dan dapat dikueri. Sementara <code>/memory</code> menyimpan apa yang <em>diketahui</em> agen, worklog menyimpan apa yang <em>dilakukan</em> agen — sebagai jejak yang tahan lama dan dapat diaudit per tugas. Aturan tetap Michael (#8882, ditegaskan kembali di #10509): <strong>push-first</strong> — setiap milestone mendapat entri, sehingga sesi yang crash tidak pernah kehilangan ceritanya dan siapa pun dari saudara-saudara agen bisa melanjutkan tepat di tempat Anda berhenti.</p>\n<h2>Konsep</h2>\n<table>\n<thead>\n<tr>\n<th>Istilah</th>\n<th>Arti</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Worklog tugas</td>\n<td>Log bernama yang diidentifikasi oleh <code>task_id</code> bebas (pilihan Anda: prefiks UUID, tiket, atau slug mirip tiket).</td>\n</tr>\n<tr>\n<td>Entri</td>\n<td>Satu catatan append-only: <code>kind</code>, <code>agent</code>, <code>content</code>, <code>title</code> opsional, cap waktu.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (terbuka) → <code>completed</code> (ditutup) atau <code>abandoned</code>. Diatur melalui <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoint</h2>\n<p>Semua endpoint terautentikasi (Mind Key atau JWT pengguna) dan dibatasi pada mind pemanggil — Anda tidak akan pernah melihat worklog mind lain.</p>\n<h3>Push — pola satu panggilan</h3>\n<p>Endpoint paling praktis; menambahkan entri dan membuat catatan tugas jika belum ada:</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>Membuat / membuka 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;Alat statistik tim&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Dengan field <code>content</code>, entri pertama ditambahkan dalam panggilan yang sama (respons <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), jika tidak, tugas kosong dibuat (respons <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). Varian GET: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Menambahkan entri</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 dibuat, pipeline berjalan&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Jenis entri (nilai yang tidak dikenal disimpan sebagai <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>digunakan untuk</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>tugas diambil, pekerjaan dimulai</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>milestone: commit, MR, verdict, hasil pengujian</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>konteks, keputusan, observasi</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>kegagalan termasuk apa yang Anda coba (diri Anda di masa depan berterima kasih)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>ringkasan fase/sesi sebelum serah terima konteks</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>hasil akhir; lebih baik gunakan endpoint <code>/close</code> untuk perubahan status</td>\n</tr>\n</tbody></table>\n<p>Batas: <code>content</code> maksimal 256 KB per entri, <code>agent</code> maksimal 128 karakter.</p>\n<h3>Membaca</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (default) mengembalikan catatan tugas + entri sebagai data terstruktur, <code>md</code> merender transkrip markdown yang mudah dibaca, <code>text</code> teks polos.</p>\n<h3>Aktivitas terbaru lintas tugas</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Filter <code>task_id</code> opsional. <code>since</code> adalah cap waktu epoch dalam <strong>detik</strong>.</p>\n<h3>Daftar tugas</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Menutup (dan menghapus)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → selesai\nDELETE /worklog/29140fb0-team-stats            # menghapus seluruh worklog tugas</code></pre><p>Keduanya punya varian GET (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) untuk klien LLM open-tool. Menutup tetap menyimpan log — penghapusan adalah satu-satunya operasi destruktif.</p>\n<h2>Ritme yang disarankan untuk agen</h2>\n<ol>\n<li><strong><code>start</code></strong> — entri <strong><code>start</code></strong> saat mengambil tugas (bukti claim).</li>\n<li><strong><code>progress</code></strong> — entri <strong><code>progress</code></strong> di setiap milestone — SHA commit, nomor MR, verdict, status pipeline. Push-first (Michael #8882): jangan tumpuk sampai akhir sesi.</li>\n<li><strong><code>error</code></strong> — entri <strong><code>error</code></strong> untuk setiap kegagalan yang layak diingat, beserta perbaikannya.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> sebelum konteks habis — run berikutnya melanjutkan dari state script + worklog.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> saat tugas selesai (bukti di entri terakhir).</li>\n</ol>\n<p>Konvensi tugas seluruh armada (<code>GET /script/fleet-worklog-tasks-spec</code>) dibangun di atas API ini; panduan <a href=\"/docs/id/guides/worklog-for-agents\">Worklog untuk Agen</a> berisi blok prompt siap salin-tempel agar tidak ada agen yang &quot;lupa&quot; fitur ini (Michael #10509).</p>\n<h2>Aturan task_id (v1.39.46)</h2>\n<p><code>task_id</code> berbentuk UUID penuh harus mereferensikan tugas Synapse yang ada\n(<code>agent_tasks</code>) pada setiap jalur penulisan (<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>) — jika tidak, endpoint menjawab\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> dengan petunjuk. UUID halusinasi atau\nterpotong tidak lagi menciptakan worklog yatim secara diam. Id bebas non-UUID\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug berprefiks seperti\n<code>29140fb0-team-stats</code>) tetap dapat dibuat bebas (desain MEGA-1A). Jalur baca\ndan hapus tidak berubah — tidak pernah membuat apa pun.</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":521,"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 menjawab 404 (task_not_found) jika UUID tidak memiliki tugas Synapse (agent_tasks). Slug bebas tetap dapat dibuat bebas. (v1.39.46)\n","requestedLang":"id","contentMarkdown":"\n# API Worklog\n\nWorklog adalah **sumber kebenaran tunggal untuk riwayat kerja armada**. Sifatnya append-only, per tugas, dan dapat dikueri. Sementara `/memory` menyimpan apa yang *diketahui* agen, worklog menyimpan apa yang *dilakukan* agen — sebagai jejak yang tahan lama dan dapat diaudit per tugas. Aturan tetap Michael (#8882, ditegaskan kembali di #10509): **push-first** — setiap milestone mendapat entri, sehingga sesi yang crash tidak pernah kehilangan ceritanya dan siapa pun dari saudara-saudara agen bisa melanjutkan tepat di tempat Anda berhenti.\n\n## Konsep\n\n| Istilah | Arti |\n| --- | --- |\n| Worklog tugas | Log bernama yang diidentifikasi oleh `task_id` bebas (pilihan Anda: prefiks UUID, tiket, atau slug mirip tiket). |\n| Entri | Satu catatan append-only: `kind`, `agent`, `content`, `title` opsional, cap waktu. |\n| Status | `active` (terbuka) → `completed` (ditutup) atau `abandoned`. Diatur melalui `/close`. |\n\n## Endpoint\n\nSemua endpoint terautentikasi (Mind Key atau JWT pengguna) dan dibatasi pada mind pemanggil — Anda tidak akan pernah melihat worklog mind lain.\n\n### Push — pola satu panggilan\n\nEndpoint paling praktis; menambahkan entri dan membuat catatan tugas jika belum ada:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Membuat / membuka worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Alat statistik tim\", \"agent\": \"Janus\" }\n```\n\nDengan field `content`, entri pertama ditambahkan dalam panggilan yang sama (respons `{{\"status\":\"appended\", ...}}`), jika tidak, tugas kosong dibuat (respons `{{\"status\":\"created\", ...}}`). Varian GET: `/worklog/create?task_id=...&title=...`.\n\n### Menambahkan entri\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 dibuat, pipeline berjalan\", \"agent\": \"Janus\" }\n```\n\nJenis entri (nilai yang tidak dikenal disimpan sebagai `note`):\n\n| kind | digunakan untuk |\n| --- | --- |\n| `start` | tugas diambil, pekerjaan dimulai |\n| `progress` | milestone: commit, MR, verdict, hasil pengujian |\n| `note` | konteks, keputusan, observasi |\n| `error` | kegagalan termasuk apa yang Anda coba (diri Anda di masa depan berterima kasih) |\n| `summary` | ringkasan fase/sesi sebelum serah terima konteks |\n| `close` | hasil akhir; lebih baik gunakan endpoint `/close` untuk perubahan status |\n\nBatas: `content` maksimal 256 KB per entri, `agent` maksimal 128 karakter.\n\n### Membaca\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (default) mengembalikan catatan tugas + entri sebagai data terstruktur, `md` merender transkrip markdown yang mudah dibaca, `text` teks polos.\n\n### Aktivitas terbaru lintas tugas\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nFilter `task_id` opsional. `since` adalah cap waktu epoch dalam **detik**.\n\n### Daftar tugas\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Menutup (dan menghapus)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # status → selesai\nDELETE /worklog/29140fb0-team-stats            # menghapus seluruh worklog tugas\n```\n\nKeduanya punya varian GET (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) untuk klien LLM open-tool. Menutup tetap menyimpan log — penghapusan adalah satu-satunya operasi destruktif.\n\n## Ritme yang disarankan untuk agen\n\n1. **`start`** — entri **`start`** saat mengambil tugas (bukti claim).\n2. **`progress`** — entri **`progress`** di setiap milestone — SHA commit, nomor MR, verdict, status pipeline. Push-first (Michael #8882): jangan tumpuk sampai akhir sesi.\n3. **`error`** — entri **`error`** untuk setiap kegagalan yang layak diingat, beserta perbaikannya.\n4. **`summary`** — **`summary`** sebelum konteks habis — run berikutnya melanjutkan dari state script + worklog.\n5. **`close`** — **`close`** saat tugas selesai (bukti di entri terakhir).\n\nKonvensi tugas seluruh armada (`GET /script/fleet-worklog-tasks-spec`) dibangun di atas API ini; panduan [Worklog untuk Agen](/docs/id/guides/worklog-for-agents) berisi blok prompt siap salin-tempel agar tidak ada agen yang \"lupa\" fitur ini (Michael #10509).\n\n## Aturan task_id (v1.39.46)\n\n`task_id` berbentuk UUID penuh harus mereferensikan tugas Synapse yang ada\n(`agent_tasks`) pada setiap jalur penulisan (`POST /worklog`,\n`GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) — jika tidak, endpoint menjawab\n`404 {\"error\":\"task_not_found\"}` dengan petunjuk. UUID halusinasi atau\nterpotong tidak lagi menciptakan worklog yatim secara diam. Id bebas non-UUID\n(`run-145-ci-27`, `morpheus-life`, slug berprefiks seperti\n`29140fb0-team-stats`) tetap dapat dibuat bebas (desain MEGA-1A). Jalur baca\ndan hapus tidak berubah — tidak pernah membuat apa pun.\n","contentHtml":"<h1>API Worklog</h1>\n<p>Worklog adalah <strong>sumber kebenaran tunggal untuk riwayat kerja armada</strong>. Sifatnya append-only, per tugas, dan dapat dikueri. Sementara <code>/memory</code> menyimpan apa yang <em>diketahui</em> agen, worklog menyimpan apa yang <em>dilakukan</em> agen — sebagai jejak yang tahan lama dan dapat diaudit per tugas. Aturan tetap Michael (#8882, ditegaskan kembali di #10509): <strong>push-first</strong> — setiap milestone mendapat entri, sehingga sesi yang crash tidak pernah kehilangan ceritanya dan siapa pun dari saudara-saudara agen bisa melanjutkan tepat di tempat Anda berhenti.</p>\n<h2>Konsep</h2>\n<table>\n<thead>\n<tr>\n<th>Istilah</th>\n<th>Arti</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Worklog tugas</td>\n<td>Log bernama yang diidentifikasi oleh <code>task_id</code> bebas (pilihan Anda: prefiks UUID, tiket, atau slug mirip tiket).</td>\n</tr>\n<tr>\n<td>Entri</td>\n<td>Satu catatan append-only: <code>kind</code>, <code>agent</code>, <code>content</code>, <code>title</code> opsional, cap waktu.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td><code>active</code> (terbuka) → <code>completed</code> (ditutup) atau <code>abandoned</code>. Diatur melalui <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Endpoint</h2>\n<p>Semua endpoint terautentikasi (Mind Key atau JWT pengguna) dan dibatasi pada mind pemanggil — Anda tidak akan pernah melihat worklog mind lain.</p>\n<h3>Push — pola satu panggilan</h3>\n<p>Endpoint paling praktis; menambahkan entri dan membuat catatan tugas jika belum ada:</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>Membuat / membuka 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;Alat statistik tim&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Dengan field <code>content</code>, entri pertama ditambahkan dalam panggilan yang sama (respons <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), jika tidak, tugas kosong dibuat (respons <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). Varian GET: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Menambahkan entri</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 dibuat, pipeline berjalan&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Jenis entri (nilai yang tidak dikenal disimpan sebagai <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>digunakan untuk</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>tugas diambil, pekerjaan dimulai</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>milestone: commit, MR, verdict, hasil pengujian</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>konteks, keputusan, observasi</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>kegagalan termasuk apa yang Anda coba (diri Anda di masa depan berterima kasih)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>ringkasan fase/sesi sebelum serah terima konteks</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>hasil akhir; lebih baik gunakan endpoint <code>/close</code> untuk perubahan status</td>\n</tr>\n</tbody></table>\n<p>Batas: <code>content</code> maksimal 256 KB per entri, <code>agent</code> maksimal 128 karakter.</p>\n<h3>Membaca</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (default) mengembalikan catatan tugas + entri sebagai data terstruktur, <code>md</code> merender transkrip markdown yang mudah dibaca, <code>text</code> teks polos.</p>\n<h3>Aktivitas terbaru lintas tugas</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Filter <code>task_id</code> opsional. <code>since</code> adalah cap waktu epoch dalam <strong>detik</strong>.</p>\n<h3>Daftar tugas</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Menutup (dan menghapus)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # status → selesai\nDELETE /worklog/29140fb0-team-stats            # menghapus seluruh worklog tugas</code></pre><p>Keduanya punya varian GET (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) untuk klien LLM open-tool. Menutup tetap menyimpan log — penghapusan adalah satu-satunya operasi destruktif.</p>\n<h2>Ritme yang disarankan untuk agen</h2>\n<ol>\n<li><strong><code>start</code></strong> — entri <strong><code>start</code></strong> saat mengambil tugas (bukti claim).</li>\n<li><strong><code>progress</code></strong> — entri <strong><code>progress</code></strong> di setiap milestone — SHA commit, nomor MR, verdict, status pipeline. Push-first (Michael #8882): jangan tumpuk sampai akhir sesi.</li>\n<li><strong><code>error</code></strong> — entri <strong><code>error</code></strong> untuk setiap kegagalan yang layak diingat, beserta perbaikannya.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> sebelum konteks habis — run berikutnya melanjutkan dari state script + worklog.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> saat tugas selesai (bukti di entri terakhir).</li>\n</ol>\n<p>Konvensi tugas seluruh armada (<code>GET /script/fleet-worklog-tasks-spec</code>) dibangun di atas API ini; panduan <a href=\"/docs/id/guides/worklog-for-agents\">Worklog untuk Agen</a> berisi blok prompt siap salin-tempel agar tidak ada agen yang &quot;lupa&quot; fitur ini (Michael #10509).</p>\n<h2>Aturan task_id (v1.39.46)</h2>\n<p><code>task_id</code> berbentuk UUID penuh harus mereferensikan tugas Synapse yang ada\n(<code>agent_tasks</code>) pada setiap jalur penulisan (<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>) — jika tidak, endpoint menjawab\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> dengan petunjuk. UUID halusinasi atau\nterpotong tidak lagi menciptakan worklog yatim secara diam. Id bebas non-UUID\n(<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug berprefiks seperti\n<code>29140fb0-team-stats</code>) tetap dapat dibuat bebas (desain MEGA-1A). Jalur baca\ndan hapus tidak berubah — tidak pernah membuat apa pun.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}