@openclaw/featherless-provider 2026.9.6 → 2026.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/icon.png CHANGED
Binary file
@@ -66,21 +66,20 @@ var openclaw_plugin_default = {
66
66
  };
67
67
  //#endregion
68
68
  //#region extensions/featherless/models.ts
69
- const FEATHERLESS_MANIFEST_PROVIDER = buildManifestModelProviderConfig({
70
- providerId: "featherless",
71
- catalog: openclaw_plugin_default.modelCatalog.providers.featherless
72
- });
69
+ function buildFeatherlessProvider() {
70
+ return buildManifestModelProviderConfig({
71
+ providerId: "featherless",
72
+ catalog: openclaw_plugin_default.modelCatalog.providers.featherless
73
+ });
74
+ }
75
+ const FEATHERLESS_MANIFEST_PROVIDER = buildFeatherlessProvider();
73
76
  const FEATHERLESS_BASE_URL = FEATHERLESS_MANIFEST_PROVIDER.baseUrl;
74
77
  const FEATHERLESS_DEFAULT_MODEL_ID = "Qwen/Qwen3-32B";
75
78
  const FEATHERLESS_DEFAULT_MODEL_REF = `featherless/${FEATHERLESS_DEFAULT_MODEL_ID}`;
76
79
  const FEATHERLESS_DYNAMIC_CONTEXT_WINDOW = 4096;
77
80
  const FEATHERLESS_DYNAMIC_MAX_TOKENS = 1024;
78
- function requireFeatherlessManifestModel(id) {
79
- const model = FEATHERLESS_MANIFEST_PROVIDER.models.find((entry) => entry.id === id);
80
- if (!model) throw new Error(`Missing Featherless modelCatalog row ${id}`);
81
- return model;
82
- }
83
- const FEATHERLESS_DEFAULT_MODEL = requireFeatherlessManifestModel(FEATHERLESS_DEFAULT_MODEL_ID);
81
+ const FEATHERLESS_DEFAULT_MODEL = FEATHERLESS_MANIFEST_PROVIDER.models.find((model) => model.id === FEATHERLESS_DEFAULT_MODEL_ID);
82
+ if (!FEATHERLESS_DEFAULT_MODEL) throw new Error(`Missing Featherless modelCatalog row ${FEATHERLESS_DEFAULT_MODEL_ID}`);
84
83
  const FEATHERLESS_DEFAULT_CONTEXT_WINDOW = FEATHERLESS_DEFAULT_MODEL.contextWindow;
85
84
  const FEATHERLESS_DEFAULT_MAX_TOKENS = FEATHERLESS_DEFAULT_MODEL.maxTokens;
86
85
  const FEATHERLESS_DYNAMIC_COMPAT = {
@@ -94,4 +93,4 @@ function buildFeatherlessCatalogModels() {
94
93
  return FEATHERLESS_MANIFEST_PROVIDER.models.map((model) => structuredClone(model));
95
94
  }
96
95
  //#endregion
97
- export { FEATHERLESS_DEFAULT_MODEL_REF as a, FEATHERLESS_DYNAMIC_MAX_TOKENS as c, openclaw_plugin_default as d, FEATHERLESS_DEFAULT_MODEL_ID as i, buildFeatherlessCatalogModels as l, FEATHERLESS_DEFAULT_CONTEXT_WINDOW as n, FEATHERLESS_DYNAMIC_COMPAT as o, FEATHERLESS_DEFAULT_MAX_TOKENS as r, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW as s, FEATHERLESS_BASE_URL as t, isFeatherlessCatalogModelId as u };
96
+ export { FEATHERLESS_DEFAULT_MODEL_REF as a, FEATHERLESS_DYNAMIC_MAX_TOKENS as c, isFeatherlessCatalogModelId as d, openclaw_plugin_default as f, FEATHERLESS_DEFAULT_MODEL_ID as i, buildFeatherlessCatalogModels as l, FEATHERLESS_DEFAULT_CONTEXT_WINDOW as n, FEATHERLESS_DYNAMIC_COMPAT as o, FEATHERLESS_DEFAULT_MAX_TOKENS as r, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW as s, FEATHERLESS_BASE_URL as t, buildFeatherlessProvider as u };
package/dist/api.js CHANGED
@@ -1,4 +1,3 @@
1
- import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, i as FEATHERLESS_DEFAULT_MODEL_ID, l as buildFeatherlessCatalogModels, n as FEATHERLESS_DEFAULT_CONTEXT_WINDOW, r as FEATHERLESS_DEFAULT_MAX_TOKENS, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as isFeatherlessCatalogModelId } from "./.setup/models-J3WOft2N.mjs";
1
+ import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, d as isFeatherlessCatalogModelId, i as FEATHERLESS_DEFAULT_MODEL_ID, l as buildFeatherlessCatalogModels, n as FEATHERLESS_DEFAULT_CONTEXT_WINDOW, r as FEATHERLESS_DEFAULT_MAX_TOKENS, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as buildFeatherlessProvider } from "./.setup/models-BN2vG1Qe.mjs";
2
2
  import { applyFeatherlessConfig } from "./onboard.js";
