Vendor OpenClaw source as Adolf fork baseline
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled

Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
This commit is contained in:
2026-07-05 09:36:54 +00:00
parent 3216769225
commit bedb527145
21108 changed files with 6010766 additions and 0 deletions

View File

@@ -0,0 +1,198 @@
// Fireworks tests cover index plugin behavior.
import type { ProviderRuntimeModel } from "openclaw/plugin-sdk/plugin-entry";
import {
registerSingleProviderPlugin,
resolveProviderPluginChoice,
} from "openclaw/plugin-sdk/plugin-test-runtime";
import { describe, expect, it } from "vitest";
import {
createProviderDynamicModelContext,
runSingleProviderCatalog,
} from "../test-support/provider-model-test-helpers.js";
import fireworksPlugin from "./index.js";
import {
FIREWORKS_BASE_URL,
FIREWORKS_DEFAULT_CONTEXT_WINDOW,
FIREWORKS_DEFAULT_MAX_TOKENS,
FIREWORKS_DEFAULT_MODEL_ID,
} from "./provider-catalog.js";
import { resolveThinkingProfile } from "./provider-policy-api.js";
const FIREWORKS_KIMI_K2_6_MODEL_ID = "accounts/fireworks/models/kimi-k2p6";
function createFireworksDefaultRuntimeModel(params: { reasoning: boolean }): ProviderRuntimeModel {
return {
id: FIREWORKS_DEFAULT_MODEL_ID,
name: FIREWORKS_DEFAULT_MODEL_ID,
provider: "fireworks",
api: "openai-completions",
baseUrl: FIREWORKS_BASE_URL,
reasoning: params.reasoning,
input: ["text", "image"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: FIREWORKS_DEFAULT_CONTEXT_WINDOW,
maxTokens: FIREWORKS_DEFAULT_MAX_TOKENS,
};
}
describe("fireworks provider plugin", () => {
it("registers Fireworks with api-key auth wizard metadata", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const resolved = resolveProviderPluginChoice({
providers: [provider],
choice: "fireworks-api-key",
});
expect(provider.id).toBe("fireworks");
expect(provider.label).toBe("Fireworks");
expect(provider.aliases).toEqual(["fireworks-ai"]);
expect(provider.envVars).toEqual(["FIREWORKS_API_KEY"]);
expect(provider.auth).toHaveLength(1);
if (!resolved) {
throw new Error("expected Fireworks api-key auth choice");
}
expect(resolved.provider.id).toBe("fireworks");
expect(resolved.method.id).toBe("api-key");
});
it("builds the Fireworks catalog", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const catalogProvider = await runSingleProviderCatalog(provider);
expect(catalogProvider.api).toBe("openai-completions");
expect(catalogProvider.baseUrl).toBe(FIREWORKS_BASE_URL);
const models = catalogProvider.models;
if (!models) {
throw new Error("expected Fireworks catalog models");
}
expect(models.map((model) => model.id)).toEqual([
FIREWORKS_KIMI_K2_6_MODEL_ID,
FIREWORKS_DEFAULT_MODEL_ID,
]);
expect(models[0]?.reasoning).toBe(false);
expect(models[0]?.input).toEqual(["text", "image"]);
expect(models[0]?.contextWindow).toBe(262144);
expect(models[0]?.maxTokens).toBe(262144);
expect(models[1]?.reasoning).toBe(false);
expect(models[1]?.input).toEqual(["text", "image"]);
expect(models[1]?.contextWindow).toBe(FIREWORKS_DEFAULT_CONTEXT_WINDOW);
expect(models[1]?.maxTokens).toBe(FIREWORKS_DEFAULT_MAX_TOKENS);
});
it("resolves forward-compat Fireworks model ids from the default template", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const resolved = provider.resolveDynamicModel?.(
createProviderDynamicModelContext({
provider: "fireworks",
modelId: "accounts/fireworks/models/qwen3.6-plus",
models: [createFireworksDefaultRuntimeModel({ reasoning: true })],
}),
);
expect(resolved?.provider).toBe("fireworks");
expect(resolved?.id).toBe("accounts/fireworks/models/qwen3.6-plus");
expect(resolved?.api).toBe("openai-completions");
expect(resolved?.baseUrl).toBe(FIREWORKS_BASE_URL);
expect(resolved?.reasoning).toBe(true);
expect(resolved?.input).toEqual(["text", "image"]);
});
it("disables reasoning metadata for Fireworks Kimi dynamic models", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const resolved = provider.resolveDynamicModel?.(
createProviderDynamicModelContext({
provider: "fireworks",
modelId: "accounts/fireworks/models/kimi-k2p5",
models: [createFireworksDefaultRuntimeModel({ reasoning: false })],
}),
);
expect(resolved?.provider).toBe("fireworks");
expect(resolved?.id).toBe("accounts/fireworks/models/kimi-k2p5");
expect(resolved?.reasoning).toBe(false);
expect(resolved?.input).toEqual(["text", "image"]);
});
it("keeps Fireworks GLM dynamic models text-only", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const resolved = provider.resolveDynamicModel?.(
createProviderDynamicModelContext({
provider: "fireworks",
modelId: "accounts/fireworks/models/glm-5p1",
models: [createFireworksDefaultRuntimeModel({ reasoning: false })],
}),
);
expect(resolved?.provider).toBe("fireworks");
expect(resolved?.id).toBe("accounts/fireworks/models/glm-5p1");
expect(resolved?.input).toEqual(["text"]);
});
it("disables reasoning metadata for Fireworks Kimi k2.5 aliases", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
const resolved = provider.resolveDynamicModel?.(
createProviderDynamicModelContext({
provider: "fireworks",
modelId: "accounts/fireworks/routers/kimi-k2.5-turbo",
models: [createFireworksDefaultRuntimeModel({ reasoning: false })],
}),
);
expect(resolved?.provider).toBe("fireworks");
expect(resolved?.id).toBe("accounts/fireworks/routers/kimi-k2.5-turbo");
expect(resolved?.reasoning).toBe(false);
});
it("defers manifest catalog models to core static-catalog resolution", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
for (const modelId of [FIREWORKS_KIMI_K2_6_MODEL_ID, FIREWORKS_DEFAULT_MODEL_ID]) {
const resolved = provider.resolveDynamicModel?.(
createProviderDynamicModelContext({
provider: "fireworks",
modelId,
models: [createFireworksDefaultRuntimeModel({ reasoning: false })],
}),
);
expect(resolved).toBeUndefined();
}
});
it("exposes off-only thinking policy for Fireworks Kimi models", async () => {
const provider = await registerSingleProviderPlugin(fireworksPlugin);
expect(
provider.resolveThinkingProfile?.({
provider: "fireworks",
modelId: "accounts/fireworks/routers/kimi-k2p5-turbo",
}),
).toEqual({
levels: [{ id: "off" }],
defaultLevel: "off",
});
expect(
provider.resolveThinkingProfile?.({
provider: "fireworks",
modelId: FIREWORKS_KIMI_K2_6_MODEL_ID,
}),
).toEqual({
levels: [{ id: "off" }],
defaultLevel: "off",
});
expect(
provider.resolveThinkingProfile?.({
provider: "fireworks",
modelId: "accounts/fireworks/models/qwen3.6-plus",
}),
).toBeUndefined();
expect(resolveThinkingProfile({ modelId: FIREWORKS_KIMI_K2_6_MODEL_ID })).toEqual({
levels: [{ id: "off" }],
defaultLevel: "off",
});
expect(
resolveThinkingProfile({
modelId: "accounts/fireworks/models/qwen3.6-plus",
}),
).toBeUndefined();
});
});