Kun Extension API 参考

August 14, 2026 · View on GitHub

Extension API:v1.2.0(稳定) 适用 Kun:以扩展 Manifest 的 engines.kun兼容矩阵为准 English: Kun Extension API Reference

本页是 @kun/extension-api@kun/extension-react@kun/extension-test 的独立公开 API 参考。中文行为指南仍是规范主源;这里精确列出包入口、核心服务和由 TypeScript 公共模块生成的导出清单。未出现在清单或包 exports map 中的源码路径都不是受支持 API。

版本与权威来源

三个 SDK 当前版本均为 1.2.0,对应 Extension API major 1。Host 继续接受 v1.1 与 v1.0 Manifest。v1.2 以可选方式新增 composer context、媒体调度、有界文档/归档和真实本地音视频分析 surface,不改变既有 v1.1 或 v1.0 方法。Manifest 字段以生成的 JSON SchemaExtensionManifestSchema 为机器真源;Host API、事件和 payload 以发布包的 .d.ts 与 runtime Schema 为真源。

公开入口、export 或可达 .d.ts 发生任何变化时,public surface SHA-256 会变化,文档门禁要求同时更新本页和 API Changelog。只改本表的摘要值而不记录兼容性影响,不算完成发布审查。

包与入口

用途唯一受支持入口
@kun/extension-apiFramework-neutral Manifest、生命周期、Host client、Agent、工具、Provider、账号、存储、网络、UI、media、job 和 artifact 契约@kun/extension-api;另有只读 @kun/extension-api/manifest.schema.json
@kun/extension-react基于 ExtensionHostClient 的 React Provider、hooks 和状态组件@kun/extension-react
@kun/extension-testFake Host/transport/service 与 ExtensionTestHarness@kun/extension-test

