{
  "id": "imap",
  "name": "IMAP email trigger",
  "description": "Watch IMAP mailboxes and dispatch authenticated incoming email to isolated agent sessions.",
  "activation": {
    "onStartup": true
  },
  "enabledByDefault": false,
  "configContracts": {
    "secretInputs": {
      "bundledDefaultEnabled": false,
      "paths": [
        {
          "path": "accounts.*.password",
          "expected": "string",
          "ownerKind": "route"
        }
      ]
    },
    "dangerousFlags": [
      {
        "path": "accounts.*.senderAuth.acceptTrustedAuthservId",
        "equals": true
      },
      {
        "path": "accounts.*.senderAuth.min",
        "equals": "unverified"
      },
      {
        "path": "accounts.*.senderAuth.min",
        "equals": "mutable"
      }
    ]
  },
  "uiHints": {
    "accounts.*.password": {
      "label": "IMAP password",
      "sensitive": true
    },
    "accounts.*.allowedSenders": {
      "label": "Allowed senders",
      "help": "Email addresses or @domain entries permitted to trigger the reader agent."
    },
    "accounts.*.agentId": {
      "label": "Restricted reader agent"
    },
    "accounts.*.senderAuth.min": {
      "label": "Minimum sender authentication",
      "advanced": true
    }
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "$defs": {
      "secretRef": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "env",
              "file",
              "exec",
              "store"
            ]
          },
          "provider": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "provider",
          "id"
        ]
      },
      "secretInput": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1
          },
          {
            "$ref": "#/$defs/secretRef"
          }
        ]
      },
      "senderAuth": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "min": {
            "type": "string",
            "enum": [
              "verified",
              "asserted",
              "unverified",
              "mutable"
            ],
            "default": "verified"
          },
          "trustedAuthservIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "acceptTrustedAuthservId": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "addressToken": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "minLength": 1
          },
          "senders": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "minItems": 1
          }
        },
        "required": [
          "token",
          "senders"
        ]
      },
      "watch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "auto",
              "idle",
              "interval"
            ],
            "default": "auto"
          },
          "pollSeconds": {
            "type": "integer",
            "minimum": 15,
            "default": 60
          }
        }
      },
      "account": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "host": {
            "type": "string",
            "minLength": 1
          },
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "default": 993
          },
          "secure": {
            "type": "boolean",
            "default": true
          },
          "user": {
            "type": "string",
            "minLength": 1
          },
          "password": {
            "$ref": "#/$defs/secretInput"
          },
          "mailbox": {
            "type": "string",
            "minLength": 1,
            "default": "INBOX"
          },
          "watch": {
            "$ref": "#/$defs/watch"
          },
          "allowedSenders": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "senderAuth": {
            "$ref": "#/$defs/senderAuth"
          },
          "addressTokens": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/addressToken"
            }
          },
          "agentId": {
            "type": "string",
            "minLength": 1
          },
          "deliver": {
            "type": "boolean",
            "default": false
          },
          "includeBody": {
            "type": "boolean",
            "default": true
          },
          "maxBytes": {
            "type": "integer",
            "minimum": 256,
            "maximum": 1048576,
            "default": 20000
          },
          "model": {
            "type": "string",
            "minLength": 1
          },
          "thinking": {
            "type": "string",
            "enum": [
              "off",
              "minimal",
              "low",
              "medium",
              "high",
              "xhigh",
              "adaptive",
              "max",
              "ultra"
            ]
          },
          "timeoutSeconds": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "host",
          "user",
          "password",
          "agentId"
        ]
      }
    },
    "properties": {
      "accounts": {
        "type": "object",
        "propertyNames": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$"
        },
        "additionalProperties": {
          "$ref": "#/$defs/account"
        }
      }
    }
  }
}
