{
  "id": "file-transfer",
  "activation": {
    "onStartup": true
  },
  "enabledByDefault": true,
  "name": "File Transfer",
  "description": "Fetch, list, and write files on paired nodes via dedicated node commands. Bypasses bash stdout truncation by using base64 over node.invoke for binaries up to 16 MB.",
  "contracts": {
    "tools": [
      "file_fetch",
      "dir_list",
      "dir_fetch",
      "file_write"
    ]
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "nodes": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "ask": {
              "type": "string",
              "enum": [
                "off",
                "on-miss",
                "always"
              ]
            },
            "allowReadPaths": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "allowWritePaths": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "denyPaths": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "maxBytes": {
              "type": "number"
            },
            "followSymlinks": {
              "type": "boolean",
              "default": false
            }
          }
        }
      }
    }
  }
}
