{
  "specVersion": "0.2.0",
  "name": "dsh-realtime-voice",
  "pluginTypes": [
    "F3"
  ],
  "facts": {
    "modelVisible": false,
    "registersTools": false,
    "filesystem": "none",
    "persistentState": false,
    "subprocess": false,
    "subagents": false,
    "temporaryResources": true,
    "customProtocol": true
  },
  "package": {
    "path": "package.json"
  },
  "tests": {
    "contractTests": [
      {
        "file": "test/service.test.mjs",
        "references": [
          "openAIRealtimeAdapter",
          "doubaoRealtimeAdapter",
          "voiceAgentAdapters"
        ]
      },
      {
        "file": "test/transport.test.mjs",
        "references": [
          "validateProviderRoute",
          "authorizeBrowserRequest",
          "createStartupQueue",
          "sanitizeProviderEvent",
          "safeUpstreamEvent"
        ]
      },
      {
        "file": "test/client.test.cjs",
        "references": [
          "voiceAgent",
          "normalizeProviderEvent",
          "VoiceConversation",
          "startConversation",
          "uploadCapturedAudio",
          "registerActions"
        ]
      }
    ],
    "runtimeTests": [
      {
        "file": "test/assembly.test.mjs",
        "layer": "L1"
      },
      {
        "file": "test/service.test.mjs",
        "layer": "L2"
      },
      {
        "file": "test/transport.test.mjs",
        "layer": "L2"
      },
      {
        "file": "test/transport.integration.test.mjs",
        "layer": "L2"
      },
      {
        "file": "test/client.test.cjs",
        "layer": "L2"
      }
    ]
  },
  "contracts": [
    {
      "name": "duplex-voice-agent",
      "file": "spec/runtime-contract.json",
      "versionField": "version"
    }
  ]
}
