clawpad 0.4.1 → 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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +12 -12
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/ai/write/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/record/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/revert/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/abort/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/pages/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/recent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/spaces/[space]/pages/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/spaces/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/watch/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/detect/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/features/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/history/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/resolve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/openclaw/commands/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/search-status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/bootstrap/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/bootstrap-workspace/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/connection/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/connection.html +1 -1
- package/.next/standalone/.next/server/app/settings/connection.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/relay/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/relay.html +1 -1
- package/.next/standalone/.next/server/app/settings/relay.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +1 -1
- package/.next/standalone/.next/server/app/setup.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/waitlist.html +1 -1
- package/.next/standalone/.next/server/app/waitlist.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/waitlist/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/waitlist.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/search/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/search.html +2 -2
- package/.next/standalone/.next/server/app/workspace/search.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.html +2 -2
- package/.next/standalone/.next/server/app/workspace.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/workspace.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +12 -12
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/package.json +1 -1
- package/bin/clawpad.js +83 -25
- package/package.json +1 -1
- /package/.next/static/{6EwCvP9EKUvJxIMHYw3Dj → NMJhAYvDpFBwOVZ62c1WD}/_buildManifest.js +0 -0
- /package/.next/static/{6EwCvP9EKUvJxIMHYw3Dj → NMJhAYvDpFBwOVZ62c1WD}/_ssgManifest.js +0 -0
package/bin/clawpad.js
CHANGED
|
@@ -354,15 +354,16 @@ async function startShare(shareArgs) {
|
|
|
354
354
|
console.log(` 🔑 Token: ${token.slice(0, 8)}...`);
|
|
355
355
|
console.log();
|
|
356
356
|
|
|
357
|
-
connectRelay(relayUrl, token, gateway.url, agentName);
|
|
357
|
+
connectRelay(relayUrl, token, gateway.url, gateway.token, agentName);
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
function connectRelay(relayUrl, token, gatewayWsUrl, agentName = "unknown") {
|
|
360
|
+
function connectRelay(relayUrl, token, gatewayWsUrl, gatewayToken, agentName = "unknown") {
|
|
361
361
|
console.log(` ☁️ Connecting to Relay...`);
|
|
362
362
|
|
|
363
363
|
const tunnelUrl = `${relayUrl}?type=agent&token=${encodeURIComponent(token)}&name=${encodeURIComponent(agentName)}&version=${encodeURIComponent(CURRENT_VERSION)}&platform=${encodeURIComponent(process.platform)}`;
|
|
364
364
|
const ws = new WebSocket(tunnelUrl);
|
|
365
365
|
let gatewayWs = null;
|
|
366
|
+
let gatewayConnected = false;
|
|
366
367
|
let reconnectTimer = null;
|
|
367
368
|
|
|
368
369
|
const cleanup = () => {
|
|
@@ -370,29 +371,75 @@ function connectRelay(relayUrl, token, gatewayWsUrl, agentName = "unknown") {
|
|
|
370
371
|
gatewayWs.terminate();
|
|
371
372
|
gatewayWs = null;
|
|
372
373
|
}
|
|
374
|
+
gatewayConnected = false;
|
|
373
375
|
if (reconnectTimer) {
|
|
374
376
|
clearTimeout(reconnectTimer);
|
|
375
377
|
reconnectTimer = null;
|
|
376
378
|
}
|
|
377
379
|
};
|
|
378
380
|
|
|
379
|
-
|
|
380
|
-
console.log(" ✅ Connected to Cloud Relay.");
|
|
381
|
-
console.log(" Your agent is now accessible via app.clawpad.io");
|
|
382
|
-
|
|
383
|
-
// Connect to Local Gateway
|
|
381
|
+
const connectToGateway = () => {
|
|
384
382
|
gatewayWs = new WebSocket(gatewayWsUrl);
|
|
385
383
|
|
|
386
384
|
gatewayWs.on("open", () => {
|
|
387
|
-
|
|
385
|
+
// Gateway is open but we need to wait for connect.challenge
|
|
388
386
|
});
|
|
389
387
|
|
|
390
388
|
gatewayWs.on("message", (data) => {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
389
|
+
try {
|
|
390
|
+
const msg = JSON.parse(data.toString());
|
|
391
|
+
|
|
392
|
+
// Handle gateway connect.challenge - authenticate before forwarding
|
|
393
|
+
if (msg.type === "event" && msg.event === "connect.challenge") {
|
|
394
|
+
const connectReq = {
|
|
395
|
+
type: "req",
|
|
396
|
+
id: `connect-${Date.now()}`,
|
|
397
|
+
method: "connect",
|
|
398
|
+
params: {
|
|
399
|
+
minProtocol: 3,
|
|
400
|
+
maxProtocol: 3,
|
|
401
|
+
client: {
|
|
402
|
+
id: "cli",
|
|
403
|
+
version: CURRENT_VERSION,
|
|
404
|
+
platform: process.platform,
|
|
405
|
+
mode: "cli"
|
|
406
|
+
},
|
|
407
|
+
role: "operator",
|
|
408
|
+
scopes: ["operator.read", "operator.write"],
|
|
409
|
+
caps: [],
|
|
410
|
+
commands: [],
|
|
411
|
+
permissions: {},
|
|
412
|
+
auth: gatewayToken ? { token: gatewayToken } : {},
|
|
413
|
+
locale: "en-US",
|
|
414
|
+
userAgent: `clawpad-relay/${CURRENT_VERSION}`
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
gatewayWs.send(JSON.stringify(connectReq));
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Handle connect response
|
|
422
|
+
if (msg.type === "res" && msg.ok && msg.payload?.type === "hello-ok") {
|
|
423
|
+
console.log(" 🔗 Connected to Local Gateway.");
|
|
424
|
+
gatewayConnected = true;
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Handle connect error
|
|
429
|
+
if (msg.type === "res" && !msg.ok) {
|
|
430
|
+
console.error(" ❌ Gateway auth failed:", msg.error?.message || "unknown error");
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// Forward other messages Gateway -> Relay
|
|
435
|
+
if (gatewayConnected && ws.readyState === WebSocket.OPEN) {
|
|
436
|
+
ws.send(data);
|
|
437
|
+
}
|
|
438
|
+
} catch {
|
|
439
|
+
// Non-JSON or parse error, forward anyway if connected
|
|
440
|
+
if (gatewayConnected && ws.readyState === WebSocket.OPEN) {
|
|
441
|
+
ws.send(data);
|
|
442
|
+
}
|
|
396
443
|
}
|
|
397
444
|
});
|
|
398
445
|
|
|
@@ -400,22 +447,33 @@ function connectRelay(relayUrl, token, gatewayWsUrl, agentName = "unknown") {
|
|
|
400
447
|
console.error(" ⚠️ Local Gateway Error:", err.message);
|
|
401
448
|
});
|
|
402
449
|
|
|
403
|
-
gatewayWs.on("close", () => {
|
|
404
|
-
console.log(
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
// Re-establish local connection logic could go here or just let it fail until next message
|
|
408
|
-
// Ideally we close the tunnel or try to reconnect local
|
|
409
|
-
ws.close(); // Force full reconnect cycle
|
|
410
|
-
}
|
|
411
|
-
}, 5000);
|
|
450
|
+
gatewayWs.on("close", (code, reason) => {
|
|
451
|
+
console.log(` ⚠️ Local Gateway Disconnected (${code}). Will reconnect on relay reconnect.`);
|
|
452
|
+
gatewayConnected = false;
|
|
453
|
+
// Don't reconnect gateway independently - let relay reconnect handle it
|
|
412
454
|
});
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
ws.on("open", () => {
|
|
458
|
+
console.log(" ✅ Connected to Cloud Relay.");
|
|
459
|
+
console.log(" Your agent is now accessible via app.clawpad.io");
|
|
460
|
+
connectToGateway();
|
|
461
|
+
|
|
462
|
+
// Keep connection alive with pings every 25s
|
|
463
|
+
const pingInterval = setInterval(() => {
|
|
464
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
465
|
+
ws.ping();
|
|
466
|
+
} else {
|
|
467
|
+
clearInterval(pingInterval);
|
|
468
|
+
}
|
|
469
|
+
}, 25000);
|
|
470
|
+
|
|
471
|
+
ws.on("close", () => clearInterval(pingInterval));
|
|
413
472
|
});
|
|
414
473
|
|
|
415
474
|
ws.on("message", (data) => {
|
|
416
475
|
// Forward Relay -> Gateway
|
|
417
|
-
|
|
418
|
-
if (gatewayWs && gatewayWs.readyState === WebSocket.OPEN) {
|
|
476
|
+
if (gatewayWs && gatewayWs.readyState === WebSocket.OPEN && gatewayConnected) {
|
|
419
477
|
gatewayWs.send(data);
|
|
420
478
|
}
|
|
421
479
|
});
|
|
@@ -427,7 +485,7 @@ function connectRelay(relayUrl, token, gatewayWsUrl, agentName = "unknown") {
|
|
|
427
485
|
ws.on("close", () => {
|
|
428
486
|
console.log(" ❌ Disconnected from Relay. Reconnecting in 5s...");
|
|
429
487
|
cleanup();
|
|
430
|
-
reconnectTimer = setTimeout(() => connectRelay(relayUrl, token, gatewayWsUrl), 5000);
|
|
488
|
+
reconnectTimer = setTimeout(() => connectRelay(relayUrl, token, gatewayWsUrl, gatewayToken, agentName), 5000);
|
|
431
489
|
});
|
|
432
490
|
}
|
|
433
491
|
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|