zc2 0.0.4

P2P compute broker with credit-based billing, WAL, and broker mesh support
version: "3"

vars:
  BINARY_NAME: zc
  PACKAGE_NAME: zc2
  INSTALL_PATH: /usr/local/bin/{{.BINARY_NAME}}
  COMMIT_SHA:
    sh: git show --format='%H' --no-patch
  TIMESTAMP:
    sh: date +%Y%m%d-%H%M%S

tasks:
  default:
    desc: Build binary and start Docker services
    cmds:
      - task: build

  # ---------------------------------------------------------------------------
  #  Build
  # ---------------------------------------------------------------------------
  build:
    desc: Build binary and start Docker services
    cmds:
      - task: build:bin
      - docker compose down
      - docker compose build
      - docker compose up -d

  build:bin:
    desc: Compile release binary and install to /usr/local/bin
    cmds:
      - cargo clean
      - cargo build -j 4 --release
      - sudo mv target/release/{{.PACKAGE_NAME}} {{.INSTALL_PATH}}
    sources:
      - src/**/*.rs
      - Cargo.toml
      - Cargo.lock
      - build.rs
    generates:
      - target/release/{{.PACKAGE_NAME}}

  build:docker:
    desc: Build Docker image only (no binary compilation)
    cmds:
      - docker compose build

  # ---------------------------------------------------------------------------
  #  Run
  # ---------------------------------------------------------------------------
  run:
    desc: Build and run the CLI
    deps: [build]
    cmds:
      - ./{{.BINARY_NAME}}

  release:
    desc: Run the release binary
    cmds:
      - "{{.INSTALL_PATH}}"

  debug:
    desc: Build and run with full backtrace
    deps: [build]
    env:
      RUST_BACKTRACE: full
    cmds:
      - ./{{.BINARY_NAME}}

  # ---------------------------------------------------------------------------
  #  Broker
  # ---------------------------------------------------------------------------
  broker:
    desc: Start broker in foreground mode
    cmds:
      - "{{.INSTALL_PATH}} broker"

  broker:tui:
    desc: Start broker with interactive TUI dashboard
    cmds:
      - "{{.INSTALL_PATH}} -t broker"

  broker:daemon:
    desc: Start broker in daemon (background) mode
    cmds:
      - "{{.INSTALL_PATH}} -d broker"

  # ---------------------------------------------------------------------------
  #  Benchmarking
  # ---------------------------------------------------------------------------
  bench:
    desc: Run default benchmark (10 concurrent, 1000 requests)
    cmds:
      - "{{.INSTALL_PATH}} bench {{.CLI_ARGS}}"

  bench:compare:
    desc: Compare all routing strategies
    cmds:
      - "{{.INSTALL_PATH}} bench --compare {{.CLI_ARGS}}"

  # ---------------------------------------------------------------------------
  #  Diagnostics
  # ---------------------------------------------------------------------------
  info:
    desc: Show system info, clusters, and network status
    cmds:
      - "{{.INSTALL_PATH}} info"

  # ---------------------------------------------------------------------------
  #  Docker
  # ---------------------------------------------------------------------------
  docker:up:
    desc: Start Docker services
    cmds:
      - docker compose up -d

  docker:down:
    desc: Stop Docker services
    cmds:
      - docker compose down

  docker:logs:
    desc: Show Docker service logs
    cmds:
      - docker compose logs -f

  # ---------------------------------------------------------------------------
  #  Housekeeping
  # ---------------------------------------------------------------------------
  clean:
    desc: Remove build artifacts
    cmds:
      - cargo clean
      - rm -rf target/