3
- import { buildFeatherlessProvider } from "./provider-catalog.js";
4
3
  export { FEATHERLESS_BASE_URL, FEATHERLESS_DEFAULT_CONTEXT_WINDOW, FEATHERLESS_DEFAULT_MAX_TOKENS, FEATHERLESS_DEFAULT_MODEL_ID, FEATHERLESS_DEFAULT_MODEL_REF, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, FEATHERLESS_DYNAMIC_MAX_TOKENS, applyFeatherlessConfig, buildFeatherlessCatalogModels, buildFeatherlessProvider, isFeatherlessCatalogModelId };
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
- import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, d as openclaw_plugin_default, i as FEATHERLESS_DEFAULT_MODEL_ID, o as FEATHERLESS_DYNAMIC_COMPAT, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as isFeatherlessCatalogModelId } from "./.setup/models-J3WOft2N.mjs";
1
+ import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, d as isFeatherlessCatalogModelId, f as openclaw_plugin_default, i as FEATHERLESS_DEFAULT_MODEL_ID, o as FEATHERLESS_DYNAMIC_COMPAT, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL } from "./.setup/models-BN2vG1Qe.mjs";
2
2
  import { applyFeatherlessConnectionConfig } from "./onboard.js";
3
- import "./provider-catalog.js";
4
3
  import { readConfiguredProviderCatalogEntries } from "openclaw/plugin-sdk/provider-catalog-shared";
5
4
  import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
6
5
  import { buildProviderReplayFamilyHooks, resolveFamilyForwardCompatModel } from "openclaw/plugin-sdk/provider-model-shared";
@@ -33,15 +32,6 @@ function resolveFeatherlessDynamicModel(ctx) {
33
32
  synthesize: true
34
33
  });
35
34
  }
36
- function normalizeFeatherlessResolvedModel(model) {
37
- return {
38
- ...model,
39
- compat: {
40
- ...FEATHERLESS_DYNAMIC_COMPAT,
41
- ...model.compat
42
- }
43
- };
44
- }
45
35
  var featherless_default = defineSingleProviderPluginEntry({
46
36
  id: PROVIDER_ID,
47
37
  name: "Featherless AI Provider",
@@ -72,13 +62,19 @@ var featherless_default = defineSingleProviderPluginEntry({
72
62
  config,
73
63
  providerId: PROVIDER_ID
74
64
  }),
75
- normalizeResolvedModel: ({ model }) => normalizeFeatherlessResolvedModel(model),
65
+ normalizeResolvedModel: ({ model }) => ({
66
+ ...model,
67
+ compat: {
68
+ ...FEATHERLESS_DYNAMIC_COMPAT,
69
+ ...model.compat
70
+ }
71
+ }),
76
72
  ...buildProviderReplayFamilyHooks({
77
73
  family: "openai-compatible",
78
74
  dropReasoningFromHistory: false
79
75
  }),
80
76
  ...buildProviderToolCompatFamilyHooks("openai"),
81
- resolveDynamicModel: (ctx) => resolveFeatherlessDynamicModel(ctx),
77
+ resolveDynamicModel: resolveFeatherlessDynamicModel,
82
78
  isModernModelRef: () => true
83
79
  }
84
80
  });
