SDK declarations and machine protocol
The baseline is SDK 0.1.1, hostApiMajor=1 and protocolVersion=1. Download declarations or machine protocol for development outside the package. Never include them in a runnable component.
The declarations define method/event shapes; contracts own authorization, failure, lifetime and cancellation. Type-checking does not prove a device or permission is available.
ts
/** WidgetWorkshop SDK 0.1.2; manifest requiredFeatures declares mandatory host features independently of SDK releases. */
/** Standard manifest tags use the lowercase English identifiers in protocol.json.contentTags; unknown values are omitted from display and upload. */
type WidgetTag = 'information' | 'productivity' | 'system' | 'files' | 'media' | 'decoration' | 'entertainment' | 'education' | 'lifestyle' | 'development';
type JsonValue = null | boolean | number | string | JsonValue[] | {[key: string]: JsonValue};
type WidgetCapability = 'external.open' | 'location' | 'notifications' | 'clipboard' | 'directory.write' | 'screen.capture';
interface WidgetContext {
apiMajor: 1; features: string[]; limits: Record<string, number>;
view: {kind:'main'|'panel';panelId?:string};
instanceId: string; displayId: string; visible: boolean;
/** Actual host display language, available without authorization; separate from the Windows regional format in system.locale. */
language: 'zh-CN' | 'en-US';
/** Actual host light/dark theme, including the host override; available without authorization and separate from system.theme. */
theme: 'light' | 'dark';
i18n: {defaultLanguage?: string; translations?: Record<string, Record<string, string>>};
configuration: Record<string, JsonValue>; capabilities: Partial<Record<WidgetCapability, boolean>>;
environment: WidgetEnvironment;
system: SystemContext;
audio: HostAudioPolicy;
runtime: RuntimeInfo;
}
interface SystemContext {
theme: 'light' | 'dark' | 'unknown'; locale: string | null;
/** Windows accent color as #RRGGBB; null when not sampled or unavailable. */
accentColor: string | null;
/** System text scale from 1 to 2.25, separate from display DPI; null when unavailable. */
textScaleFactor: number | null;
reducedMotion: boolean | null; highContrast: boolean | null; sessionLocked: boolean | null;
power: {source: 'ac' | 'battery' | 'unknown'; energySaver: boolean | null};
}
/** muted reflects effective native state, including the global override and instance mute. */
interface HostAudioPolicy {muted: boolean;}
interface RuntimeInfo {engine: 'webview2'; version: string; platform: 'windows'; architecture: 'x64';}
interface CompatibilityReport {
host: {features: string[]; limits: Record<string, number>; runtime: RuntimeInfo};
apis: {dedicatedWorker: boolean; offscreenCanvas: boolean; webAssembly: boolean; audioContext: boolean; gamepad: boolean};
devices: {webgl2: 'available' | 'unavailable'; audioPlayback: 'not-tested'; gamepadInput: 'not-tested'};
}
type InputRegion = {x:number; y:number; width:number; height:number; points?:never} |
{points:{x:number; y:number}[]; x?:never; y?:never; width?:never; height?:never};
interface WidgetEnvironment {
scale: number; editing: boolean; workArea: {width: number; height: number};
bounds: {x: number; y: number; width: number; height: number};
}
interface HostError extends Error { code: string; }
interface SaveSummary {slot: string; revision: string; savedAt: number;}
interface SaveSnapshot extends SaveSummary {value: JsonValue;}
interface DirectoryEntry { name: string; relativePath: string; kind: 'directory' | 'file'; sizeBytes: number; modifiedAt: string; }
type Header = {name: string; value: string; secretBindingId?: never; prefix?: never} |
{name: string; secretBindingId: string; prefix?: string; value?: never};
interface HostImage {mimeType:'image/png';bodyBase64:string;width:number;height:number;}
interface MediaSession {albumTitle:string;albumArtist:string;subtitle:string;trackNumber:number;albumTrackCount:number;genres:string[];playbackType:'music'|'video'|'image'|'unknown';timeline:{startMs:number;endMs:number;positionMs:number;minSeekMs:number;maxSeekMs:number;updatedAt:number};sessionId:string; title:string; artist:string; playback:'closed'|'opened'|'changing'|'stopped'|'playing'|'paused'|'unknown'; controls:{play:boolean; pause:boolean; next:boolean; previous:boolean; seek:boolean};}
interface Reminder {key:string; dueAt:number; expiresAt:number; title:string; body:string;}
interface WidgetContextMenuItem {id: string; label: string; enabled?: boolean; checked?: boolean;}
interface ImportedFile {fileId: string; name: string; sizeBytes: number;}
interface SelectedFiles {files: ImportedFile[];}
interface HostMethods {
'screen.capture.open': [Record<string,never>,{captureId:string}];
'screen.capture.read': [{captureId:string},{frame:HostImage|null}];
'screen.capture.close': [{captureId:string},Record<string,never>];
'desktop.pointer.get': [Record<string,never>,{position:{x:number;y:number}|null}];
'desktop.windows.get': [Record<string,never>,{windows:{bounds:{x:number;y:number;width:number;height:number};foreground:boolean}[];truncated:boolean}];
'system.activity.get': [Record<string,never>,{state:'active'|'idle'|'unknown'}];
'audio.output.get': [Record<string,never>,{volume:number;muted:boolean}];
'audio.output.set': [{volume:number;muted?:boolean}|{volume?:number;muted:boolean},{volume:number;muted:boolean}];
'files.image': [{fileId:string;kind:'icon'|'thumbnail';size:number},HostImage];
'directory.image': [{bindingId:string;relativePath:string;kind:'icon'|'thumbnail';size:number},HostImage];
'clipboard.readImage': [Record<string,never>,{image:HostImage|null}];
'clipboard.writeImage': [{bodyBase64:string},Record<string,never>];
'clipboard.readHtml': [Record<string,never>,{html:string|null}];
'clipboard.writeHtml': [{html:string;text:string},Record<string,never>];
'clipboard.readFiles': [Record<string,never>,SelectedFiles];
'media.artwork': [{sessionId:string},{image:HostImage|null}];
'directory.write': [{bindingId:string;relativePath:string;bodyBase64:string;overwrite?:boolean},{writtenBytes:number}];
'directory.mkdir': [{bindingId:string;relativePath:string},Record<string,never>];
'directory.rename': [{bindingId:string;relativePath:string;newRelativePath:string},Record<string,never>];
'directory.remove': [{bindingId:string;relativePath:string},Record<string,never>];
'exports.startDrag': [{exportId:string},{accepted:boolean}];
'shortcuts.setActions': [{actions:{id:string;label:string}[]},Record<string,never>];
'audio.capture.open': [Record<string,never>,{captureId:string;sampleRate:number;channels:number;format:'float32le'}];
'audio.capture.read': [{captureId:string;maxFrames:number},{bodyBase64:string;frames:number;droppedFrames:number}];
'audio.capture.close': [{captureId:string},Record<string,never>];
'panels.open': [{key:string;path:string;title:string;width:number;height:number},{panelId:string}];
'panels.activate': [{panelId:string},{activated:boolean}];
'panels.close': [{panelId:string},Record<string,never>];
'panels.post': [{panelId:string;value:JsonValue},Record<string,never>];
'credentials.set': [{key:string;value:string},Record<string,never>];
'credentials.get': [{key:string},{found:boolean;value:string|null}];
'credentials.remove': [{key:string},Record<string,never>];
'credentials.clear': [Record<string,never>,Record<string,never>];
'files.setDropEnabled': [{enabled:boolean}, Record<string,never>];
'contextMenu.setItems': [{items: WidgetContextMenuItem[]}, Record<string, never>];
'cache.get': [{key:string},{found:boolean;bodyBase64:string|null}];
'cache.put': [{key:string;bodyBase64:string},Record<string,never>];
'cache.remove': [{key:string},Record<string,never>];
'cache.clear': [Record<string,never>,Record<string,never>];
'reminders.set': [Reminder,Record<string,never>];
'reminders.list': [Record<string,never>,{items:Reminder[]}];
'reminders.remove': [{key:string},Record<string,never>];
'reminders.clear': [Record<string,never>,Record<string,never>];
'media.get': [Record<string,never>,{session:MediaSession|null}];
'media.control': [{sessionId:string;command:'play'|'pause'|'next'|'previous';positionMs?:never}|{sessionId:string;command:'seek';positionMs:number},{accepted:boolean}];
'clipboard.readText': [Record<string, never>, {text:string|null}];
'clipboard.writeText': [{text: string}, Record<string, never>];
'directory.watch.open': [{bindingId: string}, {watchId: string; revision: string; rescan: true}];
'directory.watch.poll': [{watchId: string}, {watchId: string; revision: string; rescan: true}];
'directory.watch.close': [{watchId: string}, Record<string, never>];
'lifecycle.finishClose': [{token: string; success: boolean}, Record<string, never>];
'network.open': [{url: string; method: string; headers: Header[]; bodyBase64?: string}, {streamId: string; status: number; headers: {name: string; value: string}[]; finalUrl: string}];
'network.read': [{streamId: string; offset: number; length: number}, {offset: number; bodyBase64: string; eof: boolean}];
'network.close': [{streamId: string}, Record<string, never>];
'collaboration.publish': [{value: JsonValue}, {id: string}];
'collaboration.get': [{afterId: string | null}, {found: boolean; id: string | null; value: JsonValue}];
'saves.context': [Record<string, never>, {scope: 'installation'}];
'saves.list': [Record<string, never>, {slots: SaveSummary[]}];
'saves.load': [{slot: string}, {found: boolean; current: SaveSnapshot | null; previous: SaveSummary | null; recovered: boolean}];
'saves.commit': [{slot: string; expectedRevision: string | null; value: JsonValue}, SaveSummary];
'saves.restore': [{slot: string; expectedRevision: string}, SaveSummary];
'files.open': [{multiple?:boolean}, ImportedFile | SelectedFiles];
'assets.open': [{path: string}, {fileId: string; name: string; sizeBytes: number}];
'exports.begin': [{name: string; sizeBytes: number}, {exportId: string}];
'exports.write': [{exportId: string; offset: number; bodyBase64: string}, {writtenBytes: number}];
'exports.save': [{exportId: string}, {name: string; sizeBytes: number}];
'exports.close': [{exportId: string}, Record<string, never>];
'files.read': [{fileId: string; offset: number; length: number}, {offset: number; bodyBase64: string; eof: boolean}];
'files.close': [{fileId: string}, Record<string, never>];
'window.setInputRegions': [{regions: InputRegion[]}, Record<string, never>];
'window.beginDrag': [Record<string, never>, Record<string, never>];
'notifications.show': [{title:string;body:string;actions?:{id:string;label:string}[]},{notificationId:string}];
/** Dismiss an immediate notification owned by this instance and document; repeated calls with a valid reference succeed. Success does not indicate that it was read. */
'notifications.dismiss': [{notificationId:string},Record<string,never>];
'config.get': [Record<string, never>, Record<string, JsonValue>];
'config.set': [{values: Record<string, JsonValue>}, Record<string, JsonValue>];
'storage.get': [{key: string}, {found: boolean; value: JsonValue}];
/** After instance and cancellation checks, reject new JSON values exceeding 256 KiB in UTF-8; a valid first write fully validates disk records and total quota. */
'storage.set': [{key: string; value: JsonValue}, Record<string, never>];
/** Cold removal validates only the target record and succeeds if absent; corruption still fails. A subsequent valid first set fully validates quota. */
'storage.remove': [{key: string}, Record<string, never>];
'window.setSize': [{width: number; height: number}, {width: number; height: number}];
'window.moveTo': [{x: number; y: number}, Record<string, never>];
'network.request': [{url: string; method: string; headers: Header[]; bodyBase64?: string}, {status: number; headers: {name: string; value: string}[]; bodyBase64: string; finalUrl: string}];
'system.metrics.get': [Record<string, never>, {sampledAt: string; cpuPercent: number | null; memoryUsedBytes: number | null; memoryTotalBytes: number | null; disks: {id: string; label: string; totalBytes: number | null; freeBytes: number | null}[]; networkReceiveBytesPerSecond: number | null; networkSendBytesPerSecond: number | null}];
'directory.list': [{bindingId: string; relativePath: string; cursor?: string | null}, {entries: DirectoryEntry[]; nextCursor: string | null}];
'directory.read': [{bindingId: string; relativePath: string}, {bodyBase64: string}];
'directory.cancel': [{cursor: string}, Record<string, never>];
'target.open': [{bindingId: string; directoryBindingId?: never; relativePath?: never} |
{directoryBindingId: string; relativePath: string; bindingId?: never}, Record<string, never>];
'external.open': [{url: string}, Record<string, never>];
'request.cancel': [{requestId: string}, Record<string, never>];
}
interface HostEvents {
'shortcuts.triggered': {id:string};
'notifications.activated': {notificationId:string;actionId:string|null};
'panels.message': {panelId:string;value:JsonValue};
'panels.closed': {panelId:string};
'files.dropped': SelectedFiles;
'files.dropFailed': {code:string;message:string};
'contextMenu.selected': {id: string};
'language.changed': {language: WidgetContext['language']};
'theme.changed': {theme: WidgetContext['theme']};
'lifecycle.closing': {token: string; reason: 'applicationExit'; remainingMs: number};
'audio.changed': HostAudioPolicy;
'system.changed': SystemContext;
'lifecycle.changed': {state: 'suspending' | 'resumed' | 'locked' | 'unlocked'};
'environment.changed': WidgetEnvironment;
'config.changed': Record<string, JsonValue>; 'capabilities.changed': Partial<Record<WidgetCapability, boolean>>;
'visibility.changed': {visible: boolean}; 'display.changed': {displayId: string}; 'error': HostError;
}
interface WidgetHost {
readonly i18n: {readonly language: 'zh-CN' | 'en-US'; t(key: string): string};
/** One bounded save opportunity per document before normal application exit; it cannot veto exit. */
onClosing(callback: (event: {reason: 'applicationExit'; remainingMs: number}) => void | Promise<void>): () => void;
elapsedSince(savedAt: number, options?: {now?: number; maxMs?: number}): {elapsedMs: number; clockMovedBack: boolean; capped: boolean};
ready: Promise<WidgetContext>; readonly context: WidgetContext | null;
/** Probe report for this document; API presence does not establish successful content execution. Audio requires explicit playback. */
compatibility(options?: {signal?: AbortSignal}): Promise<CompatibilityReport>;
call(method: 'files.open', params: {multiple:true}, options?: {signal?:AbortSignal}): Promise<SelectedFiles>;
call(method: 'files.open', params: {multiple?:false}, options?: {signal?:AbortSignal}): Promise<ImportedFile>;
call<M extends 'config.get' | 'system.metrics.get'>(method: M): Promise<HostMethods[M][1]>;
call<M extends keyof HostMethods>(method: M, params: HostMethods[M][0], options?: {signal?: AbortSignal}): Promise<HostMethods[M][1]>;
on<E extends keyof HostEvents>(event: E, callback: (data: HostEvents[E]) => void): () => void;
}
declare const widgetHost: WidgetHost;
interface Window { widgetHost: WidgetHost; }
/** input.pointer forwards normal touch/pen input; host cancellation through input.normalizedCancel has isTrusted=false.
* Cancellation cannot serve as a user gesture; either flag alone does not establish physical device availability. */Complete feature and budget data
The same machine protocol is used by both language editions. Feature presence indicates host support, not a grant or successful device test.
json
{
"protocolVersion": 1,
"apiMajor": 1,
"sdkVersion": "0.1.2",
"features": [
"i18n",
"config.get",
"config.set",
"storage.get",
"storage.set",
"storage.remove",
"window.setSize",
"window.moveTo",
"window.setInputRegions",
"window.beginDrag",
"files.open",
"files.open.multiple",
"files.drop",
"files.setDropEnabled",
"assets.open",
"exports.begin",
"exports.write",
"exports.save",
"exports.close",
"files.read",
"files.close",
"network.request",
"system.metrics.get",
"directory.list",
"directory.read",
"directory.cancel",
"target.open",
"external.open",
"request.cancel",
"notifications.show",
"notifications.dismiss",
"webassembly",
"location",
"events",
"context.visibility",
"context.environment",
"directory.snapshot",
"network.safeRedirect",
"dedicatedWorker",
"memory.media",
"context.system",
"context.language",
"context.theme",
"context.system.accentColor",
"context.system.textScaleFactor",
"contextMenu.setItems",
"context.lifecycle",
"runtime.info",
"saves.list",
"saves.load",
"saves.commit",
"saves.restore",
"network.open",
"network.read",
"network.close",
"context.audio",
"context.closing",
"lifecycle.finishClose",
"directory.watch.open",
"directory.watch.poll",
"directory.watch.close",
"clipboard.writeText",
"input.pointer",
"input.normalizedCancel",
"input.polygons",
"media.get",
"media.control",
"reminders.set",
"reminders.list",
"reminders.remove",
"reminders.clear",
"cache.get",
"cache.put",
"cache.remove",
"cache.clear",
"saves.context",
"collaboration.publish",
"collaboration.get",
"clipboard.readText",
"directory.write",
"directory.mkdir",
"directory.rename",
"directory.remove",
"exports.startDrag",
"shortcuts.setActions",
"audio.capture.open",
"audio.capture.read",
"audio.capture.close",
"notifications.actions",
"panels.open",
"panels.close",
"panels.post",
"credentials.set",
"credentials.get",
"credentials.remove",
"credentials.clear",
"panels.activate",
"screen.capture.open",
"screen.capture.read",
"screen.capture.close",
"desktop.pointer.get",
"desktop.windows.get",
"system.activity.get",
"audio.output.get",
"audio.output.set",
"files.image",
"clipboard.readImage",
"clipboard.writeImage",
"clipboard.readHtml",
"clipboard.writeHtml",
"clipboard.readFiles",
"media.artwork",
"directory.image"
],
"limits": {
"contextMenuItems": 16,
"contextMenuIdCharacters": 64,
"contextMenuLabelCharacters": 80,
"maxMessageBytes": 8388608,
"messagesPerSecond": 60,
"messageBurst": 16,
"messageBytesPerSecond": 8388608,
"messageBytesBurst": 16777216,
"globalMessagesPerSecond": 240,
"globalMessageBurst": 64,
"globalMessageBytesPerSecond": 33554432,
"globalMessageBytesBurst": 67108864,
"maxPendingRequests": 16,
"requestTimeoutMs": 30000,
"requestBodyBytes": 1048576,
"responseBodyBytes": 4194304,
"fileBytes": 4194304,
"storageValueBytes": 262144,
"storageInstanceBytes": 16777216,
"directoryPageEntries": 100,
"directorySnapshotEntries": 10000,
"directorySnapshotBytes": 8388608,
"directoryCursorTtlMs": 30000,
"directorySnapshotsPerInstance": 4,
"directorySnapshotsGlobal": 32,
"directorySnapshotsBytesGlobal": 33554432,
"notificationsPerInstallationPerMinute": 3,
"notificationsGlobalPerMinute": 10,
"notificationTitleUnits": 48,
"notificationBodyUnits": 200,
"inputRegions": 64,
"inputPolygonPoints": 32,
"inputPolygonVertices": 512,
"importedFileBytes": 268435456,
"fileChunkBytes": 65536,
"exportBytes": 67108864,
"exportsPerInstance": 2,
"exportsGlobal": 16,
"exportsBytesGlobal": 268435456,
"filesPerInstance": 16,
"fileBatchCount": 16,
"fileBatchBytes": 268435456,
"filesGlobal": 16,
"fileIdleTtlMs": 30000,
"fileTtlMs": 300000,
"saveSnapshotBytes": 262144,
"saveSlotsPerInstance": 8,
"networkStreamBytes": 268435456,
"networkChunkBytes": 65536,
"networkStreamsPerInstance": 2,
"networkStreamsGlobal": 16,
"networkStreamIdleTtlMs": 30000,
"networkStreamTtlMs": 300000,
"networkHeaderEntries": 64,
"audioScopeProcesses": 64,
"audioDevices": 16,
"audioSessions": 512,
"audioInstallations": 64,
"audioScopesPerInstallation": 16,
"closingMs": 2000,
"closingInstances": 64,
"closingHandlers": 1,
"directoryWatchesPerInstance": 2,
"directoryWatchesGlobal": 16,
"directoryWatchBufferBytes": 65536,
"directoryWatchDebounceMs": 200,
"directoryWatchIdleTtlMs": 30000,
"directoryWatchTtlMs": 300000,
"clipboardTextUnits": 32768,
"clipboardTextBytes": 65536,
"clipboardNativeUnits": 65536,
"inputPointers": 8,
"mediaSessionsGlobal": 64,
"mediaSessionTtlMs": 60000,
"mediaWaitMs": 3000,
"mediaSampleMs": 1000,
"mediaCommandsPerInstallationPerMinute": 30,
"mediaCommandsGlobalPerMinute": 120,
"remindersPerInstance": 8,
"remindersPerInstallation": 32,
"remindersGlobal": 128,
"reminderHorizonMs": 2592000000,
"reminderValidityMs": 86400000,
"reminderWritesPerInstallationPerMinute": 30,
"reminderWritesGlobalPerMinute": 120,
"cacheItemBytes": 1048576,
"cacheItemsPerInstance": 16,
"cacheBytesPerInstance": 8388608,
"cacheItemsPerInstallation": 64,
"cacheBytesPerInstallation": 33554432,
"cacheItemsGlobal": 256,
"cacheBytesGlobal": 134217728,
"cacheLifetimeMs": 604800000,
"cacheWritesPerInstallationPerMinute": 30,
"cacheWritesGlobalPerMinute": 120,
"saveProfilesPerInstallation": 8,
"saveProfileNameCharacters": 64,
"saveProfileSelectionsPerInstallation": 256,
"collaborationMessageBytes": 16384,
"collaborationMessagesGlobal": 64,
"collaborationBytesGlobal": 1048576,
"collaborationLifetimeMs": 30000,
"collaborationPublishesPerSecondPerInstallation": 4,
"collaborationPublishesPerMinutePerInstallation": 60,
"collaborationPublishesPerMinuteGlobal": 240,
"clipboardReadsPerInstallationPerMinute": 60,
"clipboardReadsGlobalPerMinute": 240,
"clipboardWritesPerInstallationPerMinute": 30,
"clipboardWritesGlobalPerMinute": 120,
"directoryWriteBytes": 4194304,
"exportDragFilesGlobal": 1,
"widgetShortcutActions": 8,
"widgetShortcutBindings": 128,
"audioCaptureSessionsPerInstance": 1,
"audioCaptureSessionsGlobal": 4,
"audioCaptureReadFrames": 4096,
"audioCaptureBufferSeconds": 1,
"notificationActions": 3,
"notificationActionRecords": 128,
"notificationActionTtlMs": 600000,
"panelsPerInstance": 2,
"panelsGlobal": 16,
"panelMessageBytes": 65536,
"credentialKeysPerInstallation": 32,
"credentialValueBytes": 32768,
"credentialInstallationBytes": 262144,
"screenCapturesPerInstance": 1,
"screenCapturesGlobal": 2,
"screenCaptureIdleMs": 30000,
"screenCaptureLifetimeMs": 300000,
"screenCaptureReadIntervalMs": 100,
"screenCaptureSourcePixels": 16777216,
"imageBytes": 4194304,
"imageMaxSide": 2048,
"fileImageMaxSide": 256,
"clipboardHtmlBytes": 1048576,
"clipboardImagePixels": 4194304,
"desktopWindows": 128,
"desktopWindowScan": 2048,
"desktopPointerIntervalMs": 50,
"desktopWindowsIntervalMs": 250,
"systemActivityIntervalMs": 1000,
"systemIdleThresholdMs": 60000,
"audioOutputIntervalMs": 100
},
"request": {
"id": "canonical decimal string 1..9007199254740991, strictly increasing per document",
"params": "JSON object"
},
"events": {
"files.dropped": "{files:{fileId:string,name:string,sizeBytes:number}[]}",
"files.dropFailed": "{code:string,message:string}",
"config.changed": "configuration object",
"capabilities.changed": "Record<string, boolean>",
"visibility.changed": "{visible:boolean}",
"display.changed": "{displayId:string}",
"environment.changed": "{scale:number,editing:boolean,workArea:{width:number,height:number},bounds:{x:number,y:number,width:number,height:number}}",
"system.changed": "SystemContext",
"lifecycle.changed": "{state:suspending|resumed|locked|unlocked}",
"audio.changed": "{muted:boolean}",
"lifecycle.closing": "{token:string,reason:applicationExit,remainingMs:number}",
"language.changed": "{language:zh-CN|en-US}",
"theme.changed": "{theme:light|dark}",
"contextMenu.selected": "{id:string}",
"shortcuts.triggered": "{id:string}",
"notifications.activated": "{notificationId:string,actionId:string|null}",
"panels.message": "{panelId:string,value:JsonValue}",
"panels.closed": "{panelId:string}"
},
"packageRules": {
"reservedFileNames": [
"widget-host.js",
"widget-host.d.ts",
"protocol.json"
],
"version": 1,
"maxEntries": 10000,
"maxFileBytes": 67108864,
"maxPackageBytes": 268435456,
"maxRelativePathCharacters": 1024,
"maxDepth": 64,
"manifestBytes": 262144,
"previewBytes": 1048576,
"previewDimension": 4096,
"resourceTypes": [
{
"extensions": [
".html",
".htm"
],
"mime": "text/html; charset=utf-8",
"kind": "html"
},
{
"extensions": [
".js",
".mjs"
],
"mime": "text/javascript",
"kind": "script"
},
{
"extensions": [
".css"
],
"mime": "text/css",
"kind": "style"
},
{
"extensions": [
".json"
],
"mime": "application/json",
"kind": "data"
},
{
"extensions": [
".wasm"
],
"mime": "application/wasm",
"kind": "wasm"
},
{
"extensions": [
".svg"
],
"mime": "image/svg+xml",
"kind": "image"
},
{
"extensions": [
".png"
],
"mime": "image/png",
"kind": "image"
},
{
"extensions": [
".jpg",
".jpeg"
],
"mime": "image/jpeg",
"kind": "image"
},
{
"extensions": [
".webp"
],
"mime": "image/webp",
"kind": "image"
},
{
"extensions": [
".gif"
],
"mime": "image/gif",
"kind": "image"
},
{
"extensions": [
".woff2"
],
"mime": "font/woff2",
"kind": "font"
},
{
"extensions": [
".woff"
],
"mime": "font/woff",
"kind": "font"
},
{
"extensions": [
".mp4"
],
"mime": "video/mp4",
"kind": "media"
},
{
"extensions": [
".webm"
],
"mime": "video/webm",
"kind": "media"
},
{
"extensions": [
".mp3"
],
"mime": "audio/mpeg",
"kind": "media"
},
{
"extensions": [
".wav"
],
"mime": "audio/wav",
"kind": "media"
},
{
"extensions": [
".ico"
],
"mime": "application/octet-stream",
"kind": "image"
},
{
"extensions": [
".ttf",
".otf"
],
"mime": "application/octet-stream",
"kind": "font"
},
{
"extensions": [
".ogg"
],
"mime": "application/octet-stream",
"kind": "media"
},
{
"extensions": [
".txt",
".map",
".bin",
".d.ts"
],
"mime": "application/octet-stream",
"kind": "data"
}
],
"referenceScan": {
"fileBytes": 2097152,
"totalBytes": 33554432,
"maxReferences": 4096,
"maxIssues": 256,
"maxTokensPerFile": 100000,
"maxUrlCharacters": 2048
}
},
"contentTags": [
{
"name": "information",
"enUS": "Information",
"zhCN": "\u8d44\u8baf"
},
{
"name": "productivity",
"enUS": "Productivity",
"zhCN": "\u6548\u7387"
},
{
"name": "system",
"enUS": "System",
"zhCN": "\u7cfb\u7edf"
},
{
"name": "files",
"enUS": "Files",
"zhCN": "\u6587\u4ef6"
},
{
"name": "media",
"enUS": "Media",
"zhCN": "\u5a92\u4f53"
},
{
"name": "decoration",
"enUS": "Decoration",
"zhCN": "\u88c5\u9970"
},
{
"name": "entertainment",
"enUS": "Entertainment",
"zhCN": "\u5a31\u4e50"
},
{
"name": "education",
"enUS": "Education",
"zhCN": "\u6559\u80b2"
},
{
"name": "lifestyle",
"enUS": "Lifestyle",
"zhCN": "\u751f\u6d3b"
},
{
"name": "development",
"enUS": "Development",
"zhCN": "\u5f00\u53d1"
}
]
}