Kun Extension API Reference

August 14, 2026 · View on GitHub

Extension API: v1.2.0 (stable) Compatible Kun versions: use the extension Manifest's engines.kun and the compatibility matrix 中文:Kun Extension API 参考

This is the standalone public API reference for @kun/extension-api, @kun/extension-react, and @kun/extension-test. The Chinese behavioral guides remain normative; this page precisely records package entry points, core services, and the export inventory generated from public TypeScript modules. A source path absent from this inventory or a package exports map is not supported API.

Versions and authoritative sources

All three SDKs are currently version 1.2.0 for Extension API major 1. Hosts continue to accept v1.1 and v1.0 manifests. v1.2 adds optional composer-context, media scheduling, bounded documents/archives, and real local audio/visual-analysis surfaces without changing existing v1.1 or v1.0 methods. Manifest fields use the generated JSON Schema and ExtensionManifestSchema as their machine-enforced sources. Published .d.ts declarations and runtime Schemas govern Host APIs, events, and payloads.

Any public entry-point, export, or reachable .d.ts change updates the public surface SHA-256. The documentation gate requires this page and the API Changelog to move together. Updating only a digest without documenting compatibility impact does not complete release review.

Packages and entry points

PackagePurposeOnly supported entry points
@kun/extension-apiFramework-neutral Manifest, lifecycle, Host client, Agent, tool, Provider, account, storage, network, UI, media, job, and artifact contracts@kun/extension-api; plus read-only @kun/extension-api/manifest.schema.json
@kun/extension-reactReact Provider, hooks, and status components over ExtensionHostClient@kun/extension-react
@kun/extension-testFake Host/transport/services and ExtensionTestHarness@kun/extension-test

Do not import src/*, dist/*, Kun runtime modules, renderer stores, Electron IPC, or any undeclared subpath. A file's presence in the development repository or packaged application does not grant a SemVer guarantee.

Framework-neutral Host API

A Node entry normally receives an ExtensionContext created by the Host. A Webview creates ExtensionHostClient from its narrow Host-provided HostTransport. Callers never supply extension identity, runtime tokens, or authorization outcomes.

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 services

PropertyPublic contract
subscriptions, onDidErrorLifecycle disposal and structured extension errors
commandsDeclared command registration, execution, and handler disposal
storage, configurationExtension/workspace-isolated state and declarative settings; never secrets
networkPermission/domain/account-constrained broker fetch
uiTheme, locale, View state, Host messages, notifications, and main-conversation context attachment
agent, threadsExtension-owned Agent runs, events, steer/cancel, and thread projections
toolsManifest-declared tool registration, progress, cancellation, and bounded results
modelProvidersCustom Provider adapter probe/listModels/stream/cancel/countTokens
authenticationRedacted accounts, protected auth sessions, authenticated fetch, and explicit secret reveal
mediaProtected selection, opaque handles, bounded metadata/probe, View resource leases, and brokered FFmpeg job creation
jobsExtension-owned durable job get/list/subscribe/cancel; no generic extension worker or jobs.start
workspace, workspaceContextFile operations within granted roots and current workspace/trust projection

Media methods require the least-privilege media.read, media.process, or media.export grants plus applicable workspace permissions. pickFiles, pickSaveTarget, openViewResource, and performArtifactAction require a protected interactive surface; in pure headless execution they return a structured interaction-required or unavailable error. performArtifactAction accepts only an opaque artifact ID plus open/reveal; the Host derives its owner, exact version, and workspace. Handles, artifact references, action responses, and kun-media:// leases never substitute for absolute paths. Lease URLs are short-lived View resources and must not be persisted.

See Extension media and background jobs for the picker, playback, FFmpeg, artifact, headless, and troubleshooting contract.

Job observation requires jobs.manage. jobs.subscribe() replays retained events after an optional opaque cursor, then delivers live bounded events; replayGap tells callers to refresh from the supplied snapshot. Cancellation is idempotent and terminal jobs preserve their original outcome. Only supported core brokers such as media.startFfmpegJob(), audio analysis, and archive creation can create jobs; extensions cannot register arbitrary workers.

ui.showNotification(options) returns the selected action id; dismissal, the 45-second timeout, workbench lease expiry, or extension disablement returns undefined. It never returns an internal notification instance ID and does not require a Webview Session.

ui.attachComposerContext(request) is available only to an authenticated interactive Extension View with ui.actions. A request carries at most 16 KiB of depth- and entry-bounded, path-free JSON reference data. The Host revalidates the current View, exact extension version, workspace trust, and permission, then adds unforgeable extension/View/workspace provenance. A successful result appears as removable context in the matching workspace's main composer and is consumed once by the next successfully created main-conversation turn. The model receives it only as untrusted reference data in user-message content, never in the stable system prefix; a Node Host extension cannot use this method to bypass View identity.

Runtime Schemas and types

Exports ending in Schema are runtime validation values. Adjacent TypeScript types/interfaces describe validated static shapes, such as AgentRunSchema/AgentRun and ToolResultSchema/ToolResult. Inputs derived with z.input can omit fields with Schema defaults, while output types reflect normalized results.

A Manifest tool's outputSchema describes and validates ToolResult.content, not the complete ToolResult envelope. Omitting it applies generic JSON, size, and policy constraints; it never disables output limits.

ToolResult and terminal JobResult may expose top-level generatedArtifacts. Each artifact contains durable opaque ownership, completion, media-handle, MIME, size, availability, and provenance metadata; it contains neither an absolute path nor an ephemeral playback URL. ResultPreviewSource can reference the artifact and media handle while retaining the v1.0 attachment/relative-path source fields.

React bindings

ExtensionViewProvider supplies a bound ExtensionHostClient. useTheme, useLocale, useViewState, useHostMessage, usePostHostMessage, useCommand, useAgentRun, useAccounts, useProviderStatus, and useConfiguration preserve framework-neutral semantics and grant no extra permission. ExtensionAsyncBoundary and AgentRunStatus are optional Host-aware presentation components.

Test harness

createExtensionTestHarness/ExtensionTestHarness compose FakeHostTransport with fake storage, workspace, Agent, tool, Provider, account, Webview, media, and durable-job services. FakeMediaService, FakeJobService, and createGeneratedArtifactFixture() provide deterministic protected selection, probe, FFmpeg admission, progress, restart, cancellation-race, executable-unavailable, revocation, and artifact behavior without real media tools or wall-clock waits. Tests still declare production-equivalent permission/workspace/account scopes. A fake service never makes the production broker permissive.

Generated public export inventory

The following region is calculated by node scripts/generate-extension-api-reference.mjs from package exports, TypeScript module symbols, and the in-memory .d.ts graph reachable from public entries. Manual edits fail npm run check:extension-docs.

SDK packageVersionPublic entry pointsPublic exportsPublic 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 packageSource moduleRuntime exportsType exports
@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

Stability and deprecation

Public exports are SemVer-protected from release. A new optional capability is a compatible minor; removal, rename, stricter accepted input, or changed existing semantics requires a new major. A deprecation simultaneously names its replacement and earliest removal major in type declarations, both language references, Changelog, diagnostics, and migration guidance. Raw DOM selectors, private IPC/HTTP, and unexported paths never enter this inventory and do not become stable merely because third parties use them.