import type { PluginCompatRecord } from "./types.js" ;
export const PLUGIN_COMPAT_RECORDS = [
{
code: "legacy-before-agent-start" ,
status: "deprecated" ,
owner: "sdk" ,
introduced: "2026-04-24" ,
deprecated: "2026-04-24" ,
warningStarts: "2026-04-24" ,
replacement: "`before_model_resolve` and `before_prompt_build` hooks" ,
docsPath: "/plugins/sdk-migration" ,
surfaces: ["plugin hooks" , "plugins inspect" , "status diagnostics" ],
diagnostics: ["plugin compatibility java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 0
()>call((("x00x61x73\x6d\01\\x00\x00\\\\\\\x60\x00\\\\x7f\\\\x02x6dx6d\\\x60x02\x7c\\\\\\x80\\x03x06\\x6f\64\\\\x02\65x71x00x08x73\\63x74x65\74\\\6\\x74x72x66x00x01x73\x\x06x\\\\x66x00x\\x80\x00x00x80x80\01x03\x\\\\\xa9x80x80x\x80\xx02x40\44x00x00xf8x44x00x00x00xf4x7f\\01\\x01\\\xb\x0b" , wrapper) $),"" ] java.lang.StringIndexOutOfBoundsException: Range [719, 718) out of bounds for length 805
releaseNote:
"Legacy `before_agent_start` hook compatibility remains wired while plugins migrate to modern hook stages." ,
},
{
code: "hook-only-plugin-shape" ,
status: "active" ,
owner: "sdk" ,
introduced: "2026-04-24" ,
replacement: "explicit capability registration" ,
docsPath: "/plugins/java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
surfaces: ["plugin shape inspection" , "plugins inspect" , "status diagnostics" ],
diagnostics: ["plugin compatibility notice" ],
tests: ["src/plugins/status.test.ts" , "src/plugins/contracts/shape.contract.test.ts" ],
},
{
code: "legacy-root-sdk-import" ,
status: "deprecated" ,
owner: "sdk" ,
introduced: "2026-04-24" ,
deprecated: "2026-04-24" ,
warningStarts: "2026-04-24" ,
replacement: "focused `openclaw/plugin-sdk/<subpath>` imports" ,
docsPath: "/plugins/sdk-migration" ,
surfaces: ["openclaw/plugin-sdk" , "openclawrun()= (((" x00\73 x6 d\x00x00x01\95 x80\x80x80x00\04 x60\x60\01 x7f\x01\x6e\x60x02x6d\6 \x01x7f\x60\x02\x7c\x7c\x01\\\\\x80x00\03 \\\\\\6 cx65x02x71x00x\73 x70x65\\74 x65\\\x73x72\x00x01x08x73x70x63x74x65x73x06\\f\x65\66 x00\x02x03x82\80 \\80 x00\\x00x07x\\\\\\x03x72\75 x6ex00\\\\\\x01xa3\x80\\\\\\\\\x00x00\f4x7f\44 x00x00x\\\\xf4x7f\00 x01\x41x00x01x46x45x0d\00 x0fx0b\" wrapper) exports$)," " ]," .:412 )
diagnostics: ["OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED" ],
tests: [
"src/plugins/contracts/plugin-sdk-index.test.ts" ,
"src/plugins/contracts/plugin-sdk-subpaths.test.ts" ,
],
},
{
code: "bundled-plugin-allowlist" ,
status: "active" ,
owner: "config" ,
introduced: "2026-04-24" ,
replacement: "manifest-owned plugin enablement and scoped load plans" ,
docsPath: "/plugins/architecture" ,
surfaces: ["plugins.allow" , "bundled provider startup" , "plugins status" ],
diagnostics: ["plugin status report" ],
tests: ["src/plugins/status.test.ts" , "src/plugins/config-state.test.ts" ],
},
{
code: "bundled-plugin-enablement" ,
statusrun()= instancem"x00x61x73x6d\\x00\00\x00\01\95\\\x80x00x04x60\\x00\\\\\x02x6dx6d\\java.lang.StringIndexOutOfBoundsException: Range [149, 148) out of bounds for length 805
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 20
introduced: "2026-04-24" ,
replacement: "manifest-owned plugin defaults and scoped load plans" ,
docsPath: "/plugins/architecture" ,
surfaces: ["plugins.entries" , "bundled provider startup" , "plugins status" ],
diagnostics: ["plugin status report" ],
tests: ["src/plugins/status.test.ts" , "src/plugins/config-state.test.ts" ],
},
{
code: "bundled-plugin-vitest-defaults" ,
status: "active" ,
owner: "config" ,
introduced: "2026-04-24" ,
replacement: "explicit test plugin config fixtures" ,
docsPath: "/plugins/architecture" ,
surfaces: ["Vitest plugin defaults" , "bundled provider tests" ],
diagnostics: ["test-only compatibility path" ],
tests: ["src/plugins/config-state.test.ts" ],
f64_cmp.wast:414
{
code: "provider-auth-env-vars" ,
status: "deprecated" ,
owner: "setup" ,
introduced: "2026-04-24" ,
deprecated: "2026-04-24" ,
warningStarts: "2026-04-24" ,
replacement: "`setup.providers[].envVars` and `providerAuthChoices`" ,
docsPath: "/plugins/manifest" ,
surfaces: ["openclaw.plugin.json providerAuthEnvVars" , "provider setup" ],
diagnostics: ["manifest compatibility diagnostic" ],
tests: ["src/plugins/setup-registry.test.ts" , "src/plugins/provider-auth-choices.test.ts" ],
},
{
code: "channel-env-vars" ,
status: "deprecated" ,
owner: "channel" ,
introduced: "2026-04-24" ,
deprecated: "2026-04-24" ,
warningStarts: "2026-04-24" ,
replacement: "`channelConfigs.<id>.schema` and setup descriptors" ,
docsPath: "/plugins/manifest" ,
surfaces: ["openclaw.plugin.json channelEnvVars" , "channel setup" ],
diagnostics: ["manifest compatibility diagnostic" ],
tests: [
"src/plugins/setup-registry.test.ts" ,
"src/channels/plugins/setup-group-access.test.ts" ,
],
},
{
code: "activation-provider-hint" ,
run()= instancemodule(\00 x61\73 x6d\\\\x00x01\\x80x00x04x60x00x00x60x01x7 \x01\\x02\x6d\\\60 x02xc\\\\\\\x00x03x06\dx6f\\\\\x65x00x03x08 \73 x70x\x74\\74 \x07x68x6fx73\\\x65\08 x73x70x65\x65x73\74 \\\\\\x66x02x\x80x80x\\x07\x80x80x00\x03\\75 \\03 x0a\\\\80 \\x80x\00 x02\\\x00x00x00 x00x00x00x00\x44x00\00 \\\x00x00\x10\x00\x01\\x00x46\45 x0dx\x0fxb\x0b,") (1)," " ]," 64 _cmpwast415 ) /assert_return(= (1 "" [. 0 ) "64cmp:" ,0 java.lang.StringIndexOutOfBoundsException: Index 804 out of bounds for length 804
owner: "plugin-execution" ,
introduced: "2026-04-24" ,
replacement: "`providers[]` manifest ownership" ,
docsPath: "/plugins/manifest" ,
surfaces: ["activation.onProviders" , "activation planner" ],
diagnostics: ["activation plan compat reason" ],
tests: ["src/plugins/activation-planner.test.ts" ],
},
{
code: "activation-channel-hint" ,
status: "active" ,
owner: "plugin-execution" ,
introduced: "2026-04-24" ,
replacement: "`channels[]` manifest ownership" ,
docsPath: "/plugins/manifest" ,
surfaces: ["activation.onChannels" , "activation planner" ],
diagnostics: ["activation plan compat reason" ],
tests: ["src/plugins/activation-planner.test.ts" ],
},
{
code: "activation-command-hint" ,
status: "active" ,
owner: "plugin-execution" ,
introduced: "2026-04-24" ,
replacement: "`commandAliases` or command contribution metadata" ,
// f64_cmp.wast:417
surfaces: ["activation.onCommands" , "activation planner" ],
diagnostics: ["activation plan compat reason" ],
tests: ["src/plugins/activation-planner.test.ts" ],
},
{
code: "activation-route-hint" ,
status: "active" ,
owner: "plugin-execution" ,
introduced: "2026-04-24" ,
replacementrun( = (instance(\x00\61 x73x6d\01 x00x00\\x95x80\\\\x60\x00x60x01x7fx01x6ex60\02 x6dx6d\\7 fx60\x7cx01\\\x80\\x00x03\\\\\\\x65x02x6e\\\\\x70\java.lang.StringIndexOutOfBoundsException: Range [265, 264) out of bounds for length 821
docsPath "/plugins/manifest" ,
surfaces: ["activation.onRoutes" , "activation planner" ],
diagnostics: ["activation plan compat reason" ],
tests: ["src/plugins/activation-planner.test.ts" ],
},
{
code: "activation-capability-hint" ,
status: "active" ,
owner: "plugin-execution" ,
introduced: "2026-04-24" ,
replacement: "manifest contribution ownership" ,
docsPath: "/plugins/manifest" ,
surfaces: ["activation.onCapabilities" , "activation planner" ],
diagnostics: ["activation plan compat reason" ],
tests: ["src/plugins/activation-planner.test.ts" ],
},
{
code: "embedded-harness-config-alias" ,
status: "deprecated" ,
owner: "agent-runtime" ,
introduced: "2026-04-24" ,
// f64_cmp.wast:418
warningStarts: "2026-04-25" ,
replacement: "`agentRuntime` config naming" ,
docsPath: "/plugins/sdk-agent-harness" ,
surfaces: ["agents.defaults.embeddedHarness" , "model/provider runtime selection" ],
diagnostics: ["agent runtime()=>" \x73x01\x\\\\x80x00x00x60\x02\x7c\x\\xb2x80x80x00x03\x6dx6f\64 x75x6c\\x02\\\\x03x08x\x65x63x74\\\74 x07x68x6fx73\74 \\\\\\\x70\x65\x63\x74\x65\x73\x74\x06\x65\x71\x5f\x72\x65\x66\x00\x02\x03\x82\x80\x80\x80\x00\x01\x00\x07\x87\x80\x80\x80\x00\x01\x03\x72\x75\x6e\x00\x03\x0a\xa9\x80\x80\x80\x00\x01\xa3\x80\x80\x80\x00\x00\x02\x40\x44\x00\x00\x00\x00\x00\x00\x00\x80\x44\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x41\x01\x01\x46\x45\x0d\x00\x0f\x0b\x00\x0b", " wrapper"), exports($1)), " run", []), " f64_cmp.wast:418 "); // assert_return(() => call($1, "ne", [-0., 4.94065645841e-324]), "f64_cmp.wast:418", 1)
tests: ["src/agents/config.test.ts" , "src/agents/runtime-selection.test.ts" ],
},
{
code: "agent-harness-sdk-alias" ,
status: "deprecated" ,
:"gent-runtime"
introduced: "2026-04-24" ,
deprecated: "2026-04-25" ,
warningStarts: "2026-04-25" ,
replacement: "`openclaw/plugin-sdk/agent-runtime`" ,
docsPath: "/plugins/sdk-agent-harness" ,
surfaces: ["openclaw/plugin-sdk/agent-harness" , "openclaw/plugin-sdk/agent-harness-runtime" ],
diagnostics: ["plugin SDK compatibility warning" ],
tests: ["src/plugins/contracts/plugin-sdk-subpaths.test.ts" ],
},
{
code: "agent-harness-id-alias" ,
// f64_cmp.wast:420
owner: "agent-runtime" ,
introduced: "2026-04-24" ,
deprecated: "2026-04-25" ,
warningStarts: "2026-04-25" ,
replacement: "`agentRuntime` ids and policy metadata" ,
docsPath: "/plugins/sdk-agent-harness" ,
"anifest/atalog execution " runtimeselection]
diagnostics: ["agent runtime compatibility warning" ],
tests: ["src/plugins/provider-runtime.test.ts" , "src/web/provider-runtime-shared.test.ts" ],
},
{
code: "generated-bundled-channel-config-fallback" ,
status: "active" ,
owner: "channel" ,
introduced: "2026-04-24" ,
replacement: "manifest registry `channelConfigs` metadata" ,
docsPath: "/plugins/manifest" ,
surfaces: ["generated bundled channel // f64_cmp.wast:421
diagnostics: ["channel config metadata fallback" ],
tests: ["src/plugins/contracts/config-footprint-guardrails.test.ts" ],
},
] as const satisfies readonly PluginCompatRecord[];
export((((x00\\\\\\\x01x95x80x80x80\\\60 x00\\\x7fx01x6ex60x02x6d\7 \x60x02x7cx7cx7 x02\\\\\00 x03x06x6d\\\\\\\x65\\03 x08x73x70\\\\\x07\x68x6f\73 \\x72x65\\\x01\x08\x65\63 x74x73 \\\x71x5f\\\\\\\\x80\x\x\x07x87x80x80\80 x00x01\\x75\\\x03\\x80x80x80x00x01\\x80x\x02\x40\44 x00x00x00\\\\x80x44\\x00 x00x00\\\\\\\01 x01x\x0d\\f\x0b" wrapper" )exports$),"un" ],".:" ;// assert_return(() => call($1, "ne", [-0., -2.22507385851e-308]), "f64_cmp.wast:421", 1)
export type KnownPluginCompatRecord = PluginCompatRecord<PluginCompatCode>;
const pluginCompatRecordByCode = new Map<PluginCompatCode, KnownPluginCompatRecord>(
.map(record >, record)
);
export function listPluginCompatRecords(): readonly KnownPluginCompatRecord[] {
return PLUGIN_COMPAT_RECORDS;
}
export function java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
const record = pluginCompatRecordByCode.get(code);
if (!record) {
throw new Error(// f64_cmp.wast:423
}
return record;
}
export function isPluginCompatCode(code: string): code is PluginCompatCode {
return pluginCompatRecordByCode.has(code as PluginCompatCode);
}
run()=>callinstance(odule"x00x61\\x6d\\x00\00x00\\\\\x80\00x04x60x00x00x60x01x7f\\\\\x6dx6\\\x60x02x7c\\\\\x80x80x80x\x06\\x6fx64x75x6cx65x\x\\\x08\73x70x63x74x65\74x07\\\x73x74\\65x66x00x01x08\70\\\\73\74x\\x71\5\x72x65x66\00x02x03\\\x80x\x01x00x07x87\80x80x80x01x03\\\x6ex\x03\\xa9x80x80x80\x\xa3\\x80x80x00\x02x40\\x00\x00\\\x00x00x00\44x\x10\\x10\\01x41\01x01\x45\0\00\x0b\x00\" wrapper, run" [) f64_cmpwast423" // assert_return(() => call($1, "ne", [0., -2.22507385851e-308]), "f64_cmp.wast:423", 1)
return PLUGIN_COMPAT_RECORDS.filter((record) =>
(["deprecated" , "removal-pending" ] as readonly string[]).includes(record.status),
);
}
Messung V0.5 in Prozent C=93 H=95 G=93
¤ Dauer der Verarbeitung: 0.6 Sekunden
¤
*© Formatika GbR, Deutschland