# Example only.
# - Values prefixed with REPLACE_WITH_ are placeholders and are intentionally non-working.
# - Keep real secrets in a local-only config such as ~/.config/pianno/config.yml.
# - Recommended permissions: ~/.config/pianno -> 0700, config.yml -> 0600.
configVersion: 1

paths:
  dataDir: "~/.config/pianno/data"
  pairingDb: "~/.config/pianno/data/pairing.db"
  runtimeDb: "~/.config/pianno/data/runtime.db"
  workspacesBaseDir: "~/.config/pianno/workspaces"
  # Fallback workspace for unbound collaboration groups before a project root is bound.
  defaultWorkspaceDir: "~/workspace/pianno-default"

worker:
  concurrency: 2
  jobMaxAttempts: 1
  retryBackoffMs: 1000

channels:
  wecom:
    enabled: true
    wsUrl: "wss://openws.work.weixin.qq.com"
    defaultAccount: "default"
    # Chat-only private_dm ops gate (no GUI/Web UI):
    # - opsConversationKeys: WeCom group chat ids allowed to run cross-DM ops commands
    # - opsUserIds: WeCom users allowed to run cross-DM ops commands
    #
    # Precedence: env overrides > YAML config.
    # Supported env overrides:
    # - PIANNO_DM_OPS_CONVERSATIONS=group:ops-room-1,group:ops-room-2
    # - PIANNO_DM_OPS_USERS=wecom:ops_admin,wecom:oncall_1
    opsConversationKeys:
      - "group:ops-room-chat-id"
    opsUserIds:
      - "wecom:ops_admin_userid"
    # Chat-triggered skill scaffold creation (still no GUI/Web UI):
    # - recommended to run in bot direct chat to avoid group noise
    # - must combine PIANNO_SKILL_CHAT_ENABLED=1 with explicit conversation/user auth
    #
    # Precedence: env overrides > YAML config.
    # Supported env overrides:
    # - PIANNO_SKILL_CHAT_ENABLED=1
    # - PIANNO_SKILL_CHAT_CONVERSATIONS=dm:ops_admin_userid,group:ops-room-chat-id
    # - PIANNO_SKILL_CHAT_USERS=wecom:ops_admin_userid
    #
    skillConversationKeys:
      - "dm:ops_admin_userid"
    skillUserIds:
      - "wecom:ops_admin_userid"
    accounts:
      default:
        # Prefer local-only config or supported env overrides for credentials.
        botId: "REPLACE_WITH_WECOM_BOT_ID"
        botSecret: "REPLACE_WITH_WECOM_BOT_SECRET"
        dmPolicy: "pairing"
        allowFrom:
          - "wecom:admin_userid"

agent:
  runtime: "pi"
  agent: "pi"
  model: "bigmodel/glm-5-turbo"
  timeoutSeconds: 300
  maxTurns: 10
  systemPrompt: |
    你是企业内部智能助手，基于 pianno 平台运行。
  allowedTools:
    - Read
    - Glob
    - Grep
    - Edit
    - Write
    - Bash
  # Keep manual approval on by default; only relax this after explicit ops review.
  permissionMode: "default"
  env:
    # Treat agent.env as secret material when it contains provider credentials.
    OPENAI_API_KEY: "REPLACE_WITH_PROVIDER_API_KEY"
    OPENAI_BASE_URL: "https://open.bigmodel.cn/api/paas/v4"

logging:
  level: "info"
