version: "3"
output: interleaved
dotenv: [".env.local"]
vars:
  INDENT: 4
  REL_PATH: "{{ relPath .USER_WORKING_DIR .ROOT_DIR }}"
  VENV_DIR: ".venv"
  PYTHON_MAIN: '{{ joinPath "./src" "agent.py" }}'

tasks:
  post_create:
    desc: "Runs after this template is instantiated as a Sandbox or Bootstrap"
    cmds:
      - echo 'To try the new agent directly in your terminal:'
      - echo ''
      - echo '{{ indent .INDENT "cd" }} {{ .REL_PATH }}'
      - echo '{{ indent .INDENT "uv sync" }}'
      - echo '{{ indent .INDENT "uv run" }} {{ .PYTHON_MAIN }} download-files'
      - echo '{{ indent .INDENT "uv run" }} {{ .PYTHON_MAIN }} console'
      - echo ''
      - echo 'To deploy your agent to LiveKit cloud:'
      - echo ''
      - echo '{{ indent .INDENT "lk agent create" }}'
      - echo ''
      - task: set_agent_name_if_present
      - task: help_open_sandbox_if_present

  set_agent_name_if_present:
    status:
      - test -z "$LIVEKIT_AGENT_NAME"
    cmds:
      - |
        old="WorkerOptions("
        new="WorkerOptions(agent_name=\"{{ .LIVEKIT_AGENT_NAME }}\", "
        file="{{ .PYTHON_MAIN }}"
        tmp="$(mktemp)"
        while IFS= read -r line; do
          printf '%s\n' "${line//$old/$new}" >> "$tmp"
        done < "$file"
        mv "$tmp" "$file"

  help_open_sandbox_if_present:
    status:
      - test -z "$LIVEKIT_SANDBOX_ID"
    cmds:
      - echo 'To chat with your running agent, visit:'
      - echo ''
      - echo '{{ indent .INDENT "https://" }}{{ .LIVEKIT_SANDBOX_ID }}.sandbox.livekit.io'
      - echo ''

  install:
    desc: "Bootstrap application for local development"
    cmds:
      - "uv sync"
  dev:
    interactive: true
    cmds:
      - "uv run src/agent.py dev"