package/dist/models.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, i as FEATHERLESS_DEFAULT_MODEL_ID, l as buildFeatherlessCatalogModels, n as FEATHERLESS_DEFAULT_CONTEXT_WINDOW, o as FEATHERLESS_DYNAMIC_COMPAT, r as FEATHERLESS_DEFAULT_MAX_TOKENS, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as isFeatherlessCatalogModelId } from "./.setup/models-J3WOft2N.mjs";
2
- export { FEATHERLESS_BASE_URL, FEATHERLESS_DEFAULT_CONTEXT_WINDOW, FEATHERLESS_DEFAULT_MAX_TOKENS, FEATHERLESS_DEFAULT_MODEL_ID, FEATHERLESS_DEFAULT_MODEL_REF, FEATHERLESS_DYNAMIC_COMPAT, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, FEATHERLESS_DYNAMIC_MAX_TOKENS, buildFeatherlessCatalogModels, isFeatherlessCatalogModelId };
1
+ import { a as FEATHERLESS_DEFAULT_MODEL_REF, c as FEATHERLESS_DYNAMIC_MAX_TOKENS, d as isFeatherlessCatalogModelId, i as FEATHERLESS_DEFAULT_MODEL_ID, l as buildFeatherlessCatalogModels, n as FEATHERLESS_DEFAULT_CONTEXT_WINDOW, o as FEATHERLESS_DYNAMIC_COMPAT, r as FEATHERLESS_DEFAULT_MAX_TOKENS, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as buildFeatherlessProvider } from "./.setup/models-BN2vG1Qe.mjs";
2
+ export { FEATHERLESS_BASE_URL, FEATHERLESS_DEFAULT_CONTEXT_WINDOW, FEATHERLESS_DEFAULT_MAX_TOKENS, FEATHERLESS_DEFAULT_MODEL_ID, FEATHERLESS_DEFAULT_MODEL_REF, FEATHERLESS_DYNAMIC_COMPAT, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, FEATHERLESS_DYNAMIC_MAX_TOKENS, buildFeatherlessCatalogModels, buildFeatherlessProvider, isFeatherlessCatalogModelId };
package/dist/onboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as FEATHERLESS_DEFAULT_MODEL_REF, l as buildFeatherlessCatalogModels, t as FEATHERLESS_BASE_URL } from "./.setup/models-J3WOft2N.mjs";
1
+ import { a as FEATHERLESS_DEFAULT_MODEL_REF, l as buildFeatherlessCatalogModels, t as FEATHERLESS_BASE_URL } from "./.setup/models-BN2vG1Qe.mjs";
2
2
  import { createModelCatalogPresetAppliers, createProviderConnectionPresetAppliers } from "openclaw/plugin-sdk/provider-onboard";
3
3
  //#region extensions/featherless/onboard.ts
4
4
  const featherlessPreset = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/featherless-provider",
3
- "version": "2026.9.6",
3
+ "version": "2026.9.7",
4
4
  "description": "OpenClaw Featherless AI provider plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,10 +18,10 @@
18
18
  "minHostVersion": ">=2026.6.11"
19
19
  },
20
20
  "compat": {
21
- "pluginApi": ">=2026.9.6"
21
+ "pluginApi": ">=2026.9.7"
22
22
  },
23
23
  "build": {
24
- "openclawVersion": "2026.9.6",
24
+ "openclawVersion": "2026.9.7",
25
25
  "bundledDist": false
26
26
  },
27
27
  "release": {
@@ -40,7 +40,7 @@
40
40
  "assets/activity.svg"
41
41
  ],
42
42
  "peerDependencies": {
43
- "openclaw": ">=2026.9.6"
43
+ "openclaw": ">=2026.9.7"
44
44
  },
45
45
  "peerDependenciesMeta": {
46
46
  "openclaw": {
@@ -1,11 +0,0 @@
1
- import { c as FEATHERLESS_DYNAMIC_MAX_TOKENS, d as openclaw_plugin_default, i as FEATHERLESS_DEFAULT_MODEL_ID, o as FEATHERLESS_DYNAMIC_COMPAT, s as FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, t as FEATHERLESS_BASE_URL, u as isFeatherlessCatalogModelId } from "./.setup/models-J3WOft2N.mjs";
2
- import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
3
- //#region extensions/featherless/provider-catalog.ts
4
- function buildFeatherlessProvider() {
5
- return buildManifestModelProviderConfig({
6
- providerId: "featherless",
7
- catalog: openclaw_plugin_default.modelCatalog.providers.featherless
8
- });
9
- }
10
- //#endregion
11
- export { FEATHERLESS_BASE_URL, FEATHERLESS_DEFAULT_MODEL_ID, FEATHERLESS_DYNAMIC_COMPAT, FEATHERLESS_DYNAMIC_CONTEXT_WINDOW, FEATHERLESS_DYNAMIC_MAX_TOKENS, buildFeatherlessProvider, isFeatherlessCatalogModelId };