{
  "$comment": [
    "Example Agent — Minimal starter configuration for a2a-wrapper-gh-copilot.",
    "",
    "Use this as a copy-paste starting point when building your own agent:",
    "  cp -r agents/example agents/my-agent",
    "  # Edit agents/my-agent/config.json for your use case",
    "  ./agents/my-agent/start.sh start",
    "",
    "This agent has no external MCP tool servers. For an agent that reads and",
    "writes files via MCP, see agents/filesystem-assistant/."
  ],

  "agentCard": {
    "$comment": [
      "The agent card is served at GET /agent/card and advertises this agent to",
      "A2A-compatible orchestrators and callers. Fill in a clear name and",
      "description — they are the first thing callers see."
    ],

    "name": "Example Agent",
    "description": "A minimal example agent. Replace this description with what your agent actually does.",
    "version": "1.0.0",
    "protocolVersion": "0.3.0",

    "defaultInputModes": ["text"],
    "defaultOutputModes": ["text"],
    "streaming": true,

    "skills": [
      {
        "$comment": "Skills are optional but help orchestrators understand agent capabilities without calling it experimentally.",
        "id": "general-assistant",
        "name": "General Assistant",
        "description": "Answer questions, reason through problems, and assist with general tasks",
        "tags": ["general", "qa", "reasoning", "assistant"]
      }
    ]
  },

  "server": {
    "$comment": [
      "Each agent must use a unique port when running multiple agents on the same host.",
      "Change advertiseHost to your machine's IP or domain when running behind Docker or a proxy.",
      "Set advertiseProtocol to 'https' when running behind a TLS-terminating proxy."
    ],
    "port": 3000,
    "hostname": "0.0.0.0",
    "advertiseHost": "localhost",
    "advertiseProtocol": "http"
  },

  "copilot": {
    "$comment": [
      "Controls how the wrapper connects to the GitHub Copilot SDK.",
      "",
      "model          — The LLM to use. Examples: 'gpt-4o', 'gpt-4.1', 'claude-sonnet-4.5'",
      "systemPromptMode:",
      "  'replace'    — Your prompt fully replaces the SDK's default system message.",
      "                 Use this for a clean, custom persona (recommended for production).",
      "  'append'     — Your prompt is appended after the SDK's built-in coding-assistant",
      "                 message. Use this when you want to layer constraints on top.",
      "",
      "provider (optional) — Custom LLM provider (BYOK: Bring Your Own Key).",
      "  Omit this section entirely to use the default GitHub Copilot API.",
      "  When set, sessions bypass GitHub Copilot and call your provider directly.",
      "  The 'model' field is REQUIRED when using a custom provider.",
      "",
      "  Provider quick-reference:",
      "    Ollama (local):    type='openai', baseUrl='http://localhost:11434/v1'",
      "    OpenAI:            type='openai', baseUrl='https://api.openai.com/v1', wireApi='responses'",
      "    Anthropic:         type='anthropic', baseUrl='https://api.anthropic.com'",
      "    Azure OpenAI:      type='azure', baseUrl='https://<resource>.openai.azure.com'",
      "    Azure AI Foundry:  type='openai', baseUrl='https://<resource>.openai.azure.com/openai/v1/', wireApi='responses'",
      "    vLLM / LiteLLM:   type='openai', baseUrl='http://<host>:<port>/v1'",
      "",
      "  Alternatively, set env vars (same as the gh-copilot CLI):",
      "    COPILOT_PROVIDER_BASE_URL, COPILOT_PROVIDER_TYPE,",
      "    COPILOT_PROVIDER_API_KEY, COPILOT_PROVIDER_WIRE_API, COPILOT_MODEL"
    ],
    "model": "gpt-5.4-mini",
    "streaming": true,
    "systemPromptMode": "replace",
    "systemPrompt": "You are a helpful assistant. Replace this system prompt with instructions that define your agent's role, persona, and expected behaviour."
  },

  "features": {
    "$comment": [
      "streamArtifactChunks: false (default) — buffers artifact chunks and sends them",
      "as a single artifact. More compatible with A2A inspector tools.",
      "Set to true for spec-correct incremental artifact streaming.",
      "",
      "trackUsage: true — enables detailed LLM usage telemetry.",
      "  Tier 1 (always-on): a UsageTelemetryData summary is injected into",
      "    metadata['x-usage'] on every final completed TaskStatusUpdateEvent.",
      "  Tier 2 (opt-in, trackUsage: true): a trace.usage sideband artifact is",
      "    published for each LLM API call (token counts, latency, cost, model).",
      "  Tier 3 (opt-in, trackUsage: true): context-window fill snapshots are",
      "    forwarded via AgentEventEmitter as context_window events.",
      "Set to false or omit to suppress Tier 2 and Tier 3 while keeping Tier 1."
    ],
    "streamArtifactChunks": false,
    "trackUsage": true
  },

  "timeouts": {
    "$comment": "prompt — Maximum milliseconds to wait for a single response. Increase for agents that call slow external tools.",
    "prompt": 120000
  },

  "logging": {
    "$comment": "level — One of: 'debug' | 'info' | 'warn' | 'error'. Use 'debug' during development.",
    "level": "info"
  }
}
