/**
 * SDK Test Runner — ICD Response Shapes
 *
 * Mirrors the shapes from the ICD test runner. Each shape is a map
 * of field names to type strings. Types:
 *   string, number, bool, array, object, uuid
 *   string? / number? / object?  = nullable/optional
 */
(function () {
  'use strict';
  var T = window.SDKR;
  if (!T) return;

  T.S = {};

  // ── Core ──────────────────────────────────────────────────

  T.S.channel = {
    id: 'string', title: 'string', type: 'string',
    created_at: 'string', updated_at: 'string'
  };
  T.S.channelFull = {
    id: 'string', user_id: 'string', title: 'string', type: 'string',
    ai_mode: 'string?', topic: 'string?', description: 'string?',
    model: 'string?', provider_config_id: 'string?',
    system_prompt: 'string?', is_archived: 'bool', is_pinned: 'bool',
    folder: 'string?', folder_id: 'string?', project_id: 'string?',
    workspace_id: 'string?',
    tags: 'array', created_at: 'string', updated_at: 'string'
  };
  T.S.message = {
    id: 'string', channel_id: 'string', role: 'string',
    content: 'string', created_at: 'string'
  };
  T.S.persona = {
    id: 'string', name: 'string', scope: 'string',
    created_at: 'string', updated_at: 'string'
  };
  T.S.note = {
    id: 'string', title: 'string',
    created_at: 'string', updated_at: 'string'
  };
  T.S.project = {
    id: 'string', name: 'string', scope: 'string', owner_id: 'string',
    is_archived: 'bool', created_at: 'string', updated_at: 'string',
    description: 'string?', color: 'string?', icon: 'string?',
    team_id: 'string?', workspace_id: 'string?', settings: 'object?',
    channel_count: 'number?', kb_count: 'number?', note_count: 'number?'
  };
  T.S.kb = {
    id: 'string', name: 'string', scope: 'string',
    embedding_config: 'object', document_count: 'number',
    chunk_count: 'number', total_bytes: 'number', status: 'string',
    created_at: 'string', updated_at: 'string'
  };
  T.S.workspace = {
    id: 'string', name: 'string', owner_type: 'string',
    owner_id: 'string', status: 'string',
    created_at: 'string', updated_at: 'string'
  };
  T.S.folder = { id: 'string', name: 'string', created_at: 'string' };
  T.S.notification = {
    id: 'string', type: 'string', title: 'string',
    read: 'bool', created_at: 'string'
  };
  T.S.memory = {
    id: 'string', scope: 'string', owner_id: 'string',
    key: 'string', value: 'string', confidence: 'number',
    status: 'string', created_at: 'string', updated_at: 'string'
  };
  T.S.profile = {
    id: 'string', username: 'string', email: 'string',
    role: 'string', settings: 'object', created_at: 'string'
  };
  T.S.task = {
    id: 'string', name: 'string', task_type: 'string',
    schedule: 'string', is_active: 'bool', created_at: 'string'
  };
  T.S.workflow = {
    id: 'string', name: 'string', slug: 'string',
    entry_mode: 'string', is_active: 'bool',
    created_at: 'string', updated_at: 'string'
  };
  T.S.workflowStage = {
    id: 'string', workflow_id: 'string', ordinal: 'number',
    name: 'string', history_mode: 'string', created_at: 'string',
    surface_pkg_id: 'string?'
  };
  T.S.team = { id: 'string', name: 'string', created_at: 'string?' };
  T.S.teamMember = { user_id: 'string', role: 'string' };
  T.S.group = { id: 'string', name: 'string' };
  T.S.surface = { id: 'string', title: 'string', source: 'string', enabled: 'bool' };
  T.S.providerConfig = {
    id: 'string', name: 'string', provider: 'string', scope: 'string'
  };
  T.S.extension = {
    id: 'string', title: 'string', type: 'string', version: 'string',
    tier: 'string', enabled: 'bool', is_system: 'bool', scope: 'string',
    source: 'string', installed_at: 'string', updated_at: 'string'
  };
  T.S.modelEnabled = {
    id: 'string', model_id: 'string', display_name: 'string',
    model_type: 'string', source: 'string',
    provider_config_id: 'string', provider_name: 'string',
    provider_type: 'string', capabilities: 'object',
    scope: 'string', is_persona: 'bool', hidden: 'bool'
  };
  T.S.gitCredSummary = {
    id: 'string', name: 'string', auth_type: 'string', created_at: 'string'
  };

})();
