@inkbox/cli 0.2.9 → 0.2.11

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 CHANGED
@@ -55,8 +55,10 @@ Agent self-signup flow. The `create` command does not require an API key.
55
55
  ```bash
56
56
  inkbox signup create # Register a new agent (no API key needed)
57
57
  --human-email <email> # Email of the human to approve (required)
58
- --display-name <name> # Agent display name (required)
59
58
  --note-to-human <note> # Message to human in verification email (required)
59
+ --display-name <name> # Agent display name (optional)
60
+ --agent-handle <handle> # Requested agent handle (optional)
61
+ --email-local-part <local> # Requested mailbox local part (optional)
60
62
 
61
63
  inkbox signup verify # Submit verification code
62
64
  --code <code> # 6-digit code from email (required)
@@ -0,0 +1,178 @@
1
+ import { readFileSync, writeFileSync } from "node:fs";
2
+ import { createClient, getGlobalOpts } from "../client.js";
3
+ import { output } from "../output.js";
4
+ import { withErrorHandler } from "../errors.js";
5
+ function parseJsonArg(raw, label) {
6
+ try {
7
+ return JSON.parse(raw);
8
+ }
9
+ catch (err) {
10
+ throw new Error(`Could not parse ${label} as JSON: ${err instanceof Error ? err.message : String(err)}`);
11
+ }
12
+ }
13
+ function registerContactsAccessCommands(parent) {
14
+ const access = parent
15
+ .command("access")
16
+ .description("Per-contact access grants");
17
+ access
18
+ .command("list <contact-id>")
19
+ .description("List grants on a contact")
20
+ .action(withErrorHandler(async function (contactId) {
21
+ const opts = getGlobalOpts(this);
22
+ const inkbox = createClient(opts);
23
+ const rows = await inkbox.contacts.access.list(contactId);
24
+ output(rows, {
25
+ json: !!opts.json,
26
+ columns: ["id", "contactId", "identityId", "createdAt"],
27
+ });
28
+ }));
29
+ access
30
+ .command("grant <contact-id>")
31
+ .description("Grant access on a contact (admin + JWT only)")
32
+ .option("--identity <uuid>", "Identity UUID to grant")
33
+ .option("--wildcard", "Reset to wildcard grant (every active identity)", false)
34
+ .action(withErrorHandler(async function (contactId, cmdOpts) {
35
+ if (cmdOpts.wildcard && cmdOpts.identity) {
36
+ throw new Error("Pass either --identity <uuid> or --wildcard, not both.");
37
+ }
38
+ if (!cmdOpts.wildcard && !cmdOpts.identity) {
39
+ throw new Error("One of --identity or --wildcard is required.");
40
+ }
41
+ const opts = getGlobalOpts(this);
42
+ const inkbox = createClient(opts);
43
+ const grant = await inkbox.contacts.access.grant(contactId, {
44
+ identityId: cmdOpts.identity,
45
+ wildcard: cmdOpts.wildcard,
46
+ });
47
+ output(grant, { json: !!opts.json });
48
+ }));
49
+ access
50
+ .command("revoke <contact-id> <identity-id>")
51
+ .description("Revoke a specific identity's grant (self-only for agents)")
52
+ .action(withErrorHandler(async function (contactId, identityId) {
53
+ const opts = getGlobalOpts(this);
54
+ const inkbox = createClient(opts);
55
+ await inkbox.contacts.access.revoke(contactId, identityId);
56
+ console.log(`Revoked identity ${identityId} on contact ${contactId}.`);
57
+ }));
58
+ }
59
+ export function registerContactsCommands(program) {
60
+ const contacts = program
61
+ .command("contacts")
62
+ .description("Org-wide address book (contacts + access + vCard)");
63
+ contacts
64
+ .command("list")
65
+ .description("List contacts")
66
+ .option("--q <query>", "Case-insensitive substring search (≤100 chars)")
67
+ .option("--order <order>", "name or recent")
68
+ .option("--limit <n>", "Max rows", (v) => parseInt(v, 10))
69
+ .option("--offset <n>", "Offset", (v) => parseInt(v, 10))
70
+ .action(withErrorHandler(async function (cmdOpts) {
71
+ const opts = getGlobalOpts(this);
72
+ const inkbox = createClient(opts);
73
+ const rows = await inkbox.contacts.list(cmdOpts);
74
+ output(rows, {
75
+ json: !!opts.json,
76
+ columns: [
77
+ "id",
78
+ "preferredName",
79
+ "givenName",
80
+ "familyName",
81
+ "companyName",
82
+ "jobTitle",
83
+ "updatedAt",
84
+ ],
85
+ });
86
+ }));
87
+ contacts
88
+ .command("get <contact-id>")
89
+ .description("Fetch a single contact")
90
+ .action(withErrorHandler(async function (contactId) {
91
+ const opts = getGlobalOpts(this);
92
+ const inkbox = createClient(opts);
93
+ const contact = await inkbox.contacts.get(contactId);
94
+ output(contact, { json: !!opts.json });
95
+ }));
96
+ contacts
97
+ .command("create")
98
+ .description("Create a contact (pass the full payload as JSON)")
99
+ .requiredOption("--json <payload>", "JSON payload matching CreateContactOptions")
100
+ .action(withErrorHandler(async function (cmdOpts) {
101
+ const opts = getGlobalOpts(this);
102
+ const payload = parseJsonArg(cmdOpts.json, "--json payload");
103
+ const inkbox = createClient(opts);
104
+ const contact = await inkbox.contacts.create(payload);
105
+ output(contact, { json: !!opts.json });
106
+ }));
107
+ contacts
108
+ .command("update <contact-id>")
109
+ .description("JSON-merge-patch update (pass the patch as JSON)")
110
+ .requiredOption("--json <payload>", "JSON patch matching UpdateContactOptions")
111
+ .action(withErrorHandler(async function (contactId, cmdOpts) {
112
+ const opts = getGlobalOpts(this);
113
+ const patch = parseJsonArg(cmdOpts.json, "--json patch");
114
+ const inkbox = createClient(opts);
115
+ const contact = await inkbox.contacts.update(contactId, patch);
116
+ output(contact, { json: !!opts.json });
117
+ }));
118
+ contacts
119
+ .command("delete <contact-id>")
120
+ .description("Delete a contact")
121
+ .action(withErrorHandler(async function (contactId) {
122
+ const opts = getGlobalOpts(this);
123
+ const inkbox = createClient(opts);
124
+ await inkbox.contacts.delete(contactId);
125
+ console.log(`Deleted contact ${contactId}.`);
126
+ }));
127
+ contacts
128
+ .command("lookup")
129
+ .description("Reverse-lookup contacts (exactly one filter required)")
130
+ .option("--email <email>", "Exact email match")
131
+ .option("--email-contains <substr>", "Case-insensitive email substring")
132
+ .option("--email-domain <domain>", "Domain-part match")
133
+ .option("--phone <e164>", "Exact phone match")
134
+ .option("--phone-contains <substr>", "Phone substring")
135
+ .action(withErrorHandler(async function (cmdOpts) {
136
+ const opts = getGlobalOpts(this);
137
+ const inkbox = createClient(opts);
138
+ const rows = await inkbox.contacts.lookup(cmdOpts);
139
+ output(rows, {
140
+ json: !!opts.json,
141
+ columns: ["id", "preferredName", "givenName", "familyName", "updatedAt"],
142
+ });
143
+ }));
144
+ contacts
145
+ .command("import <file>")
146
+ .description("Bulk vCard import (text/vcard, ≤5 MiB, ≤1000 cards)")
147
+ .action(withErrorHandler(async function (file) {
148
+ const opts = getGlobalOpts(this);
149
+ const inkbox = createClient(opts);
150
+ const body = readFileSync(file, "utf8");
151
+ const result = await inkbox.contacts.vcards.import(body);
152
+ output(result, { json: !!opts.json });
153
+ }));
154
+ contacts
155
+ .command("export <contact-id>")
156
+ .description("Export a single contact as vCard 4.0")
157
+ .option("--out <file>", "Write to file instead of stdout")
158
+ .action(withErrorHandler(async function (contactId, cmdOpts) {
159
+ const opts = getGlobalOpts(this);
160
+ const inkbox = createClient(opts);
161
+ const vcf = await inkbox.contacts.vcards.export(contactId);
162
+ if (cmdOpts.out) {
163
+ writeFileSync(cmdOpts.out, vcf, "utf8");
164
+ if (!opts.json)
165
+ console.log(`Wrote ${cmdOpts.out}`);
166
+ }
167
+ else {
168
+ if (opts.json) {
169
+ output({ vcard: vcf }, { json: true });
170
+ }
171
+ else {
172
+ process.stdout.write(vcf);
173
+ }
174
+ }
175
+ }));
176
+ registerContactsAccessCommands(contacts);
177
+ }
178
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,125 @@
1
+ import { FilterMode, } from "@inkbox/sdk";
1
2
  import { createClient, getGlobalOpts } from "../client.js";
2
3
  import { output } from "../output.js";
3
4
  import { withErrorHandler } from "../errors.js";
5
+ const MAILBOX_LIST_COLUMNS = [
6
+ "emailAddress",
7
+ "id",
8
+ "displayName",
9
+ "filterMode",
10
+ "agentIdentityId",
11
+ "createdAt",
12
+ ];
13
+ function renderFilterModeChangeNotice(mb) {
14
+ const notice = mb.filterModeChangeNotice;
15
+ if (!notice)
16
+ return;
17
+ console.error(`Note: ${notice.redundantRuleCount} active '${notice.redundantRuleAction}' ` +
18
+ `rule(s) are now redundant under '${notice.newFilterMode}'. ` +
19
+ `Review with 'inkbox mailbox rules list --mailbox <email>'.`);
20
+ }
21
+ function assertFilterMode(raw) {
22
+ if (raw !== FilterMode.WHITELIST && raw !== FilterMode.BLACKLIST) {
23
+ throw new Error(`--filter-mode must be 'whitelist' or 'blacklist' (got '${raw}')`);
24
+ }
25
+ return raw;
26
+ }
27
+ function registerMailboxRulesCommands(parent) {
28
+ const rules = parent
29
+ .command("rules")
30
+ .description("Contact rules scoped to a mailbox");
31
+ rules
32
+ .command("list")
33
+ .description("List rules for a mailbox, or org-wide with --all-mailboxes")
34
+ .option("--mailbox <email>", "Mailbox email address")
35
+ .option("--all-mailboxes", "List all rules across all mailboxes (admin-only)")
36
+ .option("--mailbox-id <id>", "Narrow the org-wide list to a single mailbox id")
37
+ .option("--action <action>", "Filter by action: allow or block")
38
+ .option("--match-type <type>", "Filter by match_type: exact_email or domain")
39
+ .option("--limit <n>", "Max rows", (v) => parseInt(v, 10))
40
+ .option("--offset <n>", "Offset", (v) => parseInt(v, 10))
41
+ .action(withErrorHandler(async function (cmdOpts) {
42
+ const opts = getGlobalOpts(this);
43
+ const inkbox = createClient(opts);
44
+ let rows;
45
+ if (cmdOpts.allMailboxes) {
46
+ rows = await inkbox.mailContactRules.listAll({
47
+ mailboxId: cmdOpts.mailboxId,
48
+ action: cmdOpts.action,
49
+ matchType: cmdOpts.matchType,
50
+ limit: cmdOpts.limit,
51
+ offset: cmdOpts.offset,
52
+ });
53
+ }
54
+ else {
55
+ if (!cmdOpts.mailbox) {
56
+ throw new Error("--mailbox <email> or --all-mailboxes is required");
57
+ }
58
+ rows = await inkbox.mailContactRules.list(cmdOpts.mailbox, {
59
+ action: cmdOpts.action,
60
+ matchType: cmdOpts.matchType,
61
+ limit: cmdOpts.limit,
62
+ offset: cmdOpts.offset,
63
+ });
64
+ }
65
+ output(rows, {
66
+ json: !!opts.json,
67
+ columns: ["id", "mailboxId", "action", "matchType", "matchTarget", "status"],
68
+ });
69
+ }));
70
+ rules
71
+ .command("get <rule-id>")
72
+ .description("Get a single rule")
73
+ .requiredOption("--mailbox <email>", "Mailbox email address")
74
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
75
+ const opts = getGlobalOpts(this);
76
+ const inkbox = createClient(opts);
77
+ const rule = await inkbox.mailContactRules.get(cmdOpts.mailbox, ruleId);
78
+ output(rule, { json: !!opts.json });
79
+ }));
80
+ rules
81
+ .command("create")
82
+ .description("Create a rule (always starts active; use `update` to pause)")
83
+ .requiredOption("--mailbox <email>", "Mailbox email address")
84
+ .requiredOption("--action <action>", "allow or block")
85
+ .requiredOption("--match-type <type>", "exact_email or domain")
86
+ .requiredOption("--match-target <value>", "Address or domain to match")
87
+ .action(withErrorHandler(async function (cmdOpts) {
88
+ const opts = getGlobalOpts(this);
89
+ const inkbox = createClient(opts);
90
+ const rule = await inkbox.mailContactRules.create(cmdOpts.mailbox, {
91
+ action: cmdOpts.action,
92
+ matchType: cmdOpts.matchType,
93
+ matchTarget: cmdOpts.matchTarget,
94
+ });
95
+ output(rule, { json: !!opts.json });
96
+ }));
97
+ rules
98
+ .command("update <rule-id>")
99
+ .description("Update action and/or status on a rule (admin-only)")
100
+ .requiredOption("--mailbox <email>", "Mailbox email address")
101
+ .option("--action <action>", "allow or block")
102
+ .option("--status <status>", "active or paused")
103
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
104
+ const opts = getGlobalOpts(this);
105
+ const inkbox = createClient(opts);
106
+ const rule = await inkbox.mailContactRules.update(cmdOpts.mailbox, ruleId, {
107
+ action: cmdOpts.action,
108
+ status: cmdOpts.status,
109
+ });
110
+ output(rule, { json: !!opts.json });
111
+ }));
112
+ rules
113
+ .command("delete <rule-id>")
114
+ .description("Delete a rule (admin-only)")
115
+ .requiredOption("--mailbox <email>", "Mailbox email address")
116
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
117
+ const opts = getGlobalOpts(this);
118
+ const inkbox = createClient(opts);
119
+ await inkbox.mailContactRules.delete(cmdOpts.mailbox, ruleId);
120
+ console.log(`Deleted mail contact rule '${ruleId}' on ${cmdOpts.mailbox}.`);
121
+ }));
122
+ }
4
123
  export function registerMailboxCommands(program) {
5
124
  const mailbox = program
6
125
  .command("mailbox")
@@ -14,12 +133,7 @@ export function registerMailboxCommands(program) {
14
133
  const mailboxes = await inkbox.mailboxes.list();
15
134
  output(mailboxes, {
16
135
  json: !!opts.json,
17
- columns: [
18
- "emailAddress",
19
- "id",
20
- "displayName",
21
- "createdAt",
22
- ],
136
+ columns: MAILBOX_LIST_COLUMNS,
23
137
  });
24
138
  }));
25
139
  mailbox
@@ -40,6 +154,8 @@ export function registerMailboxCommands(program) {
40
154
  emailAddress: mb.emailAddress,
41
155
  id: mb.id,
42
156
  displayName: mb.displayName,
157
+ filterMode: mb.filterMode,
158
+ agentIdentityId: mb.agentIdentityId,
43
159
  createdAt: mb.createdAt,
44
160
  }, { json: !!opts.json });
45
161
  }));
@@ -55,6 +171,8 @@ export function registerMailboxCommands(program) {
55
171
  id: mb.id,
56
172
  displayName: mb.displayName,
57
173
  webhookUrl: mb.webhookUrl ?? null,
174
+ filterMode: mb.filterMode,
175
+ agentIdentityId: mb.agentIdentityId,
58
176
  createdAt: mb.createdAt,
59
177
  }, { json: !!opts.json });
60
178
  }));
@@ -63,19 +181,26 @@ export function registerMailboxCommands(program) {
63
181
  .description("Update a mailbox")
64
182
  .option("--display-name <name>", "New display name")
65
183
  .option("--webhook-url <url>", 'Webhook URL (pass "" to clear)')
184
+ .option("--filter-mode <mode>", "Contact-rule filter mode: whitelist or blacklist (admin-only)")
66
185
  .action(withErrorHandler(async function (emailAddress, cmdOpts) {
67
186
  const opts = getGlobalOpts(this);
68
187
  const inkbox = createClient(opts);
69
188
  const mb = await inkbox.mailboxes.update(emailAddress, {
70
189
  displayName: cmdOpts.displayName,
71
190
  webhookUrl: cmdOpts.webhookUrl === "" ? null : cmdOpts.webhookUrl,
191
+ filterMode: cmdOpts.filterMode !== undefined
192
+ ? assertFilterMode(cmdOpts.filterMode)
193
+ : undefined,
72
194
  });
73
195
  output({
74
196
  emailAddress: mb.emailAddress,
75
197
  id: mb.id,
76
198
  displayName: mb.displayName,
77
199
  webhookUrl: mb.webhookUrl ?? null,
200
+ filterMode: mb.filterMode,
201
+ agentIdentityId: mb.agentIdentityId,
78
202
  }, { json: !!opts.json });
203
+ renderFilterModeChangeNotice(mb);
79
204
  }));
80
205
  mailbox
81
206
  .command("delete <email-address>")
@@ -86,5 +211,6 @@ export function registerMailboxCommands(program) {
86
211
  await inkbox.mailboxes.delete(emailAddress);
87
212
  console.log(`Deleted mailbox '${emailAddress}'.`);
88
213
  }));
214
+ registerMailboxRulesCommands(mailbox);
89
215
  }
90
216
  //# 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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"}
@@ -0,0 +1,117 @@
1
+ import { createClient, getGlobalOpts } from "../client.js";
2
+ import { output } from "../output.js";
3
+ import { withErrorHandler } from "../errors.js";
4
+ function registerNotesAccessCommands(parent) {
5
+ const access = parent
6
+ .command("access")
7
+ .description("Per-note access grants");
8
+ access
9
+ .command("list <note-id>")
10
+ .description("List grants on a note")
11
+ .action(withErrorHandler(async function (noteId) {
12
+ const opts = getGlobalOpts(this);
13
+ const inkbox = createClient(opts);
14
+ const rows = await inkbox.notes.access.list(noteId);
15
+ output(rows, {
16
+ json: !!opts.json,
17
+ columns: ["id", "noteId", "identityId", "createdAt"],
18
+ });
19
+ }));
20
+ access
21
+ .command("grant <note-id> <identity-id>")
22
+ .description("Grant a specific identity access (admin + JWT only)")
23
+ .action(withErrorHandler(async function (noteId, identityId) {
24
+ const opts = getGlobalOpts(this);
25
+ const inkbox = createClient(opts);
26
+ const grant = await inkbox.notes.access.grant(noteId, identityId);
27
+ output(grant, { json: !!opts.json });
28
+ }));
29
+ access
30
+ .command("revoke <note-id> <identity-id>")
31
+ .description("Revoke a specific identity's grant (self-only for agents)")
32
+ .action(withErrorHandler(async function (noteId, identityId) {
33
+ const opts = getGlobalOpts(this);
34
+ const inkbox = createClient(opts);
35
+ await inkbox.notes.access.revoke(noteId, identityId);
36
+ console.log(`Revoked identity ${identityId} on note ${noteId}.`);
37
+ }));
38
+ }
39
+ export function registerNotesCommands(program) {
40
+ const notes = program
41
+ .command("notes")
42
+ .description("Org-scoped notes with per-identity grants");
43
+ notes
44
+ .command("list")
45
+ .description("List accessible notes")
46
+ .option("--q <query>", "Substring search (≤200 chars)")
47
+ .option("--identity <uuid>", "Filter to notes visible to an identity")
48
+ .option("--order <order>", "recent (default) or created")
49
+ .option("--limit <n>", "Max rows (1–200, default 50)", (v) => parseInt(v, 10))
50
+ .option("--offset <n>", "Offset", (v) => parseInt(v, 10))
51
+ .action(withErrorHandler(async function (cmdOpts) {
52
+ const opts = getGlobalOpts(this);
53
+ const inkbox = createClient(opts);
54
+ const rows = await inkbox.notes.list({
55
+ q: cmdOpts.q,
56
+ identityId: cmdOpts.identity,
57
+ order: cmdOpts.order,
58
+ limit: cmdOpts.limit,
59
+ offset: cmdOpts.offset,
60
+ });
61
+ output(rows, {
62
+ json: !!opts.json,
63
+ columns: ["id", "title", "createdBy", "status", "createdAt", "updatedAt"],
64
+ });
65
+ }));
66
+ notes
67
+ .command("get <note-id>")
68
+ .description("Fetch a single note with inlined grants")
69
+ .action(withErrorHandler(async function (noteId) {
70
+ const opts = getGlobalOpts(this);
71
+ const inkbox = createClient(opts);
72
+ const note = await inkbox.notes.get(noteId);
73
+ output(note, { json: !!opts.json });
74
+ }));
75
+ notes
76
+ .command("create")
77
+ .description("Create a note")
78
+ .requiredOption("--body <text>", "Body text (1–100 000 chars, required)")
79
+ .option("--title <text>", "Optional title (≤200 chars)")
80
+ .action(withErrorHandler(async function (cmdOpts) {
81
+ const opts = getGlobalOpts(this);
82
+ const inkbox = createClient(opts);
83
+ const note = await inkbox.notes.create({
84
+ body: cmdOpts.body,
85
+ title: cmdOpts.title,
86
+ });
87
+ output(note, { json: !!opts.json });
88
+ }));
89
+ notes
90
+ .command("update <note-id>")
91
+ .description("Update title and/or body")
92
+ .option("--body <text>", "New body text")
93
+ .option("--title <text>", 'New title (pass "" to clear)')
94
+ .action(withErrorHandler(async function (noteId, cmdOpts) {
95
+ const opts = getGlobalOpts(this);
96
+ const inkbox = createClient(opts);
97
+ const patch = {};
98
+ if (cmdOpts.body !== undefined)
99
+ patch.body = cmdOpts.body;
100
+ if (cmdOpts.title !== undefined) {
101
+ patch.title = cmdOpts.title === "" ? null : cmdOpts.title;
102
+ }
103
+ const note = await inkbox.notes.update(noteId, patch);
104
+ output(note, { json: !!opts.json });
105
+ }));
106
+ notes
107
+ .command("delete <note-id>")
108
+ .description("Delete a note")
109
+ .action(withErrorHandler(async function (noteId) {
110
+ const opts = getGlobalOpts(this);
111
+ const inkbox = createClient(opts);
112
+ await inkbox.notes.delete(noteId);
113
+ console.log(`Deleted note ${noteId}.`);
114
+ }));
115
+ registerNotesAccessCommands(notes);
116
+ }
117
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/commands/notes.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,117 @@
1
+ import { FilterMode, PhoneRuleMatchType, } from "@inkbox/sdk";
1
2
  import { createClient, getGlobalOpts } from "../client.js";
2
3
  import { output } from "../output.js";
3
4
  import { withErrorHandler } from "../errors.js";
5
+ function renderFilterModeChangeNotice(pn) {
6
+ const notice = pn.filterModeChangeNotice;
7
+ if (!notice)
8
+ return;
9
+ console.error(`Note: ${notice.redundantRuleCount} active '${notice.redundantRuleAction}' ` +
10
+ `rule(s) are now redundant under '${notice.newFilterMode}'. ` +
11
+ `Review with 'inkbox number rules list --number <id>'.`);
12
+ }
13
+ function assertFilterMode(raw) {
14
+ if (raw !== FilterMode.WHITELIST && raw !== FilterMode.BLACKLIST) {
15
+ throw new Error(`--filter-mode must be 'whitelist' or 'blacklist' (got '${raw}')`);
16
+ }
17
+ return raw;
18
+ }
19
+ function registerNumberRulesCommands(parent) {
20
+ const rules = parent
21
+ .command("rules")
22
+ .description("Contact rules scoped to a phone number");
23
+ rules
24
+ .command("list")
25
+ .description("List rules for a number, or org-wide with --all-numbers")
26
+ .option("--number <id>", "Phone number id")
27
+ .option("--all-numbers", "List all rules across all numbers (admin-only)")
28
+ .option("--phone-number-id <id>", "Narrow the org-wide list to a single number id")
29
+ .option("--action <action>", "Filter by action: allow or block")
30
+ .option("--match-type <type>", "Filter by match_type: exact_number")
31
+ .option("--limit <n>", "Max rows", (v) => parseInt(v, 10))
32
+ .option("--offset <n>", "Offset", (v) => parseInt(v, 10))
33
+ .action(withErrorHandler(async function (cmdOpts) {
34
+ const opts = getGlobalOpts(this);
35
+ const inkbox = createClient(opts);
36
+ let rows;
37
+ if (cmdOpts.allNumbers) {
38
+ rows = await inkbox.phoneContactRules.listAll({
39
+ phoneNumberId: cmdOpts.phoneNumberId,
40
+ action: cmdOpts.action,
41
+ matchType: cmdOpts.matchType,
42
+ limit: cmdOpts.limit,
43
+ offset: cmdOpts.offset,
44
+ });
45
+ }
46
+ else {
47
+ if (!cmdOpts.number) {
48
+ throw new Error("--number <id> or --all-numbers is required");
49
+ }
50
+ rows = await inkbox.phoneContactRules.list(cmdOpts.number, {
51
+ action: cmdOpts.action,
52
+ matchType: cmdOpts.matchType,
53
+ limit: cmdOpts.limit,
54
+ offset: cmdOpts.offset,
55
+ });
56
+ }
57
+ output(rows, {
58
+ json: !!opts.json,
59
+ columns: ["id", "phoneNumberId", "action", "matchType", "matchTarget", "status"],
60
+ });
61
+ }));
62
+ rules
63
+ .command("get <rule-id>")
64
+ .description("Get a single rule")
65
+ .requiredOption("--number <id>", "Phone number id")
66
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
67
+ const opts = getGlobalOpts(this);
68
+ const inkbox = createClient(opts);
69
+ const rule = await inkbox.phoneContactRules.get(cmdOpts.number, ruleId);
70
+ output(rule, { json: !!opts.json });
71
+ }));
72
+ rules
73
+ .command("create")
74
+ .description("Create a rule (always starts active; use `update` to pause)")
75
+ .requiredOption("--number <id>", "Phone number id")
76
+ .requiredOption("--action <action>", "allow or block")
77
+ .requiredOption("--match-target <value>", "Phone number to match (E.164)")
78
+ .option("--match-type <type>", "exact_number (default)", PhoneRuleMatchType.EXACT_NUMBER)
79
+ .action(withErrorHandler(async function (cmdOpts) {
80
+ const opts = getGlobalOpts(this);
81
+ const inkbox = createClient(opts);
82
+ const rule = await inkbox.phoneContactRules.create(cmdOpts.number, {
83
+ action: cmdOpts.action,
84
+ matchType: cmdOpts.matchType,
85
+ matchTarget: cmdOpts.matchTarget,
86
+ });
87
+ output(rule, { json: !!opts.json });
88
+ }));
89
+ rules
90
+ .command("update <rule-id>")
91
+ .description("Update action and/or status on a rule (admin-only)")
92
+ .requiredOption("--number <id>", "Phone number id")
93
+ .option("--action <action>", "allow or block")
94
+ .option("--status <status>", "active or paused")
95
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
96
+ const opts = getGlobalOpts(this);
97
+ const inkbox = createClient(opts);
98
+ const rule = await inkbox.phoneContactRules.update(cmdOpts.number, ruleId, {
99
+ action: cmdOpts.action,
100
+ status: cmdOpts.status,
101
+ });
102
+ output(rule, { json: !!opts.json });
103
+ }));
104
+ rules
105
+ .command("delete <rule-id>")
106
+ .description("Delete a rule (admin-only)")
107
+ .requiredOption("--number <id>", "Phone number id")
108
+ .action(withErrorHandler(async function (ruleId, cmdOpts) {
109
+ const opts = getGlobalOpts(this);
110
+ const inkbox = createClient(opts);
111
+ await inkbox.phoneContactRules.delete(cmdOpts.number, ruleId);
112
+ console.log(`Deleted phone contact rule '${ruleId}' on ${cmdOpts.number}.`);
113
+ }));
114
+ }
4
115
  export function registerNumberCommands(program) {
5
116
  const number = program
6
117
  .command("number")
@@ -14,7 +125,7 @@ export function registerNumberCommands(program) {
14
125
  const numbers = await inkbox.phoneNumbers.list();
15
126
  output(numbers, {
16
127
  json: !!opts.json,
17
- columns: ["number", "id", "type", "status", "createdAt"],
128
+ columns: ["number", "id", "type", "status", "filterMode", "agentIdentityId", "createdAt"],
18
129
  });
19
130
  }));
20
131
  number
@@ -38,6 +149,8 @@ export function registerNumberCommands(program) {
38
149
  id: num.id,
39
150
  type: num.type,
40
151
  status: num.status,
152
+ filterMode: num.filterMode,
153
+ agentIdentityId: num.agentIdentityId,
41
154
  }, { json: !!opts.json });
42
155
  }));
43
156
  number
@@ -56,6 +169,8 @@ export function registerNumberCommands(program) {
56
169
  clientWebsocketUrl: num.clientWebsocketUrl ?? null,
57
170
  incomingCallWebhookUrl: num.incomingCallWebhookUrl ?? null,
58
171
  incomingTextWebhookUrl: num.incomingTextWebhookUrl ?? null,
172
+ filterMode: num.filterMode,
173
+ agentIdentityId: num.agentIdentityId,
59
174
  createdAt: num.createdAt,
60
175
  }, { json: !!opts.json });
61
176
  }));
@@ -66,6 +181,7 @@ export function registerNumberCommands(program) {
66
181
  .option("--client-websocket-url <url>", "Client WebSocket URL for audio bridging")
67
182
  .option("--incoming-call-webhook-url <url>", "Webhook URL for incoming calls")
68
183
  .option("--incoming-text-webhook-url <url>", "Webhook URL for incoming text messages")
184
+ .option("--filter-mode <mode>", "Contact-rule filter mode: whitelist or blacklist (admin-only)")
69
185
  .action(withErrorHandler(async function (id, cmdOpts) {
70
186
  const opts = getGlobalOpts(this);
71
187
  const inkbox = createClient(opts);
@@ -74,6 +190,9 @@ export function registerNumberCommands(program) {
74
190
  clientWebsocketUrl: cmdOpts.clientWebsocketUrl,
75
191
  incomingCallWebhookUrl: cmdOpts.incomingCallWebhookUrl,
76
192
  incomingTextWebhookUrl: cmdOpts.incomingTextWebhookUrl,
193
+ filterMode: cmdOpts.filterMode !== undefined
194
+ ? assertFilterMode(cmdOpts.filterMode)
195
+ : undefined,
77
196
  });
78
197
  output({
79
198
  number: num.number,
@@ -84,7 +203,10 @@ export function registerNumberCommands(program) {
84
203
  clientWebsocketUrl: num.clientWebsocketUrl ?? null,
85
204
  incomingCallWebhookUrl: num.incomingCallWebhookUrl ?? null,
86
205
  incomingTextWebhookUrl: num.incomingTextWebhookUrl ?? null,
206
+ filterMode: num.filterMode,
207
+ agentIdentityId: num.agentIdentityId,
87
208
  }, { json: !!opts.json });
209
+ renderFilterModeChangeNotice(num);
88
210
  }));
89
211
  number
90
212
  .command("release <id>")
@@ -95,5 +217,6 @@ export function registerNumberCommands(program) {
95
217
  await inkbox.phoneNumbers.release(id);
96
218
  console.log(`Released phone number '${id}'.`);
97
219
  }));
220
+ registerNumberRulesCommands(number);
98
221
  }
99
222
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/commands/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/commands/number.ts"],"names":[],"mappings":"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"}
@@ -18,15 +18,19 @@ export function registerSignupCommands(program) {
18
18
  .command("create")
19
19
  .description("Register a new agent (no API key required)")
20
20
  .requiredOption("--human-email <email>", "Email of the human who should approve this agent")
21
- .requiredOption("--display-name <name>", "Human-readable name for the agent")
22
21
  .requiredOption("--note-to-human <note>", "Message from the agent to the human, included in the verification email")
22
+ .option("--display-name <name>", "Human-readable name for the agent")
23
+ .option("--agent-handle <handle>", "Requested handle for the agent identity")
24
+ .option("--email-local-part <local>", "Requested mailbox local part before the sending domain")
23
25
  .action(withErrorHandler(async function () {
24
26
  const globalOpts = getGlobalOpts(this);
25
27
  const cmdOpts = this.opts();
26
28
  const result = await Inkbox.signup({
27
29
  humanEmail: cmdOpts.humanEmail,
28
- displayName: cmdOpts.displayName,
29
30
  noteToHuman: cmdOpts.noteToHuman,
31
+ displayName: cmdOpts.displayName,
32
+ agentHandle: cmdOpts.agentHandle,
33
+ emailLocalPart: cmdOpts.emailLocalPart,
30
34
  }, { baseUrl: globalOpts.baseUrl });
31
35
  if (globalOpts.json) {
32
36
  output(result, { json: true });
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/commands/signup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/commands/signup.ts"],"names":[],"mappings":"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"}
package/dist/errors.js CHANGED
@@ -1,12 +1,21 @@
1
- import { InkboxAPIError, InkboxError, InkboxVaultKeyError } from "@inkbox/sdk";
1
+ import { DuplicateContactRuleError, InkboxAPIError, InkboxError, InkboxVaultKeyError, RedundantContactAccessGrantError, } from "@inkbox/sdk";
2
+ function renderDetail(detail) {
3
+ return typeof detail === "string" ? detail : JSON.stringify(detail);
4
+ }
2
5
  export function withErrorHandler(fn) {
3
6
  return async function (...args) {
4
7
  try {
5
8
  await fn.call(this, ...args);
6
9
  }
7
10
  catch (err) {
8
- if (err instanceof InkboxAPIError) {
9
- console.error(`Error: HTTP ${err.statusCode}: ${err.detail}`);
11
+ if (err instanceof DuplicateContactRuleError) {
12
+ console.error(`Error: HTTP ${err.statusCode}: duplicate rule (existing_rule_id=${err.existingRuleId})`);
13
+ }
14
+ else if (err instanceof RedundantContactAccessGrantError) {
15
+ console.error(`Error: HTTP ${err.statusCode}: redundant grant — ${err.detailMessage}`);
16
+ }
17
+ else if (err instanceof InkboxAPIError) {
18
+ console.error(`Error: HTTP ${err.statusCode}: ${renderDetail(err.detail)}`);
10
19
  if (err.statusCode === 401) {
11
20
  console.error("Hint: Check your API key.");
12
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,UAAU,gBAAgB,CAC9B,EAAiC;IAEjC,OAAO,KAAK,WAA0B,GAAG,IAAO;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9D,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CACX,iDAAiD,CAClD,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
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,GACjC,MAAM,aAAa,CAAC;AAErB,SAAS,YAAY,CAAC,MAAwC;IAC5D,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAiC;IAEjC,OAAO,KAAK,WAA0B,GAAG,IAAO;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;gBAC7C,OAAO,CAAC,KAAK,CACX,eAAe,GAAG,CAAC,UAAU,sCAAsC,GAAG,CAAC,cAAc,GAAG,CACzF,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,YAAY,gCAAgC,EAAE,CAAC;gBAC3D,OAAO,CAAC,KAAK,CACX,eAAe,GAAG,CAAC,UAAU,uBAAuB,GAAG,CAAC,aAAa,EAAE,CACxE,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,UAAU,KAAK,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5E,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CACX,iDAAiD,CAClD,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -11,6 +11,8 @@ import { registerMailboxCommands } from "./commands/mailbox.js";
11
11
  import { registerNumberCommands } from "./commands/number.js";
12
12
  import { registerSigningKeyCommands } from "./commands/signing-key.js";
13
13
  import { registerWebhookCommands } from "./commands/webhook.js";
14
+ import { registerContactsCommands } from "./commands/contacts.js";
15
+ import { registerNotesCommands } from "./commands/notes.js";
14
16
  const program = new Command()
15
17
  .name("inkbox")
16
18
  .description("CLI for the Inkbox API — email, phone, identities, and vault for AI agents")
@@ -30,5 +32,7 @@ registerMailboxCommands(program);
30
32
  registerNumberCommands(program);
31
33
  registerSigningKeyCommands(program);
32
34
  registerWebhookCommands(program);
35
+ registerContactsCommands(program);
36
+ registerNotesCommands(program);
33
37
  program.parse();
34
38
  //# 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,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,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;KACzF,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACnD,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,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,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,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,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;KACzF,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACnD,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,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkbox/cli",
3
- "version": "0.2.9",
3
+ "version": "0.2.11",
4
4
  "description": "CLI for the Inkbox API",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,7 +17,7 @@
17
17
  "prepublishOnly": "npm run build"
18
18
  },
19
19
  "dependencies": {
20
- "@inkbox/sdk": "^0.2.9",
20
+ "@inkbox/sdk": "^0.2.11",
21
21
  "commander": "^13.0.0"
22
22
  },
23
23
  "devDependencies": {