feat: v0.5.0 — welle B Teil 1 (registry tools: search, tags, pull)
Three new SYNO.Docker.Registry tools, reverse-engineered from a live DSM API capture (n4s4 reference disagrees on param names and methods). - search_registry (#5): SYNO.Docker.Registry/search v1 with JSON-encoded q, plus offset/limit/page_size. Renders stars, downloads, official flag, truncated description, and total match count. Read-only. - list_image_tags: SYNO.Docker.Registry/tags v1 with JSON-encoded repo (not name — DSM live capture diverges from n4s4). Response shape is unusual: tag list comes back as the envelope's data field directly. Output capped by limit (default 50); accepts both list and dict response shapes defensively. Read-only. - pull_image (#3): SYNO.Docker.Registry/pull_start v1 with both repository and tag JSON-encoded. Async pull — no pull_status method confirmed on this DSM, so completion is detected by polling SYNO.Docker.Image/list (2–10 s backoff, 240 s budget under the Claude Desktop ~4 min tool-call ceiling). Timeout returns a non-fatal "still running" hint. Short-circuits when the image is already present locally. Confirmation gate required. Tool count: 31 → 34. CLAUDE.md confirmation list updated. New DSM quirks documented for pull_start (no pull_status) and tags (repo param name, top-level data array). Closes #3 Closes #5 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -33,7 +33,7 @@ Only a second consecutive failure is treated as a real auth problem.
|
||||
|
||||
---
|
||||
|
||||
## Implemented tools (31)
|
||||
## Implemented tools (34)
|
||||
|
||||
| Category | Tools |
|
||||
|---|---|
|
||||
@@ -41,6 +41,7 @@ Only a second consecutive failure is treated as a real auth problem.
|
||||
| Containers | `list_containers`, `get_container_status`, `get_container_logs`, `exec_in_container`, `container_stats`, `delete_container`, `start_container`, `stop_container`, `restart_container` |
|
||||
| Compose | `read_compose`, `update_compose`, `update_image_tag`, `update_env_var` |
|
||||
| Images | `check_image_updates`, `list_images`, `delete_image`, `inspect_image` |
|
||||
| Registry | `search_registry`, `list_image_tags`, `pull_image` |
|
||||
| Networks | `list_networks`, `create_network`, `delete_network` |
|
||||
| System | `system_df`, `system_prune`, `system_overview` |
|
||||
|
||||
@@ -58,7 +59,17 @@ Only a second consecutive failure is treated as a real auth problem.
|
||||
- **Image delete** — requires a form-encoded POST with a JSON `images` array
|
||||
(confirmed via browser DevTools); uses `DsmClient.post_request()`.
|
||||
- **`SYNO.Docker.Image/pull`** — API method exists but behaviour varies by
|
||||
DSM version; not exposed as a standalone tool.
|
||||
DSM version; not exposed as a standalone tool. `pull_image` uses
|
||||
`SYNO.Docker.Registry/pull_start` instead (see below).
|
||||
- **`SYNO.Docker.Registry/pull_start`** — asynchronous pull entry point;
|
||||
no matching `pull_status` method confirmed. `pull_image` polls
|
||||
`SYNO.Docker.Image/list` until `repository:tag` appears (2–10 s backoff,
|
||||
240 s budget) and returns a "still running" hint on timeout instead of
|
||||
raising — DSM keeps pulling server-side regardless of the HTTP response.
|
||||
- **`SYNO.Docker.Registry/tags`** — uses `repo` (JSON-encoded) as the
|
||||
parameter name; the n4s4 reference's `name` does not work on this DSM
|
||||
version. Returns the tag list as the envelope's `data` field directly,
|
||||
not wrapped in a sub-key.
|
||||
- **`SYNO.Docker.Volume`** — endpoint does not exist; volume management is
|
||||
not available via the DSM WebAPI.
|
||||
- **`SYNO.Docker.Registry/get`** — does not behave as documented; registry
|
||||
@@ -77,7 +88,7 @@ Only a second consecutive failure is treated as a real auth problem.
|
||||
`redeploy_project`, `create_project`, `delete_project`,
|
||||
`exec_in_container`, `update_image_tag`, `update_env_var`,
|
||||
`update_compose`, `delete_container`, `stop_container`,
|
||||
`restart_container`
|
||||
`restart_container`, `pull_image`
|
||||
- After compose changes: suggest `redeploy_project`
|
||||
- DSM errors → human-readable message, no stack traces
|
||||
- No secrets in stderr output
|
||||
|
||||
Reference in New Issue
Block a user