Releases: JeffSteinbok/carapace-plugin-sdk
Releases · JeffSteinbok/carapace-plugin-sdk
v2.0.0
v2.0.0 — Breaking: definePlugin required
⚠️ Breaking Change
ensureContracts() has been removed. All plugins must now use definePlugin() to declare their tools. The old-style createEntry()/register() pattern without contracts.tools will fail at both build time and load time.
If you see this error after upgrading:
Plugin "my-plugin" is missing contracts.tools.
Migrate to definePlugin() from carapace-plugin-sdk
You need to migrate your plugin to use definePlugin(). See the migration example below.
What changed
- Removed
ensureContracts()function and its backward-compat fallback createAdapter()now throws ifcontracts.toolsis missingcarapace-generate-clivalidatescontracts.toolsbefore generating artifacts- Updated ARCHITECTURE.md to reflect v2 behavior
Migration
Replace your manual createEntry() with definePlugin():
// Before (v1.x) — no longer works
function createEntry() {
return {
id: "my-plugin",
register(api) {
api.registerTool({ name: "my_tool", ... });
},
};
}
export { createEntry };
// After (v2.0) — required
import { definePlugin } from "carapace-plugin-sdk";
import { Type } from "@sinclair/typebox";
export const createEntry = definePlugin({
id: "my-plugin",
name: "My Plugin",
tools: (tool) => [
tool({
name: "my_tool",
description: "Does the thing.",
parameters: Type.Object({ input: Type.String() }),
execute: async ({ input }, config) => ({ result: input }),
}),
],
});Installation
npm install carapace-plugin-sdk@latestv1.0.5
v1.0.5
Installation
npm install carapace-plugin-sdk@latestChanges
- fix: Publish SDK to npm on release publish instead of workflow dispatch
- Split release workflow into two:
release.yml(prepare release) andpublish.yml(publish to npm with OIDC provenance) - npm publish now only happens after reviewing the draft release
- Split release workflow into two:
- chore: Upgrade vitest from ^2.1.8 to ^4.1.8
Full Changelog: v1.0.4...v1.0.5
v1.0.4
v1.0.4
Installation
npm install carapace-plugin-sdk@latestChanges
What's Changed
- fix: preserve contracts after definePluginEntry() by @jeffsteinbok-openclaw in #6
Full Changelog: v1.0.3...v1.0.4
v1.0.3
v1.0.3
Fix for OpenClaw's plugin discovery model introduced in the path-scanning migration (April 28, 2026) and native TS plugin migration (May 3, 2026) — OpenClaw ^2026.4.23.
What changed
- Auto-discover
contracts.tools— plugins using rawregister()(instead ofdefinePlugin()) now get their tool names auto-discovered at build time and adapter load time via a dry-runregister()call. This ensures the manifest always includescontracts.tools. - Default
configSchema— when a plugin omitsconfigSchema, the manifest now defaults to{ "type": "object", "properties": {} }instead of omitting the field entirely. - Test coverage — 7 new tests for
ensureContracts()covering discovery, error handling, and edge cases.
Installation
npm install carapace-plugin-sdk@latestv1.0.2
v1.0.2
Initial Release!
Installation
npm install carapace-plugin-sdk@latest