@agentlair/sdk 0.1.0 → 0.2.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 +150 -90
- package/dist/client.d.ts +259 -97
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +418 -161
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +10 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -18
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +273 -0
- package/dist/index.test.js.map +1 -0
- package/dist/types.d.ts +171 -17
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,156 +1,318 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @agentlair/sdk — AgentLairClient
|
|
2
|
+
* @agentlair/sdk — AgentLair + AgentLairClient
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* `AgentLair` is the primary class. Accepts an API key string directly.
|
|
5
|
+
* `AgentLairClient` is the legacy class (accepts options object) — still fully supported.
|
|
6
6
|
*
|
|
7
|
-
* @example
|
|
7
|
+
* @example Three-line onboarding
|
|
8
|
+
* const lair = new AgentLair(process.env.AGENTLAIR_API_KEY!);
|
|
9
|
+
* const inbox = await lair.email.claim('my-agent'); // auto-expands to my-agent@agentlair.dev
|
|
10
|
+
* const { messages } = await lair.email.inbox('my-agent@agentlair.dev');
|
|
11
|
+
*
|
|
12
|
+
* @example Full flow
|
|
8
13
|
* // Create a new account (no API key needed)
|
|
9
|
-
* const { api_key
|
|
14
|
+
* const { api_key } = await AgentLair.createAccount({ name: 'my-agent' });
|
|
10
15
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* await
|
|
15
|
-
* await client.sendEmail({ from: 'my-agent@agentlair.dev', to: 'user@example.com', subject: 'Hello', text: 'Hi!' });
|
|
16
|
-
* const inbox = await client.getInbox({ address: 'my-agent@agentlair.dev' });
|
|
17
|
-
*/
|
|
18
|
-
import type { AgentLairClientOptions, ClaimAddressOptions, ClaimAddressResult, CreateAccountOptions, CreateAccountResult, FullMessage, GetInboxOptions, GetInboxResult, ReadMessageOptions, SendEmailOptions, SendEmailResult, VaultDeleteOptions, VaultDeleteResult, VaultGetOptions, VaultGetResult, VaultListResult, VaultPutOptions, VaultPutResult } from './types.js';
|
|
19
|
-
/**
|
|
20
|
-
* vault.put / vault.get / vault.list / vault.delete
|
|
16
|
+
* const lair = new AgentLair(api_key);
|
|
17
|
+
* await lair.email.claim('my-agent');
|
|
18
|
+
* await lair.email.send({ from: 'my-agent@agentlair.dev', to: 'user@example.com', subject: 'Hello', text: 'Hi!' });
|
|
19
|
+
* const { messages } = await lair.email.inbox('my-agent@agentlair.dev');
|
|
21
20
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* // Vault: store secrets (zero-knowledge — use @agentlair/vault-crypto to encrypt first)
|
|
22
|
+
* await lair.vault.put('openai-key', { ciphertext: encryptedBlob });
|
|
23
|
+
* const { ciphertext } = await lair.vault.get('openai-key');
|
|
25
24
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
import type { AccountMeResult, AgentLairOptions, BillingResult, ClaimAddressOptions, ClaimAddressResult, CreateAccountOptions, CreateAccountResult, DeleteMessageResult, DeleteWebhookResult, FullMessage, GetInboxOptions, GetInboxResult, ListAddressesResult, ListWebhooksOptions, ListWebhooksResult, Observation, ObservationsTopicsResult, OutboxResult, ReadMessageOptions, ReadObservationsOptions, ReadObservationsResult, RegisterWebhookOptions, SendEmailOptions, SendEmailResult, Stack, CreateStackOptions, ListStacksResult, UpdateMessageOptions, UpdateMessageResult, UsageResult, VaultDeleteOptions, VaultDeleteResult, VaultGetOptions, VaultGetResult, VaultListResult, VaultPutOptions, VaultPutResult, WriteObservationOptions } from './types.js';
|
|
26
|
+
type RequestFn = <T>(method: string, path: string, opts?: {
|
|
27
|
+
body?: unknown;
|
|
28
|
+
query?: Record<string, string>;
|
|
29
|
+
}) => Promise<T>;
|
|
30
|
+
declare class WebhooksNamespace {
|
|
31
|
+
private readonly _req;
|
|
32
|
+
constructor(_req: RequestFn);
|
|
32
33
|
/**
|
|
33
|
-
*
|
|
34
|
+
* Register a webhook URL to receive real-time `email.received` events.
|
|
34
35
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
36
|
+
* @example
|
|
37
|
+
* const hook = await lair.email.webhooks.create({
|
|
38
|
+
* address: 'my-agent@agentlair.dev',
|
|
39
|
+
* url: 'https://myserver.com/webhook',
|
|
40
|
+
* secret: 'my-secret',
|
|
41
|
+
* });
|
|
42
|
+
*/
|
|
43
|
+
create(options: RegisterWebhookOptions): Promise<{
|
|
44
|
+
id: string;
|
|
45
|
+
address: string;
|
|
46
|
+
url: string;
|
|
47
|
+
created_at: string;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* List registered webhooks, optionally filtered by address.
|
|
37
51
|
*
|
|
38
52
|
* @example
|
|
39
|
-
*
|
|
40
|
-
* const vc = VaultCrypto.fromSeed(seed);
|
|
41
|
-
* const ciphertext = await vc.encrypt('sk-openai-...', 'openai-key');
|
|
42
|
-
* await client.vault.put('openai-key', { ciphertext });
|
|
53
|
+
* const { webhooks } = await lair.email.webhooks.list();
|
|
43
54
|
*/
|
|
44
|
-
|
|
55
|
+
list(options?: ListWebhooksOptions): Promise<ListWebhooksResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete a webhook by ID.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* await lair.email.webhooks.delete('wh_abc123');
|
|
61
|
+
*/
|
|
62
|
+
delete(id: string): Promise<DeleteWebhookResult>;
|
|
63
|
+
}
|
|
64
|
+
declare class EmailNamespace {
|
|
65
|
+
private readonly _req;
|
|
66
|
+
/** Webhook management: webhooks.create / webhooks.list / webhooks.delete */
|
|
67
|
+
readonly webhooks: WebhooksNamespace;
|
|
68
|
+
constructor(_req: RequestFn);
|
|
45
69
|
/**
|
|
46
|
-
*
|
|
70
|
+
* Claim an @agentlair.dev email address.
|
|
47
71
|
*
|
|
48
|
-
*
|
|
72
|
+
* Pass a short name (e.g. `"my-agent"`) and it auto-expands to `my-agent@agentlair.dev`.
|
|
49
73
|
*
|
|
50
74
|
* @example
|
|
51
|
-
*
|
|
52
|
-
* //
|
|
53
|
-
* const plaintext = await vc.decrypt(ciphertext, 'openai-key');
|
|
75
|
+
* await lair.email.claim('my-agent'); // → my-agent@agentlair.dev
|
|
76
|
+
* await lair.email.claim('my-agent@agentlair.dev'); // also works
|
|
54
77
|
*/
|
|
55
|
-
|
|
78
|
+
claim(address: string, options?: Omit<ClaimAddressOptions, 'address'>): Promise<ClaimAddressResult>;
|
|
56
79
|
/**
|
|
57
|
-
* List all
|
|
80
|
+
* List all @agentlair.dev addresses claimed by this account.
|
|
58
81
|
*
|
|
59
82
|
* @example
|
|
60
|
-
* const {
|
|
83
|
+
* const { addresses } = await lair.email.addresses();
|
|
61
84
|
*/
|
|
62
|
-
|
|
85
|
+
addresses(): Promise<ListAddressesResult>;
|
|
63
86
|
/**
|
|
64
|
-
*
|
|
87
|
+
* Get inbox messages (previews — no full body).
|
|
88
|
+
* Use `read()` for the full body of a specific message.
|
|
65
89
|
*
|
|
66
|
-
*
|
|
90
|
+
* @example
|
|
91
|
+
* const { messages } = await lair.email.inbox('my-agent@agentlair.dev');
|
|
92
|
+
* const { messages } = await lair.email.inbox('my-agent', { limit: 5 });
|
|
93
|
+
*/
|
|
94
|
+
inbox(address: string, options?: Omit<GetInboxOptions, 'address'>): Promise<GetInboxResult>;
|
|
95
|
+
/**
|
|
96
|
+
* Read the full body of a message. Marks as read.
|
|
67
97
|
*
|
|
68
98
|
* @example
|
|
69
|
-
* await
|
|
70
|
-
*
|
|
99
|
+
* const msg = await lair.email.read(inboxMsg.message_id_url, 'my-agent@agentlair.dev');
|
|
100
|
+
* console.log(msg.body);
|
|
71
101
|
*/
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
export declare class AgentLairClient {
|
|
75
|
-
private readonly _apiKey;
|
|
76
|
-
private readonly _baseUrl;
|
|
102
|
+
read(messageId: string, address: string): Promise<FullMessage>;
|
|
77
103
|
/**
|
|
78
|
-
*
|
|
104
|
+
* Delete a message.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* await lair.email.deleteMessage(inboxMsg.message_id_url, 'my-agent@agentlair.dev');
|
|
79
108
|
*/
|
|
80
|
-
|
|
81
|
-
constructor(options: AgentLairClientOptions);
|
|
82
|
-
private _request;
|
|
109
|
+
deleteMessage(messageId: string, address: string): Promise<DeleteMessageResult>;
|
|
83
110
|
/**
|
|
84
|
-
*
|
|
111
|
+
* Update message properties (mark read/unread).
|
|
85
112
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
113
|
+
* @example
|
|
114
|
+
* await lair.email.update(msg.message_id_url, 'my-agent@agentlair.dev', { read: false });
|
|
115
|
+
*/
|
|
116
|
+
update(messageId: string, address: string, options: UpdateMessageOptions): Promise<UpdateMessageResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Send an email from an address you own.
|
|
88
119
|
*
|
|
89
|
-
* @
|
|
90
|
-
*
|
|
120
|
+
* @example
|
|
121
|
+
* await lair.email.send({
|
|
122
|
+
* from: 'my-agent@agentlair.dev',
|
|
123
|
+
* to: 'user@example.com',
|
|
124
|
+
* subject: 'Hello',
|
|
125
|
+
* text: 'Hi from an AI agent!',
|
|
126
|
+
* });
|
|
127
|
+
*/
|
|
128
|
+
send(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
129
|
+
/**
|
|
130
|
+
* List sent messages (outbox).
|
|
91
131
|
*
|
|
92
132
|
* @example
|
|
93
|
-
* const {
|
|
94
|
-
* // Store api_key securely — never log it
|
|
95
|
-
* const client = new AgentLairClient({ apiKey: api_key });
|
|
133
|
+
* const { messages } = await lair.email.outbox({ limit: 5 });
|
|
96
134
|
*/
|
|
97
|
-
|
|
135
|
+
outbox(options?: {
|
|
136
|
+
limit?: number;
|
|
137
|
+
}): Promise<OutboxResult>;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Zero-knowledge secret store.
|
|
141
|
+
* Server stores opaque encrypted blobs — plaintext never leaves your client.
|
|
142
|
+
* Use @agentlair/vault-crypto for client-side encryption.
|
|
143
|
+
*/
|
|
144
|
+
declare class VaultNamespace {
|
|
145
|
+
private readonly _req;
|
|
146
|
+
constructor(_req: RequestFn);
|
|
98
147
|
/**
|
|
99
|
-
*
|
|
148
|
+
* Store an encrypted blob (versioned, append-only).
|
|
100
149
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
150
|
+
* @example
|
|
151
|
+
* await lair.vault.put('openai-key', { ciphertext: encryptedBlob });
|
|
152
|
+
*/
|
|
153
|
+
put(key: string, options: VaultPutOptions): Promise<VaultPutResult>;
|
|
154
|
+
/**
|
|
155
|
+
* Retrieve an encrypted blob. Returns latest version by default.
|
|
103
156
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
157
|
+
* @example
|
|
158
|
+
* const { ciphertext } = await lair.vault.get('openai-key');
|
|
159
|
+
* const old = await lair.vault.get('openai-key', { version: 1 });
|
|
160
|
+
*/
|
|
161
|
+
get(key: string, options?: VaultGetOptions): Promise<VaultGetResult>;
|
|
162
|
+
/**
|
|
163
|
+
* List all Vault keys (metadata only).
|
|
106
164
|
*
|
|
107
165
|
* @example
|
|
108
|
-
*
|
|
166
|
+
* const { keys, count, limit } = await lair.vault.list();
|
|
109
167
|
*/
|
|
110
|
-
|
|
168
|
+
list(): Promise<VaultListResult>;
|
|
169
|
+
/**
|
|
170
|
+
* Delete a key (all versions) or a specific version.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* await lair.vault.delete('openai-key');
|
|
174
|
+
* await lair.vault.delete('openai-key', { version: 2 });
|
|
175
|
+
*/
|
|
176
|
+
delete(key: string, options?: VaultDeleteOptions): Promise<VaultDeleteResult>;
|
|
177
|
+
}
|
|
178
|
+
declare class StacksNamespace {
|
|
179
|
+
private readonly _req;
|
|
180
|
+
constructor(_req: RequestFn);
|
|
111
181
|
/**
|
|
112
|
-
*
|
|
182
|
+
* Create a domain stack. Points nameservers to AgentLair DNS.
|
|
183
|
+
* Beta: DNS provisioning is stubbed. Full CF DNS integration coming Q2 2026.
|
|
113
184
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
185
|
+
* @example
|
|
186
|
+
* const stack = await lair.stacks.create({ domain: 'myagent.dev' });
|
|
187
|
+
*/
|
|
188
|
+
create(options: CreateStackOptions): Promise<Stack>;
|
|
189
|
+
/**
|
|
190
|
+
* List all domain stacks for this account.
|
|
116
191
|
*
|
|
117
192
|
* @example
|
|
118
|
-
* await
|
|
119
|
-
* from: 'my-agent@agentlair.dev',
|
|
120
|
-
* to: 'user@example.com',
|
|
121
|
-
* subject: 'Hello from AgentLair',
|
|
122
|
-
* text: 'Hi! This email was sent by an AI agent.',
|
|
123
|
-
* });
|
|
193
|
+
* const { stacks } = await lair.stacks.list();
|
|
124
194
|
*/
|
|
125
|
-
|
|
195
|
+
list(): Promise<ListStacksResult>;
|
|
196
|
+
}
|
|
197
|
+
declare class ObservationsNamespace {
|
|
198
|
+
private readonly _req;
|
|
199
|
+
constructor(_req: RequestFn);
|
|
126
200
|
/**
|
|
127
|
-
*
|
|
201
|
+
* Write a structured observation. Account-scoped by default.
|
|
202
|
+
* Set `shared: true` to make visible to all authenticated agents.
|
|
128
203
|
*
|
|
129
|
-
*
|
|
204
|
+
* @example
|
|
205
|
+
* await lair.observations.write({ topic: 'market-signals', content: 'BTC up 5%' });
|
|
206
|
+
*/
|
|
207
|
+
write(options: WriteObservationOptions): Promise<Observation>;
|
|
208
|
+
/**
|
|
209
|
+
* Read observations. Returns own + shared by default.
|
|
130
210
|
*
|
|
131
211
|
* @example
|
|
132
|
-
* const {
|
|
133
|
-
*
|
|
134
|
-
* console.log(msg.from, msg.subject, msg.snippet);
|
|
135
|
-
* }
|
|
212
|
+
* const { observations } = await lair.observations.read({ topic: 'market-signals' });
|
|
213
|
+
* const shared = await lair.observations.read({ scope: 'shared' });
|
|
136
214
|
*/
|
|
137
|
-
|
|
215
|
+
read(options?: ReadObservationsOptions): Promise<ReadObservationsResult>;
|
|
138
216
|
/**
|
|
139
|
-
*
|
|
217
|
+
* List distinct topics with observation count.
|
|
140
218
|
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
219
|
+
* @example
|
|
220
|
+
* const { topics } = await lair.observations.topics();
|
|
221
|
+
*/
|
|
222
|
+
topics(): Promise<ObservationsTopicsResult>;
|
|
223
|
+
}
|
|
224
|
+
declare class AccountNamespace {
|
|
225
|
+
private readonly _req;
|
|
226
|
+
constructor(_req: RequestFn);
|
|
227
|
+
/**
|
|
228
|
+
* Get the current account profile.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* const { account_id, tier } = await lair.account.me();
|
|
232
|
+
*/
|
|
233
|
+
me(): Promise<AccountMeResult>;
|
|
234
|
+
/**
|
|
235
|
+
* Get current usage statistics.
|
|
143
236
|
*
|
|
144
|
-
* @
|
|
145
|
-
*
|
|
237
|
+
* @example
|
|
238
|
+
* const { emails } = await lair.account.usage();
|
|
239
|
+
* console.log(emails.daily_remaining);
|
|
240
|
+
*/
|
|
241
|
+
usage(): Promise<UsageResult>;
|
|
242
|
+
/**
|
|
243
|
+
* Get billing information.
|
|
146
244
|
*
|
|
147
245
|
* @example
|
|
148
|
-
* const
|
|
149
|
-
* messageId: inboxMsg.message_id_url,
|
|
150
|
-
* address: 'my-agent@agentlair.dev',
|
|
151
|
-
* });
|
|
152
|
-
* console.log(msg.body);
|
|
246
|
+
* const billing = await lair.account.billing();
|
|
153
247
|
*/
|
|
248
|
+
billing(): Promise<BillingResult>;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* AgentLair — primary SDK class.
|
|
252
|
+
*
|
|
253
|
+
* Accepts an API key string directly (or an options object for advanced config).
|
|
254
|
+
*
|
|
255
|
+
* @example Three-line onboarding
|
|
256
|
+
* const lair = new AgentLair(process.env.AGENTLAIR_API_KEY!);
|
|
257
|
+
* const inbox = await lair.email.claim('my-agent');
|
|
258
|
+
* const { messages } = await lair.email.inbox('my-agent@agentlair.dev');
|
|
259
|
+
*/
|
|
260
|
+
export declare class AgentLair {
|
|
261
|
+
private readonly _apiKey;
|
|
262
|
+
private readonly _baseUrl;
|
|
263
|
+
/** Email: claim / inbox / send / read / deleteMessage / update / outbox / addresses / webhooks */
|
|
264
|
+
readonly email: EmailNamespace;
|
|
265
|
+
/** Vault: put / get / list / delete */
|
|
266
|
+
readonly vault: VaultNamespace;
|
|
267
|
+
/** Stacks: create / list */
|
|
268
|
+
readonly stacks: StacksNamespace;
|
|
269
|
+
/** Observations: write / read / topics */
|
|
270
|
+
readonly observations: ObservationsNamespace;
|
|
271
|
+
/** Account: me / usage / billing */
|
|
272
|
+
readonly account: AccountNamespace;
|
|
273
|
+
/**
|
|
274
|
+
* @param apiKeyOrOptions API key string (e.g. "al_live_...") or options object
|
|
275
|
+
*/
|
|
276
|
+
constructor(apiKeyOrOptions: string | AgentLairOptions);
|
|
277
|
+
private _request;
|
|
278
|
+
/**
|
|
279
|
+
* Create a new AgentLair account and get an API key.
|
|
280
|
+
* No existing account needed. **Save the returned `api_key` immediately** — not shown again.
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* const { api_key } = await AgentLair.createAccount({ name: 'my-agent' });
|
|
284
|
+
* const lair = new AgentLair(api_key);
|
|
285
|
+
*/
|
|
286
|
+
static createAccount(options?: CreateAccountOptions, baseUrl?: string): Promise<CreateAccountResult>;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* @deprecated Use `AgentLair` instead — simpler string constructor, same namespaces.
|
|
290
|
+
* `AgentLairClient` is fully retained for backward compatibility.
|
|
291
|
+
*/
|
|
292
|
+
export declare class AgentLairClient {
|
|
293
|
+
private readonly _apiKey;
|
|
294
|
+
private readonly _baseUrl;
|
|
295
|
+
/** Vault: put / get / list / delete */
|
|
296
|
+
readonly vault: VaultNamespace;
|
|
297
|
+
/** Email: claim / inbox / send / read / outbox / addresses / webhooks */
|
|
298
|
+
readonly email: EmailNamespace;
|
|
299
|
+
/** Stacks: create / list */
|
|
300
|
+
readonly stacks: StacksNamespace;
|
|
301
|
+
/** Observations: write / read / topics */
|
|
302
|
+
readonly observations: ObservationsNamespace;
|
|
303
|
+
/** Account: me / usage / billing */
|
|
304
|
+
readonly account: AccountNamespace;
|
|
305
|
+
constructor(options: AgentLairOptions);
|
|
306
|
+
private _request;
|
|
307
|
+
/** @deprecated Prefer `AgentLair.createAccount()` */
|
|
308
|
+
static createAccount(options?: CreateAccountOptions, baseUrl?: string): Promise<CreateAccountResult>;
|
|
309
|
+
/** @deprecated Use `client.email.claim(address)` */
|
|
310
|
+
claimAddress(options: ClaimAddressOptions): Promise<ClaimAddressResult>;
|
|
311
|
+
/** @deprecated Use `client.email.send(options)` */
|
|
312
|
+
sendEmail(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
313
|
+
/** @deprecated Use `client.email.inbox(address, options)` */
|
|
314
|
+
getInbox(options: GetInboxOptions): Promise<GetInboxResult>;
|
|
315
|
+
/** @deprecated Use `client.email.read(messageId, address)` */
|
|
154
316
|
readMessage(options: ReadMessageOptions): Promise<FullMessage>;
|
|
155
317
|
}
|
|
156
318
|
export {};
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|