@haiai/haiai 0.1.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/README.md +127 -0
- package/bin/haiai.cjs +70 -0
- package/dist/cjs/a2a.js +352 -0
- package/dist/cjs/a2a.js.map +1 -0
- package/dist/cjs/agent.js +236 -0
- package/dist/cjs/agent.js.map +1 -0
- package/dist/cjs/client.js +2168 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/config.js +176 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/errors.js +102 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/hash.js +52 -0
- package/dist/cjs/hash.js.map +1 -0
- package/dist/cjs/index.js +84 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/integrations.js +193 -0
- package/dist/cjs/integrations.js.map +1 -0
- package/dist/cjs/jacs.js +66 -0
- package/dist/cjs/jacs.js.map +1 -0
- package/dist/cjs/mime.js +100 -0
- package/dist/cjs/mime.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/signing.js +190 -0
- package/dist/cjs/signing.js.map +1 -0
- package/dist/cjs/sse.js +76 -0
- package/dist/cjs/sse.js.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/verify.js +76 -0
- package/dist/cjs/verify.js.map +1 -0
- package/dist/cjs/ws.js +206 -0
- package/dist/cjs/ws.js.map +1 -0
- package/dist/esm/a2a.js +305 -0
- package/dist/esm/a2a.js.map +1 -0
- package/dist/esm/agent.js +231 -0
- package/dist/esm/agent.js.map +1 -0
- package/dist/esm/client.js +2131 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/config.js +171 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/errors.js +88 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/hash.js +49 -0
- package/dist/esm/hash.js.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/integrations.js +147 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/jacs.js +61 -0
- package/dist/esm/jacs.js.map +1 -0
- package/dist/esm/mime.js +97 -0
- package/dist/esm/mime.js.map +1 -0
- package/dist/esm/signing.js +183 -0
- package/dist/esm/signing.js.map +1 -0
- package/dist/esm/sse.js +73 -0
- package/dist/esm/sse.js.map +1 -0
- package/dist/esm/types.js +5 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/verify.js +72 -0
- package/dist/esm/verify.js.map +1 -0
- package/dist/esm/ws.js +168 -0
- package/dist/esm/ws.js.map +1 -0
- package/dist/types/a2a.d.ts +52 -0
- package/dist/types/a2a.d.ts.map +1 -0
- package/dist/types/agent.d.ts +202 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/client.d.ts +486 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/config.d.ts +31 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/errors.d.ts +50 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/hash.d.ts +32 -0
- package/dist/types/hash.d.ts.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/integrations.d.ts +25 -0
- package/dist/types/integrations.d.ts.map +1 -0
- package/dist/types/jacs.d.ts +26 -0
- package/dist/types/jacs.d.ts.map +1 -0
- package/dist/types/mime.d.ts +39 -0
- package/dist/types/mime.d.ts.map +1 -0
- package/dist/types/signing.d.ts +58 -0
- package/dist/types/signing.d.ts.map +1 -0
- package/dist/types/sse.d.ts +8 -0
- package/dist/types/sse.d.ts.map +1 -0
- package/dist/types/types.d.ts +652 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/verify.d.ts +20 -0
- package/dist/types/verify.d.ts.map +1 -0
- package/dist/types/ws.d.ts +30 -0
- package/dist/types/ws.d.ts.map +1 -0
- package/examples/a2a_quickstart.ts +138 -0
- package/examples/hai_quickstart.ts +111 -0
- package/examples/mcp_quickstart.ts +53 -0
- package/npm/@haiai/cli-darwin-arm64/package.json +16 -0
- package/npm/@haiai/cli-darwin-x64/package.json +16 -0
- package/npm/@haiai/cli-linux-arm64/package.json +16 -0
- package/npm/@haiai/cli-linux-x64/package.json +16 -0
- package/npm/@haiai/cli-win32-x64/package.json +16 -0
- package/package.json +68 -0
- package/scripts/build-platform-packages.js +132 -0
- package/scripts/smoke-package.cjs +114 -0
- package/scripts/write-cjs-package.cjs +9 -0
- package/src/a2a.ts +463 -0
- package/src/agent.ts +302 -0
- package/src/client.ts +2504 -0
- package/src/config.ts +204 -0
- package/src/errors.ts +99 -0
- package/src/hash.ts +66 -0
- package/src/index.ts +163 -0
- package/src/integrations.ts +210 -0
- package/src/jacs.ts +86 -0
- package/src/mime.ts +131 -0
- package/src/signing.ts +233 -0
- package/src/sse.ts +86 -0
- package/src/types.ts +773 -0
- package/src/verify.ts +89 -0
- package/src/ws.ts +198 -0
- package/tests/_debug_jacs.cjs +29 -0
- package/tests/a2a-contract.test.ts +271 -0
- package/tests/a2a-fixtures.test.ts +73 -0
- package/tests/a2a.test.ts +379 -0
- package/tests/binary.test.ts +90 -0
- package/tests/client-api-methods.test.ts +176 -0
- package/tests/client-path-escaping.test.ts +80 -0
- package/tests/client-register.test.ts +61 -0
- package/tests/config.test.ts +281 -0
- package/tests/contract.test.ts +360 -0
- package/tests/cross-lang-contract.test.ts +67 -0
- package/tests/email-conformance.test.ts +289 -0
- package/tests/email-integration.test.ts +217 -0
- package/tests/email.test.ts +767 -0
- package/tests/errors.test.ts +167 -0
- package/tests/init-contract.test.ts +129 -0
- package/tests/integrations.test.ts +132 -0
- package/tests/jacs-passthrough.test.ts +125 -0
- package/tests/key-cache.test.ts +201 -0
- package/tests/key-integration.test.ts +119 -0
- package/tests/key-lookups.test.ts +187 -0
- package/tests/key-rotation.test.ts +362 -0
- package/tests/mime.test.ts +127 -0
- package/tests/security.test.ts +109 -0
- package/tests/setup.ts +60 -0
- package/tests/signing.test.ts +142 -0
- package/tests/sse.test.ts +125 -0
- package/tests/types.test.ts +294 -0
- package/tests/verify-link.test.ts +81 -0
- package/tests/ws.test.ts +213 -0
- package/tsconfig.cjs.json +11 -0
- package/tsconfig.json +22 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* High-level Agent API for HAI email operations.
|
|
4
|
+
*
|
|
5
|
+
* Provides an `Agent` class with an `agent.email` namespace that wraps
|
|
6
|
+
* the existing {@link HaiClient} for email operations. All emails are
|
|
7
|
+
* sent signed with the agent's JACS key. There is no unsigned send path.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { Agent } from '@haiai/haiai';
|
|
12
|
+
*
|
|
13
|
+
* const agent = await Agent.fromConfig('./jacs.config.json');
|
|
14
|
+
* await agent.email.send({ to: 'other@hai.ai', subject: 'Hello', body: 'World' });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.EmailNamespace = exports.Agent = void 0;
|
|
19
|
+
const client_js_1 = require("./client.js");
|
|
20
|
+
/**
|
|
21
|
+
* High-level agent wrapper providing `agent.email.*` namespace.
|
|
22
|
+
*
|
|
23
|
+
* Created via {@link Agent.fromConfig} which loads the JACS config and
|
|
24
|
+
* initializes the underlying {@link HaiClient}. All email operations
|
|
25
|
+
* go through the agent's JACS key -- there is no unsigned path.
|
|
26
|
+
*/
|
|
27
|
+
class Agent {
|
|
28
|
+
/** Email operations namespace. */
|
|
29
|
+
email;
|
|
30
|
+
_client;
|
|
31
|
+
constructor(client) {
|
|
32
|
+
this._client = client;
|
|
33
|
+
this.email = new EmailNamespace(client);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create an Agent from a `jacs.config.json` file.
|
|
37
|
+
*
|
|
38
|
+
* Loads the JACS agent configuration and initializes the client.
|
|
39
|
+
*
|
|
40
|
+
* @param configPath - Path to jacs.config.json.
|
|
41
|
+
* @param options - Optional client options (base URL, timeout).
|
|
42
|
+
* @returns A configured Agent instance.
|
|
43
|
+
*/
|
|
44
|
+
static async fromConfig(configPath = './jacs.config.json', options) {
|
|
45
|
+
const client = await client_js_1.HaiClient.create({
|
|
46
|
+
configPath,
|
|
47
|
+
url: options?.baseUrl,
|
|
48
|
+
timeout: options?.timeout,
|
|
49
|
+
});
|
|
50
|
+
return new Agent(client);
|
|
51
|
+
}
|
|
52
|
+
/** Access the underlying {@link HaiClient} for advanced operations. */
|
|
53
|
+
get client() {
|
|
54
|
+
return this._client;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Agent = Agent;
|
|
58
|
+
/**
|
|
59
|
+
* Email operations namespace.
|
|
60
|
+
*
|
|
61
|
+
* All methods delegate to {@link HaiClient} email methods. The
|
|
62
|
+
* {@link EmailNamespace.send} method always signs with the agent's
|
|
63
|
+
* JACS key via `sendSignedEmail`. There is no unsigned send path.
|
|
64
|
+
*/
|
|
65
|
+
class EmailNamespace {
|
|
66
|
+
_client;
|
|
67
|
+
constructor(client) {
|
|
68
|
+
this._client = client;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Send an email, always signed with the agent's JACS key.
|
|
72
|
+
*
|
|
73
|
+
* Builds RFC 5322 MIME, signs with the agent's Ed25519 key via JACS,
|
|
74
|
+
* and submits to the HAI API. There is no unsigned send path.
|
|
75
|
+
*
|
|
76
|
+
* @param options - Email options (to, subject, body, attachments).
|
|
77
|
+
* @returns SendEmailResult with messageId and status.
|
|
78
|
+
*/
|
|
79
|
+
async send(options) {
|
|
80
|
+
return this._client.sendSignedEmail({
|
|
81
|
+
to: options.to,
|
|
82
|
+
subject: options.subject,
|
|
83
|
+
body: options.body,
|
|
84
|
+
inReplyTo: options.inReplyTo,
|
|
85
|
+
attachments: options.attachments?.map(a => ({
|
|
86
|
+
filename: a.filename,
|
|
87
|
+
contentType: a.contentType,
|
|
88
|
+
data: a.data,
|
|
89
|
+
})),
|
|
90
|
+
cc: options.cc,
|
|
91
|
+
bcc: options.bcc,
|
|
92
|
+
labels: options.labels,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* List inbox messages (direction=inbound).
|
|
97
|
+
*
|
|
98
|
+
* @param options - Optional list options (limit, offset).
|
|
99
|
+
* @returns Array of EmailMessage objects.
|
|
100
|
+
*/
|
|
101
|
+
async inbox(options) {
|
|
102
|
+
return this._client.listMessages({
|
|
103
|
+
limit: options?.limit,
|
|
104
|
+
offset: options?.offset,
|
|
105
|
+
direction: 'inbound',
|
|
106
|
+
isRead: options?.isRead,
|
|
107
|
+
folder: options?.folder,
|
|
108
|
+
label: options?.label,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* List outbox messages (direction=outbound).
|
|
113
|
+
*
|
|
114
|
+
* @param options - Optional list options (limit, offset, filters).
|
|
115
|
+
* @returns Array of EmailMessage objects.
|
|
116
|
+
*/
|
|
117
|
+
async outbox(options) {
|
|
118
|
+
return this._client.listMessages({
|
|
119
|
+
limit: options?.limit,
|
|
120
|
+
offset: options?.offset,
|
|
121
|
+
direction: 'outbound',
|
|
122
|
+
isRead: options?.isRead,
|
|
123
|
+
folder: options?.folder,
|
|
124
|
+
label: options?.label,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get a specific message by ID.
|
|
129
|
+
*
|
|
130
|
+
* @param messageId - The message ID to retrieve.
|
|
131
|
+
* @returns EmailMessage.
|
|
132
|
+
*/
|
|
133
|
+
async get(messageId) {
|
|
134
|
+
return this._client.getMessage(messageId);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Search email messages.
|
|
138
|
+
*
|
|
139
|
+
* @param options - Search options (query, direction, date range, etc.).
|
|
140
|
+
* @returns Array of EmailMessage matching the search criteria.
|
|
141
|
+
*/
|
|
142
|
+
async search(options) {
|
|
143
|
+
return this._client.searchMessages(options);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get email status including capacity and tier information.
|
|
147
|
+
*
|
|
148
|
+
* @returns EmailStatus with daily limits, usage, and tier info.
|
|
149
|
+
*/
|
|
150
|
+
async status() {
|
|
151
|
+
return this._client.getEmailStatus();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the count of unread messages.
|
|
155
|
+
*
|
|
156
|
+
* @returns Number of unread inbound messages.
|
|
157
|
+
*/
|
|
158
|
+
async unreadCount() {
|
|
159
|
+
return this._client.getUnreadCount();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Delete a message by ID.
|
|
163
|
+
*
|
|
164
|
+
* @param messageId - The message ID to delete.
|
|
165
|
+
*/
|
|
166
|
+
async delete(messageId) {
|
|
167
|
+
return this._client.deleteMessage(messageId);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Mark a message as read.
|
|
171
|
+
*
|
|
172
|
+
* @param messageId - The message ID to mark as read.
|
|
173
|
+
*/
|
|
174
|
+
async markRead(messageId) {
|
|
175
|
+
return this._client.markRead(messageId);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Mark a message as unread.
|
|
179
|
+
*
|
|
180
|
+
* @param messageId - The message ID to mark as unread.
|
|
181
|
+
*/
|
|
182
|
+
async markUnread(messageId) {
|
|
183
|
+
return this._client.markUnread(messageId);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Reply to a message, always signed with the agent's JACS key.
|
|
187
|
+
*
|
|
188
|
+
* Fetches the original message, constructs a reply with proper
|
|
189
|
+
* threading headers, and sends it signed.
|
|
190
|
+
*
|
|
191
|
+
* @param messageId - The message ID to reply to.
|
|
192
|
+
* @param body - Reply body text.
|
|
193
|
+
* @param subjectOverride - Optional subject override.
|
|
194
|
+
* @returns SendEmailResult with messageId and status.
|
|
195
|
+
*/
|
|
196
|
+
async reply(messageId, body, subjectOverride) {
|
|
197
|
+
return this._client.reply(messageId, body, subjectOverride);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Forward a message to another recipient.
|
|
201
|
+
*
|
|
202
|
+
* @param messageId - The message ID to forward.
|
|
203
|
+
* @param to - Recipient email address to forward to.
|
|
204
|
+
* @param comment - Optional comment to prepend.
|
|
205
|
+
* @returns SendEmailResult with messageId and status.
|
|
206
|
+
*/
|
|
207
|
+
async forward(messageId, to, comment) {
|
|
208
|
+
return this._client.forward({ messageId, to, comment });
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Archive a message.
|
|
212
|
+
*
|
|
213
|
+
* @param messageId - The message ID to archive.
|
|
214
|
+
*/
|
|
215
|
+
async archive(messageId) {
|
|
216
|
+
return this._client.archive(messageId);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Unarchive (restore) a message back to the inbox.
|
|
220
|
+
*
|
|
221
|
+
* @param messageId - The message ID to unarchive.
|
|
222
|
+
*/
|
|
223
|
+
async unarchive(messageId) {
|
|
224
|
+
return this._client.unarchive(messageId);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* List contacts derived from email history.
|
|
228
|
+
*
|
|
229
|
+
* @returns Array of Contact objects.
|
|
230
|
+
*/
|
|
231
|
+
async contacts() {
|
|
232
|
+
return this._client.getContacts();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.EmailNamespace = EmailNamespace;
|
|
236
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
|