Skip to content

feat: ceki-daemon persistent renter-process + CLI IPC#15

Open
iWedmak wants to merge 6 commits into
masterfrom
feature/daemon
Open

feat: ceki-daemon persistent renter-process + CLI IPC#15
iWedmak wants to merge 6 commits into
masterfrom
feature/daemon

Conversation

@iWedmak

@iWedmak iWedmak commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

ceki-daemon — persistent renter-process, решающий CLI one-shot session disconnect.

Что сделано

Part 1 — daemon core (новый ceki_sdk/daemon.py)

  • HTTP/JSON IPC сервер (localhost:18777), 18 endpoints
  • Persistent WS-соединение с auto-reconnect (exponential backoff)
  • PID file /tmp/ceki-daemon.pid
  • Graceful shutdown по SIGTERM/SIGINT
  • Zero новых pip-зависимостей — только stdlib

Part 2 — CLI integration (ceki_sdk/cli.py)

  • ceki daemon start|stop|status
  • Все browser-команды (navigate, click, type, screenshot и т.д.) проверяют daemon first:
    • daemon alive → IPC запрос
    • daemon down → clear error
    • без daemon → fallback one-shot (backward compat)

Part 3 — SDK transport

  • Browser API не меняется

Версия

bump 2.35.6 → 2.36.0

После merge — создать GitHub Release v2.36.0 для публикации на PyPI.

ceki-plugin added 6 commits July 19, 2026 15:09
…e import logging, visible stderr error

- Sync __init__.__version__ to 2.36.0 matching pyproject.toml
- Close log_file handle after subprocess.Popen in _ensure_daemon() and _cmd_daemon_start()
- Move import logging to top-level imports
- Add user-visible stderr error on daemon auto-start failure in _ensure_daemon()
- Remove redundant is_running() check after for-loop (proc.poll() already covers it)
- Add .claude/ .graphifyignore .mypy_cache/ to .gitignore
Missing [project.scripts] ceki-daemon = ceki_sdk.daemon:main entry
point — the published PyPI package had no ceki-daemon binary.
Every Joe review round (4400, 4439, 4444) cited this as the blocker.
Same wire call, same args, different name — lets AI agents express
'edit the task' intent instead of 'propose a correction'.

- New top-level subcommand 'edit' (ceki edit <eid> --label ...)
- Delegates to ContractClient.propose() under the hood
- Accepts all the same args: --status, --label, --desc, --start,
  --end, --date, --duration, --amount, --currency, --benefitable, --tags
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant