@inkbox/sdk 0.5.4 → 0.5.6

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.
Files changed (69) hide show
  1. package/README.md +67 -8
  2. package/dist/a2a/client.d.ts +48 -0
  3. package/dist/a2a/client.d.ts.map +1 -0
  4. package/dist/a2a/client.js +259 -0
  5. package/dist/a2a/client.js.map +1 -0
  6. package/dist/a2a/index.d.ts +4 -0
  7. package/dist/a2a/index.d.ts.map +1 -0
  8. package/dist/a2a/index.js +3 -0
  9. package/dist/a2a/index.js.map +1 -0
  10. package/dist/a2a/resource.d.ts +51 -0
  11. package/dist/a2a/resource.d.ts.map +1 -0
  12. package/dist/a2a/resource.js +195 -0
  13. package/dist/a2a/resource.js.map +1 -0
  14. package/dist/a2a/types.d.ts +178 -0
  15. package/dist/a2a/types.d.ts.map +1 -0
  16. package/dist/a2a/types.js +80 -0
  17. package/dist/a2a/types.js.map +1 -0
  18. package/dist/agent_identity.d.ts +75 -5
  19. package/dist/agent_identity.d.ts.map +1 -1
  20. package/dist/agent_identity.js +115 -5
  21. package/dist/agent_identity.js.map +1 -1
  22. package/dist/identities/resources/identities.d.ts +1 -3
  23. package/dist/identities/resources/identities.d.ts.map +1 -1
  24. package/dist/identities/resources/identities.js +1 -5
  25. package/dist/identities/resources/identities.js.map +1 -1
  26. package/dist/identities/types.d.ts +0 -1
  27. package/dist/identities/types.d.ts.map +1 -1
  28. package/dist/identities/types.js.map +1 -1
  29. package/dist/imessage/resources/contactRules.d.ts +3 -6
  30. package/dist/imessage/resources/contactRules.d.ts.map +1 -1
  31. package/dist/imessage/resources/contactRules.js +3 -8
  32. package/dist/imessage/resources/contactRules.js.map +1 -1
  33. package/dist/index.d.ts +3 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/inkbox.d.ts +6 -0
  38. package/dist/inkbox.d.ts.map +1 -1
  39. package/dist/inkbox.js +9 -0
  40. package/dist/inkbox.js.map +1 -1
  41. package/dist/mail/resources/contactRules.d.ts +2 -3
  42. package/dist/mail/resources/contactRules.d.ts.map +1 -1
  43. package/dist/mail/resources/contactRules.js +1 -5
  44. package/dist/mail/resources/contactRules.js.map +1 -1
  45. package/dist/mail/resources/identityContactRules.d.ts +4 -6
  46. package/dist/mail/resources/identityContactRules.d.ts.map +1 -1
  47. package/dist/mail/resources/identityContactRules.js +3 -8
  48. package/dist/mail/resources/identityContactRules.js.map +1 -1
  49. package/dist/phone/resources/contactRules.d.ts +1 -3
  50. package/dist/phone/resources/contactRules.d.ts.map +1 -1
  51. package/dist/phone/resources/contactRules.js +1 -5
  52. package/dist/phone/resources/contactRules.js.map +1 -1
  53. package/dist/phone/resources/identityContactRules.d.ts +4 -6
  54. package/dist/phone/resources/identityContactRules.d.ts.map +1 -1
  55. package/dist/phone/resources/identityContactRules.js +4 -8
  56. package/dist/phone/resources/identityContactRules.js.map +1 -1
  57. package/dist/version.d.ts +1 -1
  58. package/dist/version.js +1 -1
  59. package/dist/webhooks/subscriptions.d.ts +12 -14
  60. package/dist/webhooks/subscriptions.d.ts.map +1 -1
  61. package/dist/webhooks/subscriptions.js +41 -28
  62. package/dist/webhooks/subscriptions.js.map +1 -1
  63. package/dist/webhooks/types.d.ts +20 -0
  64. package/dist/webhooks/types.d.ts.map +1 -1
  65. package/dist/whoami/types.d.ts +2 -0
  66. package/dist/whoami/types.d.ts.map +1 -1
  67. package/dist/whoami/types.js +1 -0
  68. package/dist/whoami/types.js.map +1 -1
  69. package/package.json +1 -1
