// A2UI —— Agent-to-UI 富组件协议
//
// 每个组件强制带 fallback 字段，保证非图形 surface（CLI/Teams Adaptive Card 等）
// 能降级渲染。例：Chart 在 CLI 里降级为 "📊 标题 → artifact 链接"。
//
// 详见 docs/modules/agent/02-architecture.md §1.1.1 协议降级要求。

export interface A2UIFallback {
  readonly text: string;
  readonly url?: string;
}

export interface A2UIComponentBase {
  readonly id: string;
  readonly fallback: A2UIFallback;
}

export interface A2UITable extends A2UIComponentBase {
  readonly type: "Table";
  readonly columns: { key: string; label: string }[];
  readonly rows: Record<string, unknown>[];
}

export interface A2UIChart extends A2UIComponentBase {
  readonly type: "Chart";
  readonly chartKind: "line" | "bar" | "pie";
  readonly title: string;
  readonly data: unknown;
}

export interface A2UIForm extends A2UIComponentBase {
  readonly type: "Form";
  readonly schema: unknown;
  readonly submitLabel?: string;
}

export interface A2UICard extends A2UIComponentBase {
  readonly type: "Card";
  readonly title: string;
  readonly body?: string;
  readonly actions?: { label: string; actionId: string }[];
}

export type A2UIComponent = A2UITable | A2UIChart | A2UIForm | A2UICard;
