diff --git a/README.md b/README.md index a7be260..ce4307d 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The core runs on Python 3.10+ using the standard library only. Anything that nee | **V** | Visible image logos and overlays | Mask, hole fill, dilation, inpaint, restore | Mask removal verifiable, fidelity best-effort | | **M** | C2PA, EXIF, XMP, document properties | Format-aware metadata rewrite | Verifiable per format | | Soft binding | Remote manifests, in-content binding | Detection and warning only | Detection only | -| SynthID | Pixel-domain SynthID-class signal | Optional external adapter | Score only | +| SynthID | Pixel-domain SynthID-class signal | Optional external adapter | Score + best-effort removal | Optional edges, none required by the core: diff --git a/skills/remove-ai-marks/scripts/server.py b/skills/remove-ai-marks/scripts/server.py index 53c4207..82fad2f 100755 --- a/skills/remove-ai-marks/scripts/server.py +++ b/skills/remove-ai-marks/scripts/server.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""HTTP service exposing the watermarks-remover cleaning pipeline. +"""HTTP service exposing the watermark-remover cleaning pipeline. Stdlib-only. The agent skill and any web app can call it over HTTP instead of running the CLI scripts locally. @@ -403,7 +403,7 @@ def openapi_spec() -> dict[str, Any]: spec: dict[str, Any] = { "openapi": "3.0.3", "info": { - "title": "watermarks-remover service", + "title": "watermark-remover service", "version": VERSION, "description": "Strip multi-vendor AI provenance marks (Unicode, C2PA/EXIF/XMP, containers). " "Files are passed base64-encoded in JSON; cleaned bytes come back base64-encoded.", @@ -462,7 +462,7 @@ def _decode_input(body: dict[str, Any]) -> tuple[bytes, str]: class Handler(BaseHTTPRequestHandler): - server_version = f"watermarks-remover/{VERSION}" + server_version = f"watermark-remover/{VERSION}" def log_message(self, fmt: str, *args: object) -> None: eprint(f"{self.address_string()} - {fmt % args}") @@ -785,7 +785,7 @@ def main() -> int: eprint("warning: no API key set — only bind to loopback or a trusted network") server = ThreadingHTTPServer((args.host, args.port), Handler) - eprint(f"watermarks-remover service {VERSION} on http://{args.host}:{args.port}") + eprint(f"watermark-remover service {VERSION} on http://{args.host}:{args.port}") try: server.serve_forever() except KeyboardInterrupt: diff --git a/skills/remove-ai-marks/scripts/synthid_score_server.py b/skills/remove-ai-marks/scripts/synthid_score_server.py index 932289b..d364234 100755 --- a/skills/remove-ai-marks/scripts/synthid_score_server.py +++ b/skills/remove-ai-marks/scripts/synthid_score_server.py @@ -52,7 +52,7 @@ def _json_ok(payload: dict[str, Any]) -> bytes: class Handler(BaseHTTPRequestHandler): - server_version = f"watermarks-remover-synthid/{VERSION}" + server_version = f"watermark-remover-synthid/{VERSION}" def log_message(self, fmt: str, *args: object) -> None: print(f"{self.address_string()} - {fmt % args}", file=sys.stderr) diff --git a/tests/test_http_server.py b/tests/test_http_server.py index 826af8b..e7c9d46 100644 --- a/tests/test_http_server.py +++ b/tests/test_http_server.py @@ -97,7 +97,7 @@ def test_openapi_spec_covers_all_endpoints(conn): status, body = _get(conn, "/openapi.json") assert status == 200 assert body["openapi"] == "3.0.3" - assert body["info"]["title"] == "watermarks-remover service" + assert body["info"]["title"] == "watermark-remover service" expected = { "/health": {"get"}, "/capabilities": {"get"},