不要导入 src/*dist/*、Kun runtime、renderer store、Electron IPC 或其它未声明 subpath。即使文件在开发仓库或安装包里存在,也没有 SemVer 保证。

Framework-neutral Host API

Node 入口通常接收 Host 创建的 ExtensionContext;Webview 使用 Host 提供的窄 HostTransport 创建 ExtensionHostClient。调用者不提供 extension identity、runtime token 或授权结果。

import { ExtensionHostClient, type ExtensionContext, type HostTransport } from '@kun/extension-api'

export async function activate(context: ExtensionContext): Promise<void> {
  context.subscriptions.add(
    await context.commands.registerCommand('refresh', async () => ({ refreshed: true }))
  )
}

export function createViewClient(transport: HostTransport): ExtensionHostClient {
  return new ExtensionHostClient(transport)
}

ExtensionContext 服务

属性公开契约
subscriptions, onDidError生命周期释放与结构化扩展错误
commands声明过的命令注册、执行与 handler disposal
storage, configurationextension/workspace 隔离状态与声明式设置;不保存秘密
networkpermission/domain/account 约束的 Broker fetch
uitheme、locale、View state、Host message、通知和主会话上下文挂载
agent, threads扩展自有 Agent run、事件、steer/cancel 和 thread projection
toolsManifest 声明工具的注册、progress、cancellation 与 bounded result
modelProviders自定义 Provider adapter 的 probe/listModels/stream/cancel/countTokens
authenticationredacted account、受保护认证 session、authenticated fetch 和显式 secret reveal
media受保护选择、不透明 handle、bounded metadata/probe、View resource lease 和 brokered FFmpeg job 创建
jobs扩展自有 durable job 的 get/list/subscribe/cancel;不提供通用扩展 worker 或 jobs.start
workspace, workspaceContext已授权 root 内的文件操作与当前 workspace/trust 投影

Media 方法要求最小化的 media.readmedia.processmedia.export grant,以及适用的 workspace permission。pickFilespickSaveTargetopenViewResourceperformArtifactAction 要求受保护的交互 surface;纯 headless 执行会返回结构化 interaction-required 或 unavailable 错误。performArtifactAction 只接受 opaque artifact ID 和 open/reveal,owner、精确版本与 workspace 由 Host 派生。Handle、artifact reference、action response 和 kun-media:// lease 都不能替代绝对路径。Lease URL 是短期 View resource,不得持久化。

Picker、播放、FFmpeg、artifact、headless 和排错契约详见扩展媒体与后台任务

Job 观察要求 jobs.managejobs.subscribe() 从可选的不透明 cursor 之后重放保留事件,再交付 bounded live event;replayGap 提醒调用者从随附 snapshot 刷新。取消是幂等的,terminal job 保留原始 outcome。只有 media.startFfmpegJob()、音频分析、归档创建等受支持 core broker 可以创建 job;扩展不能注册任意 worker。

ui.showNotification(options) 返回用户选择的 action id;关闭、45 秒超时、工作台 lease 失效或扩展停用返回 undefined。它不返回内部通知实例 ID,也不要求存在 Webview Session。

ui.attachComposerContext(request) 仅允许已认证的交互式 Extension View 在获得 ui.actions 后调用。请求最多携带 16 KiB、深度和条目数受限且不含文件路径的 JSON reference;Host 重新校验当前 View、扩展版本、workspace trust 与权限,并补充不可伪造的扩展/View/workspace provenance。成功结果在匹配 workspace 的主会话输入框显示为可移除上下文,并只随下一次成功创建的主会话 turn 消费一次。模型只把它视为 user message 中的不可信 reference data,不会放入稳定 system prefix;Node Host 扩展不能用它绕过 View 身份边界。

Runtime Schema 与类型

Schema 结尾的导出是 runtime validation 值;同名或相邻的 TypeScript type/interface 描述通过验证后的静态形状。例如 AgentRunSchema/AgentRunToolResultSchema/ToolResult。输入使用 z.input 推导时可能允许 Schema 默认字段省略,输出类型则反映规范化结果。

Manifest 工具的 outputSchema 描述并验证 ToolResult.content,不是整个 ToolResult envelope。省略它表示只应用通用 JSON、大小和策略限制,并不关闭输出上限。

ToolResult 和 terminal JobResult 可以在顶层提供 generatedArtifacts。每个 artifact 包含 durable opaque ownership、completion、media-handle、MIME、size、availability 和 provenance metadata;不包含绝对路径或临时播放 URL。ResultPreviewSource 可引用 artifact 和 media handle,同时保留 v1.0 attachment/relative-path source 字段。

React bindings

ExtensionViewProvider 提供一个已绑定的 ExtensionHostClientuseThemeuseLocaleuseViewStateuseHostMessageusePostHostMessageuseCommanduseAgentRunuseAccountsuseProviderStatususeConfiguration 复用 framework-neutral 语义;它们不会获得额外权限。ExtensionAsyncBoundaryAgentRunStatus 是可选 Host-aware 呈现组件。

Test harness

createExtensionTestHarness/ExtensionTestHarness 组合 FakeHostTransport 与 fake storage、workspace、Agent、tool、Provider、account、Webview、media 和 durable-job service。FakeMediaServiceFakeJobServicecreateGeneratedArtifactFixture() 提供确定性的受保护选择、probe、FFmpeg admission、progress、restart、cancellation race、executable unavailable、revocation 和 artifact 行为,不需要真实 media tool 或 wall-clock wait。测试仍应声明与生产相同的 permission/workspace/account scope;fake service 不会让生产 Broker 自动放行。

生成的公开导出清单

以下区域由 node scripts/generate-extension-api-reference.mjs 从 package exports、TypeScript module symbols 和公开入口可达的内存 .d.ts 图计算。手工编辑会被 npm run check:extension-docs 拒绝。

SDK 包版本公开入口公开导出数公开 surface SHA-256
@kun/extension-api1.2.0.
./manifest.schema.json
498a7d676f0869a5c40f73bff7b30e567e7c5efa0536b0650b1fd30ee82551d6cf8
@kun/extension-react1.2.0.22e2099a64dc22c05056dca0c599bafdfb22702b6d57e9b60edd2154b165323322
@kun/extension-test1.2.0.16fccbdd3fb3400ce179f8d6c3ae1d191bfe3488ef125577423f3d2b3f4fad851d
SDK 包源码模块运行时导出类型导出
@kun/extension-apiaccountsAccountSchema
AccountSessionSchema
AccountStatusSchema
AuthenticatedFetchRequestSchema
AuthenticationProviderDeclarationSchema
AuthenticationTypeSchema
CreateAccountSessionRequestSchema
CredentialReferenceSchema
ListAccountsRequestSchema
ProviderBindingSchema
RevealSecretRequestSchema
Account
AccountSession
AccountStatus
AuthenticatedFetchRequest
AuthenticationProviderDeclaration
AuthenticationType
CreateAccountSessionRequest
CredentialReference
ListAccountsRequest
ProviderBinding
RevealSecretRequest
@kun/extension-apiagentAgentBudgetSchema
AgentCancelRequestSchema
AgentCreateRunRequestSchema
AgentCreateRunResponseSchema
AgentInputSchema
AgentMutationResultSchema
AgentProfileDeclarationSchema
AgentRunEventSchema
AgentRunSchema
AgentRunStateSchema
AgentSteerRequestSchema
AgentSubscribeRequestSchema
ExtensionThreadProjectionSchema
ExtensionVisibilitySchema
ListOwnThreadsRequestSchema
ListOwnThreadsResponseSchema
ResolvedAgentProfileSchema
AgentBudget
AgentCancelRequest
AgentCreateRunRequest
AgentCreateRunResponse
AgentInput
AgentMutationResult
AgentProfileDeclaration
AgentProfileDeclarationInput
AgentRun
AgentRunEvent
AgentRunState
AgentSteerRequest
AgentSubscribeRequest
ExtensionThreadProjection
ExtensionVisibility
ListOwnThreadsRequest
ListOwnThreadsResponse
ResolvedAgentProfile
@kun/extension-apiartifactsArtifactHostActionRequestSchema
ArtifactHostActionResultSchema
ArtifactHostActionSchema
ArtifactMediaHandleIdSchema
GeneratedArtifactAvailabilitySchema
GeneratedArtifactIdSchema
GeneratedArtifactMediaKindSchema
GeneratedArtifactProvenanceSchema
GeneratedArtifactSchema
GeneratedArtifactsSchema
ArtifactHostAction
ArtifactHostActionRequest
ArtifactHostActionResult
ArtifactMediaHandleId
GeneratedArtifact
GeneratedArtifactAvailability
GeneratedArtifactId
GeneratedArtifactInput
GeneratedArtifactMediaKind
GeneratedArtifactProvenance
GeneratedArtifacts
@kun/extension-apiclientExtensionHostClient
@kun/extension-apicommonContributionIdSchema
ExtensionIdentitySchema
extensionIdOf
ExtensionIdSchema
ExtensionNameSchema
JsonObjectSchema
JsonValueSchema
LocalIdSchema
PageInfoSchema
PageRequestSchema
PublisherSchema
qualifiedContributionId
RelativePathSchema
SEMVER_PATTERN
SemverRangeSchema
SemverSchema
ExtensionIdentity
JsonObject
JsonPrimitive
JsonValue
PageInfo
PageRequest
@kun/extension-apicompatibilityApiNegotiationRequestSchema
ApiNegotiationResultSchema
CompatibilityDiagnosticSchema
CompatibilityDimensionSchema
CompatibilityReportSchema
negotiateApiVersion
supportedApiMajors
ApiNegotiationRequest
ApiNegotiationResult
CompatibilityDiagnostic
CompatibilityDimension
CompatibilityReport
@kun/extension-apicomposer-contextComposerContextAttachmentRequestSchema
ComposerContextAttachmentSchema
ComposerContextProvenanceSchema
ComposerContextReferenceSchema
DevPreviewComposerContextProvenanceSchema
ExtensionComposerContextProvenanceSchema
MAX_COMPOSER_CONTEXT_ATTACHMENTS
MAX_COMPOSER_CONTEXT_REFERENCE_BYTES
WorkspaceViewComposerContextProvenanceSchema
ComposerContextAttachment
ComposerContextAttachmentRequest
ComposerContextProvenance
@kun/extension-apicontent-scriptsHostContentScriptContextSchema
HostContentScriptDiagnosticSchema
HostContentScriptContext
HostContentScriptDiagnostic
KunHostContentScriptApi
@kun/extension-apierrorsDiagnosticSchema
EXTENSION_ERROR_CODES
ExtensionApiError
ExtensionErrorCodeSchema
ExtensionErrorSchema
Diagnostic
ExtensionErrorCode
ExtensionErrorData
@kun/extension-apiextension-contextcreateExtensionContextExtensionContext
@kun/extension-apijobsJobCancellationResultSchema
JobCancelRequestSchema
JobCursorSchema
JobErrorSchema
JobEventNotificationSchema
JobEventSchema
JobEventTypeSchema
JobFilterSchema
JobGetRequestSchema
JobIdSchema
JobListRequestSchema
JobPageSchema
JobProgressSchema
JobReferenceSchema
JobResultSchema
JobSnapshotSchema
JobStateSchema
JobSubscribeRequestSchema
JobSubscriptionResponseSchema
JobTerminalStateSchema
JobCancellationResult
JobCancelRequest
JobCursor
JobError
JobEvent
JobEventNotification
JobEventType
JobFilter
JobGetRequest
JobId
JobListRequest
JobPage
JobProgress
JobReference
JobResult
JobResultInput
JobSnapshot
JobState
JobSubscribeRequest
JobSubscriptionResponse
JobTerminalState
@kun/extension-apilifecycleActivationContextDataSchema
DisposableStore
Emitter
toDisposable
WorkspaceContextSchema
Activate
ActivationContextData
Deactivate
Disposable
DisposeLike
Event
StateMigration
StateMigrationContext
WorkspaceContext
@kun/extension-apimanifestActionContributionSchema
ActivationEventSchema
CommandContributionSchema
ContextMenuContributionSchema
CURRENT_EXTENSION_API_VERSION
CURRENT_MANIFEST_VERSION
ExtensionContributionsSchema
ExtensionManifestSchema
ExternalBrowserContributionSchema
ExternalBrowserSiteSchema
HostContentScriptContributionSchema
HostSurfaceMatcherSchema
MANIFEST_CONTRIBUTION_PERMISSION_REQUIREMENTS
NotificationContributionSchema
parseExtensionManifest
requiredManifestPermissions
resolveExtensionManifestLocale
ResultPreviewContributionSchema
SettingsContributionSchema
SUPPORTED_EXTENSION_API_VERSIONS
ViewContainerContributionSchema
ViewContributionSchema
ActionContribution
ActivationEvent
CommandContribution
ContextMenuContribution
ExtensionContributions
ExtensionContributionsInput
ExtensionManifest
ExtensionManifestInput
ExternalBrowserContribution
ExternalBrowserSite
HostContentScriptContribution
HostSurfaceMatcher
NotificationContribution
ResultPreviewContribution
SettingsContribution
ViewContainerContribution
ViewContribution
@kun/extension-apimanifest-localizationManifestContributionLocalizationsSchema
ManifestLocaleTagSchema
ManifestLocalizationSchema
ManifestLocalizationsSchema
ManifestContributionLocalizations
ManifestLocaleTag
ManifestLocalization
ManifestLocalizations
@kun/extension-apimedia-archiveMAX_MEDIA_ARCHIVE_ENTRIES
MAX_MEDIA_ARCHIVE_INLINE_BYTES
MEDIA_ERROR_CODES
MediaArchiveInlineEntrySchema
MediaArchiveInputEntrySchema
MediaArchiveJobResultSchema
MediaArchivePathSchema
MediaErrorCodeSchema
MediaErrorSchema
MediaStartArchiveJobRequestSchema
MediaStartArchiveJobResultSchema
MediaArchiveInlineEntry
MediaArchiveInputEntry
MediaArchiveJobResult
MediaArchivePath
MediaError
MediaErrorCode
MediaStartArchiveJobRequest
MediaStartArchiveJobResult
ParsedMediaStartArchiveJobRequest
@kun/extension-apimedia-audio-analysisMediaAudioAnalysisCapabilitiesSchema
MediaAudioAnalysisCapabilitySchema
MediaAudioAnalysisKindSchema
MediaAudioAnalysisResultSchema
MediaAudioAnalysisUnavailableCodeSchema
MediaBeatAnalysisResultSchema
MediaSilenceAnalysisResultSchema
MediaStartAudioAnalysisJobRequestSchema
MediaStartAudioAnalysisJobResultSchema
MediaStartBeatAnalysisJobRequestSchema
MediaStartSilenceAnalysisJobRequestSchema
MediaStartSyncFeaturesAnalysisJobRequestSchema
MediaSyncFeaturesAnalysisResultSchema
MediaAudioAnalysisCapabilities
MediaAudioAnalysisCapability
MediaAudioAnalysisKind
MediaAudioAnalysisResult
MediaAudioAnalysisUnavailableCode
MediaBeatAnalysisResult
MediaSilenceAnalysisResult
MediaStartAudioAnalysisJobRequest
MediaStartAudioAnalysisJobResult
MediaStartBeatAnalysisJobRequest
MediaStartSilenceAnalysisJobRequest
MediaStartSyncFeaturesAnalysisJobRequest
MediaSyncFeaturesAnalysisResult
ParsedMediaStartAudioAnalysisJobRequest
@kun/extension-apimedia-corecontainsAsciiControlCharacters
MAX_MEDIA_OTIO_TEXT_BYTES
MAX_MEDIA_SUBTITLE_TEXT_BYTES
MAX_MEDIA_TEXT_BYTES
MediaCacheFormatSchema
MediaCapabilitiesSchema
MediaCapabilityFeatureSchema
MediaCreateCacheTargetRequestSchema
MediaCreateCacheTargetResultSchema
MediaExecutableCapabilitySchema
MediaHandleIdSchema
MediaHandleModeSchema
MediaJobPrioritySchema
MediaJobSchedulingSchema
MediaKindSchema
MediaLeaseIdSchema
MediaMetadataSchema
MediaOpenViewResourceRequestSchema
MediaPickerFilterSchema
MediaPickFilesRequestSchema
MediaPickFilesResultSchema
MediaPickSaveTargetRequestSchema
MediaPickSaveTargetResultSchema
MediaProbeRequestSchema
MediaProbeResultSchema
MediaProbeStreamSchema
MediaReadTextRequestSchema
MediaReadTextResultSchema
MediaReleaseRequestSchema
MediaReleaseResultSchema
MediaResourceLeaseSchema
MediaStartFfmpegJobRequestSchema
MediaStartFfmpegJobResultSchema
MediaStatRequestSchema
MediaStreamDispositionSchema
MediaTextOutputMimeTypeSchema
MediaTextOutputSchema
RationalSchema
MediaCacheFormat
MediaCapabilities
MediaCapabilityFeature
MediaCreateCacheTargetRequest
MediaCreateCacheTargetResult
MediaExecutableCapability
MediaHandleId
MediaHandleMode
MediaJobPriority
MediaJobScheduling
MediaKind
MediaLeaseId
MediaMetadata
MediaOpenViewResourceRequest
MediaPickerFilter
MediaPickFilesRequest
MediaPickFilesResult
MediaPickSaveTargetRequest
MediaPickSaveTargetResult
MediaProbeRequest
MediaProbeResult
MediaProbeStream
MediaReadTextRequest
MediaReadTextResult
MediaReleaseRequest
MediaReleaseResult
MediaResourceLease
MediaStartFfmpegJobRequest
MediaStartFfmpegJobResult
MediaStatRequest
MediaStreamDisposition
MediaTextOutput
MediaTextOutputMimeType
Rational
@kun/extension-apimedia-visual-analysisMediaAnalyzeVisualFramesRequestSchema
MediaAnalyzeVisualFramesResultSchema
MediaEmbedVisualQueryRequestSchema
MediaEmbedVisualQueryResultSchema
MediaInstallVisualModelRequestSchema
MediaVisualAdapterBindingSchema
MediaVisualFrameSampleSchema
MediaVisualModelDescriptorSchema
MediaVisualModelFileSchema
MediaVisualModelInstallReceiptSchema
MediaVisualModelStatusSchema
MediaVisualUnavailableCodeSchema
MediaAnalyzeVisualFramesRequest
MediaAnalyzeVisualFramesResult
MediaEmbedVisualQueryRequest
MediaEmbedVisualQueryResult
MediaInstallVisualModelRequest
MediaVisualAdapterBinding
MediaVisualFrameSample
MediaVisualModelDescriptor
MediaVisualModelFile
MediaVisualModelInstallReceipt
MediaVisualModelStatus
MediaVisualUnavailableCode
@kun/extension-apimethodsEXTENSION_VIEW_SAFE_METHODS
isExtensionViewSafeMethod
ExtensionViewSafeMethod
@kun/extension-apipermissionshasPermission
NETWORK_PERMISSION_PATTERN
permissionMatches
PermissionSchema
PROVIDER_PERMISSION_PATTERN
ScopedPermissionSchema
STATIC_PERMISSIONS
StaticPermissionSchema
Permission
ScopedPermission
StaticPermission
@kun/extension-apiprovidersModelCapabilitiesSchema
ModelContentPartSchema
ModelMessageSchema
ModelModalitySchema
ModelProviderDeclarationSchema
ModelProviderRequestSchema
ModelProviderStreamEventSchema
ModelToolSchema
ModelUsageSchema
ProviderModelSchema
ProviderProbeResultSchema
ProviderStatusSchema
ModelCapabilities
ModelContentPart
ModelMessage
ModelModality
ModelProviderAdapter
ModelProviderDeclaration
ModelProviderDeclarationInput
ModelProviderOperationContext
ModelProviderRequest
ModelProviderStreamEvent
ModelTool
ModelUsage
ProviderModel
ProviderProbeResult
ProviderStatus
@kun/extension-apiregistryExtensionRegistryEntrySchema
ExtensionRegistrySchema
ExtensionSourceSchema
InstalledExtensionVersionSchema
PermissionGrantSchema
SignatureStatusSchema
ExtensionRegistry
ExtensionRegistryEntry
ExtensionSource
InstalledExtensionVersion
PermissionGrant
SignatureStatus
@kun/extension-apiservicesConfigurationChangeEventSchema
HostMessageSchema
LocaleSchema
NetworkRequestSchema
NetworkResponseSchema
NotificationOptionsSchema
RESULT_PREVIEW_OPEN_CHANNEL
ResultPreviewOpenPayloadSchema
ResultPreviewSourceSchema
StorageEntrySchema
StorageScopeSchema
ThemeSchema
WorkspaceFileSchema
AgentApi
AgentRunSubscription
AuthenticationApi
CommandsApi
ConfigurationApi
ConfigurationChangeEvent
HostMessage
HostNotification
HostRequestContext
HostRequestHandler
HostRequestOptions
HostTransport
JobsApi
JobSubscription
Locale
MediaApi
ModelProvidersApi
NetworkApi
NetworkRequest
NetworkResponse
NotificationOptions
ResultPreviewOpenPayload
ResultPreviewSource
ScopedStorageApi
StorageApi
StorageEntry
StorageScope
Theme
ThreadsApi
ToolsApi
UiApi
WorkspaceApi
WorkspaceFile
@kun/extension-apitoolsExtensionToolDeclarationSchema
ToolInvocationSchema
ToolProgressSchema
ToolResultSchema
ToolSideEffectsSchema
CancellationToken
ExtensionToolDeclaration
ExtensionToolDeclarationInput
ExtensionToolHandler
ToolInvocation
ToolInvocationContext
ToolProgress
ToolResult
ToolSideEffects
@kun/extension-reactindexAgentRunStatus
ExtensionAsyncBoundary
ExtensionViewProvider
useAccounts
useAgentRun
useCommand
useConfiguration
useExtensionClient
useHostMessage
useLocale
usePostHostMessage
useProviderStatus
useTheme
useViewState
AgentRunHookResult
AgentRunStatusProps
AsyncBoundaryProps
AsyncValue
CommandHookResult
ConfigurationHookResult
ExtensionViewProviderProps
ViewStateResult
@kun/extension-testextension-test-harnesscreateExtensionTestHarness
ExtensionTestHarness
ExtensionTestHarnessOptions
@kun/extension-testfake-basic-servicescreateGeneratedArtifactFixture
FakeAgentService
FakeStorageService
FakeWorkspaceService
@kun/extension-testfake-job-serviceFakeJobService
@kun/extension-testfake-media-serviceFakeMediaService
@kun/extension-testfake-registration-servicesFakeAccountService
FakeProviderService
FakeToolService
FakeWebviewService
@kun/extension-testfake-transportFakeClock
FakeHostTransport
FakeTransportOptions

稳定性与弃用

公开导出从发布起受 SemVer 保护。新增可选能力属于兼容 minor;删除、重命名、收紧输入或改变既有语义需要新 major。弃用项必须在类型声明、两种语言的本参考、Changelog、诊断和迁移指南中同时注明 replacement 与最早 removal major。原始 DOM selector、私有 IPC/HTTP 和未导出路径不进入本清单,也不会因为被第三方使用而成为稳定 API。