@inkbox/cli 0.5.5 → 0.5.7
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 +83 -0
- package/dist/client.js +3 -2
- package/dist/client.js.map +1 -1
- package/dist/commands/a2a.js +349 -0
- package/dist/commands/a2a.js.map +1 -0
- package/dist/commands/mailbox.js +180 -1
- package/dist/commands/mailbox.js.map +1 -1
- package/dist/errors.js +22 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -350,6 +350,52 @@ Group conversation rows expose `groupCreationStatus` as `creating`,
|
|
|
350
350
|
conversation; send again with its conversation id to retry. Successful retry
|
|
351
351
|
changes the status to `ready`.
|
|
352
352
|
|
|
353
|
+
### a2a
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Receiver setup and advertised capabilities
|
|
357
|
+
inkbox a2a enable -i researcher
|
|
358
|
+
inkbox a2a card -i researcher
|
|
359
|
+
inkbox a2a skills set -i researcher --file skills.json
|
|
360
|
+
|
|
361
|
+
# Bilateral admission for coordinator -> researcher calls
|
|
362
|
+
inkbox a2a rules add -i coordinator --handle researcher \
|
|
363
|
+
--action allow --direction outbound
|
|
364
|
+
inkbox a2a rules add -i researcher --handle coordinator \
|
|
365
|
+
--action allow --direction inbound
|
|
366
|
+
|
|
367
|
+
# Unified task history. Omit --direction for the receiver inbox.
|
|
368
|
+
inkbox a2a tasks -i coordinator --direction both \
|
|
369
|
+
--requester coordinator --worker researcher \
|
|
370
|
+
--state working --query "quarterly report" --limit 25
|
|
371
|
+
|
|
372
|
+
# Search individual messages with task and participant provenance.
|
|
373
|
+
inkbox a2a messages -i coordinator --direction outbound \
|
|
374
|
+
--worker researcher --role agent --query revenue --limit 25 --json
|
|
375
|
+
|
|
376
|
+
# Continue a cursor page with the same filters.
|
|
377
|
+
inkbox a2a messages -i coordinator --direction outbound \
|
|
378
|
+
--worker researcher --role agent --query revenue \
|
|
379
|
+
--cursor '<nextCursor>' --limit 25 --json
|
|
380
|
+
|
|
381
|
+
# The outbound alias lists only work requested by the identity.
|
|
382
|
+
inkbox a2a sent -i coordinator --worker researcher
|
|
383
|
+
inkbox a2a sent-task <task-id> -i coordinator
|
|
384
|
+
|
|
385
|
+
# A worker can request more input or finish a task.
|
|
386
|
+
inkbox a2a reply <task-id> -i researcher --ask --text "Which quarter?"
|
|
387
|
+
inkbox a2a reply <task-id> -i researcher --complete --text "Done."
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
JSON list output contains both `items` and `nextCursor`. Human-readable output
|
|
391
|
+
prints a next-cursor hint when another page exists. Keyword search covers
|
|
392
|
+
string and numeric content values from `text` and `data` parts, excludes
|
|
393
|
+
metadata, and returns newest-first results rather than relevance ranking.
|
|
394
|
+
`--role` selects the message author (`caller` or `agent`), independent of task
|
|
395
|
+
direction. Task detail exposes messages and current state. A protocol call must
|
|
396
|
+
pass both the requester identity's outbound policy and the worker identity's
|
|
397
|
+
inbound policy. Contact-rule directions are `inbound`, `outbound`, and `both`.
|
|
398
|
+
|
|
353
399
|
### vault
|
|
354
400
|
|
|
355
401
|
Encrypted vault operations. `get`, `create`, and credential listing require a vault key.
|
|
@@ -406,6 +452,43 @@ Secret type flags:
|
|
|
406
452
|
|
|
407
453
|
### mailbox
|
|
408
454
|
|
|
455
|
+
Import historical mail from an MBOX or EML file, or a ZIP holding either (a
|
|
456
|
+
Gmail Takeout ZIP imports as-is; ZIP entries that are not mail, including nested
|
|
457
|
+
archives, are ignored):
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
inkbox mailbox imports run <email> <file>
|
|
461
|
+
--source-format <auto|mbox|eml|zip> # Default: auto
|
|
462
|
+
--original-address <email> # Repeatable; identifies sent mail
|
|
463
|
+
--mark-unread # Default imports as read
|
|
464
|
+
--no-wait # Return after queueing
|
|
465
|
+
--timeout <seconds> # Local wait timeout; does not cancel
|
|
466
|
+
--poll-interval <seconds> # Default: 5
|
|
467
|
+
|
|
468
|
+
inkbox mailbox imports get <email> <job-id>
|
|
469
|
+
inkbox mailbox imports list <email> [--cursor <cursor>] [--limit <n>]
|
|
470
|
+
inkbox mailbox imports wait <email> <job-id> [--timeout <seconds>] [--poll-interval <seconds>]
|
|
471
|
+
inkbox mailbox imports cancel <email> <job-id>
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
`run` uploads from disk without loading the full file into memory. Upload and
|
|
475
|
+
processing progress goes to stderr; `--json` keeps stdout to one job object.
|
|
476
|
+
`run` and `wait` exit nonzero when the terminal job is failed or cancelled.
|
|
477
|
+
Unsafe imported content may be rejected and counted separately. Processing
|
|
478
|
+
counters are cumulative and never go backwards, but they can sit unchanged while
|
|
479
|
+
a large message is processed and are not a percentage. Jobs run one at a time
|
|
480
|
+
per organization and share overall import capacity, so a long `queued` stretch
|
|
481
|
+
is normal rather than a stall.
|
|
482
|
+
|
|
483
|
+
Upload targets expire after 5 minutes, so `run` re-issues one and retries once
|
|
484
|
+
after a transport failure or rejected upload target, then cancels the job it
|
|
485
|
+
created rather than leaving the mailbox blocked. If a `run` is interrupted,
|
|
486
|
+
`inkbox mailbox imports list <email>`
|
|
487
|
+
and `inkbox mailbox imports cancel <email> <job-id>` release the mailbox; an
|
|
488
|
+
abandoned job otherwise holds it for 24 hours. Other limits: 1 GiB per upload,
|
|
489
|
+
50 MiB per message, 100,000 messages and 20 `--original-address` values per job,
|
|
490
|
+
65,000 entries per ZIP, and 20 import jobs per organization per 24 hours.
|
|
491
|
+
|
|
409
492
|
Org-level mailbox read + update. Mailboxes are provisioned atomically
|
|
410
493
|
by `inkbox identity create` and removed by `inkbox identity delete`
|
|
411
494
|
(cascade) — there is no standalone create / delete here. `display_name`
|
package/dist/client.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as os from "node:os";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { Inkbox } from "@inkbox/sdk";
|
|
5
5
|
// Keep in sync with package.json "version".
|
|
6
|
-
export const CLI_VERSION = "0.5.
|
|
6
|
+
export const CLI_VERSION = "0.5.7";
|
|
7
7
|
export function getGlobalOpts(cmd) {
|
|
8
8
|
let root = cmd;
|
|
9
9
|
while (root.parent)
|
|
@@ -39,7 +39,7 @@ function readConfigFile() {
|
|
|
39
39
|
export function resolveBaseUrl(opts) {
|
|
40
40
|
return (opts.baseUrl ?? process.env.INKBOX_BASE_URL ?? readConfigFile().base_url);
|
|
41
41
|
}
|
|
42
|
-
export function createClient(opts) {
|
|
42
|
+
export function createClient(opts, timeoutMs) {
|
|
43
43
|
const fileCfg = readConfigFile();
|
|
44
44
|
const apiKey = opts.apiKey ?? process.env.INKBOX_API_KEY ?? fileCfg.api_key;
|
|
45
45
|
if (!apiKey) {
|
|
@@ -53,6 +53,7 @@ export function createClient(opts) {
|
|
|
53
53
|
apiKey,
|
|
54
54
|
vaultKey: vaultKey || undefined,
|
|
55
55
|
baseUrl,
|
|
56
|
+
timeoutMs,
|
|
56
57
|
userAgentPrefix: `inkbox-cli/${CLI_VERSION}`,
|
|
57
58
|
});
|
|
58
59
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AASnC,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,OAAO,IAAI,CAAC,MAAM;QAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACvC,OAAO,IAAI,CAAC,IAAI,EAAgB,CAAC;AACnC,CAAC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YACnE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI;iBACf,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;iBACb,IAAI,EAAE;iBACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,OAAO,CACL,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,cAAc,EAAE,CAAC,QAAQ,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { Option } from "commander";
|
|
3
|
+
import { createClient, getGlobalOpts } from "../client.js";
|
|
4
|
+
import { withErrorHandler } from "../errors.js";
|
|
5
|
+
import { output } from "../output.js";
|
|
6
|
+
const TASK_COLUMNS = [
|
|
7
|
+
"id",
|
|
8
|
+
"requesterHandle",
|
|
9
|
+
"workerHandle",
|
|
10
|
+
"contextId",
|
|
11
|
+
"state",
|
|
12
|
+
"createdAt",
|
|
13
|
+
"updatedAt",
|
|
14
|
+
];
|
|
15
|
+
const SENT_TASK_COLUMNS = [
|
|
16
|
+
"id",
|
|
17
|
+
"requesterHandle",
|
|
18
|
+
"workerHandle",
|
|
19
|
+
"contextId",
|
|
20
|
+
"state",
|
|
21
|
+
"createdAt",
|
|
22
|
+
"updatedAt",
|
|
23
|
+
];
|
|
24
|
+
const MESSAGE_COLUMNS = [
|
|
25
|
+
"id",
|
|
26
|
+
"taskId",
|
|
27
|
+
"contextId",
|
|
28
|
+
"taskState",
|
|
29
|
+
"role",
|
|
30
|
+
"requesterHandle",
|
|
31
|
+
"workerHandle",
|
|
32
|
+
"text",
|
|
33
|
+
"createdAt",
|
|
34
|
+
];
|
|
35
|
+
const RULE_COLUMNS = ["id", "action", "matchTarget", "direction", "status"];
|
|
36
|
+
async function identityFor(command, handle) {
|
|
37
|
+
return createClient(getGlobalOpts(command)).getIdentity(handle);
|
|
38
|
+
}
|
|
39
|
+
function positiveInt(value, name) {
|
|
40
|
+
const parsed = Number(value);
|
|
41
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
42
|
+
throw new TypeError(`${name} must be a positive integer`);
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
function outputCursorPage(page, command, columns, tableItems) {
|
|
47
|
+
const json = !!getGlobalOpts(command).json;
|
|
48
|
+
if (json) {
|
|
49
|
+
output(page, { json: true });
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
output(tableItems, { json: false, columns });
|
|
53
|
+
if (page.nextCursor) {
|
|
54
|
+
console.error(`Next cursor: ${page.nextCursor}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function messageText(message) {
|
|
58
|
+
return message.parts
|
|
59
|
+
.map((part) => ("text" in part ? String(part.text) : ""))
|
|
60
|
+
.filter(Boolean)
|
|
61
|
+
.join(" ");
|
|
62
|
+
}
|
|
63
|
+
export function registerA2ACommands(program) {
|
|
64
|
+
const a2a = program.command("a2a").description("Work with A2A agents and tasks");
|
|
65
|
+
a2a.command("enable")
|
|
66
|
+
.description("Enable an identity's A2A receiver")
|
|
67
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
68
|
+
.action(withErrorHandler(async function (options) {
|
|
69
|
+
const result = await (await identityFor(this, options.identity)).a2aEnable();
|
|
70
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
71
|
+
}));
|
|
72
|
+
a2a.command("disable")
|
|
73
|
+
.description("Disable an identity's A2A receiver")
|
|
74
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
75
|
+
.action(withErrorHandler(async function (options) {
|
|
76
|
+
const result = await (await identityFor(this, options.identity)).a2aDisable();
|
|
77
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
78
|
+
}));
|
|
79
|
+
a2a.command("card")
|
|
80
|
+
.description("Show an identity's Agent Card")
|
|
81
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
82
|
+
.action(withErrorHandler(async function (options) {
|
|
83
|
+
const result = await (await identityFor(this, options.identity)).a2aCard();
|
|
84
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
85
|
+
}));
|
|
86
|
+
const skills = a2a.command("skills").description("Manage Agent Card skills");
|
|
87
|
+
skills.command("set")
|
|
88
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
89
|
+
.requiredOption("--file <path>", "JSON file containing an array of skills")
|
|
90
|
+
.action(withErrorHandler(async function (options) {
|
|
91
|
+
const parsed = JSON.parse(await readFile(options.file, "utf8"));
|
|
92
|
+
if (!Array.isArray(parsed))
|
|
93
|
+
throw new TypeError("Skills file must contain a JSON array");
|
|
94
|
+
const result = await (await identityFor(this, options.identity)).a2aSetSkills(parsed);
|
|
95
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
96
|
+
}));
|
|
97
|
+
skills.command("reset")
|
|
98
|
+
.description("Restore the receiver's default advertised skills")
|
|
99
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
100
|
+
.action(withErrorHandler(async function (options) {
|
|
101
|
+
const result = await (await identityFor(this, options.identity)).a2aResetSkills();
|
|
102
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
103
|
+
}));
|
|
104
|
+
a2a.command("filter-mode")
|
|
105
|
+
.description("Set A2A admission mode (admin API key required)")
|
|
106
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
107
|
+
.requiredOption("--mode <mode>", "'whitelist' or 'blacklist'")
|
|
108
|
+
.action(withErrorHandler(async function (options) {
|
|
109
|
+
if (!["whitelist", "blacklist"].includes(options.mode)) {
|
|
110
|
+
throw new TypeError("--mode must be 'whitelist' or 'blacklist'");
|
|
111
|
+
}
|
|
112
|
+
const result = await (await identityFor(this, options.identity)).a2aSetFilterMode(options.mode);
|
|
113
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
114
|
+
}));
|
|
115
|
+
const rules = a2a.command("rules").description("Manage directional A2A contact rules");
|
|
116
|
+
rules.command("list")
|
|
117
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
118
|
+
.action(withErrorHandler(async function (options) {
|
|
119
|
+
const result = await (await identityFor(this, options.identity)).a2aContactRules();
|
|
120
|
+
output(result, { json: !!getGlobalOpts(this).json, columns: RULE_COLUMNS });
|
|
121
|
+
}));
|
|
122
|
+
rules.command("add")
|
|
123
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
124
|
+
.requiredOption("--handle <peer>", "Caller handle to match")
|
|
125
|
+
.requiredOption("--action <action>", "'allow' or 'block'")
|
|
126
|
+
.option("--direction <direction>", "'inbound', 'outbound', or 'both'", "inbound")
|
|
127
|
+
.action(withErrorHandler(async function (options) {
|
|
128
|
+
if (!["allow", "block"].includes(options.action)) {
|
|
129
|
+
throw new TypeError("--action must be 'allow' or 'block'");
|
|
130
|
+
}
|
|
131
|
+
if (!["inbound", "outbound", "both"].includes(options.direction)) {
|
|
132
|
+
throw new TypeError("--direction must be 'inbound', 'outbound', or 'both'");
|
|
133
|
+
}
|
|
134
|
+
const result = await (await identityFor(this, options.identity)).a2aAddContactRule({
|
|
135
|
+
handle: options.handle,
|
|
136
|
+
action: options.action,
|
|
137
|
+
direction: options.direction,
|
|
138
|
+
});
|
|
139
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
140
|
+
}));
|
|
141
|
+
rules.command("update <rule-id>")
|
|
142
|
+
.description("Update an A2A contact rule (admin API key required)")
|
|
143
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
144
|
+
.option("--action <action>", "'allow' or 'block'")
|
|
145
|
+
.option("--direction <direction>", "'inbound', 'outbound', or 'both'")
|
|
146
|
+
.action(withErrorHandler(async function (ruleId, options) {
|
|
147
|
+
if (options.action !== undefined && !["allow", "block"].includes(options.action)) {
|
|
148
|
+
throw new TypeError("--action must be 'allow' or 'block'");
|
|
149
|
+
}
|
|
150
|
+
if (options.direction !== undefined
|
|
151
|
+
&& !["inbound", "outbound", "both"].includes(options.direction)) {
|
|
152
|
+
throw new TypeError("--direction must be 'inbound', 'outbound', or 'both'");
|
|
153
|
+
}
|
|
154
|
+
if (options.action === undefined && options.direction === undefined) {
|
|
155
|
+
throw new TypeError("Pass at least one of --action or --direction");
|
|
156
|
+
}
|
|
157
|
+
const result = await (await identityFor(this, options.identity)).a2aUpdateContactRule(ruleId, {
|
|
158
|
+
action: options.action,
|
|
159
|
+
direction: options.direction,
|
|
160
|
+
});
|
|
161
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
162
|
+
}));
|
|
163
|
+
rules.command("delete <rule-id>")
|
|
164
|
+
.description("Delete an A2A contact rule (admin API key required)")
|
|
165
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
166
|
+
.action(withErrorHandler(async function (ruleId, options) {
|
|
167
|
+
await (await identityFor(this, options.identity)).a2aDeleteContactRule(ruleId);
|
|
168
|
+
output({ deleted: true, id: ruleId }, { json: !!getGlobalOpts(this).json });
|
|
169
|
+
}));
|
|
170
|
+
a2a.command("tasks")
|
|
171
|
+
.description("List an identity's A2A task history")
|
|
172
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
173
|
+
.option("--direction <direction>", "Filter: inbound, outbound, or both")
|
|
174
|
+
.option("--requester <handle>", "Filter by requester identity")
|
|
175
|
+
.option("--worker <handle>", "Filter by worker identity")
|
|
176
|
+
.option("--state <state>", "Filter by task state")
|
|
177
|
+
.option("--context <id>", "Filter by context ID")
|
|
178
|
+
.option("-q, --query <query>", "Search task message content")
|
|
179
|
+
.option("--since <datetime>", "Only tasks created at or after this time")
|
|
180
|
+
.option("--cursor <cursor>", "Pagination cursor")
|
|
181
|
+
.option("--limit <n>", "Results per page (1-100)", "50")
|
|
182
|
+
.action(withErrorHandler(async function (options) {
|
|
183
|
+
const result = await (await identityFor(this, options.identity)).a2aTasks({
|
|
184
|
+
direction: options.direction,
|
|
185
|
+
requesterHandle: options.requester,
|
|
186
|
+
workerHandle: options.worker,
|
|
187
|
+
state: options.state,
|
|
188
|
+
contextId: options.context,
|
|
189
|
+
q: options.query,
|
|
190
|
+
since: options.since,
|
|
191
|
+
cursor: options.cursor,
|
|
192
|
+
limit: positiveInt(options.limit, "--limit"),
|
|
193
|
+
});
|
|
194
|
+
const items = result.items.map((task) => ({
|
|
195
|
+
...task,
|
|
196
|
+
requesterHandle: task.caller.handle,
|
|
197
|
+
workerHandle: task.target?.handle ?? null,
|
|
198
|
+
}));
|
|
199
|
+
outputCursorPage(result, this, TASK_COLUMNS, items);
|
|
200
|
+
}));
|
|
201
|
+
a2a.command("task <task-id>")
|
|
202
|
+
.description("Show a full inbound A2A task")
|
|
203
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
204
|
+
.action(withErrorHandler(async function (taskId, options) {
|
|
205
|
+
const result = await (await identityFor(this, options.identity)).a2aTask(taskId);
|
|
206
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
207
|
+
}));
|
|
208
|
+
a2a.command("sent")
|
|
209
|
+
.description("List A2A tasks sent by an identity")
|
|
210
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
211
|
+
.option("--requester <handle>", "Filter by requester identity")
|
|
212
|
+
.option("--worker <handle>", "Filter by worker identity")
|
|
213
|
+
.option("--state <state>", "Filter by task state")
|
|
214
|
+
.option("--context <id>", "Filter by context ID")
|
|
215
|
+
.option("-q, --query <query>", "Search task message content")
|
|
216
|
+
.option("--since <datetime>", "Only tasks created at or after this time")
|
|
217
|
+
.option("--cursor <cursor>", "Pagination cursor")
|
|
218
|
+
.option("--limit <n>", "Results per page (1-100)", "50")
|
|
219
|
+
.action(withErrorHandler(async function (options) {
|
|
220
|
+
const result = await (await identityFor(this, options.identity)).a2aSentTasks({
|
|
221
|
+
requesterHandle: options.requester,
|
|
222
|
+
workerHandle: options.worker,
|
|
223
|
+
state: options.state,
|
|
224
|
+
contextId: options.context,
|
|
225
|
+
q: options.query,
|
|
226
|
+
since: options.since,
|
|
227
|
+
cursor: options.cursor,
|
|
228
|
+
limit: positiveInt(options.limit, "--limit"),
|
|
229
|
+
});
|
|
230
|
+
const items = result.items.map((task) => ({
|
|
231
|
+
...task,
|
|
232
|
+
requesterHandle: task.caller.handle,
|
|
233
|
+
workerHandle: task.target?.handle ?? null,
|
|
234
|
+
}));
|
|
235
|
+
outputCursorPage(result, this, SENT_TASK_COLUMNS, items);
|
|
236
|
+
}));
|
|
237
|
+
a2a.command("sent-task <task-id>")
|
|
238
|
+
.description("Show a full A2A task sent by an identity")
|
|
239
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
240
|
+
.action(withErrorHandler(async function (taskId, options) {
|
|
241
|
+
const result = await (await identityFor(this, options.identity)).a2aSentTask(taskId);
|
|
242
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
243
|
+
}));
|
|
244
|
+
a2a.command("messages")
|
|
245
|
+
.description("List and search an identity's A2A message history")
|
|
246
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
247
|
+
.option("--direction <direction>", "Filter: inbound, outbound, or both")
|
|
248
|
+
.option("--requester <handle>", "Filter by requester identity")
|
|
249
|
+
.option("--worker <handle>", "Filter by worker identity")
|
|
250
|
+
.option("--task <id>", "Filter by task ID")
|
|
251
|
+
.option("--context <id>", "Filter by context ID")
|
|
252
|
+
.option("--role <role>", "Filter: caller or agent")
|
|
253
|
+
.option("-q, --query <query>", "Search message content")
|
|
254
|
+
.option("--since <datetime>", "Only messages created at or after this time")
|
|
255
|
+
.option("--cursor <cursor>", "Pagination cursor")
|
|
256
|
+
.option("--limit <n>", "Results per page (1-100)", "50")
|
|
257
|
+
.action(withErrorHandler(async function (options) {
|
|
258
|
+
const result = await (await identityFor(this, options.identity)).a2aMessages({
|
|
259
|
+
direction: options.direction,
|
|
260
|
+
requesterHandle: options.requester,
|
|
261
|
+
workerHandle: options.worker,
|
|
262
|
+
taskId: options.task,
|
|
263
|
+
contextId: options.context,
|
|
264
|
+
role: options.role,
|
|
265
|
+
q: options.query,
|
|
266
|
+
since: options.since,
|
|
267
|
+
cursor: options.cursor,
|
|
268
|
+
limit: positiveInt(options.limit, "--limit"),
|
|
269
|
+
});
|
|
270
|
+
const items = result.items.map((message) => ({
|
|
271
|
+
...message,
|
|
272
|
+
requesterHandle: message.caller.handle,
|
|
273
|
+
workerHandle: message.target?.handle ?? null,
|
|
274
|
+
text: messageText(message),
|
|
275
|
+
}));
|
|
276
|
+
outputCursorPage(result, this, MESSAGE_COLUMNS, items);
|
|
277
|
+
}));
|
|
278
|
+
a2a.command("reply <task-id>")
|
|
279
|
+
.description("Reply to an inbound A2A task")
|
|
280
|
+
.requiredOption("-i, --identity <handle>", "Agent identity handle")
|
|
281
|
+
.requiredOption("--text <text>", "Reply text")
|
|
282
|
+
.addOption(new Option("--progress", "Post progress and keep working").conflicts(["complete", "ask", "fail"]))
|
|
283
|
+
.addOption(new Option("--complete", "Complete the task").conflicts(["progress", "ask", "fail"]))
|
|
284
|
+
.addOption(new Option("--ask", "Ask the caller for input").conflicts(["progress", "complete", "fail"]))
|
|
285
|
+
.addOption(new Option("--fail", "Fail the task").conflicts(["progress", "complete", "ask"]))
|
|
286
|
+
.action(withErrorHandler(async function (taskId, options) {
|
|
287
|
+
const selected = [
|
|
288
|
+
options.progress,
|
|
289
|
+
options.complete,
|
|
290
|
+
options.ask,
|
|
291
|
+
options.fail,
|
|
292
|
+
].filter(Boolean);
|
|
293
|
+
if (selected.length !== 1) {
|
|
294
|
+
throw new TypeError("Pass exactly one of --progress, --complete, --ask, or --fail");
|
|
295
|
+
}
|
|
296
|
+
const intent = options.progress
|
|
297
|
+
? "progress"
|
|
298
|
+
: options.complete
|
|
299
|
+
? "complete"
|
|
300
|
+
: options.ask ? "ask_caller" : "fail";
|
|
301
|
+
const result = await (await identityFor(this, options.identity)).a2aReply(taskId, {
|
|
302
|
+
intent,
|
|
303
|
+
text: options.text,
|
|
304
|
+
});
|
|
305
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
306
|
+
}));
|
|
307
|
+
a2a.command("call <card-url>")
|
|
308
|
+
.description("Send a task to an A2A agent")
|
|
309
|
+
.requiredOption("-i, --identity <handle>", "Local identity handle")
|
|
310
|
+
.requiredOption("--text <text>", "Task text")
|
|
311
|
+
.option("--context <id>", "Continue a context")
|
|
312
|
+
.option("--task <id>", "Continue a task")
|
|
313
|
+
.option("--message-id <id>", "Stable idempotency ID")
|
|
314
|
+
.action(withErrorHandler(async function (cardUrl, options) {
|
|
315
|
+
const identity = await identityFor(this, options.identity);
|
|
316
|
+
const client = await identity.a2aClient();
|
|
317
|
+
const target = await client.fetchCard(cardUrl);
|
|
318
|
+
const result = await client.send(target, {
|
|
319
|
+
text: options.text,
|
|
320
|
+
contextId: options.context,
|
|
321
|
+
taskId: options.task,
|
|
322
|
+
messageId: options.messageId,
|
|
323
|
+
});
|
|
324
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
325
|
+
}));
|
|
326
|
+
a2a.command("check <card-url> <task-id>")
|
|
327
|
+
.description("Fetch or wait for a remote A2A task")
|
|
328
|
+
.requiredOption("-i, --identity <handle>", "Local identity handle")
|
|
329
|
+
.option("--wait", "Poll until the task stops")
|
|
330
|
+
.action(withErrorHandler(async function (cardUrl, taskId, options) {
|
|
331
|
+
const identity = await identityFor(this, options.identity);
|
|
332
|
+
const client = await identity.a2aClient();
|
|
333
|
+
const target = await client.fetchCard(cardUrl);
|
|
334
|
+
const result = options.wait
|
|
335
|
+
? await client.wait(target, taskId)
|
|
336
|
+
: await client.getTask(target, taskId);
|
|
337
|
+
output(result, { json: !!getGlobalOpts(this).json });
|
|
338
|
+
}));
|
|
339
|
+
a2a.command("cancel <card-url> <task-id>")
|
|
340
|
+
.description("Cancel a remote A2A task")
|
|
341
|
+
.requiredOption("-i, --identity <handle>", "Local identity handle")
|
|
342
|
+
.action(withErrorHandler(async function (cardUrl, taskId, options) {
|
|
343
|
+
const identity = await identityFor(this, options.identity);
|
|
344
|
+
const client = await identity.a2aClient();
|
|
345
|
+
const target = await client.fetchCard(cardUrl);
|
|
346
|
+
output(await client.cancel(target, taskId), { json: !!getGlobalOpts(this).json });
|
|
347
|
+
}));
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=a2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/commands/a2a.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mailbox.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { openAsBlob } from "node:fs";
|
|
2
|
+
import { stat } from "node:fs/promises";
|
|
3
|
+
import { basename } from "node:path";
|
|
4
|
+
import { FilterMode, MailImportFormat, MailImportJobStatus, MailImportUploadError, } from "@inkbox/sdk";
|
|
2
5
|
import { createClient, getGlobalOpts, resolveBaseUrl } from "../client.js";
|
|
3
6
|
import { output } from "../output.js";
|
|
4
7
|
import { withErrorHandler } from "../errors.js";
|
|
@@ -12,6 +15,7 @@ const MAILBOX_LIST_COLUMNS = [
|
|
|
12
15
|
"createdAt",
|
|
13
16
|
];
|
|
14
17
|
const BYTE_UNITS = ["B", "KiB", "MiB", "GiB", "TiB"];
|
|
18
|
+
export const MAIL_IMPORT_MAX_UPLOAD_BYTES = 1024 ** 3;
|
|
15
19
|
// Storage caps are binary (2 GiB = 2 * 1024 ** 3), so this divides by 1024 and
|
|
16
20
|
// labels GiB/MiB — never pair base-2 math with a decimal "GB".
|
|
17
21
|
export function formatBytes(bytes) {
|
|
@@ -60,6 +64,180 @@ export function mailboxGetRecord(mb, opts) {
|
|
|
60
64
|
}
|
|
61
65
|
return record;
|
|
62
66
|
}
|
|
67
|
+
function parsePositiveSeconds(value) {
|
|
68
|
+
const seconds = Number(value);
|
|
69
|
+
if (!Number.isFinite(seconds) || seconds <= 0) {
|
|
70
|
+
throw new Error(`Expected a positive number of seconds (got '${value}')`);
|
|
71
|
+
}
|
|
72
|
+
return seconds;
|
|
73
|
+
}
|
|
74
|
+
function collect(value, previous) {
|
|
75
|
+
return [...previous, value];
|
|
76
|
+
}
|
|
77
|
+
export function assertMailImportFormat(value) {
|
|
78
|
+
if (!Object.values(MailImportFormat).includes(value)) {
|
|
79
|
+
throw new Error(`--source-format must be auto, mbox, eml, or zip (got '${value}')`);
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
export async function assertImportFileSize(path) {
|
|
84
|
+
const size = (await stat(path)).size;
|
|
85
|
+
if (size > MAIL_IMPORT_MAX_UPLOAD_BYTES) {
|
|
86
|
+
throw new Error(`Import file is ${size} bytes; the maximum is ${MAIL_IMPORT_MAX_UPLOAD_BYTES} bytes.`);
|
|
87
|
+
}
|
|
88
|
+
return size;
|
|
89
|
+
}
|
|
90
|
+
function progressSignature(job) {
|
|
91
|
+
return [
|
|
92
|
+
job.status,
|
|
93
|
+
job.messagesProcessed,
|
|
94
|
+
job.messagesImported,
|
|
95
|
+
job.messagesSkippedDuplicate,
|
|
96
|
+
job.messagesFailed,
|
|
97
|
+
job.messagesRejectedUnsafe,
|
|
98
|
+
].join(":");
|
|
99
|
+
}
|
|
100
|
+
export function createImportProgressReporter(write = (message) => console.error(message)) {
|
|
101
|
+
let previous = "";
|
|
102
|
+
return (job) => {
|
|
103
|
+
const signature = progressSignature(job);
|
|
104
|
+
if (signature === previous)
|
|
105
|
+
return;
|
|
106
|
+
previous = signature;
|
|
107
|
+
write(`Import ${job.id}: ${job.status}; processed=${job.messagesProcessed} ` +
|
|
108
|
+
`imported=${job.messagesImported} duplicates=${job.messagesSkippedDuplicate} ` +
|
|
109
|
+
`failed=${job.messagesFailed} unsafe=${job.messagesRejectedUnsafe}`);
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Upload the archive, re-issuing once after a transport failure or rejected
|
|
114
|
+
* target. Targets expire in minutes while uploads can run far longer, so an
|
|
115
|
+
* expired policy is expected on a large archive. A job left in
|
|
116
|
+
* `pending_upload` blocks the mailbox for a day, so give it up on the way out.
|
|
117
|
+
*/
|
|
118
|
+
async function uploadWithRetry(inkbox, emailAddress, created, blob, fileName, remainingTimeoutMs) {
|
|
119
|
+
const imports = inkbox.mailboxes.imports;
|
|
120
|
+
try {
|
|
121
|
+
try {
|
|
122
|
+
await imports.upload(created.upload, blob, { fileName, timeoutMs: remainingTimeoutMs() });
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (!(error instanceof MailImportUploadError)
|
|
126
|
+
|| (error.statusCode !== null && error.statusCode !== 403)) {
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
console.error("Upload failed; re-issuing the upload target and retrying once...");
|
|
130
|
+
const refreshed = await imports.refreshUploadTarget(emailAddress, created.job.id);
|
|
131
|
+
await imports.upload(refreshed, blob, { fileName, timeoutMs: remainingTimeoutMs() });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
await imports.cancel(emailAddress, created.job.id).catch(() => {
|
|
136
|
+
console.error(`Hint: Release the mailbox with 'inkbox mailbox imports cancel ` +
|
|
137
|
+
`${emailAddress} ${created.job.id}'.`);
|
|
138
|
+
});
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function setTerminalExitCode(job) {
|
|
143
|
+
if (job.status === MailImportJobStatus.FAILED || job.status === MailImportJobStatus.CANCELLED) {
|
|
144
|
+
process.exitCode = 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function registerMailboxImportCommands(parent) {
|
|
148
|
+
const imports = parent
|
|
149
|
+
.command("imports")
|
|
150
|
+
.description("Import mail from an MBOX, EML, or ZIP archive");
|
|
151
|
+
imports
|
|
152
|
+
.command("run <email> <file>")
|
|
153
|
+
.description("Create, upload, and start a mailbox import")
|
|
154
|
+
.option("--source-format <format>", "auto, mbox, eml, or zip", "auto")
|
|
155
|
+
.option("--original-address <email>", "Original mailbox address (repeatable)", collect, [])
|
|
156
|
+
.option("--mark-unread", "Import messages as unread")
|
|
157
|
+
.option("--no-wait", "Return after the import is queued")
|
|
158
|
+
.option("--timeout <seconds>", "Stop waiting after this many seconds", parsePositiveSeconds)
|
|
159
|
+
.option("--poll-interval <seconds>", "Polling interval", parsePositiveSeconds, 5)
|
|
160
|
+
.action(withErrorHandler(async function (email, file, cmdOpts) {
|
|
161
|
+
const opts = getGlobalOpts(this);
|
|
162
|
+
const startedAt = performance.now();
|
|
163
|
+
const remainingTimeoutMs = () => {
|
|
164
|
+
if (cmdOpts.timeout === undefined)
|
|
165
|
+
return undefined;
|
|
166
|
+
const remaining = cmdOpts.timeout * 1000 - (performance.now() - startedAt);
|
|
167
|
+
if (remaining <= 0)
|
|
168
|
+
throw new Error("Mailbox import timed out");
|
|
169
|
+
return remaining;
|
|
170
|
+
};
|
|
171
|
+
await assertImportFileSize(file);
|
|
172
|
+
const inkbox = createClient(opts, remainingTimeoutMs());
|
|
173
|
+
const created = await inkbox.mailboxes.imports.create(email, {
|
|
174
|
+
sourceFormat: assertMailImportFormat(cmdOpts.sourceFormat),
|
|
175
|
+
originalAddresses: cmdOpts.originalAddress.length ? cmdOpts.originalAddress : undefined,
|
|
176
|
+
markAsRead: !cmdOpts.markUnread,
|
|
177
|
+
});
|
|
178
|
+
console.error(`Uploading ${basename(file)}...`);
|
|
179
|
+
const blob = await openAsBlob(file);
|
|
180
|
+
await uploadWithRetry(inkbox, email, created, blob, basename(file), remainingTimeoutMs);
|
|
181
|
+
console.error("Upload complete; starting import...");
|
|
182
|
+
const controlClient = createClient(opts, remainingTimeoutMs());
|
|
183
|
+
const queued = await controlClient.mailboxes.imports.start(email, created.job.id);
|
|
184
|
+
if (!cmdOpts.wait) {
|
|
185
|
+
output(queued, { json: !!opts.json });
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const result = await controlClient.mailboxes.imports.wait(email, created.job.id, {
|
|
189
|
+
timeoutMs: remainingTimeoutMs(),
|
|
190
|
+
pollIntervalMs: cmdOpts.pollInterval * 1000,
|
|
191
|
+
onPoll: createImportProgressReporter(),
|
|
192
|
+
});
|
|
193
|
+
output(result, { json: !!opts.json });
|
|
194
|
+
setTerminalExitCode(result);
|
|
195
|
+
}));
|
|
196
|
+
imports
|
|
197
|
+
.command("get <email> <job-id>")
|
|
198
|
+
.description("Get a mailbox import job")
|
|
199
|
+
.action(withErrorHandler(async function (email, jobId) {
|
|
200
|
+
const opts = getGlobalOpts(this);
|
|
201
|
+
const result = await createClient(opts).mailboxes.imports.get(email, jobId);
|
|
202
|
+
output(result, { json: !!opts.json });
|
|
203
|
+
}));
|
|
204
|
+
imports
|
|
205
|
+
.command("list <email>")
|
|
206
|
+
.description("List mailbox import jobs")
|
|
207
|
+
.option("--cursor <cursor>", "Pagination cursor")
|
|
208
|
+
.option("--limit <n>", "Maximum jobs", (value) => parseInt(value, 10), 50)
|
|
209
|
+
.action(withErrorHandler(async function (email, cmdOpts) {
|
|
210
|
+
const opts = getGlobalOpts(this);
|
|
211
|
+
const page = await createClient(opts).mailboxes.imports.list(email, cmdOpts);
|
|
212
|
+
output(opts.json ? page : page.items, {
|
|
213
|
+
json: !!opts.json,
|
|
214
|
+
columns: ["id", "status", "sourceFormat", "messagesProcessed", "messagesImported", "createdAt"],
|
|
215
|
+
});
|
|
216
|
+
}));
|
|
217
|
+
imports
|
|
218
|
+
.command("wait <email> <job-id>")
|
|
219
|
+
.description("Wait for a mailbox import to finish")
|
|
220
|
+
.option("--timeout <seconds>", "Stop waiting after this many seconds", parsePositiveSeconds)
|
|
221
|
+
.option("--poll-interval <seconds>", "Polling interval", parsePositiveSeconds, 5)
|
|
222
|
+
.action(withErrorHandler(async function (email, jobId, cmdOpts) {
|
|
223
|
+
const opts = getGlobalOpts(this);
|
|
224
|
+
const result = await createClient(opts).mailboxes.imports.wait(email, jobId, {
|
|
225
|
+
timeoutMs: cmdOpts.timeout === undefined ? undefined : cmdOpts.timeout * 1000,
|
|
226
|
+
pollIntervalMs: cmdOpts.pollInterval * 1000,
|
|
227
|
+
onPoll: createImportProgressReporter(),
|
|
228
|
+
});
|
|
229
|
+
output(result, { json: !!opts.json });
|
|
230
|
+
setTerminalExitCode(result);
|
|
231
|
+
}));
|
|
232
|
+
imports
|
|
233
|
+
.command("cancel <email> <job-id>")
|
|
234
|
+
.description("Cancel an active mailbox import")
|
|
235
|
+
.action(withErrorHandler(async function (email, jobId) {
|
|
236
|
+
const opts = getGlobalOpts(this);
|
|
237
|
+
const result = await createClient(opts).mailboxes.imports.cancel(email, jobId);
|
|
238
|
+
output(result, { json: !!opts.json });
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
63
241
|
const MAIL_DOMAIN_BY_API_HOST = new Map([
|
|
64
242
|
["inkbox.ai", "inkboxmail.com"],
|
|
65
243
|
["api.inkbox.ai", "inkboxmail.com"],
|
|
@@ -282,5 +460,6 @@ export function registerMailboxCommands(program) {
|
|
|
282
460
|
"(S/MIME, PGP) cannot be sent over SMTP.");
|
|
283
461
|
}));
|
|
284
462
|
registerMailboxRulesCommands(mailbox);
|
|
463
|
+
registerMailboxImportCommands(mailbox);
|
|
285
464
|
}
|
|
286
465
|
//# sourceMappingURL=mailbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/commands/mailbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/commands/mailbox.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
import { DuplicateContactRuleError, InkboxAPIError, InkboxError, InkboxVaultKeyError, RedundantContactAccessGrantError, StorageLimitExceededError, } from "@inkbox/sdk";
|
|
1
|
+
import { DuplicateContactRuleError, InkboxAPIError, InkboxError, InkboxVaultKeyError, MailImportQuotaExceededError, RedundantContactAccessGrantError, StorageLimitExceededError, } from "@inkbox/sdk";
|
|
2
|
+
function importAlreadyInFlight(err) {
|
|
3
|
+
return (err.statusCode === 409
|
|
4
|
+
&& typeof err.detail === "object"
|
|
5
|
+
&& err.detail !== null
|
|
6
|
+
&& err.detail["error"] === "mail_import_already_in_flight");
|
|
7
|
+
}
|
|
8
|
+
/** Structured details carry a human sentence; printing the raw JSON helps nobody. */
|
|
2
9
|
function renderDetail(detail) {
|
|
3
|
-
|
|
10
|
+
if (typeof detail === "string")
|
|
11
|
+
return detail;
|
|
12
|
+
const message = detail?.message;
|
|
13
|
+
return typeof message === "string" && message ? message : JSON.stringify(detail);
|
|
4
14
|
}
|
|
5
15
|
export function withErrorHandler(fn) {
|
|
6
16
|
return async function (...args) {
|
|
@@ -21,11 +31,21 @@ export function withErrorHandler(fn) {
|
|
|
21
31
|
"(reclaim is immediate), or upgrade the plan" +
|
|
22
32
|
(err.upgradeUrl ? `: ${err.upgradeUrl}` : "."));
|
|
23
33
|
}
|
|
34
|
+
else if (err instanceof MailImportQuotaExceededError) {
|
|
35
|
+
console.error(`Error: HTTP ${err.statusCode}: ${err.detailMessage || renderDetail(err.detail)}`);
|
|
36
|
+
if (err.retryAfterSeconds !== null) {
|
|
37
|
+
console.error(`Hint: Retry in ${err.retryAfterSeconds} seconds.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
24
40
|
else if (err instanceof InkboxAPIError) {
|
|
25
41
|
console.error(`Error: HTTP ${err.statusCode}: ${renderDetail(err.detail)}`);
|
|
26
42
|
if (err.statusCode === 401) {
|
|
27
43
|
console.error("Hint: Check your API key.");
|
|
28
44
|
}
|
|
45
|
+
if (importAlreadyInFlight(err)) {
|
|
46
|
+
console.error("Hint: List the mailbox's jobs with 'inkbox mailbox imports list <email>' " +
|
|
47
|
+
"and release an abandoned one with 'inkbox mailbox imports cancel <email> <job-id>'.");
|
|
48
|
+
}
|
|
29
49
|
}
|
|
30
50
|
else if (err instanceof InkboxVaultKeyError) {
|
|
31
51
|
console.error(`Error: ${err.message}`);
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,SAAS,YAAY,CAAC,MAAwC;IAC5D,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { registerWebhookCommands } from "./commands/webhook.js";
|
|
|
20
20
|
import { registerContactsCommands } from "./commands/contacts.js";
|
|
21
21
|
import { registerNotesCommands } from "./commands/notes.js";
|
|
22
22
|
import { registerDomainCommands } from "./commands/domain.js";
|
|
23
|
+
import { registerA2ACommands } from "./commands/a2a.js";
|
|
23
24
|
// Node's fetch ignores HTTP(S)_PROXY/NO_PROXY unless NODE_USE_ENV_PROXY is
|
|
24
25
|
// enabled — a flag that only exists on Node 22.21+/24+ — which strands the
|
|
25
26
|
// CLI in sandboxed/proxied environments. Install the env-proxy dispatcher
|
|
@@ -58,5 +59,6 @@ registerWebhookCommands(program);
|
|
|
58
59
|
registerContactsCommands(program);
|
|
59
60
|
registerNotesCommands(program);
|
|
60
61
|
registerDomainCommands(program);
|
|
62
|
+
registerA2ACommands(program);
|
|
61
63
|
program.parse();
|
|
62
64
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAC7E,IACE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG;IACtC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAC3C,CAAC;IACD,mBAAmB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,WAAW,CAAC;KACpB,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;KACzF,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;KAC5E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAE7C,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkbox/cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.7",
|
|
4
4
|
"description": "CLI for the Inkbox API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"prepublishOnly": "npm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@inkbox/sdk": "^0.5.
|
|
21
|
+
"@inkbox/sdk": "^0.5.7",
|
|
22
22
|
"commander": "^13.0.0",
|
|
23
23
|
"undici": "^7.28.0"
|
|
24
24
|
},
|