@openclaw/arcee-provider 2026.7.2-beta.5 → 2026.7.33

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/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { buildArceeOpenRouterProvider, buildArceeProvider, normalizeArceeOpenRouterBaseUrl, toArceeOpenRouterModelId } from "./provider-catalog.js";
2
2
  import { ARCEE_DEFAULT_MODEL_REF, ARCEE_OPENROUTER_DEFAULT_MODEL_REF, applyArceeConfig, applyArceeOpenRouterConfig } from "./onboard.js";
3
- import { buildOpenAICompatibleLiveModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-live-runtime";
3
+ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
4
+ import { createProviderApiKeyAuthMethod } from "openclaw/plugin-sdk/provider-auth-api-key";
4
5
  import { readConfiguredProviderCatalogEntries } from "openclaw/plugin-sdk/provider-catalog-shared";
5
- import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
6
- import { buildProviderReplayFamilyHooks } from "openclaw/plugin-sdk/provider-model-shared";
6
+ import { OPENAI_COMPATIBLE_REPLAY_HOOKS } from "openclaw/plugin-sdk/provider-model-shared";
7
7
  //#region extensions/arcee/index.ts
8
8
  /**
9
9
  * Arcee AI provider plugin entry. It supports direct Arcee auth and OpenRouter
@@ -15,14 +15,52 @@ const ARCEE_WIZARD_GROUP = {
15
15
  groupLabel: "Arcee AI",
16
16
  groupHint: "Direct API or OpenRouter"
17
17
  };
18
- async function resolveArceeCatalog(ctx) {
19
- const directAuth = ctx.resolveProviderApiKey(PROVIDER_ID);
20
- if (directAuth.apiKey) return { provider: await buildOpenAICompatibleLiveModelProviderConfig({
18
+ function buildArceeAuthMethods() {
19
+ return [createProviderApiKeyAuthMethod({
20
+ providerId: PROVIDER_ID,
21
+ methodId: "arcee-platform",
22
+ label: "Arcee AI API key",
23
+ hint: "Direct access to Arcee platform",
24
+ optionKey: "arceeaiApiKey",
25
+ flagName: "--arceeai-api-key",
26
+ envVar: "ARCEEAI_API_KEY",
27
+ promptMessage: "Enter Arcee AI API key",
28
+ defaultModel: ARCEE_DEFAULT_MODEL_REF,
29
+ expectedProviders: [PROVIDER_ID],
30
+ applyConfig: (cfg) => applyArceeConfig(cfg),
31
+ wizard: {
32
+ choiceId: "arceeai-api-key",
33
+ choiceLabel: "Arcee AI API key",
34
+ choiceHint: "Direct (chat.arcee.ai)",
35
+ ...ARCEE_WIZARD_GROUP
36
+ }
37
+ }), createProviderApiKeyAuthMethod({
21
38
  providerId: PROVIDER_ID,
22
- providerConfig: buildArceeProvider(),
23
- apiKey: directAuth.apiKey,
24
- discoveryApiKey: directAuth.discoveryApiKey
25
- }) };
39
+ methodId: "openrouter",
40
+ label: "OpenRouter API key",
41
+ hint: "Access Arcee models via OpenRouter",
42
+ optionKey: "openrouterApiKey",
43
+ flagName: "--openrouter-api-key",
44
+ envVar: "OPENROUTER_API_KEY",
45
+ promptMessage: "Enter OpenRouter API key",
46
+ profileId: "openrouter:default",
47
+ defaultModel: ARCEE_OPENROUTER_DEFAULT_MODEL_REF,
48
+ expectedProviders: [PROVIDER_ID, "openrouter"],
49
+ applyConfig: (cfg) => applyArceeOpenRouterConfig(cfg),
50
+ wizard: {
51
+ choiceId: "arceeai-openrouter",
52
+ choiceLabel: "OpenRouter API key",
53
+ choiceHint: "Via OpenRouter (openrouter.ai)",
54
+ ...ARCEE_WIZARD_GROUP
55
+ }
56
+ })];
57
+ }
58
+ async function resolveArceeCatalog(ctx) {
59
+ const directKey = ctx.resolveProviderApiKey(PROVIDER_ID).apiKey;
60
+ if (directKey) return { provider: {
61
+ ...buildArceeProvider(),
62
+ apiKey: directKey
63
+ } };
26
64
  const openRouterKey = ctx.resolveProviderApiKey("openrouter").apiKey;
27
65
  if (openRouterKey) return { provider: {
28
66
  ...buildArceeOpenRouterProvider(),
@@ -42,73 +80,39 @@ function normalizeArceeResolvedModel(model) {
42
80
  };
43
81
  }
44
82
  /** Provider entry for Arcee direct and OpenRouter-backed models. */
45
- var arcee_default = defineSingleProviderPluginEntry({
83
+ var arcee_default = definePluginEntry({
46
84
  id: PROVIDER_ID,
47
85
  name: "Arcee AI Provider",
48
86
  description: "Bundled Arcee AI provider plugin",
49
- provider: {
50
- label: "Arcee AI",
51
- docsPath: "/providers/arcee",
52
- envVars: ["ARCEEAI_API_KEY", "OPENROUTER_API_KEY"],
53
- auth: [{
54
- methodId: "arcee-platform",
55
- label: "Arcee AI API key",
56
- hint: "Direct access to Arcee platform",
57
- optionKey: "arceeaiApiKey",
58
- flagName: "--arceeai-api-key",
59
- envVar: "ARCEEAI_API_KEY",
60
- promptMessage: "Enter Arcee AI API key",
61
- defaultModel: ARCEE_DEFAULT_MODEL_REF,
62
- applyConfig: applyArceeConfig,
63
- wizard: {
64
- choiceId: "arceeai-api-key",
65
- choiceLabel: "Arcee AI API key",
66
- choiceHint: "Direct (chat.arcee.ai)",
67
- ...ARCEE_WIZARD_GROUP
68
- }
69
- }, {
70
- methodId: "openrouter",
71
- label: "OpenRouter API key",
72
- hint: "Access Arcee models via OpenRouter",
73
- optionKey: "openrouterApiKey",
74
- flagName: "--openrouter-api-key",
75
- envVar: "OPENROUTER_API_KEY",
76
- promptMessage: "Enter OpenRouter API key",
77
- profileId: "openrouter:default",
78
- defaultModel: ARCEE_OPENROUTER_DEFAULT_MODEL_REF,
79
- expectedProviders: [PROVIDER_ID, "openrouter"],
80
- applyConfig: applyArceeOpenRouterConfig,
81
- wizard: {
82
- choiceId: "arceeai-openrouter",
83
- choiceLabel: "OpenRouter API key",
84
- choiceHint: "Via OpenRouter (openrouter.ai)",
85
- ...ARCEE_WIZARD_GROUP
86
- }
87
- }],
88
- catalog: {
89
- run: resolveArceeCatalog,
90
- staticRun: async () => ({ provider: buildArceeProvider() })
91
- },
92
- augmentModelCatalog: ({ config }) => readConfiguredProviderCatalogEntries({
93
- config,
94
- providerId: PROVIDER_ID
95
- }),
96
- normalizeConfig: ({ providerConfig }) => {
97
- const normalizedBaseUrl = normalizeArceeOpenRouterBaseUrl(providerConfig.baseUrl);
98
- return normalizedBaseUrl && normalizedBaseUrl !== providerConfig.baseUrl ? {
99
- ...providerConfig,
100
- baseUrl: normalizedBaseUrl
101
- } : void 0;
102
- },
103
- normalizeResolvedModel: ({ model }) => normalizeArceeResolvedModel(model),
104
- normalizeTransport: ({ api: apiLocal, baseUrl }) => {
105
- const normalizedBaseUrl = normalizeArceeOpenRouterBaseUrl(baseUrl);
106
- return normalizedBaseUrl && normalizedBaseUrl !== baseUrl ? {
107
- api: apiLocal,
108
- baseUrl: normalizedBaseUrl
109
- } : void 0;
110
- },
111
- ...buildProviderReplayFamilyHooks({ family: "openai-compatible" })
87
+ register(api) {
88
+ api.registerProvider({
89
+ id: PROVIDER_ID,
90
+ label: "Arcee AI",
91
+ docsPath: "/providers/arcee",
92
+ envVars: ["ARCEEAI_API_KEY", "OPENROUTER_API_KEY"],
93
+ auth: buildArceeAuthMethods(),
94
+ catalog: { run: resolveArceeCatalog },
95
+ augmentModelCatalog: ({ config }) => readConfiguredProviderCatalogEntries({
96
+ config,
97
+ providerId: PROVIDER_ID
98
+ }),
99
+ normalizeConfig: ({ providerConfig }) => {
100
+ const normalizedBaseUrl = normalizeArceeOpenRouterBaseUrl(providerConfig.baseUrl);
101
+ return normalizedBaseUrl && normalizedBaseUrl !== providerConfig.baseUrl ? {
102
+ ...providerConfig,
103
+ baseUrl: normalizedBaseUrl
104
+ } : void 0;
105
+ },
106
+ normalizeResolvedModel: ({ model }) => normalizeArceeResolvedModel(model),
107
+ normalizeTransport: ({ api: apiLocal, baseUrl }) => {
108
+ const normalizedBaseUrl = normalizeArceeOpenRouterBaseUrl(baseUrl);
109
+ return normalizedBaseUrl && normalizedBaseUrl !== baseUrl ? {
110
+ api: apiLocal,
111
+ baseUrl: normalizedBaseUrl
112
+ } : void 0;
113
+ },
114
+ ...OPENAI_COMPATIBLE_REPLAY_HOOKS
115
+ });
112
116
  }
113
117
  });
114
118
  //#endregion
@@ -3,7 +3,6 @@ import { ARCEE_BASE_URL, ARCEE_MODEL_CATALOG, buildArceeModelDefinition } from "
3
3
  /** Canonical OpenRouter API base URL for Arcee-routed models. */
4
4
  const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
5
5
  const OPENROUTER_LEGACY_BASE_URL = "https://openrouter.ai/v1";
6
- const ARCEE_OPENROUTER_MODEL_IDS = /* @__PURE__ */ new Set(["trinity-large-preview", "trinity-large-thinking"]);
7
6
  function normalizeBaseUrl(baseUrl) {
8
7
  return (baseUrl ?? "").trim().replace(/\/+$/, "");
9
8
  }
@@ -13,11 +12,11 @@ function normalizeArceeOpenRouterBaseUrl(baseUrl) {
13
12
  if (!normalized) return;
14
13
  if (normalized === "https://openrouter.ai/api/v1" || normalized === OPENROUTER_LEGACY_BASE_URL) return OPENROUTER_BASE_URL;
15
14
  }
16
- /** Convert a bare or legacy Arcee model id to OpenRouter's `arcee-ai/*` id. */
15
+ /** Convert a bare Arcee model id to the OpenRouter `arcee/*` id. */
17
16
  function toArceeOpenRouterModelId(modelId) {
18
17
  const normalized = modelId.trim();
19
- if (!normalized || normalized.startsWith("arcee-ai/")) return normalized;
20
- return `arcee-ai/${normalized.startsWith("arcee/") ? normalized.slice(6) : normalized}`;
18
+ if (!normalized || normalized.startsWith("arcee/")) return normalized;
19
+ return `arcee/${normalized}`;
21
20
  }
22
21
  /** Build direct Arcee catalog models. */
23
22
  function buildArceeCatalogModels() {
@@ -25,7 +24,7 @@ function buildArceeCatalogModels() {
25
24
  }
26
25
  /** Build OpenRouter-routed Arcee catalog models. */
27
26
  function buildArceeOpenRouterCatalogModels() {
28
- return buildArceeCatalogModels().filter((model) => ARCEE_OPENROUTER_MODEL_IDS.has(model.id)).map((model) => Object.assign({}, model, { id: toArceeOpenRouterModelId(model.id) }));
27
+ return buildArceeCatalogModels().map((model) => Object.assign({}, model, { id: toArceeOpenRouterModelId(model.id) }));
29
28
  }
30
29
  /** Build the direct Arcee provider config. */
31
30
  function buildArceeProvider() {
@@ -5,11 +5,6 @@
5
5
  },
6
6
  "enabledByDefault": true,
7
7
  "providers": ["arcee"],
8
- "modelCatalog": {
9
- "discovery": {
10
- "arcee": "runtime"
11
- }
12
- },
13
8
  "setup": {
14
9
  "providers": [
15
10
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/arcee-provider",
3
- "version": "2026.7.2-beta.5",
3
+ "version": "2026.7.33",
4
4
  "description": "OpenClaw Arcee provider plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,10 +18,10 @@
18
18
  "minHostVersion": ">=2026.6.8"
19
19
  },
20
20
  "compat": {
21
- "pluginApi": ">=2026.7.2-beta.5"
21
+ "pluginApi": ">=2026.7.33"
22
22
  },
23
23
  "build": {
24
- "openclawVersion": "2026.7.2-beta.5",
24
+ "openclawVersion": "2026.7.33",
25
25
  "bundledDist": false
26
26
  },
27
27
  "release": {
@@ -38,7 +38,7 @@
38
38
  "README.md"
39
39
  ],
40
40
  "peerDependencies": {
41
- "openclaw": ">=2026.7.2-beta.5"
41
+ "openclaw": ">=2026.7.33"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "openclaw": {