@riddledc/openclaw-riddledc 0.9.3 → 0.9.4
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/CHECKSUMS.txt +5 -5
- package/dist/{chunk-LJCZ53PU.js → chunk-SNGACMAL.js} +26 -1
- package/dist/core.cjs +26 -1
- package/dist/core.js +1 -1
- package/dist/index.cjs +26 -2
- package/dist/index.js +27 -3
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/CHECKSUMS.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
c320ef98658b4d0bbe03485cb28105e299b85d0fb240c3a1e45f337c7011464e dist/chunk-SNGACMAL.js
|
|
2
|
+
64cc01e78e10d5cc8855cb849431b8c4b9c9da5c8cb1d2030cc1857f8db2e4f1 dist/core.cjs
|
|
3
3
|
9e6f2ccdbc993bea4445dbc20e131b442c01b298c19f87fe81846a22d6c92c48 dist/core.d.cts
|
|
4
4
|
9e6f2ccdbc993bea4445dbc20e131b442c01b298c19f87fe81846a22d6c92c48 dist/core.d.ts
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
b42375f824ecc6089e065b28268c828b29ccef979c9d8ae53ffff4abe138c0b4 dist/core.js
|
|
6
|
+
2ecc1e44daec4535712881dd0fbc3af4afe98d58bf1a2336a1a377cb94e41eb5 dist/index.cjs
|
|
7
7
|
94ce04f0e2d84bf64dd68f0500dfdd2f951287a3deccec87f197261961927f6f dist/index.d.cts
|
|
8
8
|
94ce04f0e2d84bf64dd68f0500dfdd2f951287a3deccec87f197261961927f6f dist/index.d.ts
|
|
9
|
-
|
|
9
|
+
4b4cdbf998c5d79fb14c43d0137846696c15c48676914ab243d8d3a78cdb242e dist/index.js
|
|
@@ -132,6 +132,25 @@ async function fetchWithRetry(url, init, timeoutMs, label, opts = {}) {
|
|
|
132
132
|
function isAlreadyStartedResponse(status, body) {
|
|
133
133
|
return status === 409 && /already in status:\s*(queued|running|complete|completed)/i.test(body);
|
|
134
134
|
}
|
|
135
|
+
function previewTimeoutResult(jobId, timeoutMs, lastStatusData, resultExtras = () => ({})) {
|
|
136
|
+
const lastStatus = lastStatusData?.status ?? "unknown";
|
|
137
|
+
const lastPhase = lastStatusData?.phase ?? lastStatus;
|
|
138
|
+
const result = {
|
|
139
|
+
ok: false,
|
|
140
|
+
job_id: jobId,
|
|
141
|
+
status: lastStatus,
|
|
142
|
+
phase: lastPhase,
|
|
143
|
+
phase_updated_at: lastStatusData?.phase_updated_at,
|
|
144
|
+
phase_details: lastStatusData?.phase_details,
|
|
145
|
+
outputs: lastStatusData?.outputs || [],
|
|
146
|
+
compute_seconds: lastStatusData?.compute_seconds,
|
|
147
|
+
egress_bytes: lastStatusData?.egress_bytes,
|
|
148
|
+
error: `Job did not complete within ${timeoutMs / 1e3}s; last status was ${lastStatus}, phase was ${lastPhase}`,
|
|
149
|
+
...resultExtras(lastStatusData ?? {})
|
|
150
|
+
};
|
|
151
|
+
if (lastStatusData?.error) result.server_error = lastStatusData.error;
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
135
154
|
async function writeArtifact(workspace, subdir, filename, content) {
|
|
136
155
|
const dir = join(workspace, "riddle", subdir);
|
|
137
156
|
await mkdir(dir, { recursive: true });
|
|
@@ -471,6 +490,7 @@ async function pollPreviewJob(config, pathPrefix, jobId, timeoutMs, resultExtras
|
|
|
471
490
|
const endpoint = config.baseUrl.replace(/\/$/, "");
|
|
472
491
|
const pollStart = Date.now();
|
|
473
492
|
const pollIntervalMs = 3e3;
|
|
493
|
+
let lastStatusData = null;
|
|
474
494
|
while (Date.now() - pollStart < timeoutMs) {
|
|
475
495
|
let statusRes;
|
|
476
496
|
try {
|
|
@@ -484,24 +504,29 @@ async function pollPreviewJob(config, pathPrefix, jobId, timeoutMs, resultExtras
|
|
|
484
504
|
return { ok: false, job_id: jobId, error: `Poll failed: HTTP ${statusRes.status}` };
|
|
485
505
|
}
|
|
486
506
|
const statusData = await statusRes.json();
|
|
507
|
+
lastStatusData = statusData;
|
|
487
508
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
488
509
|
const result = {
|
|
489
510
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
490
511
|
job_id: jobId,
|
|
491
512
|
status: statusData.status,
|
|
513
|
+
phase: statusData.phase ?? statusData.status,
|
|
514
|
+
phase_updated_at: statusData.phase_updated_at,
|
|
515
|
+
phase_details: statusData.phase_details,
|
|
492
516
|
outputs: statusData.outputs || [],
|
|
493
517
|
compute_seconds: statusData.compute_seconds,
|
|
494
518
|
egress_bytes: statusData.egress_bytes,
|
|
495
519
|
...resultExtras(statusData)
|
|
496
520
|
};
|
|
497
521
|
if (statusData.error) result.error = statusData.error;
|
|
522
|
+
if (statusData.script_error) result.script_error = statusData.script_error;
|
|
498
523
|
await saveImageOutputs(config.workspace, jobId, result.outputs, pathPrefix.slice(1));
|
|
499
524
|
result.screenshots = result.outputs.filter((o) => /\.(png|jpg|jpeg)$/i.test(o.name));
|
|
500
525
|
return result;
|
|
501
526
|
}
|
|
502
527
|
await sleep(pollIntervalMs);
|
|
503
528
|
}
|
|
504
|
-
return
|
|
529
|
+
return previewTimeoutResult(jobId, timeoutMs, lastStatusData, resultExtras);
|
|
505
530
|
}
|
|
506
531
|
async function createStaticPreview(config, params) {
|
|
507
532
|
let cfg;
|
package/dist/core.cjs
CHANGED
|
@@ -171,6 +171,25 @@ async function fetchWithRetry(url, init, timeoutMs, label, opts = {}) {
|
|
|
171
171
|
function isAlreadyStartedResponse(status, body) {
|
|
172
172
|
return status === 409 && /already in status:\s*(queued|running|complete|completed)/i.test(body);
|
|
173
173
|
}
|
|
174
|
+
function previewTimeoutResult(jobId, timeoutMs, lastStatusData, resultExtras = () => ({})) {
|
|
175
|
+
const lastStatus = lastStatusData?.status ?? "unknown";
|
|
176
|
+
const lastPhase = lastStatusData?.phase ?? lastStatus;
|
|
177
|
+
const result = {
|
|
178
|
+
ok: false,
|
|
179
|
+
job_id: jobId,
|
|
180
|
+
status: lastStatus,
|
|
181
|
+
phase: lastPhase,
|
|
182
|
+
phase_updated_at: lastStatusData?.phase_updated_at,
|
|
183
|
+
phase_details: lastStatusData?.phase_details,
|
|
184
|
+
outputs: lastStatusData?.outputs || [],
|
|
185
|
+
compute_seconds: lastStatusData?.compute_seconds,
|
|
186
|
+
egress_bytes: lastStatusData?.egress_bytes,
|
|
187
|
+
error: `Job did not complete within ${timeoutMs / 1e3}s; last status was ${lastStatus}, phase was ${lastPhase}`,
|
|
188
|
+
...resultExtras(lastStatusData ?? {})
|
|
189
|
+
};
|
|
190
|
+
if (lastStatusData?.error) result.server_error = lastStatusData.error;
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
174
193
|
async function writeArtifact(workspace, subdir, filename, content) {
|
|
175
194
|
const dir = (0, import_node_path.join)(workspace, "riddle", subdir);
|
|
176
195
|
await (0, import_promises.mkdir)(dir, { recursive: true });
|
|
@@ -510,6 +529,7 @@ async function pollPreviewJob(config, pathPrefix, jobId, timeoutMs, resultExtras
|
|
|
510
529
|
const endpoint = config.baseUrl.replace(/\/$/, "");
|
|
511
530
|
const pollStart = Date.now();
|
|
512
531
|
const pollIntervalMs = 3e3;
|
|
532
|
+
let lastStatusData = null;
|
|
513
533
|
while (Date.now() - pollStart < timeoutMs) {
|
|
514
534
|
let statusRes;
|
|
515
535
|
try {
|
|
@@ -523,24 +543,29 @@ async function pollPreviewJob(config, pathPrefix, jobId, timeoutMs, resultExtras
|
|
|
523
543
|
return { ok: false, job_id: jobId, error: `Poll failed: HTTP ${statusRes.status}` };
|
|
524
544
|
}
|
|
525
545
|
const statusData = await statusRes.json();
|
|
546
|
+
lastStatusData = statusData;
|
|
526
547
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
527
548
|
const result = {
|
|
528
549
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
529
550
|
job_id: jobId,
|
|
530
551
|
status: statusData.status,
|
|
552
|
+
phase: statusData.phase ?? statusData.status,
|
|
553
|
+
phase_updated_at: statusData.phase_updated_at,
|
|
554
|
+
phase_details: statusData.phase_details,
|
|
531
555
|
outputs: statusData.outputs || [],
|
|
532
556
|
compute_seconds: statusData.compute_seconds,
|
|
533
557
|
egress_bytes: statusData.egress_bytes,
|
|
534
558
|
...resultExtras(statusData)
|
|
535
559
|
};
|
|
536
560
|
if (statusData.error) result.error = statusData.error;
|
|
561
|
+
if (statusData.script_error) result.script_error = statusData.script_error;
|
|
537
562
|
await saveImageOutputs(config.workspace, jobId, result.outputs, pathPrefix.slice(1));
|
|
538
563
|
result.screenshots = result.outputs.filter((o) => /\.(png|jpg|jpeg)$/i.test(o.name));
|
|
539
564
|
return result;
|
|
540
565
|
}
|
|
541
566
|
await sleep(pollIntervalMs);
|
|
542
567
|
}
|
|
543
|
-
return
|
|
568
|
+
return previewTimeoutResult(jobId, timeoutMs, lastStatusData, resultExtras);
|
|
544
569
|
}
|
|
545
570
|
async function createStaticPreview(config, params) {
|
|
546
571
|
let cfg;
|
package/dist/core.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -364,6 +364,21 @@ async function fetchWithRetry2(url, init, timeoutMs, label, opts = {}) {
|
|
|
364
364
|
function isAlreadyStartedResponse(status, body) {
|
|
365
365
|
return status === 409 && /already in status:\s*(queued|running|complete|completed)/i.test(body);
|
|
366
366
|
}
|
|
367
|
+
function previewTimeoutToolResult(jobId, timeoutMs, lastStatusData, extras = {}) {
|
|
368
|
+
const lastStatus = lastStatusData?.status ?? "unknown";
|
|
369
|
+
const result = {
|
|
370
|
+
ok: false,
|
|
371
|
+
job_id: jobId,
|
|
372
|
+
status: lastStatus,
|
|
373
|
+
outputs: lastStatusData?.outputs || [],
|
|
374
|
+
compute_seconds: lastStatusData?.compute_seconds,
|
|
375
|
+
egress_bytes: lastStatusData?.egress_bytes,
|
|
376
|
+
error: `Job did not complete within ${timeoutMs / 1e3}s; last status was ${lastStatus}`,
|
|
377
|
+
...extras
|
|
378
|
+
};
|
|
379
|
+
if (lastStatusData?.error) result.server_error = lastStatusData.error;
|
|
380
|
+
return result;
|
|
381
|
+
}
|
|
367
382
|
async function writeArtifact(workspace, subdir, filename, content) {
|
|
368
383
|
const dir = (0, import_node_path2.join)(workspace, "riddle", subdir);
|
|
369
384
|
await (0, import_promises2.mkdir)(dir, { recursive: true });
|
|
@@ -1260,6 +1275,7 @@ function register(api) {
|
|
|
1260
1275
|
const timeoutMs = ((params.timeout || 120) + 60) * 1e3;
|
|
1261
1276
|
const pollStart = Date.now();
|
|
1262
1277
|
const POLL_INTERVAL = 3e3;
|
|
1278
|
+
let lastStatusData = null;
|
|
1263
1279
|
while (Date.now() - pollStart < timeoutMs) {
|
|
1264
1280
|
let statusRes;
|
|
1265
1281
|
try {
|
|
@@ -1273,6 +1289,7 @@ function register(api) {
|
|
|
1273
1289
|
return { content: [{ type: "text", text: JSON.stringify({ ok: false, job_id: created.job_id, error: `Poll failed: HTTP ${statusRes.status}` }, null, 2) }] };
|
|
1274
1290
|
}
|
|
1275
1291
|
const statusData = await statusRes.json();
|
|
1292
|
+
lastStatusData = statusData;
|
|
1276
1293
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
1277
1294
|
const result = {
|
|
1278
1295
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
@@ -1304,7 +1321,7 @@ function register(api) {
|
|
|
1304
1321
|
}
|
|
1305
1322
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL));
|
|
1306
1323
|
}
|
|
1307
|
-
return { content: [{ type: "text", text: JSON.stringify(
|
|
1324
|
+
return { content: [{ type: "text", text: JSON.stringify(previewTimeoutToolResult(created.job_id, timeoutMs, lastStatusData), null, 2) }] };
|
|
1308
1325
|
}
|
|
1309
1326
|
},
|
|
1310
1327
|
{ optional: true }
|
|
@@ -1460,6 +1477,7 @@ function register(api) {
|
|
|
1460
1477
|
const timeoutMs = ((params.timeout || 180) + 120) * 1e3;
|
|
1461
1478
|
const pollStart = Date.now();
|
|
1462
1479
|
const POLL_INTERVAL = 3e3;
|
|
1480
|
+
let lastStatusData = null;
|
|
1463
1481
|
while (Date.now() - pollStart < timeoutMs) {
|
|
1464
1482
|
let statusRes;
|
|
1465
1483
|
try {
|
|
@@ -1473,6 +1491,7 @@ function register(api) {
|
|
|
1473
1491
|
return { content: [{ type: "text", text: JSON.stringify({ ok: false, job_id: created.job_id, error: `Poll failed: HTTP ${statusRes.status}` }, null, 2) }] };
|
|
1474
1492
|
}
|
|
1475
1493
|
const statusData = await statusRes.json();
|
|
1494
|
+
lastStatusData = statusData;
|
|
1476
1495
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
1477
1496
|
const result = {
|
|
1478
1497
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
@@ -1508,7 +1527,12 @@ function register(api) {
|
|
|
1508
1527
|
}
|
|
1509
1528
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL));
|
|
1510
1529
|
}
|
|
1511
|
-
return { content: [{ type: "text", text: JSON.stringify(
|
|
1530
|
+
return { content: [{ type: "text", text: JSON.stringify(previewTimeoutToolResult(created.job_id, timeoutMs, lastStatusData, {
|
|
1531
|
+
build_duration_ms: lastStatusData?.build_duration_ms,
|
|
1532
|
+
...lastStatusData?.build_log ? { build_log: lastStatusData.build_log } : {},
|
|
1533
|
+
...lastStatusData?.container_log ? { container_log: lastStatusData.container_log } : {},
|
|
1534
|
+
...lastStatusData?.audit ? { audit: lastStatusData.audit } : {}
|
|
1535
|
+
}), null, 2) }] };
|
|
1512
1536
|
}
|
|
1513
1537
|
},
|
|
1514
1538
|
{ optional: true }
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
configFromOpenClawApi,
|
|
3
3
|
createStaticPreview,
|
|
4
4
|
deleteStaticPreview
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SNGACMAL.js";
|
|
6
6
|
|
|
7
7
|
// src/index.ts
|
|
8
8
|
import { Type } from "@sinclair/typebox";
|
|
@@ -132,6 +132,21 @@ async function fetchWithRetry(url, init, timeoutMs, label, opts = {}) {
|
|
|
132
132
|
function isAlreadyStartedResponse(status, body) {
|
|
133
133
|
return status === 409 && /already in status:\s*(queued|running|complete|completed)/i.test(body);
|
|
134
134
|
}
|
|
135
|
+
function previewTimeoutToolResult(jobId, timeoutMs, lastStatusData, extras = {}) {
|
|
136
|
+
const lastStatus = lastStatusData?.status ?? "unknown";
|
|
137
|
+
const result = {
|
|
138
|
+
ok: false,
|
|
139
|
+
job_id: jobId,
|
|
140
|
+
status: lastStatus,
|
|
141
|
+
outputs: lastStatusData?.outputs || [],
|
|
142
|
+
compute_seconds: lastStatusData?.compute_seconds,
|
|
143
|
+
egress_bytes: lastStatusData?.egress_bytes,
|
|
144
|
+
error: `Job did not complete within ${timeoutMs / 1e3}s; last status was ${lastStatus}`,
|
|
145
|
+
...extras
|
|
146
|
+
};
|
|
147
|
+
if (lastStatusData?.error) result.server_error = lastStatusData.error;
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
135
150
|
async function writeArtifact(workspace, subdir, filename, content) {
|
|
136
151
|
const dir = join(workspace, "riddle", subdir);
|
|
137
152
|
await mkdir(dir, { recursive: true });
|
|
@@ -1028,6 +1043,7 @@ function register(api) {
|
|
|
1028
1043
|
const timeoutMs = ((params.timeout || 120) + 60) * 1e3;
|
|
1029
1044
|
const pollStart = Date.now();
|
|
1030
1045
|
const POLL_INTERVAL = 3e3;
|
|
1046
|
+
let lastStatusData = null;
|
|
1031
1047
|
while (Date.now() - pollStart < timeoutMs) {
|
|
1032
1048
|
let statusRes;
|
|
1033
1049
|
try {
|
|
@@ -1041,6 +1057,7 @@ function register(api) {
|
|
|
1041
1057
|
return { content: [{ type: "text", text: JSON.stringify({ ok: false, job_id: created.job_id, error: `Poll failed: HTTP ${statusRes.status}` }, null, 2) }] };
|
|
1042
1058
|
}
|
|
1043
1059
|
const statusData = await statusRes.json();
|
|
1060
|
+
lastStatusData = statusData;
|
|
1044
1061
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
1045
1062
|
const result = {
|
|
1046
1063
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
@@ -1072,7 +1089,7 @@ function register(api) {
|
|
|
1072
1089
|
}
|
|
1073
1090
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL));
|
|
1074
1091
|
}
|
|
1075
|
-
return { content: [{ type: "text", text: JSON.stringify(
|
|
1092
|
+
return { content: [{ type: "text", text: JSON.stringify(previewTimeoutToolResult(created.job_id, timeoutMs, lastStatusData), null, 2) }] };
|
|
1076
1093
|
}
|
|
1077
1094
|
},
|
|
1078
1095
|
{ optional: true }
|
|
@@ -1228,6 +1245,7 @@ function register(api) {
|
|
|
1228
1245
|
const timeoutMs = ((params.timeout || 180) + 120) * 1e3;
|
|
1229
1246
|
const pollStart = Date.now();
|
|
1230
1247
|
const POLL_INTERVAL = 3e3;
|
|
1248
|
+
let lastStatusData = null;
|
|
1231
1249
|
while (Date.now() - pollStart < timeoutMs) {
|
|
1232
1250
|
let statusRes;
|
|
1233
1251
|
try {
|
|
@@ -1241,6 +1259,7 @@ function register(api) {
|
|
|
1241
1259
|
return { content: [{ type: "text", text: JSON.stringify({ ok: false, job_id: created.job_id, error: `Poll failed: HTTP ${statusRes.status}` }, null, 2) }] };
|
|
1242
1260
|
}
|
|
1243
1261
|
const statusData = await statusRes.json();
|
|
1262
|
+
lastStatusData = statusData;
|
|
1244
1263
|
if (statusData.status === "complete" || statusData.status === "completed" || statusData.status === "failed") {
|
|
1245
1264
|
const result = {
|
|
1246
1265
|
ok: statusData.status === "complete" || statusData.status === "completed",
|
|
@@ -1276,7 +1295,12 @@ function register(api) {
|
|
|
1276
1295
|
}
|
|
1277
1296
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL));
|
|
1278
1297
|
}
|
|
1279
|
-
return { content: [{ type: "text", text: JSON.stringify(
|
|
1298
|
+
return { content: [{ type: "text", text: JSON.stringify(previewTimeoutToolResult(created.job_id, timeoutMs, lastStatusData, {
|
|
1299
|
+
build_duration_ms: lastStatusData?.build_duration_ms,
|
|
1300
|
+
...lastStatusData?.build_log ? { build_log: lastStatusData.build_log } : {},
|
|
1301
|
+
...lastStatusData?.container_log ? { container_log: lastStatusData.container_log } : {},
|
|
1302
|
+
...lastStatusData?.audit ? { audit: lastStatusData.audit } : {}
|
|
1303
|
+
}), null, 2) }] };
|
|
1280
1304
|
}
|
|
1281
1305
|
},
|
|
1282
1306
|
{ optional: true }
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "openclaw-riddledc",
|
|
3
3
|
"name": "Riddle",
|
|
4
4
|
"description": "Riddle (riddledc.com) hosted browser API tools for OpenClaw agents.",
|
|
5
|
-
"version": "0.9.
|
|
5
|
+
"version": "0.9.4",
|
|
6
6
|
"notes": "0.8.0: Added riddle_build_preview for Dockerfile-based builds with image caching.",
|
|
7
7
|
"type": "plugin",
|
|
8
8
|
"bundledSkills": [],
|