package/README.md CHANGED
@@ -157,8 +157,7 @@ await identity2.refresh(); // re-fetch channels from API
157
157
  // List all identities for your org
158
158
  const allIdentities = await inkbox.listIdentities();
159
159
 
160
- // Update status or handle
161
- await identity.update({ status: "paused" });
160
+ // Update identity metadata or handle
162
161
  await identity.update({ newHandle: "sales-bot-v2" });
163
162
 
164
163
  // Release the phone number (carrier release + local delete). Mailbox and
@@ -508,6 +507,7 @@ import {
508
507
  DedicatedIMessageNumberQuotaExceededError,
509
508
  IdempotencyKeyReusedError,
510
509
  IMessageNumberType,
510
+ IMessageRuleAction,
511
511
  IMessageSendStyle,
512
512
  } from "@inkbox/sdk";
513
513
 
@@ -548,7 +548,7 @@ await identity.sendIMessage({ conversationId: convos[0].id, mediaUrls: [upload.m
548
548
 
549
549
  // Per-identity allow/block rules, interpreted via imessageFilterMode.
550
550
  await inkbox.imessageContactRules.create("my-agent", {
551
- action: "block",
551
+ action: IMessageRuleAction.BLOCK,
552
552
  matchTarget: "+15555550999",
553
553
  });
554
554
 
@@ -630,6 +630,65 @@ identity-owned webhook subscriptions — see
630
630
 
631
631
  ---
632
632
 
633
+ ## Agent-to-Agent (A2A)
634
+
635
+ ```ts
636
+ const identity = await inkbox.getIdentity("coordinator");
637
+
638
+ // Omit direction for the receiver inbox. Use "outbound" for requested work
639
+ // or "both" for the complete identity-scoped history.
640
+ const page = await identity.a2aTasks({
641
+ direction: "both",
642
+ requesterHandle: "coordinator",
643
+ workerHandle: "researcher",
644
+ state: "working",
645
+ q: "quarterly report",
646
+ since: "2026-07-01T00:00:00Z",
647
+ limit: 25,
648
+ });
649
+
650
+ if (page.nextCursor) {
651
+ await identity.a2aTasks({
652
+ direction: "both",
653
+ requesterHandle: "coordinator",
654
+ workerHandle: "researcher",
655
+ state: "working",
656
+ q: "quarterly report",
657
+ since: "2026-07-01T00:00:00Z",
658
+ cursor: page.nextCursor,
659
+ limit: 25,
660
+ });
661
+ }
662
+
663
+ // Async iterators preserve every filter while following opaque cursors.
664
+ for await (const message of identity.iterA2AMessages({
665
+ direction: "outbound",
666
+ workerHandle: "researcher",
667
+ role: "agent",
668
+ q: "revenue",
669
+ })) {
670
+ console.log(message.taskId, message.taskState, message.parts);
671
+ }
672
+
673
+ // The outbound alias is convenient when only requested work is needed.
674
+ const sent = await identity.a2aSentTasks({ workerHandle: "researcher" });
675
+ ```
676
+
677
+ Task keyword filtering returns tasks containing a matching message. Message
678
+ filtering returns the individual matching messages with task, context,
679
+ requester, and worker provenance. Search covers string and numeric content
680
+ values from `text` and `data` parts, excludes metadata, and is newest-first
681
+ rather than relevance-ranked. `role` is the message author (`caller` or
682
+ `agent`), independent of task direction. Task detail exposes message history
683
+ and current state.
684
+
685
+ Receiver enablement and advertised skills accept the identity's agent-scoped
686
+ key. Filter-mode and contact-rule create/update/delete operations require an
687
+ admin API key. Use `a2aResetSkills()` to restore default skills; rule
688
+ directions are `inbound`, `outbound`, or `both`. A protocol call must pass the
689
+ requester's outbound policy and the worker's inbound policy; `both` applies in
690
+ either role.
691
+
633
692
  ## Credentials
634
693
 
635
694
  Access credentials stored in the vault through the agent-facing `credentials` surface. The vault must be unlocked first.
@@ -1090,10 +1149,9 @@ non-empty, distinct, no `phone.incoming_call`) plus the `message.` /
1090
1149
  `Error` before the request leaves the client. The server remains
1091
1150
  authoritative for the exact event-name enum, so a typo with a valid
1092
1151
  prefix (e.g. `message.received_typo`) passes the SDK's check and is
1093
- rejected as 422 by the server. On `update` the SDK mirrors the
1094
- non-empty / distinct / no-`phone.incoming_call` checks; channel
1095
- coherence is deferred to the server because the SDK doesn't know the
1096
- owner FK from a sub_id alone.
1152
+ rejected as 422 by the server. On `update` the SDK also rejects mixed
1153
+ event families. Owner compatibility remains server-validated because the
1154
+ SDK doesn't know the owner FK from a subscription ID alone.
1097
1155
 
1098
1156
  ### Conversation context
1099
1157
 
@@ -1101,7 +1159,8 @@ Opt a subscription into per-class conversation history on **received**
1101
1159
  events (`message.received`, `text.received`, `imessage.received`) by
1102
1160
  passing `contextConfig`. Each class (`email`, `texts`, `calls`) takes a
1103
1161
  `count` mode (last N items, 1..50) or a `window` mode (last H hours,
1104
- 1..168); omit a class to leave it unconfigured.
1162
+ 1..168); omit a class to leave it unconfigured. Conversation context is
1163
+ not supported for A2A subscriptions.
1105
1164
 
1106
1165
  ```ts
1107
1166
  await inkbox.webhooks.subscriptions.create({
@@ -0,0 +1,48 @@
1
+ /** Stateless A2A 1.0 client with strict credential-origin pinning. */
2
+ import { InkboxError } from "../_http.js";
3
+ import type { A2AResolvedTarget, A2ASendResult, A2AWireTask, A2AWireTaskPage, A2AWireTaskState } from "./types.js";
4
+ export declare class A2AProtocolError extends InkboxError {
5
+ readonly code: number;
6
+ readonly data?: unknown | undefined;
7
+ constructor(code: number, message: string, data?: unknown | undefined);
8
+ }
9
+ export declare class A2AClient {
10
+ private readonly apiKey;
11
+ private nextId;
12
+ private readonly platformOrigin;
13
+ private readonly requestTimeoutMs;
14
+ private readonly targetCredentials;
15
+ constructor(apiKey: string, platformBaseUrl: string, options?: {
16
+ requestTimeoutMs?: number;
17
+ });
18
+ fetchCard(cardUrl: string, options?: {
19
+ credential?: string;
20
+ requestTimeoutMs?: number;
21
+ }): Promise<A2AResolvedTarget>;
22
+ send(target: A2AResolvedTarget, options: {
23
+ text?: string;
24
+ parts?: Record<string, unknown>[];
25
+ messageId?: string;
26
+ contextId?: string;
27
+ taskId?: string;
28
+ }): Promise<A2ASendResult>;
29
+ getTask(target: A2AResolvedTarget, taskId: string, options?: {
30
+ historyLength?: number;
31
+ requestTimeoutMs?: number;
32
+ }): Promise<A2AWireTask>;
33
+ listTasks(target: A2AResolvedTarget, options?: {
34
+ contextId?: string;
35
+ status?: A2AWireTaskState;
36
+ cursor?: string;
37
+ pageSize?: number;
38
+ historyLength?: number;
39
+ statusTimestampAfter?: string;
40
+ }): Promise<A2AWireTaskPage>;
41
+ cancel(target: A2AResolvedTarget, taskId: string): Promise<A2AWireTask>;
42
+ wait(target: A2AResolvedTarget, taskId: string, options?: {
43
+ timeoutMs?: number;
44
+ intervalMs?: number;
45
+ }): Promise<A2AWireTask>;
46
+ private rpc;
47
+ }
48
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAEV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB,qBAAa,gBAAiB,SAAQ,WAAW;IAE7C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAErB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO;gBAFd,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACN,IAAI,CAAC,EAAE,OAAO,YAAA;CAK1B;AA0DD,qBAAa,SAAS;IAUlB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;gBAGe,MAAM,EAAE,MAAM,EAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO;IAQvC,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KACtB,GACL,OAAO,CAAC,iBAAiB,CAAC;IA2DvB,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,aAAa,CAAC;IA2BnB,OAAO,CACX,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KACtB,GACL,OAAO,CAAC,WAAW,CAAC;IAiBjB,SAAS,CACb,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC1B,GACL,OAAO,CAAC,eAAe,CAAC;IAqBrB,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWvE,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACxD,OAAO,CAAC,WAAW,CAAC;YA8CT,GAAG;CAwDlB"}
@@ -0,0 +1,259 @@
1
+ /** Stateless A2A 1.0 client with strict credential-origin pinning. */
2
+ import { InkboxError } from "../_http.js";
3
+ const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
4
+ const MAX_REQUEST_TIMEOUT_MS = 2_147_483_647;
5
+ export class A2AProtocolError extends InkboxError {
6
+ code;
7
+ data;
8
+ constructor(code, message, data) {
9
+ super(`A2A error ${code}: ${message}`);
10
+ this.code = code;
11
+ this.data = data;
12
+ this.name = "A2AProtocolError";
13
+ }
14
+ }
15
+ function canonicalUrl(value) {
16
+ const url = new URL(value);
17
+ if (url.username || url.password || url.hash) {
18
+ throw new TypeError("A2A URLs cannot contain credentials or fragments");
19
+ }
20
+ const local = url.hostname === "localhost" || url.hostname === "127.0.0.1";
21
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && local)) {
22
+ throw new TypeError("A2A URLs must use HTTPS");
23
+ }
24
+ url.hostname = url.hostname.toLowerCase();
25
+ if ((url.protocol === "https:" && url.port === "443")
26
+ || (url.protocol === "http:" && url.port === "80")) {
27
+ url.port = "";
28
+ }
29
+ if (!url.pathname)
30
+ url.pathname = "/";
31
+ return url.toString();
32
+ }
33
+ function origin(value) {
34
+ return new URL(canonicalUrl(value)).origin;
35
+ }
36
+ function requestTimeout(value) {
37
+ if (!Number.isFinite(value)
38
+ || value <= 0
39
+ || value > MAX_REQUEST_TIMEOUT_MS) {
40
+ throw new TypeError(`A2A request timeout must be between 1 and ${MAX_REQUEST_TIMEOUT_MS} ms`);
41
+ }
42
+ return value;
43
+ }
44
+ async function withRequestTimeout(timeoutMs, operation, run) {
45
+ const controller = new AbortController();
46
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
47
+ try {
48
+ return await run(controller.signal);
49
+ }
50
+ catch (error) {
51
+ if (controller.signal.aborted) {
52
+ throw new InkboxError(`${operation} timed out after ${timeoutMs} ms`);
53
+ }
54
+ throw error;
55
+ }
56
+ finally {
57
+ clearTimeout(timer);
58
+ }
59
+ }
60
+ export class A2AClient {
61
+ apiKey;
62
+ nextId = 0;
63
+ platformOrigin;
64
+ requestTimeoutMs;
65
+ targetCredentials = new WeakMap();
66
+ constructor(apiKey, platformBaseUrl, options = {}) {
67
+ this.apiKey = apiKey;
68
+ this.platformOrigin = origin(platformBaseUrl);
69
+ this.requestTimeoutMs = requestTimeout(options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);
70
+ }
71
+ async fetchCard(cardUrl, options = {}) {
72
+ const canonicalCardUrl = canonicalUrl(cardUrl);
73
+ const card = await withRequestTimeout(requestTimeout(options.requestTimeoutMs ?? this.requestTimeoutMs), "A2A Agent Card request", async (signal) => {
74
+ const response = await fetch(canonicalCardUrl, {
75
+ method: "GET",
76
+ headers: { Accept: "application/json" },
77
+ redirect: "manual",
78
+ signal,
79
+ });
80
+ if (response.status >= 300 && response.status < 400) {
81
+ throw new InkboxError("A2A Agent Card redirects are refused");
82
+ }
83
+ if (!response.ok) {
84
+ throw new InkboxError(`A2A Agent Card request failed with HTTP ${response.status}`);
85
+ }
86
+ return await response.json();
87
+ });
88
+ const selected = card.supportedInterfaces?.find((item) => item.protocolVersion === "1.0"
89
+ && item.protocolBinding.toUpperCase() === "JSONRPC");
90
+ if (!selected) {
91
+ throw new TypeError("Agent Card does not advertise A2A 1.0 JSON-RPC");
92
+ }
93
+ const rpcUrl = canonicalUrl(selected.url);
94
+ let credential = options.credential;
95
+ if (credential !== undefined
96
+ && origin(rpcUrl) !== origin(canonicalCardUrl)) {
97
+ throw new TypeError("External A2A credentials require matching card and RPC origins");
98
+ }
99
+ if (origin(canonicalCardUrl) === this.platformOrigin) {
100
+ if (origin(rpcUrl) !== this.platformOrigin) {
101
+ throw new TypeError("Inkbox Agent Card points to a non-Inkbox RPC origin");
102
+ }
103
+ credential = this.apiKey;
104
+ }
105
+ const target = Object.freeze({
106
+ cardUrl: canonicalCardUrl,
107
+ rpcUrl,
108
+ protocolVersion: "1.0",
109
+ card,
110
+ });
111
+ if (credential !== undefined) {
112
+ this.targetCredentials.set(target, credential);
113
+ }
114
+ return target;
115
+ }
116
+ async send(target, options) {
117
+ if ((options.text === undefined) === (options.parts === undefined)) {
118
+ throw new TypeError("Pass exactly one of text or parts");
119
+ }
120
+ const message = {
121
+ messageId: options.messageId ?? crypto.randomUUID(),
122
+ role: "ROLE_USER",
123
+ parts: options.text === undefined ? options.parts : [{ text: options.text }],
124
+ };
125
+ if (options.contextId)
126
+ message.contextId = options.contextId;
127
+ if (options.taskId)
128
+ message.taskId = options.taskId;
129
+ const result = await this.rpc(target, "SendMessage", {
130
+ message,
131
+ configuration: { returnImmediately: true },
132
+ });
133
+ if (result.task && typeof result.task === "object") {
134
+ return { kind: "task", task: result.task };
135
+ }
136
+ if (result.message && typeof result.message === "object") {
137
+ return { kind: "message", message: result.message };
138
+ }
139
+ // Accept direct payloads from older A2A implementations.
140
+ return "status" in result && "id" in result
141
+ ? { kind: "task", task: result }
142
+ : { kind: "message", message: result };
143
+ }
144
+ async getTask(target, taskId, options = {}) {
145
+ const result = await this.rpc(target, "GetTask", {
146
+ id: taskId,
147
+ ...(options.historyLength === undefined
148
+ ? {}
149
+ : { historyLength: options.historyLength }),
150
+ }, requestTimeout(options.requestTimeoutMs ?? this.requestTimeoutMs));
151
+ return result.task && typeof result.task === "object"
152
+ ? result.task
153
+ : result;
154
+ }
155
+ async listTasks(target, options = {}) {
156
+ const raw = await this.rpc(target, "ListTasks", {
157
+ pageSize: options.pageSize ?? 50,
158
+ ...(options.contextId ? { contextId: options.contextId } : {}),
159
+ ...(options.status ? { status: options.status } : {}),
160
+ ...(options.cursor ? { pageToken: options.cursor } : {}),
161
+ ...(options.historyLength === undefined
162
+ ? {}
163
+ : { historyLength: options.historyLength }),
164
+ ...(options.statusTimestampAfter === undefined
165
+ ? {}
166
+ : { statusTimestampAfter: options.statusTimestampAfter }),
167
+ });
168
+ return {
169
+ tasks: raw.tasks ?? [],
170
+ nextPageToken: raw.nextPageToken || null,
171
+ pageSize: raw.pageSize ?? options.pageSize ?? 50,
172
+ totalSize: raw.totalSize ?? 0,
173
+ };
174
+ }
175
+ async cancel(target, taskId) {
176
+ const result = await this.rpc(target, "CancelTask", { id: taskId });
177
+ return result.task && typeof result.task === "object"
178
+ ? result.task
179
+ : result;
180
+ }
181
+ async wait(target, taskId, options = {}) {
182
+ const timeoutMs = requestTimeout(options.timeoutMs ?? 120_000);
183
+ const intervalMs = requestTimeout(options.intervalMs ?? 5_000);
184
+ const deadline = Date.now() + timeoutMs;
185
+ const stopped = new Set([
186
+ "TASK_STATE_COMPLETED",
187
+ "TASK_STATE_FAILED",
188
+ "TASK_STATE_CANCELED",
189
+ "TASK_STATE_REJECTED",
190
+ "TASK_STATE_INPUT_REQUIRED",
191
+ "TASK_STATE_AUTH_REQUIRED",
192
+ ]);
193
+ while (true) {
194
+ const remainingBeforeRequest = deadline - Date.now();
195
+ if (remainingBeforeRequest <= 0) {
196
+ throw new InkboxError(`A2A task ${taskId} did not stop before timeout`);
197
+ }
198
+ let task;
199
+ try {
200
+ task = await this.getTask(target, taskId, {
201
+ requestTimeoutMs: Math.min(this.requestTimeoutMs, remainingBeforeRequest),
202
+ });
203
+ }
204
+ catch (error) {
205
+ if (Date.now() >= deadline) {
206
+ throw new InkboxError(`A2A task ${taskId} did not stop before timeout`);
207
+ }
208
+ throw error;
209
+ }
210
+ if (stopped.has(task.status.state))
211
+ return task;
212
+ const remaining = deadline - Date.now();
213
+ if (remaining <= 0) {
214
+ throw new InkboxError(`A2A task ${taskId} did not stop before timeout`);
215
+ }
216
+ await new Promise((resolve) => setTimeout(resolve, Math.min(intervalMs, remaining)));
217
+ }
218
+ }
219
+ async rpc(target, method, params, timeoutMs = this.requestTimeoutMs) {
220
+ const rpcUrl = target.rpcUrl;
221
+ if (canonicalUrl(rpcUrl) !== rpcUrl) {
222
+ throw new TypeError("A2A target RPC URL is not canonical");
223
+ }
224
+ const headers = {
225
+ Accept: "application/json",
226
+ "Content-Type": "application/json",
227
+ "A2A-Version": "1.0",
228
+ };
229
+ const credential = this.targetCredentials.get(target);
230
+ if (credential)
231
+ headers["X-API-Key"] = credential;
232
+ const payload = await withRequestTimeout(requestTimeout(timeoutMs), "A2A RPC request", async (signal) => {
233
+ const response = await fetch(rpcUrl, {
234
+ method: "POST",
235
+ headers,
236
+ redirect: "manual",
237
+ body: JSON.stringify({
238
+ jsonrpc: "2.0",
239
+ id: ++this.nextId,
240
+ method,
241
+ params,
242
+ }),
243
+ signal,
244
+ });
245
+ if (response.status >= 300 && response.status < 400) {
246
+ throw new InkboxError("A2A RPC redirects are refused");
247
+ }
248
+ if (!response.ok) {
249
+ throw new InkboxError(`A2A RPC request failed with HTTP ${response.status}`);
250
+ }
251
+ return await response.json();
252
+ });
253
+ if (payload.error) {
254
+ throw new A2AProtocolError(payload.error.code ?? -32603, payload.error.message ?? "Unknown A2A error", payload.error.data);
255
+ }
256
+ return payload.result;
257
+ }
258
+ }
259
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { A2AClient, A2AProtocolError } from "./client.js";
2
+ export { A2AResource } from "./resource.js";
3
+ export type { A2ACard, A2ACaller, A2AContactRule, A2AContext, A2AContextPage, A2AHistoryDirection, A2AHistoryMessage, A2AHistoryMessagePage, A2AMessage, A2AMessageListOptions, A2AMessageRole, A2AReplyIntent, A2AResolvedTarget, A2ARuleAction, A2ARuleDirection, A2ASendResult, A2ASettings, A2ASkill, A2ATask, A2ATaskListOptions, A2ATaskPage, A2ATaskState, A2ASentTaskListOptions, A2ATarget, A2AWireMessage, A2AWireTask, A2AWireTaskPage, A2AWireTaskState, } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,SAAS,EACT,cAAc,EACd,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { A2AClient, A2AProtocolError } from "./client.js";
2
+ export { A2AResource } from "./resource.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,51 @@
1
+ /** Inkbox serve-side A2A inbox resource. */
2
+ import type { HttpTransport } from "../_http.js";
3
+ import type { FilterMode } from "../mail/types.js";
4
+ import type { A2AContactRule, A2AContext, A2AContextPage, A2AHistoryMessage, A2AHistoryMessagePage, A2AMessageListOptions, A2AReplyIntent, A2ARuleAction, A2ARuleDirection, A2ASettings, A2ASkill, A2ATask, A2ATaskListOptions, A2ATaskPage, A2ASentTaskListOptions } from "./types.js";
5
+ export declare class A2AResource {
6
+ private readonly http;
7
+ constructor(http: HttpTransport);
8
+ settings(handle: string): Promise<A2ASettings>;
9
+ updateSettings(handle: string, changes: {
10
+ enabled?: boolean;
11
+ filter_mode?: FilterMode;
12
+ skills?: A2ASkill[] | null;
13
+ }): Promise<A2ASettings>;
14
+ card(handle: string): Promise<Record<string, unknown>>;
15
+ tasks(handle: string, options?: A2ATaskListOptions): Promise<A2ATaskPage>;
16
+ iterTasks(handle: string, options?: Omit<A2ATaskListOptions, "cursor">): AsyncGenerator<A2ATask>;
17
+ task(handle: string, taskId: string): Promise<A2ATask>;
18
+ sentTasks(handle: string, options?: A2ASentTaskListOptions): Promise<A2ATaskPage>;
19
+ iterSentTasks(handle: string, options?: Omit<A2ASentTaskListOptions, "cursor">): AsyncGenerator<A2ATask>;
20
+ sentTask(handle: string, taskId: string): Promise<A2ATask>;
21
+ messages(handle: string, options?: A2AMessageListOptions): Promise<A2AHistoryMessagePage>;
22
+ iterMessages(handle: string, options?: Omit<A2AMessageListOptions, "cursor">): AsyncGenerator<A2AHistoryMessage>;
23
+ reply(handle: string, taskId: string, options: {
24
+ intent: A2AReplyIntent;
25
+ text?: string;
26
+ parts?: Record<string, unknown>[];
27
+ }): Promise<A2ATask>;
28
+ contexts(handle: string, options?: {
29
+ direction?: "inbound" | "outbound" | "both";
30
+ cursor?: string;
31
+ limit?: number;
32
+ }): Promise<A2AContextPage>;
33
+ context(handle: string, contextId: string): Promise<A2AContext>;
34
+ sentContexts(handle: string, options?: {
35
+ cursor?: string;
36
+ limit?: number;
37
+ }): Promise<A2AContextPage>;
38
+ sentContext(handle: string, contextId: string): Promise<A2AContext>;
39
+ contactRules(handle: string): Promise<A2AContactRule[]>;
40
+ addContactRule(handle: string, options: {
41
+ handle: string;
42
+ action: A2ARuleAction;
43
+ direction?: A2ARuleDirection;
44
+ }): Promise<A2AContactRule>;
45
+ updateContactRule(handle: string, ruleId: string, options: {
46
+ action?: A2ARuleAction;
47
+ direction?: A2ARuleDirection;
48
+ }): Promise<A2AContactRule>;
49
+ deleteContactRule(handle: string, ruleId: string): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/a2a/resource.ts"],"names":[],"mappings":"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"}