@microsoft/teams-js
Version:
Microsoft Client SDK for building app for Microsoft hosts
122 lines (121 loc) • 3.73 kB
TypeScript
import { RenderingSurfaces } from '../../public';
export interface ISecurityPolicy {
connectDomains?: string[];
resourceDomains?: string[];
isTrusted?: boolean;
}
export type Theme = 'light' | 'dark';
export type SafeAreaInsets = {
top: number;
bottom: number;
left: number;
right: number;
};
export type SafeArea = {
insets: SafeAreaInsets;
};
export type DeviceType = 'mobile' | 'tablet' | 'desktop' | 'unknown';
export type UserAgent = {
device: {
type: DeviceType;
};
capabilities: {
hover: boolean;
touch: boolean;
};
};
/**
* Options for requesting a modal dialog
*/
export interface IModalOptions {
/** Unique identifier for the modal */
id: string;
/** Title at the top of the modal window */
title?: string;
/** Inner HTML string inserted into the modal's body */
content: string;
/** Preferred modal width in pixels */
width?: number;
/** Preferred modal height in pixels */
height?: number;
}
/**
* Response from requesting a modal dialog
*/
export interface IModalResponse {
/** A DOM element representing the modal's root */
modalElement: HTMLElement;
}
/** Declare generic JSON - serializable structure */
export interface JSONObject {
[key: string]: JSONValue;
}
export interface JSONArray extends Array<JSONValue> {
}
export type JSONValue = string | number | boolean | null | JSONObject | JSONArray;
/** Display mode */
export type DisplayMode = 'pip' | 'inline' | 'fullscreen';
/**
* MCP-compatible tool input structure following OpenAI MCP server specification
*/
export interface IToolInput {
/** The name of the tool to call */
name: string;
/** Arguments passed to the tool as key-value pairs */
arguments?: Record<string, unknown>;
}
/**
* MCP-compatible tool output structure matching exact MCP schema
*/
export interface IToolOutput {
/** Whether the tool call resulted in an error */
isError?: boolean;
/** Array of content blocks returned by the tool */
content: Array<{
/** Type of content block */
type: 'text' | 'image' | 'resource';
/** Text content (for type: 'text') */
text?: string;
/** Image data (for type: 'image') */
data?: string;
/** MIME type (for type: 'image') */
mimeType?: string;
/** Resource URI (for type: 'resource') */
uri?: string;
/** Optional metadata for any content type */
annotations?: {
/** Audience for this content (user, assistant) */
audience?: Array<'user' | 'assistant'>;
/** Priority level */
priority?: number;
};
}>;
/** UI widget data */
structuredContent?: unknown;
/** MCP metadata object */
_meta?: Record<string, unknown>;
}
/**
* Widget context similar to IWidgetHost structure - simplified for widget rendering
*/
export interface IWidgetContext {
/** Unique identifier for the widget instance */
widgetId: string;
/** Widget HTML content to render */
html: string;
/** widget domain that developer has registered their app to */
domain: string;
/** Content Security policy for the widget */
securityPolicy?: ISecurityPolicy;
/** OpenAI-compatible object with widget globals and API functions */
openai: {
theme?: Theme;
userAgent?: UserAgent;
locale?: string;
displayMode?: DisplayMode;
safeArea?: SafeArea;
maxHeight?: number;
view?: RenderingSurfaces;
widgetState?: JSONValue;
};
}