@agentvault/agentvault 0.13.6 → 0.13.8
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/account-config.d.ts +0 -1
- package/dist/account-config.d.ts.map +1 -1
- package/dist/channel.d.ts +9 -0
- package/dist/channel.d.ts.map +1 -1
- package/dist/cli.js +221 -29
- package/dist/cli.js.map +2 -2
- package/dist/fetch-interceptor.d.ts +32 -0
- package/dist/fetch-interceptor.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +242 -57
- package/dist/index.js.map +2 -2
- package/dist/openclaw-entry.d.ts.map +1 -1
- package/dist/openclaw-entry.js +228 -37
- package/dist/openclaw-entry.js.map +3 -3
- package/dist/openclaw-plugin.d.ts.map +1 -1
- package/dist/setup.d.ts +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/state.d.ts +14 -0
- package/dist/state.d.ts.map +1 -1
- package/openclaw.plugin.json +51 -4
- package/package.json +1 -1
package/dist/account-config.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export interface ResolvedAccount {
|
|
|
14
14
|
agentName: string;
|
|
15
15
|
httpPort: number;
|
|
16
16
|
configured: boolean;
|
|
17
|
-
inviteToken: string;
|
|
18
17
|
}
|
|
19
18
|
export declare function listAccountIds(cfg: any): string[];
|
|
20
19
|
export declare function resolveAccount(cfg: any, accountId?: string): ResolvedAccount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../src/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../src/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAOjD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CA0C5E"}
|
package/dist/channel.d.ts
CHANGED
|
@@ -105,6 +105,8 @@ export declare class SecureChannel extends EventEmitter {
|
|
|
105
105
|
*/
|
|
106
106
|
sendToRoom(roomId: string, plaintext: string, opts?: {
|
|
107
107
|
messageType?: string;
|
|
108
|
+
priority?: string;
|
|
109
|
+
metadata?: Record<string, unknown>;
|
|
108
110
|
}): Promise<void>;
|
|
109
111
|
/**
|
|
110
112
|
* Leave a room: remove sessions and persisted room state.
|
|
@@ -129,6 +131,13 @@ export declare class SecureChannel extends EventEmitter {
|
|
|
129
131
|
decisionId?: string;
|
|
130
132
|
detail?: string;
|
|
131
133
|
}): Promise<void>;
|
|
134
|
+
sendActionConfirmationToRoom(roomId: string, confirmation: {
|
|
135
|
+
action: string;
|
|
136
|
+
status: "completed" | "failed" | "partial";
|
|
137
|
+
decisionId?: string;
|
|
138
|
+
detail?: string;
|
|
139
|
+
estimated_cost?: number;
|
|
140
|
+
}): Promise<void>;
|
|
132
141
|
private _sendHeartbeat;
|
|
133
142
|
stop(): Promise<void>;
|
|
134
143
|
startHttpServer(port: number): void;
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,OAAO,EAWL,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAMZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,QAAQ,EAER,UAAU,EAEX,MAAM,YAAY,CAAC;AAoDpB,qBAAa,aAAc,SAAQ,YAAY;IA8CjC,OAAO,CAAC,MAAM;IA7C1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAGH;IACd,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,kBAAkB,CAAwC;IAClE,OAAO,CAAC,yBAAyB,CAAa;IAC9C,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,eAAe,CAA4B;IAEnD,0GAA0G;IAC1G,OAAO,CAAC,gBAAgB,CAAiF;IACzG,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAqB;IAIjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAU;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAU;gBAEnC,MAAM,EAAE,mBAAmB;IAI/C,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,iEAAiE;IACjE,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,2CAA2C;IAC3C,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,6CAA6C;IAC7C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,kFAAkF;IAClF,IAAI,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAExC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -45540,12 +45540,12 @@ var init_crypto_helpers = __esm({
|
|
|
45540
45540
|
});
|
|
45541
45541
|
|
|
45542
45542
|
// src/state.ts
|
|
45543
|
-
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
45543
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
45544
45544
|
import { join } from "node:path";
|
|
45545
45545
|
async function saveState(dataDir2, state) {
|
|
45546
|
-
await mkdir(dataDir2, { recursive: true });
|
|
45546
|
+
await mkdir(dataDir2, { recursive: true, mode: DIR_MODE });
|
|
45547
45547
|
const filePath = join(dataDir2, STATE_FILE);
|
|
45548
|
-
await writeFile(filePath, JSON.stringify(state, null, 2), "utf-8");
|
|
45548
|
+
await writeFile(filePath, JSON.stringify(state, null, 2), { encoding: "utf-8", mode: FILE_MODE });
|
|
45549
45549
|
try {
|
|
45550
45550
|
await rm(join(dataDir2, LEGACY_STATE_FILE));
|
|
45551
45551
|
} catch {
|
|
@@ -45562,14 +45562,52 @@ async function loadState(dataDir2) {
|
|
|
45562
45562
|
try {
|
|
45563
45563
|
const raw = await readFile(legacyPath, "utf-8");
|
|
45564
45564
|
const parsed = JSON.parse(raw);
|
|
45565
|
-
await mkdir(dataDir2, { recursive: true });
|
|
45566
|
-
await writeFile(filePath, JSON.stringify(parsed, null, 2), "utf-8");
|
|
45565
|
+
await mkdir(dataDir2, { recursive: true, mode: DIR_MODE });
|
|
45566
|
+
await writeFile(filePath, JSON.stringify(parsed, null, 2), { encoding: "utf-8", mode: FILE_MODE });
|
|
45567
45567
|
await rm(legacyPath);
|
|
45568
45568
|
return parsed;
|
|
45569
45569
|
} catch {
|
|
45570
45570
|
return null;
|
|
45571
45571
|
}
|
|
45572
45572
|
}
|
|
45573
|
+
async function isStateValid(dataDir2) {
|
|
45574
|
+
try {
|
|
45575
|
+
const filePath = join(dataDir2, STATE_FILE);
|
|
45576
|
+
const raw = await readFile(filePath, "utf-8");
|
|
45577
|
+
const parsed = JSON.parse(raw);
|
|
45578
|
+
return !!(parsed && parsed.deviceId && parsed.deviceJwt && parsed.sessions && Object.keys(parsed.sessions).length > 0);
|
|
45579
|
+
} catch {
|
|
45580
|
+
return false;
|
|
45581
|
+
}
|
|
45582
|
+
}
|
|
45583
|
+
async function backupState(dataDir2) {
|
|
45584
|
+
const src = join(dataDir2, STATE_FILE);
|
|
45585
|
+
const bak = join(dataDir2, `${STATE_FILE}.bak`);
|
|
45586
|
+
const tmp = join(dataDir2, `${STATE_FILE}.bak.tmp`);
|
|
45587
|
+
try {
|
|
45588
|
+
const data = await readFile(src, "utf-8");
|
|
45589
|
+
await writeFile(tmp, data, { encoding: "utf-8", mode: FILE_MODE });
|
|
45590
|
+
await rename(tmp, bak);
|
|
45591
|
+
} catch {
|
|
45592
|
+
}
|
|
45593
|
+
}
|
|
45594
|
+
async function restoreState(dataDir2) {
|
|
45595
|
+
const primaryValid = await isStateValid(dataDir2);
|
|
45596
|
+
if (primaryValid) return false;
|
|
45597
|
+
const bak = join(dataDir2, `${STATE_FILE}.bak`);
|
|
45598
|
+
try {
|
|
45599
|
+
const data = await readFile(bak, "utf-8");
|
|
45600
|
+
const parsed = JSON.parse(data);
|
|
45601
|
+
if (!parsed || !parsed.deviceId || !parsed.deviceJwt || !parsed.sessions || Object.keys(parsed.sessions).length === 0) {
|
|
45602
|
+
return false;
|
|
45603
|
+
}
|
|
45604
|
+
await mkdir(dataDir2, { recursive: true, mode: DIR_MODE });
|
|
45605
|
+
await writeFile(join(dataDir2, STATE_FILE), data, { encoding: "utf-8", mode: FILE_MODE });
|
|
45606
|
+
return true;
|
|
45607
|
+
} catch {
|
|
45608
|
+
return false;
|
|
45609
|
+
}
|
|
45610
|
+
}
|
|
45573
45611
|
async function clearState(dataDir2) {
|
|
45574
45612
|
for (const filename of [STATE_FILE, LEGACY_STATE_FILE]) {
|
|
45575
45613
|
try {
|
|
@@ -45578,12 +45616,14 @@ async function clearState(dataDir2) {
|
|
|
45578
45616
|
}
|
|
45579
45617
|
}
|
|
45580
45618
|
}
|
|
45581
|
-
var STATE_FILE, LEGACY_STATE_FILE;
|
|
45619
|
+
var STATE_FILE, LEGACY_STATE_FILE, DIR_MODE, FILE_MODE;
|
|
45582
45620
|
var init_state = __esm({
|
|
45583
45621
|
"src/state.ts"() {
|
|
45584
45622
|
"use strict";
|
|
45585
45623
|
STATE_FILE = "agentvault.json";
|
|
45586
45624
|
LEGACY_STATE_FILE = "secure-channel.json";
|
|
45625
|
+
DIR_MODE = 448;
|
|
45626
|
+
FILE_MODE = 384;
|
|
45587
45627
|
}
|
|
45588
45628
|
});
|
|
45589
45629
|
|
|
@@ -45753,6 +45793,7 @@ var init_channel = __esm({
|
|
|
45753
45793
|
await libsodium_wrappers_default.ready;
|
|
45754
45794
|
const raw = await loadState(this.config.dataDir);
|
|
45755
45795
|
if (raw) {
|
|
45796
|
+
await backupState(this.config.dataDir);
|
|
45756
45797
|
this._persisted = migratePersistedState(raw);
|
|
45757
45798
|
if (!this._persisted.messageHistory) {
|
|
45758
45799
|
this._persisted.messageHistory = [];
|
|
@@ -45776,6 +45817,30 @@ var init_channel = __esm({
|
|
|
45776
45817
|
this._connect();
|
|
45777
45818
|
return;
|
|
45778
45819
|
}
|
|
45820
|
+
const restored = await restoreState(this.config.dataDir);
|
|
45821
|
+
if (restored) {
|
|
45822
|
+
console.log("[SecureChannel] Restored state from backup");
|
|
45823
|
+
const restoredRaw = await loadState(this.config.dataDir);
|
|
45824
|
+
if (restoredRaw) {
|
|
45825
|
+
this._persisted = migratePersistedState(restoredRaw);
|
|
45826
|
+
if (!this._persisted.messageHistory) this._persisted.messageHistory = [];
|
|
45827
|
+
this._deviceId = this._persisted.deviceId;
|
|
45828
|
+
this._deviceJwt = this._persisted.deviceJwt;
|
|
45829
|
+
this._primaryConversationId = this._persisted.primaryConversationId;
|
|
45830
|
+
this._fingerprint = this._persisted.fingerprint;
|
|
45831
|
+
for (const [convId, sd] of Object.entries(this._persisted.sessions)) {
|
|
45832
|
+
if (sd.ratchetState) {
|
|
45833
|
+
this._sessions.set(convId, {
|
|
45834
|
+
ownerDeviceId: sd.ownerDeviceId,
|
|
45835
|
+
ratchet: DoubleRatchet.deserialize(sd.ratchetState),
|
|
45836
|
+
activated: sd.activated ?? false
|
|
45837
|
+
});
|
|
45838
|
+
}
|
|
45839
|
+
}
|
|
45840
|
+
this._connect();
|
|
45841
|
+
return;
|
|
45842
|
+
}
|
|
45843
|
+
}
|
|
45779
45844
|
await this._enroll();
|
|
45780
45845
|
}
|
|
45781
45846
|
/**
|
|
@@ -46122,7 +46187,9 @@ var init_channel = __esm({
|
|
|
46122
46187
|
data: {
|
|
46123
46188
|
room_id: roomId,
|
|
46124
46189
|
recipients,
|
|
46125
|
-
message_type: messageType
|
|
46190
|
+
message_type: messageType,
|
|
46191
|
+
priority: opts?.priority ?? "normal",
|
|
46192
|
+
metadata: opts?.metadata
|
|
46126
46193
|
}
|
|
46127
46194
|
})
|
|
46128
46195
|
);
|
|
@@ -46136,7 +46203,12 @@ var init_channel = __esm({
|
|
|
46136
46203
|
"Content-Type": "application/json",
|
|
46137
46204
|
Authorization: `Bearer ${this._deviceJwt}`
|
|
46138
46205
|
},
|
|
46139
|
-
body: JSON.stringify({
|
|
46206
|
+
body: JSON.stringify({
|
|
46207
|
+
recipients,
|
|
46208
|
+
message_type: messageType,
|
|
46209
|
+
priority: opts?.priority ?? "normal",
|
|
46210
|
+
metadata: opts?.metadata
|
|
46211
|
+
})
|
|
46140
46212
|
}
|
|
46141
46213
|
);
|
|
46142
46214
|
if (!res.ok) {
|
|
@@ -46281,6 +46353,27 @@ var init_channel = __esm({
|
|
|
46281
46353
|
}
|
|
46282
46354
|
);
|
|
46283
46355
|
}
|
|
46356
|
+
async sendActionConfirmationToRoom(roomId, confirmation) {
|
|
46357
|
+
const envelope = {
|
|
46358
|
+
type: "action_confirmation",
|
|
46359
|
+
action: confirmation.action,
|
|
46360
|
+
status: confirmation.status
|
|
46361
|
+
};
|
|
46362
|
+
if (confirmation.decisionId !== void 0) envelope.decision_id = confirmation.decisionId;
|
|
46363
|
+
if (confirmation.detail !== void 0) envelope.detail = confirmation.detail;
|
|
46364
|
+
const metadata = {
|
|
46365
|
+
action: confirmation.action,
|
|
46366
|
+
status: confirmation.status
|
|
46367
|
+
};
|
|
46368
|
+
if (confirmation.estimated_cost !== void 0) {
|
|
46369
|
+
metadata.estimated_cost = confirmation.estimated_cost;
|
|
46370
|
+
}
|
|
46371
|
+
await this.sendToRoom(roomId, JSON.stringify(envelope), {
|
|
46372
|
+
messageType: "action_confirmation",
|
|
46373
|
+
priority: "high",
|
|
46374
|
+
metadata
|
|
46375
|
+
});
|
|
46376
|
+
}
|
|
46284
46377
|
_sendHeartbeat() {
|
|
46285
46378
|
if (this._state !== "ready" || !this._heartbeatCallback) return;
|
|
46286
46379
|
const status = this._heartbeatCallback();
|
|
@@ -46355,10 +46448,52 @@ var init_channel = __esm({
|
|
|
46355
46448
|
res.end(JSON.stringify({ ok: false, error: "Missing 'text' field" }));
|
|
46356
46449
|
return;
|
|
46357
46450
|
}
|
|
46358
|
-
if (parsed.
|
|
46451
|
+
if (parsed.room_id && typeof parsed.room_id === "string") {
|
|
46452
|
+
await this.sendToRoom(parsed.room_id, text, {
|
|
46453
|
+
messageType: parsed.message_type,
|
|
46454
|
+
priority: parsed.priority,
|
|
46455
|
+
metadata: parsed.metadata
|
|
46456
|
+
});
|
|
46457
|
+
} else if (parsed.file_path && typeof parsed.file_path === "string") {
|
|
46359
46458
|
await this.sendWithAttachment(text, parsed.file_path, { topicId: parsed.topicId });
|
|
46360
46459
|
} else {
|
|
46361
|
-
await this.send(text, {
|
|
46460
|
+
await this.send(text, {
|
|
46461
|
+
topicId: parsed.topicId,
|
|
46462
|
+
messageType: parsed.message_type,
|
|
46463
|
+
metadata: parsed.metadata
|
|
46464
|
+
});
|
|
46465
|
+
}
|
|
46466
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
46467
|
+
res.end(JSON.stringify({ ok: true }));
|
|
46468
|
+
} catch (err) {
|
|
46469
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
46470
|
+
res.end(JSON.stringify({ ok: false, error: String(err) }));
|
|
46471
|
+
}
|
|
46472
|
+
});
|
|
46473
|
+
} else if (req.method === "POST" && req.url === "/action") {
|
|
46474
|
+
let body = "";
|
|
46475
|
+
req.on("data", (chunk) => {
|
|
46476
|
+
body += chunk.toString();
|
|
46477
|
+
});
|
|
46478
|
+
req.on("end", async () => {
|
|
46479
|
+
try {
|
|
46480
|
+
const parsed = JSON.parse(body);
|
|
46481
|
+
if (!parsed.action || typeof parsed.action !== "string") {
|
|
46482
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
46483
|
+
res.end(JSON.stringify({ ok: false, error: "Missing 'action' field" }));
|
|
46484
|
+
return;
|
|
46485
|
+
}
|
|
46486
|
+
const confirmation = {
|
|
46487
|
+
action: parsed.action,
|
|
46488
|
+
status: parsed.status ?? "completed",
|
|
46489
|
+
decisionId: parsed.decision_id,
|
|
46490
|
+
detail: parsed.detail,
|
|
46491
|
+
estimated_cost: parsed.estimated_cost
|
|
46492
|
+
};
|
|
46493
|
+
if (parsed.room_id && typeof parsed.room_id === "string") {
|
|
46494
|
+
await this.sendActionConfirmationToRoom(parsed.room_id, confirmation);
|
|
46495
|
+
} else {
|
|
46496
|
+
await this.sendActionConfirmation(confirmation);
|
|
46362
46497
|
}
|
|
46363
46498
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
46364
46499
|
res.end(JSON.stringify({ ok: true }));
|
|
@@ -46377,7 +46512,7 @@ var init_channel = __esm({
|
|
|
46377
46512
|
}));
|
|
46378
46513
|
} else {
|
|
46379
46514
|
res.writeHead(404, { "Content-Type": "application/json" });
|
|
46380
|
-
res.end(JSON.stringify({ ok: false, error: "Not found. Use POST /send or GET /status" }));
|
|
46515
|
+
res.end(JSON.stringify({ ok: false, error: "Not found. Use POST /send, POST /action, or GET /status" }));
|
|
46381
46516
|
}
|
|
46382
46517
|
});
|
|
46383
46518
|
this._httpServer.listen(port, "127.0.0.1", () => {
|
|
@@ -47171,7 +47306,15 @@ var init_channel = __esm({
|
|
|
47171
47306
|
nonce: hexToBytes(msgData.nonce)
|
|
47172
47307
|
};
|
|
47173
47308
|
const ratchet = DoubleRatchet.deserialize(channelEntry.session.ratchetState);
|
|
47174
|
-
const
|
|
47309
|
+
const ratchetSnapshot = channelEntry.session.ratchetState;
|
|
47310
|
+
let a2aPlaintext;
|
|
47311
|
+
try {
|
|
47312
|
+
a2aPlaintext = ratchet.decrypt(encryptedMessage);
|
|
47313
|
+
} catch (decryptErr) {
|
|
47314
|
+
console.error(`[SecureChannel] A2A decrypt failed \u2014 restoring ratchet state:`, decryptErr);
|
|
47315
|
+
channelEntry.session.ratchetState = ratchetSnapshot;
|
|
47316
|
+
return;
|
|
47317
|
+
}
|
|
47175
47318
|
channelEntry.session.ratchetState = ratchet.serialize();
|
|
47176
47319
|
if (channelEntry.role === "responder" && !channelEntry.session.activated) {
|
|
47177
47320
|
channelEntry.session.activated = true;
|
|
@@ -47194,7 +47337,7 @@ var init_channel = __esm({
|
|
|
47194
47337
|
}
|
|
47195
47338
|
await this._persistState();
|
|
47196
47339
|
const a2aMsg = {
|
|
47197
|
-
text:
|
|
47340
|
+
text: a2aPlaintext,
|
|
47198
47341
|
fromHubAddress: msgData.from_hub_address || msgData.hub_address || "",
|
|
47199
47342
|
channelId,
|
|
47200
47343
|
conversationId: msgData.conversation_id || "",
|
|
@@ -47265,7 +47408,19 @@ var init_channel = __esm({
|
|
|
47265
47408
|
header_blob: msgData.header_blob,
|
|
47266
47409
|
ciphertext: msgData.ciphertext
|
|
47267
47410
|
});
|
|
47268
|
-
const
|
|
47411
|
+
const ratchetSnapshot = session.ratchet.serialize();
|
|
47412
|
+
let plaintext;
|
|
47413
|
+
try {
|
|
47414
|
+
plaintext = session.ratchet.decrypt(encrypted);
|
|
47415
|
+
} catch (decryptErr) {
|
|
47416
|
+
console.error(`[SecureChannel] Decrypt failed for conv ${convId.slice(0, 8)}... \u2014 restoring ratchet:`, decryptErr);
|
|
47417
|
+
try {
|
|
47418
|
+
session.ratchet = DoubleRatchet.deserialize(ratchetSnapshot);
|
|
47419
|
+
} catch (restoreErr) {
|
|
47420
|
+
console.error("[SecureChannel] Ratchet restore failed:", restoreErr);
|
|
47421
|
+
}
|
|
47422
|
+
return;
|
|
47423
|
+
}
|
|
47269
47424
|
this._sendAck(msgData.message_id);
|
|
47270
47425
|
if (!session.activated) {
|
|
47271
47426
|
session.activated = true;
|
|
@@ -47653,9 +47808,14 @@ ${messageText}`;
|
|
|
47653
47808
|
ciphertext: msgData.ciphertext
|
|
47654
47809
|
});
|
|
47655
47810
|
let plaintext;
|
|
47811
|
+
const ratchetSnapshot = session.ratchet.serialize();
|
|
47656
47812
|
try {
|
|
47657
47813
|
plaintext = session.ratchet.decrypt(encrypted);
|
|
47658
47814
|
} catch (decryptErr) {
|
|
47815
|
+
try {
|
|
47816
|
+
session.ratchet = DoubleRatchet.deserialize(ratchetSnapshot);
|
|
47817
|
+
} catch {
|
|
47818
|
+
}
|
|
47659
47819
|
console.warn(
|
|
47660
47820
|
`[SecureChannel] Room decrypt failed for conv ${convId.slice(0, 8)}...: ${String(decryptErr)}, re-initializing ratchet`
|
|
47661
47821
|
);
|
|
@@ -47801,7 +47961,20 @@ ${messageText}`;
|
|
|
47801
47961
|
header_blob: msg.header_blob,
|
|
47802
47962
|
ciphertext: msg.ciphertext
|
|
47803
47963
|
});
|
|
47804
|
-
const
|
|
47964
|
+
const ratchetSnapshot = session.ratchet.serialize();
|
|
47965
|
+
let plaintext;
|
|
47966
|
+
try {
|
|
47967
|
+
plaintext = session.ratchet.decrypt(encrypted);
|
|
47968
|
+
} catch (decryptErr) {
|
|
47969
|
+
console.error(`[SecureChannel] Sync decrypt failed for ${msg.conversation_id.slice(0, 8)}... \u2014 restoring ratchet:`, decryptErr);
|
|
47970
|
+
try {
|
|
47971
|
+
session.ratchet = DoubleRatchet.deserialize(ratchetSnapshot);
|
|
47972
|
+
} catch {
|
|
47973
|
+
}
|
|
47974
|
+
this._persisted.lastMessageTimestamp = msg.created_at;
|
|
47975
|
+
since = msg.created_at;
|
|
47976
|
+
continue;
|
|
47977
|
+
}
|
|
47805
47978
|
this._sendAck(msg.id);
|
|
47806
47979
|
if (!session.activated) {
|
|
47807
47980
|
session.activated = true;
|
|
@@ -47836,7 +48009,7 @@ ${messageText}`;
|
|
|
47836
48009
|
totalProcessed++;
|
|
47837
48010
|
} catch (err) {
|
|
47838
48011
|
console.warn(
|
|
47839
|
-
`[SecureChannel] Sync
|
|
48012
|
+
`[SecureChannel] Sync failed for msg ${msg.id.slice(0, 8)}... in conv ${msg.conversation_id.slice(0, 8)}...: ${String(err)}`
|
|
47840
48013
|
);
|
|
47841
48014
|
this._persisted.lastMessageTimestamp = msg.created_at;
|
|
47842
48015
|
since = msg.created_at;
|
|
@@ -48032,7 +48205,18 @@ ${messageText}`;
|
|
|
48032
48205
|
header_blob: msg.header_blob,
|
|
48033
48206
|
ciphertext: msg.ciphertext
|
|
48034
48207
|
});
|
|
48035
|
-
const
|
|
48208
|
+
const ratchetSnapshot = session.ratchet.serialize();
|
|
48209
|
+
let plaintext;
|
|
48210
|
+
try {
|
|
48211
|
+
plaintext = session.ratchet.decrypt(encrypted);
|
|
48212
|
+
} catch (decryptErr) {
|
|
48213
|
+
console.error(`[SecureChannel] Room sync decrypt failed for ${msg.conversation_id.slice(0, 8)}... \u2014 restoring ratchet:`, decryptErr);
|
|
48214
|
+
try {
|
|
48215
|
+
session.ratchet = DoubleRatchet.deserialize(ratchetSnapshot);
|
|
48216
|
+
} catch {
|
|
48217
|
+
}
|
|
48218
|
+
continue;
|
|
48219
|
+
}
|
|
48036
48220
|
if (!session.activated) {
|
|
48037
48221
|
session.activated = true;
|
|
48038
48222
|
}
|
|
@@ -48112,6 +48296,7 @@ ${messageText}`;
|
|
|
48112
48296
|
};
|
|
48113
48297
|
}
|
|
48114
48298
|
await saveState(this.config.dataDir, this._persisted);
|
|
48299
|
+
await backupState(this.config.dataDir);
|
|
48115
48300
|
}
|
|
48116
48301
|
};
|
|
48117
48302
|
}
|
|
@@ -48204,7 +48389,7 @@ var init_index = __esm({
|
|
|
48204
48389
|
init_account_config();
|
|
48205
48390
|
await init_openclaw_plugin();
|
|
48206
48391
|
init_gateway_send();
|
|
48207
|
-
VERSION = "0.
|
|
48392
|
+
VERSION = "0.13.8";
|
|
48208
48393
|
}
|
|
48209
48394
|
});
|
|
48210
48395
|
|
|
@@ -48221,6 +48406,14 @@ import { resolve } from "node:path";
|
|
|
48221
48406
|
async function runSetupCommand(options) {
|
|
48222
48407
|
const { token: token2, name: name2, apiUrl: apiUrl2 } = options;
|
|
48223
48408
|
const dataDir2 = resolve(options.dataDir.replace(/^~/, process.env.HOME ?? "~"));
|
|
48409
|
+
const alreadyEnrolled = await isStateValid(dataDir2);
|
|
48410
|
+
if (alreadyEnrolled && !options.force) {
|
|
48411
|
+
console.log(`
|
|
48412
|
+
Already enrolled (state in ${dataDir2}).
|
|
48413
|
+
Re-enroll with --force, or update plugin with: openclaw plugins update agentvault
|
|
48414
|
+
`);
|
|
48415
|
+
return;
|
|
48416
|
+
}
|
|
48224
48417
|
console.log(`
|
|
48225
48418
|
\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
48226
48419
|
\u2551 AgentVault \u2014 First-Time Setup \u2551
|
|
@@ -48424,16 +48617,12 @@ function installPlugin(env) {
|
|
|
48424
48617
|
const installedVersion = versionMatch?.[1];
|
|
48425
48618
|
if (installedVersion && installedVersion !== VERSION) {
|
|
48426
48619
|
console.log(` Updating plugin ${installedVersion} \u2192 ${VERSION}...`);
|
|
48427
|
-
|
|
48428
|
-
stdio: "pipe",
|
|
48429
|
-
|
|
48430
|
-
|
|
48431
|
-
|
|
48432
|
-
|
|
48433
|
-
stdio: "pipe",
|
|
48434
|
-
env
|
|
48435
|
-
});
|
|
48436
|
-
console.log(" \u2705 Plugin updated.");
|
|
48620
|
+
try {
|
|
48621
|
+
execSync("openclaw plugins update agentvault", { stdio: "pipe", env });
|
|
48622
|
+
console.log(" Plugin updated.");
|
|
48623
|
+
} catch {
|
|
48624
|
+
console.log(` \u26A0\uFE0F Update failed \u2014 v${installedVersion} will be used.`);
|
|
48625
|
+
}
|
|
48437
48626
|
} else {
|
|
48438
48627
|
console.log(` Plugin already installed (v${installedVersion ?? "unknown"}).`);
|
|
48439
48628
|
}
|
|
@@ -48554,6 +48743,7 @@ var init_setup = __esm({
|
|
|
48554
48743
|
"use strict";
|
|
48555
48744
|
await init_channel();
|
|
48556
48745
|
await init_index();
|
|
48746
|
+
init_state();
|
|
48557
48747
|
}
|
|
48558
48748
|
});
|
|
48559
48749
|
|
|
@@ -48605,6 +48795,7 @@ Options:
|
|
|
48605
48795
|
--data-dir=PATH Directory for persistent state (default: ~/.openclaw/agentvault)
|
|
48606
48796
|
--api-url=URL API endpoint (default: https://api.agentvault.chat)
|
|
48607
48797
|
--account-id=ID Multi-agent account identifier (e.g., "work", "research")
|
|
48798
|
+
--force Re-enroll even if already enrolled (destroys existing state)
|
|
48608
48799
|
|
|
48609
48800
|
This command:
|
|
48610
48801
|
1. Enrolls this machine as your agent with AgentVault
|
|
@@ -48623,7 +48814,8 @@ After setup, restart OpenClaw \u2014 messages will flow automatically.
|
|
|
48623
48814
|
name,
|
|
48624
48815
|
apiUrl,
|
|
48625
48816
|
dataDir: flags["data-dir"] || process.env.AGENTVAULT_DATA_DIR || (accountId ? `~/.openclaw/agents/${accountId}/agentvault` : "~/.openclaw/agentvault"),
|
|
48626
|
-
accountId
|
|
48817
|
+
accountId,
|
|
48818
|
+
force: flags["force"] === "true"
|
|
48627
48819
|
});
|
|
48628
48820
|
process.exit(0);
|
|
48629
48821
|
}
|