@teith/openclaw-runware-provider 0.4.0 → 0.4.2
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/catalog.d.ts.map +1 -1
- package/dist/catalog.js +54 -5
- package/dist/catalog.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -5
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +26 -5
- package/dist/models.js.map +1 -1
- package/dist/provider-discovery.d.ts.map +1 -1
- package/dist/provider-discovery.js +19 -3
- package/dist/provider-discovery.js.map +1 -1
- package/package.json +1 -1
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAcD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,EAAE,CAAC,CAkDzB;AA8JD,wBAAgB,UAAU,IAAI,IAAI,CAGjC"}
|
package/dist/catalog.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
console.log(`[runware-diag] catalog.ts module loaded at ${new Date().toISOString()}`);
|
|
1
2
|
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
2
3
|
const FETCH_TIMEOUT_MS = 7000;
|
|
3
4
|
const FIRST_FETCH_MAX_ATTEMPTS = 3;
|
|
@@ -7,10 +8,13 @@ let inflight = null;
|
|
|
7
8
|
export async function fetchModels(baseUrl, apiKey) {
|
|
8
9
|
const now = Date.now();
|
|
9
10
|
if (cache && now - cache.fetchedAt < CACHE_TTL_MS) {
|
|
11
|
+
console.log(`[runware-diag] fetchModels: CACHE HIT, age=${((now - cache.fetchedAt) / 1000).toFixed(1)}s, count=${cache.models.length}`);
|
|
10
12
|
return cache.models;
|
|
11
13
|
}
|
|
12
|
-
if (inflight)
|
|
14
|
+
if (inflight) {
|
|
15
|
+
console.log(`[runware-diag] fetchModels: INFLIGHT, returning shared promise`);
|
|
13
16
|
return inflight;
|
|
17
|
+
}
|
|
14
18
|
// Retry only on the first successful fetch (no cache). Once we have any
|
|
15
19
|
// cache, the catch path returns stale data on failure, so retrying here
|
|
16
20
|
// would just delay that fallback. The first call is the one that matters:
|
|
@@ -18,15 +22,20 @@ export async function fetchModels(baseUrl, apiKey) {
|
|
|
18
22
|
// a cold TLS handshake to Runware is the proximate cause of the "Runware
|
|
19
23
|
// models missing after gateway restart" bug.
|
|
20
24
|
const maxAttempts = cache ? 1 : FIRST_FETCH_MAX_ATTEMPTS;
|
|
25
|
+
console.log(`[runware-diag] fetchModels: cache=${cache ? `stale (age ${((now - cache.fetchedAt) / 1000).toFixed(1)}s)` : "empty"}, starting fetch with maxAttempts=${maxAttempts}, baseUrl=${baseUrl}`);
|
|
21
26
|
inflight = (async () => {
|
|
22
27
|
try {
|
|
23
28
|
const models = await fetchWithRetries(baseUrl, apiKey, maxAttempts);
|
|
24
29
|
cache = { models, fetchedAt: Date.now() };
|
|
30
|
+
console.log(`[runware-diag] fetchModels: fetch SUCCESS, cached ${models.length} models`);
|
|
25
31
|
return models;
|
|
26
32
|
}
|
|
27
33
|
catch (err) {
|
|
28
|
-
if (cache)
|
|
34
|
+
if (cache) {
|
|
35
|
+
console.warn(`[runware-diag] fetchModels: fetch FAILED, returning stale cache of ${cache.models.length} models: ${err instanceof Error ? err.message : err}`);
|
|
29
36
|
return cache.models;
|
|
37
|
+
}
|
|
38
|
+
console.error(`[runware-diag] fetchModels: fetch FAILED and NO CACHE — propagating error: ${err instanceof Error ? err.message : err}`);
|
|
30
39
|
throw err;
|
|
31
40
|
}
|
|
32
41
|
finally {
|
|
@@ -66,19 +75,59 @@ async function fetchFromUpstream(baseUrl, apiKey) {
|
|
|
66
75
|
const url = `${baseUrl.replace(/\/+$/, "")}/models`;
|
|
67
76
|
const controller = new AbortController();
|
|
68
77
|
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
78
|
+
const startedAt = Date.now();
|
|
79
|
+
console.log(`[runware-diag] fetchFromUpstream: GET ${url} (apiKey length=${apiKey.length}, timeout=${FETCH_TIMEOUT_MS}ms)`);
|
|
69
80
|
try {
|
|
70
81
|
const res = await fetch(url, {
|
|
71
82
|
headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/json" },
|
|
72
83
|
signal: controller.signal,
|
|
73
84
|
});
|
|
85
|
+
const elapsed = Date.now() - startedAt;
|
|
86
|
+
console.log(`[runware-diag] fetchFromUpstream: response in ${elapsed}ms, status=${res.status} ${res.statusText}`);
|
|
74
87
|
if (!res.ok) {
|
|
88
|
+
// res.text() can throw synchronously (test mocks without a text()
|
|
89
|
+
// method, body already consumed elsewhere) — that TypeError isn't
|
|
90
|
+
// caught by .catch() because no promise was returned. Wrap in
|
|
91
|
+
// try/catch so we still throw the status-based error below
|
|
92
|
+
// instead of shadowing it with "res.text is not a function".
|
|
93
|
+
let errBody = "";
|
|
94
|
+
try {
|
|
95
|
+
errBody = await res.text();
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// body unreadable; status-based error below still surfaces
|
|
99
|
+
}
|
|
100
|
+
if (errBody) {
|
|
101
|
+
console.warn(`[runware-diag] fetchFromUpstream: non-OK body (first 200 chars): ${errBody.slice(0, 200)}`);
|
|
102
|
+
}
|
|
75
103
|
throw new Error(`Runware /models returned ${res.status} ${res.statusText}`);
|
|
76
104
|
}
|
|
77
105
|
const body = (await res.json());
|
|
106
|
+
const bodyKeys = Object.keys(body).join(",");
|
|
78
107
|
const data = Array.isArray(body.data) ? body.data : [];
|
|
79
|
-
|
|
80
|
-
.
|
|
81
|
-
|
|
108
|
+
const firstItemKeys = data.length > 0 && data[0] && typeof data[0] === "object"
|
|
109
|
+
? Object.keys(data[0]).join(",")
|
|
110
|
+
: "(none)";
|
|
111
|
+
console.log(`[runware-diag] fetchFromUpstream: body keys=[${bodyKeys}], data.length=${data.length}, first item keys=[${firstItemKeys}]`);
|
|
112
|
+
if (data.length === 0) {
|
|
113
|
+
// Surface what came back so we can see if Runware sent {data: null},
|
|
114
|
+
// {models: [...]} (wrong key), an error envelope, etc.
|
|
115
|
+
const bodyStr = JSON.stringify(body).slice(0, 500);
|
|
116
|
+
console.warn(`[runware-diag] fetchFromUpstream: data array is EMPTY. Body snippet: ${bodyStr}`);
|
|
117
|
+
}
|
|
118
|
+
const parsed = data.map(parseRunwareModel);
|
|
119
|
+
const valid = parsed.filter((m) => m !== null);
|
|
120
|
+
if (parsed.length !== valid.length) {
|
|
121
|
+
console.warn(`[runware-diag] fetchFromUpstream: dropped ${parsed.length - valid.length}/${parsed.length} models in parse (missing/invalid id)`);
|
|
122
|
+
}
|
|
123
|
+
if (valid.length > 0) {
|
|
124
|
+
const sample = valid
|
|
125
|
+
.slice(0, 5)
|
|
126
|
+
.map((m) => m.id)
|
|
127
|
+
.join(", ");
|
|
128
|
+
console.log(`[runware-diag] fetchFromUpstream: parsed ${valid.length} models, sample ids: ${sample}`);
|
|
129
|
+
}
|
|
130
|
+
return valid;
|
|
82
131
|
}
|
|
83
132
|
finally {
|
|
84
133
|
clearTimeout(timeout);
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAuBlC,IAAI,KAAK,GAAsB,IAAI,CAAC;AACpC,IAAI,QAAQ,GAAmC,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,GAAG,CACT,8CAA8C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CACzE,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAuBlC,IAAI,KAAK,GAAsB,IAAI,CAAC;AACpC,IAAI,QAAQ,GAAmC,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CACT,8CAA8C,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAC3H,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,6CAA6C;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACzD,OAAO,CAAC,GAAG,CACT,qCAAqC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,qCAAqC,WAAW,aAAa,OAAO,EAAE,CAC3L,CAAC;IAEF,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACpE,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CACT,qDAAqD,MAAM,CAAC,MAAM,SAAS,CAC5E,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CACV,sEAAsE,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAChJ,CAAC;gBACF,OAAO,KAAK,CAAC,MAAM,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,KAAK,CACX,8EAA8E,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACzH,CAAC;YACF,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAe,EACf,MAAc,EACd,WAAmB;IAEnB,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CACT,qDAAqD,OAAO,IAAI,WAAW,EAAE,CAC9E,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CACV,kDAAkD,OAAO,IAAI,WAAW,iBAAiB,GAAG,EAAE,CAC/F,CAAC;gBACF,MAAM;YACR,CAAC;YACD,OAAO,CAAC,IAAI,CACV,kDAAkD,OAAO,IAAI,WAAW,eAAe,GAAG,EAAE,CAC7F,CAAC;YACF,kDAAkD;YAClD,MAAM,KAAK,GAAG,qBAAqB,GAAG,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,YAAY,KAAK;QAC5B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAe,EACf,MAAc;IAEd,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,CACT,yCAAyC,GAAG,mBAAmB,MAAM,CAAC,MAAM,aAAa,gBAAgB,KAAK,CAC/G,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YAC1E,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,OAAO,CAAC,GAAG,CACT,iDAAiD,OAAO,cAAc,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACrG,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,kEAAkE;YAClE,kEAAkE;YAClE,8DAA8D;YAC9D,2DAA2D;YAC3D,6DAA6D;YAC7D,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CACV,oEAAoE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC5F,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YACvD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3D,CAAC,CAAC,QAAQ,CAAC;QACf,OAAO,CAAC,GAAG,CACT,gDAAgD,QAAQ,kBAAkB,IAAI,CAAC,MAAM,sBAAsB,aAAa,GAAG,CAC5H,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,qEAAqE;YACrE,uDAAuD;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CACV,wEAAwE,OAAO,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,6CAA6C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,uCAAuC,CAClI,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,KAAK;iBACjB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChB,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CACT,4CAA4C,KAAK,CAAC,MAAM,wBAAwB,MAAM,EAAE,CACzF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,MAAM,GAAiB,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,cAAc,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,IAAI,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAkC,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAsB,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAW,CAAC;gBAC3D,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAY;oBACjD,CAAC,CAAC,GAAG,CAAC;YAChB,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;QAC9D,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,GAAI,CAAC,CAAC,gBAA8B;aACvD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,KAAK,GAAG,IAAI,CAAC;IACb,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,KAAK,EAAE,WAiFZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
console.log("═══════════════════════════════════════════════════\n" +
|
|
2
|
+
` Runware OpenClaw Provider v0.4.2 (debug build)\n` +
|
|
3
|
+
` index.ts loaded at: ${new Date().toISOString()}\n` +
|
|
4
|
+
"═══════════════════════════════════════════════════");
|
|
1
5
|
import { API_KEY_ENV_VAR, BASE_URL_ENV_VAR, PROVIDER_ID, PROVIDER_LABEL, buildCatalogRows, buildProvider, prewarmCatalog, resolveApiKey, resolveBaseUrl, } from "./models.js";
|
|
2
6
|
import { startCostMetricPoller } from "./cost-metric.js";
|
|
3
7
|
// See cost-metric.ts. Idempotent across both entry files via
|
|
@@ -36,6 +40,7 @@ const entry = {
|
|
|
36
40
|
name: PROVIDER_LABEL,
|
|
37
41
|
description: "Runware — unified OpenAI-compatible access to Claude, GPT, Gemini, Qwen, GLM, MiniMax, Kimi, and Gemma.",
|
|
38
42
|
register(api) {
|
|
43
|
+
console.log(`[runware-diag] index.ts register(api) CALLED by openclaw at ${new Date().toISOString()} — registering provider + catalog provider hooks`);
|
|
39
44
|
api.registerProvider({
|
|
40
45
|
id: PROVIDER_ID,
|
|
41
46
|
label: PROVIDER_LABEL,
|
|
@@ -45,18 +50,23 @@ const entry = {
|
|
|
45
50
|
catalog: {
|
|
46
51
|
order: "simple",
|
|
47
52
|
run: async (ctx) => {
|
|
53
|
+
const cid = Math.random().toString(36).slice(2, 8);
|
|
54
|
+
console.log(`[runware-diag] registerProvider.catalog.run[${cid}] called, ctx.env keys=[${Object.keys(ctx.env ?? {}).join(",") || "(none)"}], has resolveProviderApiKey=${typeof ctx.resolveProviderApiKey === "function"}`);
|
|
48
55
|
const apiKey = resolveApiKey(ctx);
|
|
49
|
-
if (!apiKey)
|
|
56
|
+
if (!apiKey) {
|
|
57
|
+
console.warn(`[runware-diag] registerProvider.catalog.run[${cid}]: no apiKey, returning null`);
|
|
50
58
|
return null;
|
|
59
|
+
}
|
|
51
60
|
try {
|
|
52
61
|
const provider = await buildProvider(apiKey, resolveBaseUrl(ctx.env));
|
|
62
|
+
console.log(`[runware-diag] registerProvider.catalog.run[${cid}]: SUCCESS, returning provider with ${provider.models.length} models`);
|
|
53
63
|
return { provider };
|
|
54
64
|
}
|
|
55
65
|
catch (err) {
|
|
56
66
|
// fetchModels already retried with backoff. If we still failed
|
|
57
67
|
// every attempt, return null so openclaw treats the catalog as
|
|
58
68
|
// unpopulated rather than letting the throw bubble up.
|
|
59
|
-
console.error(`[runware-
|
|
69
|
+
console.error(`[runware-diag] registerProvider.catalog.run[${cid}]: FAILED after retries: ${err instanceof Error ? err.message : err}`);
|
|
60
70
|
return null;
|
|
61
71
|
}
|
|
62
72
|
},
|
|
@@ -66,18 +76,25 @@ const entry = {
|
|
|
66
76
|
provider: PROVIDER_ID,
|
|
67
77
|
kinds: ["text"],
|
|
68
78
|
liveCatalog: async (ctx) => {
|
|
79
|
+
const cid = Math.random().toString(36).slice(2, 8);
|
|
80
|
+
console.log(`[runware-diag] liveCatalog[${cid}] called, ctx.env keys=[${Object.keys(ctx.env ?? {}).join(",") || "(none)"}]`);
|
|
69
81
|
const apiKey = resolveApiKey(ctx);
|
|
70
|
-
if (!apiKey)
|
|
82
|
+
if (!apiKey) {
|
|
83
|
+
console.warn(`[runware-diag] liveCatalog[${cid}]: no apiKey, returning null`);
|
|
71
84
|
return null;
|
|
85
|
+
}
|
|
72
86
|
try {
|
|
73
|
-
|
|
87
|
+
const rows = await buildCatalogRows(apiKey, resolveBaseUrl(ctx.env));
|
|
88
|
+
console.log(`[runware-diag] liveCatalog[${cid}]: SUCCESS, returning ${rows.length} rows`);
|
|
89
|
+
return rows;
|
|
74
90
|
}
|
|
75
91
|
catch (err) {
|
|
76
|
-
console.error(`[runware-
|
|
92
|
+
console.error(`[runware-diag] liveCatalog[${cid}]: FAILED after retries: ${err instanceof Error ? err.message : err}`);
|
|
77
93
|
return null;
|
|
78
94
|
}
|
|
79
95
|
},
|
|
80
96
|
});
|
|
97
|
+
console.log(`[runware-diag] index.ts register(api): all hooks registered`);
|
|
81
98
|
},
|
|
82
99
|
};
|
|
83
100
|
export default entry;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,6DAA6D;AAC7D,wEAAwE;AACxE,qBAAqB,EAAE,CAAC;AAExB,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,cAAc,EAAE,CAAC;AAEjB,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,KAAK,GAAgB;IACzB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,yGAAyG;IAE3G,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,gBAAgB,CAAC;YACnB,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,yBAAyB;YACnC,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;YAC5C,IAAI,EAAE,EAAE;YACR,OAAO,EAAE;gBACP,KAAK,EAAE,QAAQ;gBACf,GAAG,EAAE,KAAK,EAAE,GAAmB,EAAE,EAAE;oBACjC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAGnD,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,QAAA,MAAM,YAAY;;;;CAAwD,CAAC;AAG3E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,OAAO,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,oBAAoB,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQlD;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAI/E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE;IACjC,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,MAAM,GAAG,SAAS,CAqBrB;AA2CD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B;AA2BD,wBAAgB,cAAc,IAAI,IAAI,CA2BrC"}
|
package/dist/models.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Runware hasn't published those limits fall back to conservative
|
|
10
10
|
* provider defaults so OpenClaw never sees a missing value.
|
|
11
11
|
*/
|
|
12
|
+
console.log(`[runware-diag] models.ts module loaded`);
|
|
12
13
|
import { fetchModels } from "./catalog.js";
|
|
13
14
|
export const PROVIDER_ID = "runware";
|
|
14
15
|
export const PROVIDER_LABEL = "Runware";
|
|
@@ -66,11 +67,20 @@ export function resolveBaseUrl(env) {
|
|
|
66
67
|
* managed deployment, where the user configured the key via the wizard).
|
|
67
68
|
*/
|
|
68
69
|
export function resolveApiKey(ctx) {
|
|
69
|
-
const
|
|
70
|
-
|
|
70
|
+
const fromCtx = ctx.env?.[API_KEY_ENV_VAR];
|
|
71
|
+
const fromProc = process.env[API_KEY_ENV_VAR];
|
|
72
|
+
const fromEnv = fromCtx ?? fromProc;
|
|
73
|
+
if (typeof fromEnv === "string" && fromEnv.length > 0) {
|
|
74
|
+
console.log(`[runware-diag] resolveApiKey: from ${fromCtx ? "ctx.env" : "process.env"} (length=${fromEnv.length})`);
|
|
71
75
|
return fromEnv;
|
|
76
|
+
}
|
|
72
77
|
const fromAuth = ctx.resolveProviderApiKey?.(PROVIDER_ID).apiKey;
|
|
73
|
-
|
|
78
|
+
if (typeof fromAuth === "string" && fromAuth.length > 0) {
|
|
79
|
+
console.log(`[runware-diag] resolveApiKey: from ctx.resolveProviderApiKey (length=${fromAuth.length})`);
|
|
80
|
+
return fromAuth;
|
|
81
|
+
}
|
|
82
|
+
console.warn(`[runware-diag] resolveApiKey: NOT FOUND. ctx.env has key=${ctx.env !== undefined && API_KEY_ENV_VAR in ctx.env}, process.env has key=${process.env[API_KEY_ENV_VAR] !== undefined}, ctx.resolveProviderApiKey=${typeof ctx.resolveProviderApiKey === "function"}`);
|
|
83
|
+
return undefined;
|
|
74
84
|
}
|
|
75
85
|
function buildModelInput(model) {
|
|
76
86
|
return model.inputModalities?.includes("image") ? ["text", "image"] : ["text"];
|
|
@@ -116,13 +126,21 @@ function buildCatalogRow(model) {
|
|
|
116
126
|
* `/v1/models` from Runware via the TTL cache in `catalog.ts`.
|
|
117
127
|
*/
|
|
118
128
|
export async function buildProvider(apiKey, baseUrl) {
|
|
129
|
+
console.log(`[runware-diag] buildProvider: invoked with baseUrl=${baseUrl}, apiKey length=${apiKey.length}`);
|
|
119
130
|
const models = await fetchModels(baseUrl, apiKey);
|
|
131
|
+
const entries = models.map(buildModelEntry);
|
|
132
|
+
console.log(`[runware-diag] buildProvider: returning ProviderShape with ${entries.length} models${entries.length > 0
|
|
133
|
+
? ` (sample: ${entries
|
|
134
|
+
.slice(0, 5)
|
|
135
|
+
.map((m) => m.id)
|
|
136
|
+
.join(", ")})`
|
|
137
|
+
: ""}`);
|
|
120
138
|
return {
|
|
121
139
|
baseUrl,
|
|
122
140
|
apiKey,
|
|
123
141
|
api: "openai-completions",
|
|
124
142
|
timeoutSeconds: REQUEST_TIMEOUT_SECONDS,
|
|
125
|
-
models:
|
|
143
|
+
models: entries,
|
|
126
144
|
};
|
|
127
145
|
}
|
|
128
146
|
/**
|
|
@@ -132,8 +150,11 @@ export async function buildProvider(apiKey, baseUrl) {
|
|
|
132
150
|
* response.
|
|
133
151
|
*/
|
|
134
152
|
export async function buildCatalogRows(apiKey, baseUrl) {
|
|
153
|
+
console.log(`[runware-diag] buildCatalogRows: invoked with baseUrl=${baseUrl}`);
|
|
135
154
|
const models = await fetchModels(baseUrl, apiKey);
|
|
136
|
-
|
|
155
|
+
const rows = models.map(buildCatalogRow);
|
|
156
|
+
console.log(`[runware-diag] buildCatalogRows: returning ${rows.length} rows`);
|
|
157
|
+
return rows;
|
|
137
158
|
}
|
|
138
159
|
/**
|
|
139
160
|
* Kick off a background `/v1/models` fetch at module load so the catalog
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,YAAY,GAAG,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAW,CAAC;AAC3E,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAW,CAAC;AAyCnF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAE;SACN,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;SAC3B,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChF,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAwC;IACrE,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,GAG7B;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-discovery.d.ts","sourceRoot":"","sources":["../src/provider-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider-discovery.d.ts","sourceRoot":"","sources":["../src/provider-discovery.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,gBAAgB,EAOjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmBjD;;;;;;;;;;;;;;GAcG;AAEH,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAYD,iBAAe,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC,CA8CxF;AAED,QAAA,MAAM,wBAAwB;;;;;;;;;;CAU7B,CAAC;AAMF,eAAe,wBAAwB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
console.log("═══════════════════════════════════════════════════\n" +
|
|
2
|
+
` Runware OpenClaw Provider v0.4.2 (debug build)\n` +
|
|
3
|
+
` provider-discovery.ts loaded at: ${new Date().toISOString()}\n` +
|
|
4
|
+
"═══════════════════════════════════════════════════");
|
|
1
5
|
import { API_KEY_ENV_VAR, BASE_URL_ENV_VAR, DEFAULT_BASE_URL, PROVIDER_ID, PROVIDER_LABEL, buildProvider, prewarmCatalog, resolveApiKey, resolveBaseUrl, } from "./models.js";
|
|
2
6
|
import { startCostMetricPoller } from "./cost-metric.js";
|
|
3
7
|
// Emit `openclaw.cost.usd` OpenTelemetry counter from runware transcript
|
|
@@ -24,6 +28,8 @@ function emptyProvider(baseUrl) {
|
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
async function runwareCatalogRun(ctx) {
|
|
31
|
+
const cid = Math.random().toString(36).slice(2, 8);
|
|
32
|
+
console.log(`[runware-diag] runwareCatalogRun[${cid}] CALLED at ${new Date().toISOString()}, ctx.env keys=[${Object.keys(ctx.env ?? {}).join(",") || "(none)"}], has resolveProviderApiKey=${typeof ctx.resolveProviderApiKey === "function"}`);
|
|
27
33
|
const baseUrl = resolveBaseUrl(ctx.env);
|
|
28
34
|
const apiKey = resolveApiKey(ctx);
|
|
29
35
|
// No API key reachable yet (e.g. the gateway is starting up before the
|
|
@@ -31,10 +37,19 @@ async function runwareCatalogRun(ctx) {
|
|
|
31
37
|
// an empty provider shape so openclaw treats the catalog as "known but
|
|
32
38
|
// currently unpopulated" rather than crashing. The next invocation will
|
|
33
39
|
// re-resolve and fill in models once the key is present.
|
|
34
|
-
if (!apiKey)
|
|
40
|
+
if (!apiKey) {
|
|
41
|
+
console.warn(`[runware-diag] runwareCatalogRun[${cid}]: NO API KEY, returning EMPTY provider — openclaw will see 0 models`);
|
|
35
42
|
return { provider: emptyProvider(baseUrl) };
|
|
43
|
+
}
|
|
36
44
|
try {
|
|
37
|
-
|
|
45
|
+
const provider = await buildProvider(apiKey, baseUrl);
|
|
46
|
+
console.log(`[runware-diag] runwareCatalogRun[${cid}]: RETURNING provider with ${provider.models.length} models${provider.models.length > 0
|
|
47
|
+
? `, sample: ${provider.models
|
|
48
|
+
.slice(0, 5)
|
|
49
|
+
.map((m) => m.id)
|
|
50
|
+
.join(", ")}`
|
|
51
|
+
: " — openclaw will see EMPTY DROPDOWN"}`);
|
|
52
|
+
return { provider };
|
|
38
53
|
}
|
|
39
54
|
catch (err) {
|
|
40
55
|
// fetchModels already retried with exponential backoff (catalog.ts).
|
|
@@ -46,7 +61,7 @@ async function runwareCatalogRun(ctx) {
|
|
|
46
61
|
// and there was no recovery path. The next catalog.run invocation
|
|
47
62
|
// will retry; if a concurrent retry is already in flight the
|
|
48
63
|
// inflight dedup in fetchModels makes both share one upstream call.
|
|
49
|
-
console.error(`[runware-
|
|
64
|
+
console.error(`[runware-diag] runwareCatalogRun[${cid}]: FAILED after retries, returning EMPTY provider: ${err instanceof Error ? err.message : err}`);
|
|
50
65
|
return { provider: emptyProvider(baseUrl) };
|
|
51
66
|
}
|
|
52
67
|
}
|
|
@@ -61,6 +76,7 @@ const runwareProviderDiscovery = {
|
|
|
61
76
|
run: runwareCatalogRun,
|
|
62
77
|
},
|
|
63
78
|
};
|
|
79
|
+
console.log(`[runware-diag] provider-discovery.ts default export READY: id=${runwareProviderDiscovery.id}, label=${runwareProviderDiscovery.label}, catalog.order=${runwareProviderDiscovery.catalog.order}, envVars=[${runwareProviderDiscovery.envVars.join(",")}]`);
|
|
64
80
|
export default runwareProviderDiscovery;
|
|
65
81
|
export { DEFAULT_BASE_URL };
|
|
66
82
|
//# sourceMappingURL=provider-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-discovery.js","sourceRoot":"","sources":["../src/provider-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,yEAAyE;AACzE,qEAAqE;AACrE,+DAA+D;AAC/D,sEAAsE;AACtE,oCAAoC;AACpC,qBAAqB,EAAE,CAAC;AAExB,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,oEAAoE;AACpE,2EAA2E;AAC3E,mEAAmE;AACnE,cAAc,EAAE,CAAC;AAuBjB,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO;QACL,OAAO;QACP,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,oBAAoB;QACzB,cAAc,EAAE,GAAG;QACnB,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAiB;IAChD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,uEAAuE;IACvE,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,yDAAyD;IACzD,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"provider-discovery.js","sourceRoot":"","sources":["../src/provider-discovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teith/openclaw-runware-provider",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "OpenClaw provider plugin for Runware — unified OpenAI-compatible access to Claude, GPT, Gemini, Qwen, GLM, MiniMax, Kimi, and Gemma.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|