@inkbox/cli 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @inkbox/cli
2
2
 
3
- Command-line interface for the [Inkbox API](https://inkbox.ai/docs) — email, phone, identities, and encrypted vault for AI agents.
3
+ Command-line interface for the [Inkbox API](https://inkbox.ai/docs) — identities, email, phone, and encrypted vault for AI agents.
4
4
 
5
5
  ## Install
6
6
 
@@ -134,6 +134,34 @@ inkbox phone search-transcripts -i <handle> # Search transcripts
134
134
  --limit <n> # Max results (default: 50)
135
135
  ```
136
136
 
137
+ ### text
138
+
139
+ Text message (SMS/MMS) operations, scoped to an identity. Requires `-i <handle>`.
140
+
141
+ ```bash
142
+ inkbox text list -i <handle> # List text messages
143
+ --limit <n> # Max results (default: 50)
144
+ --offset <n> # Pagination offset (default: 0)
145
+ --unread-only # Show only unread messages
146
+
147
+ inkbox text get <text-id> -i <handle> # Get a single text message
148
+
149
+ inkbox text conversations -i <handle> # List conversation summaries
150
+ --limit <n> # Max results (default: 50)
151
+ --offset <n> # Pagination offset (default: 0)
152
+
153
+ inkbox text conversation <remote-number> -i <handle> # Get messages in a conversation
154
+ --limit <n> # Max results (default: 50)
155
+ --offset <n> # Pagination offset (default: 0)
156
+
157
+ inkbox text search -i <handle> # Search text messages
158
+ -q, --query <query> # Search query (required)
159
+ --limit <n> # Max results (default: 50)
160
+
161
+ inkbox text mark-read <text-id> -i <handle> # Mark a text as read
162
+ inkbox text mark-conversation-read <remote-number> -i <handle> # Mark conversation as read
163
+ ```
164
+
137
165
  ### vault
138
166
 
139
167
  Encrypted vault operations. `get`, `create`, and credential listing require a vault key.
@@ -23,6 +23,7 @@ export function registerNumberCommands(program) {
23
23
  .requiredOption("--handle <handle>", "Agent handle to provision for")
24
24
  .option("--type <type>", "Number type: toll_free or local", "toll_free")
25
25
  .option("--state <state>", "US state abbreviation (for local numbers)")
26
+ .option("--incoming-text-webhook-url <url>", "Webhook URL for incoming text messages")
26
27
  .action(withErrorHandler(async function (cmdOpts) {
27
28
  const opts = getGlobalOpts(this);
28
29
  const inkbox = createClient(opts);
@@ -30,6 +31,7 @@ export function registerNumberCommands(program) {
30
31
  agentHandle: cmdOpts.handle,
31
32
  type: cmdOpts.type,
32
33
  state: cmdOpts.state,
34
+ incomingTextWebhookUrl: cmdOpts.incomingTextWebhookUrl,
33
35
  });
34
36
  output({
35
37
  number: num.number,
@@ -53,6 +55,7 @@ export function registerNumberCommands(program) {
53
55
  incomingCallAction: num.incomingCallAction ?? null,
54
56
  clientWebsocketUrl: num.clientWebsocketUrl ?? null,
55
57
  incomingCallWebhookUrl: num.incomingCallWebhookUrl ?? null,
58
+ incomingTextWebhookUrl: num.incomingTextWebhookUrl ?? null,
56
59
  createdAt: num.createdAt,
57
60
  }, { json: !!opts.json });
58
61
  }));
@@ -62,6 +65,7 @@ export function registerNumberCommands(program) {
62
65
  .option("--incoming-call-action <action>", "Incoming call action: auto_accept, auto_reject, or webhook")
63
66
  .option("--client-websocket-url <url>", "Client WebSocket URL for audio bridging")
64
67
  .option("--incoming-call-webhook-url <url>", "Webhook URL for incoming calls")
68
+ .option("--incoming-text-webhook-url <url>", "Webhook URL for incoming text messages")
65
69
  .action(withErrorHandler(async function (id, cmdOpts) {
66
70
  const opts = getGlobalOpts(this);
67
71
  const inkbox = createClient(opts);
@@ -69,6 +73,7 @@ export function registerNumberCommands(program) {
69
73
  incomingCallAction: cmdOpts.incomingCallAction,
70
74
  clientWebsocketUrl: cmdOpts.clientWebsocketUrl,
71
75
  incomingCallWebhookUrl: cmdOpts.incomingCallWebhookUrl,
76
+ incomingTextWebhookUrl: cmdOpts.incomingTextWebhookUrl,
72
77
  });
73
78
  output({
74
79
  number: num.number,
@@ -78,6 +83,7 @@ export function registerNumberCommands(program) {
78
83
  incomingCallAction: num.incomingCallAction ?? null,
79
84
  clientWebsocketUrl: num.clientWebsocketUrl ?? null,
80
85
  incomingCallWebhookUrl: num.incomingCallWebhookUrl ?? null,
86
+ incomingTextWebhookUrl: num.incomingTextWebhookUrl ?? null,
81
87
  }, { json: !!opts.json });
82
88
  }));
83
89
  number
@@ -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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"}
@@ -0,0 +1,162 @@
1
+ import { createClient, getGlobalOpts } from "../client.js";
2
+ import { output } from "../output.js";
3
+ import { withErrorHandler } from "../errors.js";
4
+ export function registerTextCommands(program) {
5
+ const text = program
6
+ .command("text")
7
+ .description("Text message (SMS/MMS) operations (identity-scoped)");
8
+ text
9
+ .command("list")
10
+ .description("List text messages")
11
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
12
+ .option("--limit <n>", "Max results", "50")
13
+ .option("--offset <n>", "Pagination offset", "0")
14
+ .option("--unread-only", "Show only unread messages")
15
+ .action(withErrorHandler(async function (cmdOpts) {
16
+ const opts = getGlobalOpts(this);
17
+ const inkbox = createClient(opts);
18
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
19
+ const texts = await identity.listTexts({
20
+ limit: parseInt(cmdOpts.limit, 10),
21
+ offset: parseInt(cmdOpts.offset, 10),
22
+ isRead: cmdOpts.unreadOnly ? false : undefined,
23
+ });
24
+ output(texts, {
25
+ json: !!opts.json,
26
+ columns: [
27
+ "id",
28
+ "direction",
29
+ "remotePhoneNumber",
30
+ "type",
31
+ "text",
32
+ "isRead",
33
+ "createdAt",
34
+ ],
35
+ });
36
+ }));
37
+ text
38
+ .command("get <text-id>")
39
+ .description("Get a single text message")
40
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
41
+ .action(withErrorHandler(async function (textId, cmdOpts) {
42
+ const opts = getGlobalOpts(this);
43
+ const inkbox = createClient(opts);
44
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
45
+ const msg = await identity.getText(textId);
46
+ output({
47
+ id: msg.id,
48
+ direction: msg.direction,
49
+ local: msg.localPhoneNumber,
50
+ remote: msg.remotePhoneNumber,
51
+ type: msg.type,
52
+ text: msg.text,
53
+ isRead: msg.isRead,
54
+ createdAt: msg.createdAt,
55
+ media: msg.media,
56
+ }, { json: !!opts.json });
57
+ }));
58
+ text
59
+ .command("conversations")
60
+ .description("List conversation summaries")
61
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
62
+ .option("--limit <n>", "Max results", "50")
63
+ .option("--offset <n>", "Pagination offset", "0")
64
+ .action(withErrorHandler(async function (cmdOpts) {
65
+ const opts = getGlobalOpts(this);
66
+ const inkbox = createClient(opts);
67
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
68
+ const convos = await identity.listTextConversations({
69
+ limit: parseInt(cmdOpts.limit, 10),
70
+ offset: parseInt(cmdOpts.offset, 10),
71
+ });
72
+ output(convos, {
73
+ json: !!opts.json,
74
+ columns: [
75
+ "remotePhoneNumber",
76
+ "latestText",
77
+ "latestDirection",
78
+ "unreadCount",
79
+ "totalCount",
80
+ "latestMessageAt",
81
+ ],
82
+ });
83
+ }));
84
+ text
85
+ .command("conversation <remote-number>")
86
+ .description("Get messages in a conversation")
87
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
88
+ .option("--limit <n>", "Max results", "50")
89
+ .option("--offset <n>", "Pagination offset", "0")
90
+ .action(withErrorHandler(async function (remoteNumber, cmdOpts) {
91
+ const opts = getGlobalOpts(this);
92
+ const inkbox = createClient(opts);
93
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
94
+ const msgs = await identity.getTextConversation(remoteNumber, {
95
+ limit: parseInt(cmdOpts.limit, 10),
96
+ offset: parseInt(cmdOpts.offset, 10),
97
+ });
98
+ output(msgs, {
99
+ json: !!opts.json,
100
+ columns: [
101
+ "id",
102
+ "direction",
103
+ "remotePhoneNumber",
104
+ "text",
105
+ "type",
106
+ "createdAt",
107
+ ],
108
+ });
109
+ }));
110
+ text
111
+ .command("search")
112
+ .description("Full-text search across text messages")
113
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
114
+ .requiredOption("-q, --query <query>", "Search query")
115
+ .option("--limit <n>", "Max results", "50")
116
+ .action(withErrorHandler(async function (cmdOpts) {
117
+ const opts = getGlobalOpts(this);
118
+ const inkbox = createClient(opts);
119
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
120
+ if (!identity.phoneNumber) {
121
+ console.error(`Identity '${cmdOpts.identity}' has no phone number assigned.`);
122
+ process.exit(1);
123
+ }
124
+ const results = await inkbox.texts.search(identity.phoneNumber.id, {
125
+ q: cmdOpts.query,
126
+ limit: parseInt(cmdOpts.limit, 10),
127
+ });
128
+ output(results, {
129
+ json: !!opts.json,
130
+ columns: [
131
+ "id",
132
+ "direction",
133
+ "remotePhoneNumber",
134
+ "text",
135
+ "createdAt",
136
+ ],
137
+ });
138
+ }));
139
+ text
140
+ .command("mark-read <text-id>")
141
+ .description("Mark a text message as read")
142
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
143
+ .action(withErrorHandler(async function (textId, cmdOpts) {
144
+ const opts = getGlobalOpts(this);
145
+ const inkbox = createClient(opts);
146
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
147
+ await identity.markTextRead(textId);
148
+ console.log(`Marked text ${textId} as read.`);
149
+ }));
150
+ text
151
+ .command("mark-conversation-read <remote-number>")
152
+ .description("Mark all messages in a conversation as read")
153
+ .requiredOption("-i, --identity <handle>", "Agent identity handle")
154
+ .action(withErrorHandler(async function (remoteNumber, cmdOpts) {
155
+ const opts = getGlobalOpts(this);
156
+ const inkbox = createClient(opts);
157
+ const identity = await inkbox.getIdentity(cmdOpts.identity);
158
+ const result = await identity.markTextConversationRead(remoteNumber);
159
+ console.log(`Marked ${result.updatedCount} message(s) in conversation with ${remoteNumber} as read.`);
160
+ }));
161
+ }
162
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/commands/text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qDAAqD,CAAC,CAAC;IAEtE,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oBAAoB,CAAC;SACjC,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,CAAC;SAChD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,OAKC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC;YACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,EAAE;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE;gBACP,IAAI;gBACJ,WAAW;gBACX,mBAAmB;gBACnB,MAAM;gBACN,MAAM;gBACN,QAAQ;gBACR,WAAW;aACZ;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,2BAA2B,CAAC;SACxC,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,MAAc,EACd,OAA6B;QAE7B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CACJ;YACE,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,gBAAgB;YAC3B,MAAM,EAAE,GAAG,CAAC,iBAAiB;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,EACD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CACtB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,CAAC;SAChD,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,OAA4D;QAE5D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC;YAClD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE;gBACP,mBAAmB;gBACnB,YAAY;gBACZ,iBAAiB;gBACjB,aAAa;gBACb,YAAY;gBACZ,iBAAiB;aAClB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,8BAA8B,CAAC;SACvC,WAAW,CAAC,gCAAgC,CAAC;SAC7C,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,CAAC;SAChD,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,YAAoB,EACpB,OAA4D;QAE5D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE;YAC5D,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE;gBACP,IAAI;gBACJ,WAAW;gBACX,mBAAmB;gBACnB,MAAM;gBACN,MAAM;gBACN,WAAW;aACZ;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uCAAuC,CAAC;SACpD,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC;SACrD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,OAA2D;QAE3D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CACX,aAAa,OAAO,CAAC,QAAQ,iCAAiC,CAC/D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE;YACjE,CAAC,EAAE,OAAO,CAAC,KAAK;YAChB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,EAAE;YACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE;gBACP,IAAI;gBACJ,WAAW;gBACX,mBAAmB;gBACnB,MAAM;gBACN,WAAW;aACZ;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,6BAA6B,CAAC;SAC1C,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,MAAc,EACd,OAA6B;QAE7B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,wCAAwC,CAAC;SACjD,WAAW,CAAC,6CAA6C,CAAC;SAC1D,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAClE,MAAM,CACL,gBAAgB,CAAC,KAAK,WAEpB,YAAoB,EACpB,OAA6B;QAE7B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,CAAC,YAAY,oCAAoC,YAAY,WAAW,CACzF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { Command } from "commander";
3
3
  import { registerIdentityCommands } from "./commands/identity.js";
4
4
  import { registerEmailCommands } from "./commands/email.js";
5
5
  import { registerPhoneCommands } from "./commands/phone.js";
6
+ import { registerTextCommands } from "./commands/text.js";
6
7
  import { registerVaultCommands } from "./commands/vault.js";
7
8
  import { registerMailboxCommands } from "./commands/mailbox.js";
8
9
  import { registerNumberCommands } from "./commands/number.js";
@@ -19,6 +20,7 @@ const program = new Command()
19
20
  registerIdentityCommands(program);
20
21
  registerEmailCommands(program);
21
22
  registerPhoneCommands(program);
23
+ registerTextCommands(program);
22
24
  registerVaultCommands(program);
23
25
  registerMailboxCommands(program);
24
26
  registerNumberCommands(program);
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,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,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,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,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,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkbox/cli",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
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.1",
20
+ "@inkbox/sdk": "^0.2.2",
21
21
  "commander": "^13.0.0"
22
22
  },
23
23
  "devDependencies": {