@forgeax/extension-platform
v0.2.4
Published
ForgeaX extension platform workspace
Downloads
7,336
Readme
@forgeax/extension-platform
Shared extension platform — the VS Code-style platform layer consumed by both forgeax-studio (EA) and workbench (agentstudio) shells.
| Subpath | Contents | VS Code analogue |
|---|---|---|
| ./base | EventBus (Emitter/Event) | vs/base/common/event |
| ./platform | registry · commands · context-keys · storage · capabilities | vs/platform/{registry,commands,contextkey,storage} |
| ./extensions | ExtensionManifest · ExtensionLoader | vs/platform/extensions + extension host |
Install
bun add @forgeax/extension-platform # or pnpm addVersioned capability providers
CapabilityProviderRegistry is the shared executable-capability boundary for
hosts and extensions. A capability is identified by a stable id and an
integer version; providers are selected by providerId when more than one
extension implements the same contract.
const providers = createCapabilityProviderRegistry<{ requestId: string }>();
providers.register(
{
ref: { id: 'media.video.generate', version: 1 },
providerId: 'arrival-kino',
invoke: (input: VideoGenerationInput, context) =>
kino.generate(input, { requestId: context.requestId }),
},
'kino-extension',
);
const result = await providers.invoke<VideoGenerationInput, VideoGenerationResult>(
{ id: 'media.video.generate', version: 1 },
input,
{ requestId },
'arrival-kino',
);Registration returns an idempotent cleanup function and is owner-bound, so an
extension cannot remove another extension's provider. Missing capabilities and
ambiguous provider selection use stable error codes (CAPABILITY_UNAVAILABLE
and CAPABILITY_AMBIGUOUS). The existing CapabilityRegistry membership API
remains available for manifest dependency loading and is intentionally
backwards compatible.
Release
npm version patch && git push --follow-tags # tag = release, CI publishesDecision record: forgeax-studio docs/decisions/0026-extension-platform-shared-package.md.
License
Apache-2.0
