@absol-labs/agent 0.7.3 → 0.9.0
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/README.md +19 -4
- package/dist/discovery/registry.d.ts +110 -305
- package/dist/discovery/registry.d.ts.map +1 -1
- package/dist/discovery/registry.js +141 -318
- package/dist/discovery/registry.js.map +1 -1
- package/dist/frameworks/agentkit.d.ts.map +1 -1
- package/dist/frameworks/agentkit.js +23 -6
- package/dist/frameworks/agentkit.js.map +1 -1
- package/dist/gateway/caller-auth-gateway.d.ts +103 -2
- package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
- package/dist/gateway/caller-auth-gateway.js +176 -19
- package/dist/gateway/caller-auth-gateway.js.map +1 -1
- package/dist/gateway/http-server.d.ts +12 -0
- package/dist/gateway/http-server.d.ts.map +1 -1
- package/dist/gateway/http-server.js +45 -1
- package/dist/gateway/http-server.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/wallet/autonomous-wallet-store.d.ts +123 -0
- package/dist/wallet/autonomous-wallet-store.d.ts.map +1 -0
- package/dist/wallet/autonomous-wallet-store.js +318 -0
- package/dist/wallet/autonomous-wallet-store.js.map +1 -0
- package/dist/wallet/autonomous-wallet.d.ts +14 -39
- package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet.js +12 -145
- package/dist/wallet/autonomous-wallet.js.map +1 -1
- package/dist/wallet/cdp-sdk.d.ts +23 -0
- package/dist/wallet/cdp-sdk.d.ts.map +1 -0
- package/dist/wallet/cdp-sdk.js +27 -0
- package/dist/wallet/cdp-sdk.js.map +1 -0
- package/dist/wallet/encrypted-file-credential-store.d.ts +41 -0
- package/dist/wallet/encrypted-file-credential-store.d.ts.map +1 -0
- package/dist/wallet/encrypted-file-credential-store.js +221 -0
- package/dist/wallet/encrypted-file-credential-store.js.map +1 -0
- package/dist/wallet/provider.d.ts +1 -1
- package/dist/wallet/provider.d.ts.map +1 -1
- package/dist/wallet/provider.js +8 -3
- package/dist/wallet/provider.js.map +1 -1
- package/dist/wallet/secret-service-probe.d.ts +56 -0
- package/dist/wallet/secret-service-probe.d.ts.map +1 -0
- package/dist/wallet/secret-service-probe.js +407 -0
- package/dist/wallet/secret-service-probe.js.map +1 -0
- package/dist/zktls/reclaim-js-sdk.d.ts +24 -0
- package/dist/zktls/reclaim-js-sdk.d.ts.map +1 -0
- package/dist/zktls/reclaim-js-sdk.js +29 -0
- package/dist/zktls/reclaim-js-sdk.js.map +1 -0
- package/dist/zktls/reclaim.d.ts +14 -2
- package/dist/zktls/reclaim.d.ts.map +1 -1
- package/dist/zktls/reclaim.js +29 -6
- package/dist/zktls/reclaim.js.map +1 -1
- package/dist/zktls/t2-delivery-proof.d.ts +8 -1
- package/dist/zktls/t2-delivery-proof.d.ts.map +1 -1
- package/dist/zktls/t2-delivery-proof.js +22 -6
- package/dist/zktls/t2-delivery-proof.js.map +1 -1
- package/docs/agent-layer.md +150 -0
- package/docs/autonomous-privy-wallet.md +133 -0
- package/docs/crewai.md +70 -0
- package/docs/eliza.md +109 -0
- package/docs/langchain.md +63 -0
- package/docs/mcp-hosted.md +137 -0
- package/docs/privy-embedded-wallet.md +102 -0
- package/docs/quickstart.md +370 -0
- package/docs/threat-model.md +160 -0
- package/package.json +19 -6
- package/src/discovery/registry.ts +242 -414
- package/src/frameworks/agentkit.ts +24 -5
- package/src/gateway/caller-auth-gateway.ts +281 -15
- package/src/gateway/http-server.ts +64 -0
- package/src/index.ts +24 -0
- package/src/wallet/autonomous-wallet-store.ts +487 -0
- package/src/wallet/autonomous-wallet.ts +57 -224
- package/src/wallet/cdp-sdk.ts +33 -0
- package/src/wallet/encrypted-file-credential-store.ts +341 -0
- package/src/wallet/provider.ts +16 -9
- package/src/wallet/secret-service-probe.ts +487 -0
- package/src/zktls/reclaim-js-sdk.ts +50 -0
- package/src/zktls/reclaim.ts +57 -23
- package/src/zktls/t2-delivery-proof.ts +28 -10
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { connect } from "node:net";
|
|
3
|
+
/**
|
|
4
|
+
* Detects whether a freedesktop Secret Service provider (gnome-keyring,
|
|
5
|
+
* KeePassXC, KWallet, ...) is reachable on the D-Bus session bus.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists: `@napi-rs/keyring` ships BOTH a `dbus-secret-service`
|
|
8
|
+
* backend and a `linux-keyutils` backend in the same native module and picks
|
|
9
|
+
* one at runtime. When no Secret Service provider answers on the session bus
|
|
10
|
+
* it silently falls through to `linux-keyutils` — the Linux *kernel* keyring,
|
|
11
|
+
* which lives in RAM and is destroyed on reboot. A credential written there
|
|
12
|
+
* looks durable (it round-trips across processes and SSH sessions) but is not,
|
|
13
|
+
* so an agent that provisioned a funded wallet loses its owner key on reboot.
|
|
14
|
+
*
|
|
15
|
+
* The keyring module exposes no API to report which backend it resolved, so the
|
|
16
|
+
* only way to know is to ask the session bus the same question it asks: does
|
|
17
|
+
* anyone own the well-known name `org.freedesktop.secrets`?
|
|
18
|
+
*
|
|
19
|
+
* This talks the D-Bus wire protocol directly over `node:net` (SASL EXTERNAL
|
|
20
|
+
* handshake, then `org.freedesktop.DBus.Hello` and `NameHasOwner`) so no extra
|
|
21
|
+
* dependency and no external binary is required. It is deliberately
|
|
22
|
+
* FAIL-CLOSED: any missing bus, malformed reply, protocol error or timeout
|
|
23
|
+
* reports "not available", which callers must treat as "not durable".
|
|
24
|
+
*/
|
|
25
|
+
const SECRET_SERVICE_BUS_NAME = "org.freedesktop.secrets";
|
|
26
|
+
const DBUS_PATH = "/org/freedesktop/DBus";
|
|
27
|
+
const DBUS_INTERFACE = "org.freedesktop.DBus";
|
|
28
|
+
const DBUS_DESTINATION = "org.freedesktop.DBus";
|
|
29
|
+
const MESSAGE_TYPE_METHOD_RETURN = 2;
|
|
30
|
+
const MESSAGE_TYPE_ERROR = 3;
|
|
31
|
+
const HEADER_FIELD_ERROR_NAME = 4;
|
|
32
|
+
const HEADER_FIELD_REPLY_SERIAL = 5;
|
|
33
|
+
const HEADER_FIELD_SIGNATURE = 8;
|
|
34
|
+
const HELLO_SERIAL = 1;
|
|
35
|
+
const NAME_HAS_OWNER_SERIAL = 2;
|
|
36
|
+
function alignTo(value, alignment) {
|
|
37
|
+
const remainder = value % alignment;
|
|
38
|
+
return remainder === 0 ? value : value + (alignment - remainder);
|
|
39
|
+
}
|
|
40
|
+
/** Minimal little-endian D-Bus marshaller. Messages here are a few dozen bytes. */
|
|
41
|
+
class ByteWriter {
|
|
42
|
+
bytes = [];
|
|
43
|
+
get length() {
|
|
44
|
+
return this.bytes.length;
|
|
45
|
+
}
|
|
46
|
+
byte(value) {
|
|
47
|
+
this.bytes.push(value & 0xff);
|
|
48
|
+
}
|
|
49
|
+
align(alignment) {
|
|
50
|
+
while (this.bytes.length % alignment !== 0)
|
|
51
|
+
this.bytes.push(0);
|
|
52
|
+
}
|
|
53
|
+
uint32(value) {
|
|
54
|
+
this.align(4);
|
|
55
|
+
this.bytes.push(value & 0xff, (value >>> 8) & 0xff, (value >>> 16) & 0xff, (value >>> 24) & 0xff);
|
|
56
|
+
}
|
|
57
|
+
raw(buffer) {
|
|
58
|
+
for (const byte of buffer)
|
|
59
|
+
this.bytes.push(byte);
|
|
60
|
+
}
|
|
61
|
+
/** DBus STRING / OBJECT_PATH: uint32 length, utf8 bytes, NUL. */
|
|
62
|
+
string(value) {
|
|
63
|
+
const encoded = Buffer.from(value, "utf8");
|
|
64
|
+
this.uint32(encoded.length);
|
|
65
|
+
this.raw(encoded);
|
|
66
|
+
this.byte(0);
|
|
67
|
+
}
|
|
68
|
+
/** DBus SIGNATURE: single length byte, ascii bytes, NUL. */
|
|
69
|
+
signature(value) {
|
|
70
|
+
const encoded = Buffer.from(value, "ascii");
|
|
71
|
+
this.byte(encoded.length);
|
|
72
|
+
this.raw(encoded);
|
|
73
|
+
this.byte(0);
|
|
74
|
+
}
|
|
75
|
+
toBuffer() {
|
|
76
|
+
return Buffer.from(this.bytes);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function encodeHeaderFields(fields) {
|
|
80
|
+
const writer = new ByteWriter();
|
|
81
|
+
for (const [code, field] of fields) {
|
|
82
|
+
// Each ARRAY-of-STRUCT element is 8-byte aligned. The field array always
|
|
83
|
+
// starts at message offset 16, which is itself 8-aligned, so writing this
|
|
84
|
+
// buffer standalone produces identical padding.
|
|
85
|
+
writer.align(8);
|
|
86
|
+
writer.byte(code);
|
|
87
|
+
writer.signature(field.type);
|
|
88
|
+
if (field.type === "u")
|
|
89
|
+
writer.uint32(field.value);
|
|
90
|
+
else if (field.type === "g")
|
|
91
|
+
writer.signature(field.value);
|
|
92
|
+
else
|
|
93
|
+
writer.string(field.value);
|
|
94
|
+
}
|
|
95
|
+
return writer.toBuffer();
|
|
96
|
+
}
|
|
97
|
+
/** Exported for unit tests: encodes one METHOD_CALL message. */
|
|
98
|
+
export function encodeMethodCall(input) {
|
|
99
|
+
const body = input.body ?? Buffer.alloc(0);
|
|
100
|
+
const fields = [
|
|
101
|
+
[1, { type: "o", value: input.path }],
|
|
102
|
+
[2, { type: "s", value: input.interfaceName }],
|
|
103
|
+
[3, { type: "s", value: input.member }],
|
|
104
|
+
[6, { type: "s", value: input.destination }],
|
|
105
|
+
];
|
|
106
|
+
if (input.signature !== undefined) {
|
|
107
|
+
fields.push([
|
|
108
|
+
HEADER_FIELD_SIGNATURE,
|
|
109
|
+
{ type: "g", value: input.signature },
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
const encodedFields = encodeHeaderFields(fields);
|
|
113
|
+
const message = new ByteWriter();
|
|
114
|
+
message.byte(0x6c); // 'l' — little endian
|
|
115
|
+
message.byte(1); // METHOD_CALL
|
|
116
|
+
message.byte(0); // no flags
|
|
117
|
+
message.byte(1); // protocol version
|
|
118
|
+
message.uint32(body.length);
|
|
119
|
+
message.uint32(input.serial);
|
|
120
|
+
message.uint32(encodedFields.length);
|
|
121
|
+
message.raw(encodedFields);
|
|
122
|
+
message.align(8);
|
|
123
|
+
message.raw(body);
|
|
124
|
+
return message.toBuffer();
|
|
125
|
+
}
|
|
126
|
+
/** Exported for unit tests: encodes a single-STRING message body. */
|
|
127
|
+
export function encodeStringBody(value) {
|
|
128
|
+
const writer = new ByteWriter();
|
|
129
|
+
writer.string(value);
|
|
130
|
+
return writer.toBuffer();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Exported for unit tests: decodes as many complete messages as `buffer` holds
|
|
134
|
+
* and returns the undecoded remainder. Throws on a malformed stream.
|
|
135
|
+
*/
|
|
136
|
+
export function decodeMessages(buffer) {
|
|
137
|
+
const messages = [];
|
|
138
|
+
let offset = 0;
|
|
139
|
+
while (buffer.length - offset >= 16) {
|
|
140
|
+
const start = offset;
|
|
141
|
+
const endian = buffer[start];
|
|
142
|
+
if (endian !== 0x6c && endian !== 0x42) {
|
|
143
|
+
throw new Error("invalid D-Bus endianness marker");
|
|
144
|
+
}
|
|
145
|
+
const littleEndian = endian === 0x6c;
|
|
146
|
+
const readUint32 = (at) => littleEndian ? buffer.readUInt32LE(at) : buffer.readUInt32BE(at);
|
|
147
|
+
const type = buffer[start + 1];
|
|
148
|
+
const bodyLength = readUint32(start + 4);
|
|
149
|
+
const serial = readUint32(start + 8);
|
|
150
|
+
const fieldsLength = readUint32(start + 12);
|
|
151
|
+
const bodyOffset = alignTo(16 + fieldsLength, 8);
|
|
152
|
+
const total = bodyOffset + bodyLength;
|
|
153
|
+
if (buffer.length - start < total)
|
|
154
|
+
break;
|
|
155
|
+
let replySerial;
|
|
156
|
+
let signature;
|
|
157
|
+
let errorName;
|
|
158
|
+
const fieldsEnd = 16 + fieldsLength;
|
|
159
|
+
let cursor = 16;
|
|
160
|
+
while (cursor < fieldsEnd) {
|
|
161
|
+
cursor = alignTo(cursor, 8);
|
|
162
|
+
if (cursor >= fieldsEnd)
|
|
163
|
+
break;
|
|
164
|
+
const code = buffer[start + cursor];
|
|
165
|
+
cursor += 1;
|
|
166
|
+
const typeLength = buffer[start + cursor];
|
|
167
|
+
cursor += 1;
|
|
168
|
+
const fieldType = buffer.toString("ascii", start + cursor, start + cursor + typeLength);
|
|
169
|
+
cursor += typeLength + 1;
|
|
170
|
+
if (fieldType === "u") {
|
|
171
|
+
cursor = alignTo(cursor, 4);
|
|
172
|
+
const value = readUint32(start + cursor);
|
|
173
|
+
cursor += 4;
|
|
174
|
+
if (code === HEADER_FIELD_REPLY_SERIAL)
|
|
175
|
+
replySerial = value;
|
|
176
|
+
}
|
|
177
|
+
else if (fieldType === "s" || fieldType === "o") {
|
|
178
|
+
cursor = alignTo(cursor, 4);
|
|
179
|
+
const length = readUint32(start + cursor);
|
|
180
|
+
cursor += 4;
|
|
181
|
+
const value = buffer.toString("utf8", start + cursor, start + cursor + length);
|
|
182
|
+
cursor += length + 1;
|
|
183
|
+
if (code === HEADER_FIELD_ERROR_NAME)
|
|
184
|
+
errorName = value;
|
|
185
|
+
}
|
|
186
|
+
else if (fieldType === "g") {
|
|
187
|
+
const length = buffer[start + cursor];
|
|
188
|
+
cursor += 1;
|
|
189
|
+
const value = buffer.toString("ascii", start + cursor, start + cursor + length);
|
|
190
|
+
cursor += length + 1;
|
|
191
|
+
if (code === HEADER_FIELD_SIGNATURE)
|
|
192
|
+
signature = value;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
throw new Error(`unsupported D-Bus header field type "${fieldType}"`);
|
|
196
|
+
}
|
|
197
|
+
if (cursor > fieldsEnd) {
|
|
198
|
+
throw new Error("malformed D-Bus header fields");
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
messages.push({
|
|
202
|
+
type,
|
|
203
|
+
serial,
|
|
204
|
+
...(replySerial === undefined ? {} : { replySerial }),
|
|
205
|
+
...(signature === undefined ? {} : { signature }),
|
|
206
|
+
...(errorName === undefined ? {} : { errorName }),
|
|
207
|
+
body: buffer.subarray(start + bodyOffset, start + total),
|
|
208
|
+
littleEndian,
|
|
209
|
+
});
|
|
210
|
+
offset = start + total;
|
|
211
|
+
}
|
|
212
|
+
return { messages, rest: buffer.subarray(offset) };
|
|
213
|
+
}
|
|
214
|
+
/** Exported for unit tests. */
|
|
215
|
+
export function resolveSessionBusPath(env) {
|
|
216
|
+
const address = env.DBUS_SESSION_BUS_ADDRESS;
|
|
217
|
+
if (typeof address === "string" && address.trim() !== "") {
|
|
218
|
+
for (const entry of address.split(";")) {
|
|
219
|
+
const trimmed = entry.trim();
|
|
220
|
+
if (!trimmed.startsWith("unix:"))
|
|
221
|
+
continue;
|
|
222
|
+
const parameters = new Map();
|
|
223
|
+
for (const pair of trimmed.slice("unix:".length).split(",")) {
|
|
224
|
+
const separator = pair.indexOf("=");
|
|
225
|
+
if (separator > 0) {
|
|
226
|
+
parameters.set(pair.slice(0, separator), pair.slice(separator + 1));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const path = parameters.get("path");
|
|
230
|
+
if (path !== undefined && path !== "")
|
|
231
|
+
return { kind: "path", path };
|
|
232
|
+
const abstract = parameters.get("abstract");
|
|
233
|
+
if (abstract !== undefined && abstract !== "") {
|
|
234
|
+
// Linux abstract namespace sockets are addressed with a leading NUL.
|
|
235
|
+
return { kind: "path", path: `\0${abstract}` };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
kind: "error",
|
|
240
|
+
detail: `DBUS_SESSION_BUS_ADDRESS has no usable unix transport (${address})`,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
const runtimeDirectory = env.XDG_RUNTIME_DIR;
|
|
244
|
+
if (typeof runtimeDirectory === "string" && runtimeDirectory !== "") {
|
|
245
|
+
const candidate = `${runtimeDirectory.replace(/\/$/, "")}/bus`;
|
|
246
|
+
if (existsSync(candidate))
|
|
247
|
+
return { kind: "path", path: candidate };
|
|
248
|
+
return {
|
|
249
|
+
kind: "error",
|
|
250
|
+
detail: `no D-Bus session socket at ${candidate}`,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
kind: "error",
|
|
255
|
+
detail: "no D-Bus session bus (DBUS_SESSION_BUS_ADDRESS and XDG_RUNTIME_DIR are unset)",
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Asks the D-Bus session bus whether `org.freedesktop.secrets` has an owner.
|
|
260
|
+
* Never throws; every failure path resolves to `available: false`.
|
|
261
|
+
*/
|
|
262
|
+
export async function probeSecretServiceAvailable(options = {}) {
|
|
263
|
+
const env = options.env ?? process.env;
|
|
264
|
+
const timeoutMs = options.timeoutMs ?? 2_000;
|
|
265
|
+
const address = resolveSessionBusPath(env);
|
|
266
|
+
if (address.kind === "error") {
|
|
267
|
+
return { available: false, detail: address.detail };
|
|
268
|
+
}
|
|
269
|
+
const uid = options.uid ??
|
|
270
|
+
(typeof process.getuid === "function" ? process.getuid() : 0);
|
|
271
|
+
return new Promise((resolve) => {
|
|
272
|
+
let socket;
|
|
273
|
+
try {
|
|
274
|
+
socket = connect({ path: address.path });
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
resolve({
|
|
278
|
+
available: false,
|
|
279
|
+
detail: `could not connect to the D-Bus session bus: ${describe(error)}`,
|
|
280
|
+
});
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
let settled = false;
|
|
284
|
+
let authenticated = false;
|
|
285
|
+
let buffer = Buffer.alloc(0);
|
|
286
|
+
const finish = (result) => {
|
|
287
|
+
if (settled)
|
|
288
|
+
return;
|
|
289
|
+
settled = true;
|
|
290
|
+
clearTimeout(timer);
|
|
291
|
+
socket.removeAllListeners();
|
|
292
|
+
socket.destroy();
|
|
293
|
+
resolve(result);
|
|
294
|
+
};
|
|
295
|
+
const timer = setTimeout(() => {
|
|
296
|
+
finish({
|
|
297
|
+
available: false,
|
|
298
|
+
detail: `D-Bus session bus did not answer within ${timeoutMs}ms`,
|
|
299
|
+
});
|
|
300
|
+
}, timeoutMs);
|
|
301
|
+
if (typeof timer.unref === "function")
|
|
302
|
+
timer.unref();
|
|
303
|
+
socket.on("error", (error) => {
|
|
304
|
+
finish({
|
|
305
|
+
available: false,
|
|
306
|
+
detail: `D-Bus session bus connection failed: ${describe(error)}`,
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
socket.on("close", () => {
|
|
310
|
+
finish({
|
|
311
|
+
available: false,
|
|
312
|
+
detail: "D-Bus session bus closed the connection before replying",
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
socket.on("connect", () => {
|
|
316
|
+
// SASL EXTERNAL: the NUL byte, then the uid as ASCII hex.
|
|
317
|
+
const identity = Buffer.from(String(uid), "ascii").toString("hex");
|
|
318
|
+
socket.write(`\0AUTH EXTERNAL ${identity}\r\n`);
|
|
319
|
+
});
|
|
320
|
+
socket.on("data", (chunk) => {
|
|
321
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
322
|
+
if (!authenticated) {
|
|
323
|
+
const terminator = buffer.indexOf("\r\n");
|
|
324
|
+
if (terminator < 0)
|
|
325
|
+
return;
|
|
326
|
+
const line = buffer.toString("ascii", 0, terminator);
|
|
327
|
+
buffer = buffer.subarray(terminator + 2);
|
|
328
|
+
if (!line.startsWith("OK")) {
|
|
329
|
+
finish({
|
|
330
|
+
available: false,
|
|
331
|
+
detail: `D-Bus session bus rejected authentication (${line})`,
|
|
332
|
+
});
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
authenticated = true;
|
|
336
|
+
socket.write("BEGIN\r\n");
|
|
337
|
+
socket.write(encodeMethodCall({
|
|
338
|
+
serial: HELLO_SERIAL,
|
|
339
|
+
path: DBUS_PATH,
|
|
340
|
+
interfaceName: DBUS_INTERFACE,
|
|
341
|
+
member: "Hello",
|
|
342
|
+
destination: DBUS_DESTINATION,
|
|
343
|
+
}));
|
|
344
|
+
socket.write(encodeMethodCall({
|
|
345
|
+
serial: NAME_HAS_OWNER_SERIAL,
|
|
346
|
+
path: DBUS_PATH,
|
|
347
|
+
interfaceName: DBUS_INTERFACE,
|
|
348
|
+
member: "NameHasOwner",
|
|
349
|
+
destination: DBUS_DESTINATION,
|
|
350
|
+
signature: "s",
|
|
351
|
+
body: encodeStringBody(SECRET_SERVICE_BUS_NAME),
|
|
352
|
+
}));
|
|
353
|
+
if (buffer.length === 0)
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
let decoded;
|
|
357
|
+
try {
|
|
358
|
+
decoded = decodeMessages(buffer);
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
finish({
|
|
362
|
+
available: false,
|
|
363
|
+
detail: `could not decode the D-Bus reply: ${describe(error)}`,
|
|
364
|
+
});
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
buffer = decoded.rest;
|
|
368
|
+
for (const message of decoded.messages) {
|
|
369
|
+
if (message.replySerial !== NAME_HAS_OWNER_SERIAL)
|
|
370
|
+
continue;
|
|
371
|
+
if (message.type === MESSAGE_TYPE_ERROR) {
|
|
372
|
+
finish({
|
|
373
|
+
available: false,
|
|
374
|
+
detail: `D-Bus NameHasOwner failed (${message.errorName ?? "unknown error"})`,
|
|
375
|
+
});
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
if (message.type !== MESSAGE_TYPE_METHOD_RETURN ||
|
|
379
|
+
message.signature !== "b" ||
|
|
380
|
+
message.body.length < 4) {
|
|
381
|
+
finish({
|
|
382
|
+
available: false,
|
|
383
|
+
detail: "D-Bus returned an unexpected NameHasOwner reply",
|
|
384
|
+
});
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const owned = (message.littleEndian
|
|
388
|
+
? message.body.readUInt32LE(0)
|
|
389
|
+
: message.body.readUInt32BE(0)) !== 0;
|
|
390
|
+
finish(owned
|
|
391
|
+
? {
|
|
392
|
+
available: true,
|
|
393
|
+
detail: `${SECRET_SERVICE_BUS_NAME} is owned on the D-Bus session bus`,
|
|
394
|
+
}
|
|
395
|
+
: {
|
|
396
|
+
available: false,
|
|
397
|
+
detail: `no process owns ${SECRET_SERVICE_BUS_NAME} on the D-Bus session bus`,
|
|
398
|
+
});
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
function describe(error) {
|
|
405
|
+
return error instanceof Error ? error.message : String(error);
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=secret-service-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-service-probe.js","sourceRoot":"","sources":["../../src/wallet/secret-service-probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@reclaimprotocol/js-sdk` is an OPTIONAL peer dependency: only consumers that
|
|
3
|
+
* actually generate/verify zkTLS delivery proofs (T2, issue #24) need it, and it
|
|
4
|
+
* carries a large transitive graph. The top-level "@absol-labs/agent" barrel
|
|
5
|
+
* DOES re-export the zkTLS modules, so those modules must import the SDK's
|
|
6
|
+
* TYPES only (`import type`, erased at compile time) and load the runtime module
|
|
7
|
+
* lazily through this loader at the point of first use.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT a top-level `await import(...)` (the pattern used by
|
|
10
|
+
* `../frameworks/langchain.ts`): that module is not barrel-reachable, this one
|
|
11
|
+
* is, and a top-level await would re-introduce the hard dependency at
|
|
12
|
+
* barrel-import time.
|
|
13
|
+
*/
|
|
14
|
+
type ReclaimJsSdkModule = typeof import("@reclaimprotocol/js-sdk");
|
|
15
|
+
/** Memoized lazy load with an actionable missing-peer error. */
|
|
16
|
+
export declare function loadReclaimJsSdk(): Promise<ReclaimJsSdkModule>;
|
|
17
|
+
/**
|
|
18
|
+
* `@reclaimprotocol/zk-fetch` is the companion optional peer used to PRODUCE
|
|
19
|
+
* proofs (the SDK above verifies them). Same contract, same actionable error.
|
|
20
|
+
*/
|
|
21
|
+
type ReclaimZkFetchModule = typeof import("@reclaimprotocol/zk-fetch");
|
|
22
|
+
export declare function loadReclaimZkFetch(): Promise<ReclaimZkFetchModule>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=reclaim-js-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reclaim-js-sdk.d.ts","sourceRoot":"","sources":["../../src/zktls/reclaim-js-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,KAAK,kBAAkB,GAAG,cAAc,yBAAyB,CAAC,CAAC;AAInE,gEAAgE;AAChE,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAUpE;AAED;;;GAGG;AACH,KAAK,oBAAoB,GAAG,cAAc,2BAA2B,CAAC,CAAC;AAIvE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAUxE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@reclaimprotocol/js-sdk` is an OPTIONAL peer dependency: only consumers that
|
|
3
|
+
* actually generate/verify zkTLS delivery proofs (T2, issue #24) need it, and it
|
|
4
|
+
* carries a large transitive graph. The top-level "@absol-labs/agent" barrel
|
|
5
|
+
* DOES re-export the zkTLS modules, so those modules must import the SDK's
|
|
6
|
+
* TYPES only (`import type`, erased at compile time) and load the runtime module
|
|
7
|
+
* lazily through this loader at the point of first use.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT a top-level `await import(...)` (the pattern used by
|
|
10
|
+
* `../frameworks/langchain.ts`): that module is not barrel-reachable, this one
|
|
11
|
+
* is, and a top-level await would re-introduce the hard dependency at
|
|
12
|
+
* barrel-import time.
|
|
13
|
+
*/
|
|
14
|
+
let modulePromise;
|
|
15
|
+
/** Memoized lazy load with an actionable missing-peer error. */
|
|
16
|
+
export async function loadReclaimJsSdk() {
|
|
17
|
+
modulePromise ??= import("@reclaimprotocol/js-sdk").catch((error) => {
|
|
18
|
+
throw new Error("@absol-labs/agent zkTLS delivery-proof support requires the optional peer dependency '@reclaimprotocol/js-sdk'. Install it with `npm install @reclaimprotocol/js-sdk`.", { cause: error });
|
|
19
|
+
});
|
|
20
|
+
return await modulePromise;
|
|
21
|
+
}
|
|
22
|
+
let zkFetchModulePromise;
|
|
23
|
+
export async function loadReclaimZkFetch() {
|
|
24
|
+
zkFetchModulePromise ??= import("@reclaimprotocol/zk-fetch").catch((error) => {
|
|
25
|
+
throw new Error("@absol-labs/agent zkTLS delivery-proof support requires the optional peer dependency '@reclaimprotocol/zk-fetch'. Install it with `npm install @reclaimprotocol/zk-fetch`.", { cause: error });
|
|
26
|
+
});
|
|
27
|
+
return await zkFetchModulePromise;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=reclaim-js-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reclaim-js-sdk.js","sourceRoot":"","sources":["../../src/zktls/reclaim-js-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,IAAI,aAAsD,CAAC;AAE3D,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,aAAa,KAAK,MAAM,CAAC,yBAAyB,CAAC,CAAC,KAAK,CACvD,CAAC,KAAc,EAAE,EAAE;QACjB,MAAM,IAAI,KAAK,CACb,wKAAwK,EACxK,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC,CACF,CAAC;IACF,OAAO,MAAM,aAAa,CAAC;AAC7B,CAAC;AAQD,IAAI,oBAA+D,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,oBAAoB,KAAK,MAAM,CAAC,2BAA2B,CAAC,CAAC,KAAK,CAChE,CAAC,KAAc,EAAE,EAAE;QACjB,MAAM,IAAI,KAAK,CACb,4KAA4K,EAC5K,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC,CACF,CAAC;IACF,OAAO,MAAM,oBAAoB,CAAC;AACpC,CAAC"}
|
package/dist/zktls/reclaim.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { verifyProof,
|
|
1
|
+
import type { verifyProof, Proof as ReclaimProtocolProof, RequestSpec, VerifyProofResult } from "@reclaimprotocol/js-sdk";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
declare const responseMatchSchema: z.ZodObject<{
|
|
4
4
|
type: z.ZodEnum<["regex", "contains"]>;
|
|
@@ -133,11 +133,23 @@ export declare class ResponseProofVerificationError extends Error {
|
|
|
133
133
|
export declare class ReclaimConsumerProofService implements ConsumerDeliveryProofService {
|
|
134
134
|
private readonly client;
|
|
135
135
|
private readonly config;
|
|
136
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Caller-supplied verifier, if any. NOT defaulted in the constructor: the real
|
|
138
|
+
* `verifyProof` lives in the optional peer `@reclaimprotocol/js-sdk`, which is
|
|
139
|
+
* loaded lazily at first use so that merely constructing this service — or
|
|
140
|
+
* importing the package barrel — never requires the peer to be installed.
|
|
141
|
+
* Resolved in {@link resolveVerifyProof}.
|
|
142
|
+
*/
|
|
143
|
+
private readonly verifyProofOverride;
|
|
137
144
|
constructor(config: ReclaimProofServiceConfig, options?: {
|
|
138
145
|
readonly createClient?: (applicationId: string, applicationSecret: string, logs: boolean) => ReclaimClientLike;
|
|
139
146
|
readonly verifyProof?: VerifyProofFn;
|
|
140
147
|
});
|
|
148
|
+
/**
|
|
149
|
+
* The verifier to use: a caller-supplied override, else the optional peer's
|
|
150
|
+
* `verifyProof`, loaded on first use with an actionable missing-peer error.
|
|
151
|
+
*/
|
|
152
|
+
private resolveVerifyProof;
|
|
141
153
|
proveConsumedHttpsResponse(input: ProveConsumedHttpsResponseInput): Promise<VerifiedConsumedHttpsResponseProof>;
|
|
142
154
|
}
|
|
143
155
|
export declare function parseReclaimProofEnv(env?: NodeJS.ProcessEnv): ParsedReclaimProofEnv | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim.d.ts","sourceRoot":"","sources":["../../src/zktls/reclaim.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reclaim.d.ts","sourceRoot":"","sources":["../../src/zktls/reclaim.ts"],"names":[],"mappings":"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"}
|
package/dist/zktls/reclaim.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getHttpProviderClaimParamsFromProof, getProviderHashRequirementsFromSpec, verifyProof, } from "@reclaimprotocol/js-sdk";
|
|
2
1
|
import { z } from "zod";
|
|
2
|
+
import { loadReclaimJsSdk } from "./reclaim-js-sdk.js";
|
|
3
3
|
const addressSchema = z.string().regex(/^0x[0-9a-fA-F]{40}$/);
|
|
4
4
|
const bytes32Schema = z.string().regex(/^0x[0-9a-fA-F]{64}$/);
|
|
5
5
|
const httpMethodSchema = z.enum(["GET", "POST", "PUT"]);
|
|
@@ -57,14 +57,30 @@ const reclaimProofInputSchema = z.object({
|
|
|
57
57
|
export class ReclaimConsumerProofService {
|
|
58
58
|
client;
|
|
59
59
|
config;
|
|
60
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Caller-supplied verifier, if any. NOT defaulted in the constructor: the real
|
|
62
|
+
* `verifyProof` lives in the optional peer `@reclaimprotocol/js-sdk`, which is
|
|
63
|
+
* loaded lazily at first use so that merely constructing this service — or
|
|
64
|
+
* importing the package barrel — never requires the peer to be installed.
|
|
65
|
+
* Resolved in {@link resolveVerifyProof}.
|
|
66
|
+
*/
|
|
67
|
+
verifyProofOverride;
|
|
61
68
|
constructor(config, options = {}) {
|
|
62
69
|
this.config = {
|
|
63
70
|
...config,
|
|
64
71
|
logs: config.logs ?? false,
|
|
65
72
|
};
|
|
66
73
|
this.client = (options.createClient ?? defaultReclaimClientFactory)(this.config.applicationId, this.config.applicationSecret, this.config.logs ?? false);
|
|
67
|
-
this.
|
|
74
|
+
this.verifyProofOverride = options.verifyProof;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The verifier to use: a caller-supplied override, else the optional peer's
|
|
78
|
+
* `verifyProof`, loaded on first use with an actionable missing-peer error.
|
|
79
|
+
*/
|
|
80
|
+
async resolveVerifyProof() {
|
|
81
|
+
if (this.verifyProofOverride !== undefined)
|
|
82
|
+
return this.verifyProofOverride;
|
|
83
|
+
return (await loadReclaimJsSdk()).verifyProof;
|
|
68
84
|
}
|
|
69
85
|
async proveConsumedHttpsResponse(input) {
|
|
70
86
|
const parsed = reclaimProofInputSchema.parse(input);
|
|
@@ -101,8 +117,14 @@ export class ReclaimConsumerProofService {
|
|
|
101
117
|
if (proof === undefined) {
|
|
102
118
|
throw new ResponseProofUnavailableError("reclaim returned no zkTLS response proof");
|
|
103
119
|
}
|
|
104
|
-
|
|
105
|
-
|
|
120
|
+
// Both the verifier and the provider-hash helper live in the optional peer;
|
|
121
|
+
// load it once here rather than importing it at module scope.
|
|
122
|
+
const [verifyProofFn, reclaimSdk] = await Promise.all([
|
|
123
|
+
this.resolveVerifyProof(),
|
|
124
|
+
loadReclaimJsSdk(),
|
|
125
|
+
]);
|
|
126
|
+
const verification = await verifyProofFn(proof, {
|
|
127
|
+
...reclaimSdk.getProviderHashRequirementsFromSpec({
|
|
106
128
|
requests: [toRequestSpec(parsed, method)],
|
|
107
129
|
}),
|
|
108
130
|
...(parsed.useTee === true
|
|
@@ -120,7 +142,8 @@ export class ReclaimConsumerProofService {
|
|
|
120
142
|
if (trusted === undefined) {
|
|
121
143
|
throw new ResponseProofVerificationError("zkTLS response proof verification returned no trusted data");
|
|
122
144
|
}
|
|
123
|
-
|
|
145
|
+
// Same optional peer, already memoized by the loader above.
|
|
146
|
+
const request = reclaimSdk.getHttpProviderClaimParamsFromProof(proof);
|
|
124
147
|
return {
|
|
125
148
|
proof,
|
|
126
149
|
request: {
|