{
  "contractVersion": "v1",
  "schemaVersion": 1,
  "operationRegistryVersion": 3,
  "runtimeOperationRegistryVersion": 5,
  "sourceDigest": "8c57c4929bc859d307490158a857edaeaf7499fc94565a91196b3a771183c09c",
  "envelopeSchemaRef": "AgentEventEnvelope.v1",
  "channels": [
    {
      "channel": "neotask.agent.v1.runs.{runRef}.events",
      "domain": "chat",
      "eventTypes": [
        "run.queued",
        "run.started",
        "run.progress",
        "run.steered",
        "run.awaiting_input",
        "run.resumed",
        "run.completed",
        "run.failed",
        "run.cancelled",
        "run.lease_lost",
        "run.event"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "implemented",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/runs/{runRef}/events",
      "ssePath": "/api/agent/v1/runs/{runRef}/events/stream",
      "mcpResource": "neotask://agent/v1/runs/{runRef}/events",
      "sourceOfTruth": "site_run_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.conversations.{conversationRef}.turns.{turnRef}.events",
      "domain": "chat",
      "eventTypes": [
        "turn.queued",
        "turn.running",
        "turn.completed",
        "turn.failed",
        "turn.execution_unknown",
        "turn.cancel_requested"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "implemented",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/conversations/{conversationRef}/turns/{turnRef}/events",
      "ssePath": "/api/agent/v1/conversations/{conversationRef}/turns/{turnRef}/events/stream",
      "mcpResource": "neotask://agent/v1/conversations/{conversationRef}/turns/{turnRef}/events",
      "sourceOfTruth": "site_conversation_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.approvals.{approvalRef}.events",
      "domain": "approvals",
      "eventTypes": [
        "approval.requested",
        "approval.approved",
        "approval.denied",
        "approval.expired",
        "approval.cancelled"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "implemented",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/approvals/{approvalRef}/events",
      "ssePath": "/api/agent/v1/approvals/{approvalRef}/events/stream",
      "mcpResource": "neotask://agent/v1/approvals/{approvalRef}/events",
      "sourceOfTruth": "site_approval_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "8h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.runners.{runnerRef}.events",
      "domain": "runner",
      "eventTypes": [
        "runner.enrolling",
        "runner.confirmed",
        "runner.heartbeat",
        "runner.offline",
        "runner.rotated",
        "runner.revoked"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "planned",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/runners/{runnerRef}/events",
      "ssePath": "/api/agent/v1/runners/{runnerRef}/events/stream",
      "mcpResource": "neotask://agent/v1/runners/{runnerRef}/events",
      "sourceOfTruth": "site_runner_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.integrations.{connectionRef}.events",
      "domain": "integration",
      "eventTypes": [
        "integration.attempt_created",
        "integration.connected",
        "integration.attached",
        "integration.reconnect_required",
        "integration.revoked"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "planned",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/integrations/connections/{connectionRef}/events",
      "ssePath": "/api/agent/v1/integrations/connections/{connectionRef}/events/stream",
      "mcpResource": "neotask://agent/v1/integrations/{connectionRef}/events",
      "sourceOfTruth": "site_integration_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.automations.{automationRef}.events",
      "domain": "automation",
      "eventTypes": [
        "automation.created",
        "automation.updated",
        "automation.run_started",
        "automation.run_completed",
        "automation.failed"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "planned",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/automations/{automationRef}/events",
      "ssePath": "/api/agent/v1/automations/{automationRef}/events/stream",
      "mcpResource": "neotask://agent/v1/automations/{automationRef}/events",
      "sourceOfTruth": "site_automation_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    },
    {
      "channel": "neotask.agent.v1.mail.{companyRef}.events",
      "domain": "coordination_mail",
      "eventTypes": [
        "mail.membership_requested",
        "mail.identity_bound",
        "mail.message_sent",
        "mail.message_delivered",
        "mail.message_read",
        "mail.handoff_sent",
        "mail.identity_revoked"
      ],
      "eventSchemaRef": "AgentEventEnvelope.v1",
      "status": "planned",
      "launchState": "feature-gated",
      "jsonRecoveryPath": "/api/agent/v1/mail/events",
      "ssePath": "/api/agent/v1/mail/events/stream",
      "mcpResource": "neotask://agent/v1/mail/{companyRef}/events",
      "sourceOfTruth": "site_mail_event_log",
      "cursor": {
        "mode": "opaque",
        "replayWindow": "24h",
        "deduplicationKey": "eventRef"
      }
    }
  ]
}
