@epilot/cli 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +18 -4
  2. package/dist/{access-token-F2VH6TNQ.js → access-token-56RMQQAV.js} +3 -3
  3. package/dist/{address-YBOAFFFH.js → address-ILFNEEKQ.js} +3 -3
  4. package/dist/{address-suggestions-ITPRYJSF.js → address-suggestions-HBXNOBTY.js} +3 -3
  5. package/dist/{ai-agents-EBWNYR5R.js → ai-agents-3GVB2MHH.js} +3 -3
  6. package/dist/{app-WOAQAMSE.js → app-PMVGDA44.js} +3 -3
  7. package/dist/{audit-logs-OAUUPKTJ.js → audit-logs-SAD6TZ6T.js} +3 -3
  8. package/dist/{auth-NEBRZ66K.js → auth-LMXCPY77.js} +3 -3
  9. package/dist/{auth-login-QQBH7BVA.js → auth-login-J2R6SME7.js} +78 -24
  10. package/dist/{auth-token-W6GXKHXB.js → auth-token-VSNRXUBI.js} +1 -1
  11. package/dist/{automation-52ONEM6D.js → automation-VF6AL6TZ.js} +3 -3
  12. package/dist/{billing-2RED3OVH.js → billing-LW6XV26L.js} +3 -3
  13. package/dist/bin/epilot.js +55 -52
  14. package/dist/{blueprint-manifest-4VTVMR42.js → blueprint-manifest-GVONSIWC.js} +3 -3
  15. package/dist/{chunk-4VITQVW2.js → chunk-3FZ36LAB.js} +1 -1
  16. package/dist/{chunk-TKZLQD2B.js → chunk-6RBLA5YE.js} +3 -1
  17. package/dist/{chunk-5CTRM3JQ.js → chunk-SACM5JJP.js} +4 -4
  18. package/dist/{completion-XN3BD2LS.js → completion-YVPB2HSP.js} +74 -3
  19. package/dist/{consent-25X3PFNT.js → consent-L7PPM2RS.js} +3 -3
  20. package/dist/{customer-portal-T6VNRPQY.js → customer-portal-FKEQLBZT.js} +3 -3
  21. package/dist/{dashboard-MBTUKEVN.js → dashboard-N7ZV5LV7.js} +3 -3
  22. package/dist/{data-management-ZHPS67MI.js → data-management-B2HKXR7L.js} +3 -3
  23. package/dist/{deduplication-L2UABHUX.js → deduplication-RY2NOUVL.js} +3 -3
  24. package/dist/{design-ELKIZCND.js → design-KXZPNB7R.js} +3 -3
  25. package/dist/{document-VF2C5OPK.js → document-OMWQI4SG.js} +3 -3
  26. package/dist/{email-settings-TM6TIDZQ.js → email-settings-IA36PUXF.js} +3 -3
  27. package/dist/{email-template-S7NLUNON.js → email-template-V56KH5HB.js} +3 -3
  28. package/dist/{entity-5AAD2R3S.js → entity-3AYPUKDS.js} +3 -3
  29. package/dist/{entity-mapping-UOFXQLQ2.js → entity-mapping-LQW3SXIQ.js} +3 -3
  30. package/dist/{environments-STU24LWT.js → environments-W36TPCFO.js} +3 -3
  31. package/dist/{erp-integration-DMPYQNVW.js → erp-integration-3HQ7E5NA.js} +3 -3
  32. package/dist/{event-catalog-HGSD3RZW.js → event-catalog-3L3622DH.js} +3 -3
  33. package/dist/{file-G355J7IL.js → file-OKYWWEU2.js} +3 -3
  34. package/dist/{iban-FIL4TCSN.js → iban-JASOQGKM.js} +3 -3
  35. package/dist/{interactive-RWCSFGXL.js → interactive-5J6X74Q7.js} +2 -2
  36. package/dist/{journey-4IZDKDY7.js → journey-ITMLYX23.js} +3 -3
  37. package/dist/{kanban-DNIP4AAI.js → kanban-JDRCIYF6.js} +3 -3
  38. package/dist/{message-W4TZ32YH.js → message-NI45JYMQ.js} +3 -3
  39. package/dist/{metering-GKGJZTDF.js → metering-J6L5IPRJ.js} +3 -3
  40. package/dist/{notes-AS7BD3B6.js → notes-WSEYYM2I.js} +3 -3
  41. package/dist/{notification-N4ACDEK7.js → notification-GOGQMIRR.js} +3 -3
  42. package/dist/{organization-IYNBC4SB.js → organization-IFUJHPGJ.js} +3 -3
  43. package/dist/{partner-directory-DZX32S4J.js → partner-directory-O5HSDE2K.js} +3 -3
  44. package/dist/{permissions-Z7KVPSVL.js → permissions-7MMSNXB5.js} +3 -3
  45. package/dist/{pricing-OLSQRQZN.js → pricing-Z7HT4ROJ.js} +3 -3
  46. package/dist/{pricing-tier-IP274TML.js → pricing-tier-MMWT57MJ.js} +3 -3
  47. package/dist/{profile-PPVSNNBG.js → profile-MZ3VK7PO.js} +1 -1
  48. package/dist/{purpose-YCIEYFCH.js → purpose-BGXEOLJ7.js} +3 -3
  49. package/dist/{sandbox-AKFR5LEQ.js → sandbox-PQW5425Q.js} +3 -3
  50. package/dist/{submission-XONDJGXI.js → submission-5OFXHA3T.js} +3 -3
  51. package/dist/{targeting-QWHVJCWI.js → targeting-ESL32NRT.js} +3 -3
  52. package/dist/{template-variables-Q3J3IPSF.js → template-variables-DHSWLYWH.js} +3 -3
  53. package/dist/upgrade-GNXLL2NI.js +124 -0
  54. package/dist/{user-QNPACYI3.js → user-HCHAYBZU.js} +3 -3
  55. package/dist/{validation-rules-XT3SRBJ3.js → validation-rules-CQRPRNDS.js} +3 -3
  56. package/dist/{webhooks-RH5VYEY6.js → webhooks-OOLV3K4A.js} +3 -3
  57. package/dist/{workflow-BKSEFDUM.js → workflow-GHNKO7IJ.js} +3 -3
  58. package/dist/{workflow-definition-DGEBEIGG.js → workflow-definition-XPEHPQVQ.js} +3 -3
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -16,7 +16,7 @@ npm install -g @epilot/cli # scoped package (same thing)
16
16
 
17
17
  <!-- usage-help -->
18
18
  ```
19
- epilot v0.1.3 — CLI for epilot APIs
19
+ epilot v0.1.4 — CLI for epilot APIs
20
20
 
21
21
  USAGE
22
22
  epilot <api> <operationId> [params...] [flags]
@@ -252,7 +252,23 @@ When running in a TTY without required arguments, the CLI prompts interactively:
252
252
 
253
253
  Disable with `--no-interactive` for CI/scripts.
254
254
 
255
- ## Shell Completion
255
+ ## Shell Completions
256
+
257
+ Tab completion for API names, operation IDs, and flags.
258
+
259
+ ```bash
260
+ # Auto-install for your current shell
261
+ epilot completion --install
262
+
263
+ # Or install for a specific shell
264
+ epilot completion --install bash
265
+ epilot completion --install zsh
266
+ epilot completion --install fish
267
+ ```
268
+
269
+ This adds the completion script to your shell config (`~/.bashrc`, `~/.zshrc`, or `~/.config/fish/completions/epilot.fish`). Restart your shell or source the config file to activate.
270
+
271
+ You can also set up completions manually:
256
272
 
257
273
  ```bash
258
274
  # Bash — add to ~/.bashrc
@@ -265,8 +281,6 @@ eval "$(epilot completion zsh)"
265
281
  epilot completion fish > ~/.config/fish/completions/epilot.fish
266
282
  ```
267
283
 
268
- Provides tab completion for API names, operation IDs, and flags.
269
-
270
284
  ## API Reference
271
285
 
272
286
  Full documentation with sample calls and responses for all APIs:
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/access-token.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/address.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/address-suggestions.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/ai-agents.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/app.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/audit-logs.ts
11
11
  import { defineCommand } from "citty";
@@ -11,7 +11,7 @@ import {
11
11
  RED,
12
12
  RESET,
13
13
  YELLOW
14
- } from "./chunk-TKZLQD2B.js";
14
+ } from "./chunk-6RBLA5YE.js";
15
15
 
16
16
  // src/commands/auth.ts
17
17
  import { defineCommand } from "citty";
@@ -21,8 +21,8 @@ var auth_default = defineCommand({
21
21
  description: "Manage authentication"
22
22
  },
23
23
  subCommands: {
24
- login: () => import("./auth-login-QQBH7BVA.js").then((m) => m.default),
25
- token: () => import("./auth-token-W6GXKHXB.js").then((m) => m.default),
24
+ login: () => import("./auth-login-J2R6SME7.js").then((m) => m.default),
25
+ token: () => import("./auth-token-VSNRXUBI.js").then((m) => m.default),
26
26
  logout: defineCommand({
27
27
  meta: { name: "logout", description: "Remove stored credentials" },
28
28
  run: () => {
@@ -5,14 +5,17 @@ import {
5
5
  import "./chunk-PDMWUCWD.js";
6
6
  import {
7
7
  BOLD,
8
+ CYAN,
8
9
  DIM,
9
10
  GREEN,
10
11
  RED,
11
- RESET
12
- } from "./chunk-TKZLQD2B.js";
12
+ RESET,
13
+ YELLOW
14
+ } from "./chunk-6RBLA5YE.js";
13
15
 
14
16
  // src/commands/auth-login.ts
15
17
  import { defineCommand } from "citty";
18
+ import { randomBytes } from "crypto";
16
19
  import { createServer } from "http";
17
20
  var auth_login_default = defineCommand({
18
21
  meta: { name: "login", description: "Authenticate with epilot" },
@@ -29,12 +32,14 @@ var auth_login_default = defineCommand({
29
32
  `);
30
33
  return;
31
34
  }
32
- if (profileName) {
33
- process.stdout.write(`${BOLD}Opening browser for epilot login (profile: ${profileName})...${RESET}
34
- `);
35
- } else {
36
- process.stdout.write(`${BOLD}Opening browser for epilot login...${RESET}
35
+ if (!process.stdin.isTTY) {
36
+ process.stderr.write(`${RED}Browser login requires an interactive terminal.${RESET}
37
37
  `);
38
+ process.stderr.write(
39
+ `Use ${BOLD}epilot auth login --token <token>${RESET} or ${BOLD}epilot auth token${RESET} instead.
40
+ `
41
+ );
42
+ process.exit(1);
38
43
  }
39
44
  const token = await browserLogin(profileName);
40
45
  if (token) {
@@ -47,10 +52,36 @@ var auth_login_default = defineCommand({
47
52
  }
48
53
  }
49
54
  });
50
- var browserLogin = (profileName) => {
51
- let settled = false;
52
- let timeoutId;
55
+ var browserLogin = async (profileName) => {
56
+ const state = randomBytes(32).toString("hex");
57
+ const verificationCode = randomBytes(3).toString("hex").toUpperCase();
58
+ const suffix = profileName ? ` ${DIM}(profile: ${profileName})${RESET}` : "";
59
+ process.stdout.write(`
60
+ ${BOLD}epilot CLI Login${RESET}${suffix}
61
+
62
+ `);
63
+ process.stdout.write(`This will open your browser to authenticate with epilot.
64
+ `);
65
+ process.stdout.write(`
66
+ `);
67
+ process.stdout.write(` ${YELLOW}Verification code: ${BOLD}${verificationCode}${RESET}
68
+ `);
69
+ process.stdout.write(`
70
+ `);
71
+ process.stdout.write(`${DIM}Verify this code matches what is shown in your browser after login.${RESET}
72
+ `);
73
+ process.stdout.write(`${DIM}This ensures you are logging into the correct CLI session.${RESET}
74
+ `);
75
+ process.stdout.write(`
76
+ `);
77
+ const { confirm } = await import("@inquirer/prompts");
78
+ const proceed = await confirm({ message: "Open browser to log in?", default: true });
79
+ if (!proceed) {
80
+ return null;
81
+ }
53
82
  return new Promise((resolve) => {
83
+ let settled = false;
84
+ let timeoutId;
54
85
  const done = (token) => {
55
86
  if (settled) return;
56
87
  settled = true;
@@ -66,7 +97,7 @@ var browserLogin = (profileName) => {
66
97
  }
67
98
  const port = address.port;
68
99
  const callbackUrl = `http://localhost:${port}/callback`;
69
- const loginUrl = `https://portal.epilot.cloud/login?cli_callback=${encodeURIComponent(callbackUrl)}`;
100
+ const loginUrl = `https://portal.epilot.cloud/login?cli_callback=${encodeURIComponent(callbackUrl)}&state=${state}&code=${verificationCode}`;
70
101
  process.stdout.write(`
71
102
  ${DIM}Login URL: ${loginUrl}${RESET}
72
103
 
@@ -74,7 +105,8 @@ ${DIM}Login URL: ${loginUrl}${RESET}
74
105
  try {
75
106
  const open = (await import("open")).default;
76
107
  await open(loginUrl);
77
- process.stdout.write("Browser opened. Waiting for authentication...\n");
108
+ process.stdout.write(`${CYAN}Browser opened.${RESET} Waiting for authentication...
109
+ `);
78
110
  } catch {
79
111
  process.stdout.write(`Could not open browser. Please visit this URL manually:
80
112
 
@@ -82,30 +114,50 @@ ${DIM}Login URL: ${loginUrl}${RESET}
82
114
 
83
115
  `);
84
116
  }
85
- if (process.stdin.isTTY) {
86
- process.stdout.write(`
117
+ process.stdout.write(`
87
118
  ${DIM}Or paste a token manually:${RESET}
88
119
  `);
89
- try {
90
- const { password } = await import("@inquirer/prompts");
91
- const token = await password({ message: "Token:" });
92
- if (token?.trim()) {
93
- saveCredentials({ token: token.trim() }, profileName);
94
- done(token.trim());
95
- }
96
- } catch {
120
+ try {
121
+ const { password } = await import("@inquirer/prompts");
122
+ const token = await password({ message: "Token:" });
123
+ if (token?.trim()) {
124
+ saveCredentials({ token: token.trim() }, profileName);
125
+ done(token.trim());
97
126
  }
127
+ } catch {
98
128
  }
99
- timeoutId = setTimeout(() => done(null), 5 * 60 * 1e3);
129
+ timeoutId = setTimeout(
130
+ () => {
131
+ process.stderr.write(`
132
+ ${RED}Login timed out after 5 minutes.${RESET}
133
+ `);
134
+ done(null);
135
+ },
136
+ 5 * 60 * 1e3
137
+ );
100
138
  timeoutId.unref();
101
139
  };
102
140
  const server = createServer((req, res) => {
103
141
  const url = new URL(req.url, "http://localhost");
104
142
  if (url.pathname === "/callback") {
105
143
  const token = url.searchParams.get("token");
144
+ const returnedState = url.searchParams.get("state");
106
145
  const orgId = url.searchParams.get("org_id");
107
146
  const userId = url.searchParams.get("user_id");
108
147
  const name = url.searchParams.get("name");
148
+ if (returnedState && returnedState !== state) {
149
+ res.writeHead(403, { "Content-Type": "text/html" });
150
+ res.end(
151
+ "<html><body><h1>Login failed</h1><p>Invalid state parameter. This request may not have originated from your CLI session.</p></body></html>"
152
+ );
153
+ return;
154
+ }
155
+ if (!returnedState) {
156
+ process.stderr.write(
157
+ `${YELLOW}Warning: Login portal did not return state parameter. CSRF protection is not active.${RESET}
158
+ `
159
+ );
160
+ }
109
161
  if (token) {
110
162
  saveCredentials(
111
163
  {
@@ -117,7 +169,9 @@ ${DIM}Or paste a token manually:${RESET}
117
169
  profileName
118
170
  );
119
171
  res.writeHead(200, { "Content-Type": "text/html" });
120
- res.end("<html><body><h1>Login successful!</h1><p>You can close this tab.</p></body></html>");
172
+ res.end(
173
+ `<html><body><h1>Login successful!</h1><p>Verification code: <strong>${verificationCode}</strong></p><p>You can close this tab.</p></body></html>`
174
+ );
121
175
  done(token);
122
176
  } else {
123
177
  res.writeHead(400, { "Content-Type": "text/html" });
@@ -8,7 +8,7 @@ import {
8
8
  GREEN,
9
9
  RED,
10
10
  RESET
11
- } from "./chunk-TKZLQD2B.js";
11
+ } from "./chunk-6RBLA5YE.js";
12
12
 
13
13
  // src/commands/auth-token.ts
14
14
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/automation.ts
11
11
  import { defineCommand } from "citty";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/billing.ts
11
11
  import { defineCommand } from "citty";
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
11
11
  var main = defineCommand({
12
12
  meta: {
13
13
  name: "epilot",
14
- version: "0.1.3",
14
+ version: "0.1.4",
15
15
  description: "CLI for epilot APIs"
16
16
  },
17
17
  args: {
@@ -24,64 +24,65 @@ var main = defineCommand({
24
24
  jsonata: { type: "string", description: "JSONata expression" }
25
25
  },
26
26
  subCommands: {
27
- auth: () => import("../auth-NEBRZ66K.js").then((m) => m.default),
28
- profile: () => import("../profile-PPVSNNBG.js").then((m) => m.default),
29
- completion: () => import("../completion-XN3BD2LS.js").then((m) => m.default),
30
- "access-token": () => import("../access-token-F2VH6TNQ.js").then((m) => m.default),
31
- address: () => import("../address-YBOAFFFH.js").then((m) => m.default),
32
- "address-suggestions": () => import("../address-suggestions-ITPRYJSF.js").then((m) => m.default),
33
- "ai-agents": () => import("../ai-agents-EBWNYR5R.js").then((m) => m.default),
34
- app: () => import("../app-WOAQAMSE.js").then((m) => m.default),
35
- "audit-logs": () => import("../audit-logs-OAUUPKTJ.js").then((m) => m.default),
36
- automation: () => import("../automation-52ONEM6D.js").then((m) => m.default),
37
- billing: () => import("../billing-2RED3OVH.js").then((m) => m.default),
38
- "blueprint-manifest": () => import("../blueprint-manifest-4VTVMR42.js").then((m) => m.default),
39
- consent: () => import("../consent-25X3PFNT.js").then((m) => m.default),
40
- "customer-portal": () => import("../customer-portal-T6VNRPQY.js").then((m) => m.default),
41
- dashboard: () => import("../dashboard-MBTUKEVN.js").then((m) => m.default),
42
- "data-management": () => import("../data-management-ZHPS67MI.js").then((m) => m.default),
43
- deduplication: () => import("../deduplication-L2UABHUX.js").then((m) => m.default),
44
- design: () => import("../design-ELKIZCND.js").then((m) => m.default),
45
- document: () => import("../document-VF2C5OPK.js").then((m) => m.default),
46
- "email-settings": () => import("../email-settings-TM6TIDZQ.js").then((m) => m.default),
47
- "email-template": () => import("../email-template-S7NLUNON.js").then((m) => m.default),
48
- entity: () => import("../entity-5AAD2R3S.js").then((m) => m.default),
49
- "entity-mapping": () => import("../entity-mapping-UOFXQLQ2.js").then((m) => m.default),
50
- environments: () => import("../environments-STU24LWT.js").then((m) => m.default),
51
- "erp-integration": () => import("../erp-integration-DMPYQNVW.js").then((m) => m.default),
52
- "event-catalog": () => import("../event-catalog-HGSD3RZW.js").then((m) => m.default),
53
- file: () => import("../file-G355J7IL.js").then((m) => m.default),
54
- iban: () => import("../iban-FIL4TCSN.js").then((m) => m.default),
55
- journey: () => import("../journey-4IZDKDY7.js").then((m) => m.default),
56
- kanban: () => import("../kanban-DNIP4AAI.js").then((m) => m.default),
57
- message: () => import("../message-W4TZ32YH.js").then((m) => m.default),
58
- metering: () => import("../metering-GKGJZTDF.js").then((m) => m.default),
59
- notes: () => import("../notes-AS7BD3B6.js").then((m) => m.default),
60
- notification: () => import("../notification-N4ACDEK7.js").then((m) => m.default),
61
- organization: () => import("../organization-IYNBC4SB.js").then((m) => m.default),
62
- "partner-directory": () => import("../partner-directory-DZX32S4J.js").then((m) => m.default),
63
- permissions: () => import("../permissions-Z7KVPSVL.js").then((m) => m.default),
64
- pricing: () => import("../pricing-OLSQRQZN.js").then((m) => m.default),
65
- "pricing-tier": () => import("../pricing-tier-IP274TML.js").then((m) => m.default),
66
- purpose: () => import("../purpose-YCIEYFCH.js").then((m) => m.default),
67
- sandbox: () => import("../sandbox-AKFR5LEQ.js").then((m) => m.default),
68
- submission: () => import("../submission-XONDJGXI.js").then((m) => m.default),
69
- targeting: () => import("../targeting-QWHVJCWI.js").then((m) => m.default),
70
- "template-variables": () => import("../template-variables-Q3J3IPSF.js").then((m) => m.default),
71
- user: () => import("../user-QNPACYI3.js").then((m) => m.default),
72
- "validation-rules": () => import("../validation-rules-XT3SRBJ3.js").then((m) => m.default),
73
- webhooks: () => import("../webhooks-RH5VYEY6.js").then((m) => m.default),
74
- workflow: () => import("../workflow-BKSEFDUM.js").then((m) => m.default),
75
- "workflow-definition": () => import("../workflow-definition-DGEBEIGG.js").then((m) => m.default)
27
+ auth: () => import("../auth-LMXCPY77.js").then((m) => m.default),
28
+ profile: () => import("../profile-MZ3VK7PO.js").then((m) => m.default),
29
+ completion: () => import("../completion-YVPB2HSP.js").then((m) => m.default),
30
+ upgrade: () => import("../upgrade-GNXLL2NI.js").then((m) => m.default),
31
+ "access-token": () => import("../access-token-56RMQQAV.js").then((m) => m.default),
32
+ address: () => import("../address-ILFNEEKQ.js").then((m) => m.default),
33
+ "address-suggestions": () => import("../address-suggestions-HBXNOBTY.js").then((m) => m.default),
34
+ "ai-agents": () => import("../ai-agents-3GVB2MHH.js").then((m) => m.default),
35
+ app: () => import("../app-PMVGDA44.js").then((m) => m.default),
36
+ "audit-logs": () => import("../audit-logs-SAD6TZ6T.js").then((m) => m.default),
37
+ automation: () => import("../automation-VF6AL6TZ.js").then((m) => m.default),
38
+ billing: () => import("../billing-LW6XV26L.js").then((m) => m.default),
39
+ "blueprint-manifest": () => import("../blueprint-manifest-GVONSIWC.js").then((m) => m.default),
40
+ consent: () => import("../consent-L7PPM2RS.js").then((m) => m.default),
41
+ "customer-portal": () => import("../customer-portal-FKEQLBZT.js").then((m) => m.default),
42
+ dashboard: () => import("../dashboard-N7ZV5LV7.js").then((m) => m.default),
43
+ "data-management": () => import("../data-management-B2HKXR7L.js").then((m) => m.default),
44
+ deduplication: () => import("../deduplication-RY2NOUVL.js").then((m) => m.default),
45
+ design: () => import("../design-KXZPNB7R.js").then((m) => m.default),
46
+ document: () => import("../document-OMWQI4SG.js").then((m) => m.default),
47
+ "email-settings": () => import("../email-settings-IA36PUXF.js").then((m) => m.default),
48
+ "email-template": () => import("../email-template-V56KH5HB.js").then((m) => m.default),
49
+ entity: () => import("../entity-3AYPUKDS.js").then((m) => m.default),
50
+ "entity-mapping": () => import("../entity-mapping-LQW3SXIQ.js").then((m) => m.default),
51
+ environments: () => import("../environments-W36TPCFO.js").then((m) => m.default),
52
+ "erp-integration": () => import("../erp-integration-3HQ7E5NA.js").then((m) => m.default),
53
+ "event-catalog": () => import("../event-catalog-3L3622DH.js").then((m) => m.default),
54
+ file: () => import("../file-OKYWWEU2.js").then((m) => m.default),
55
+ iban: () => import("../iban-JASOQGKM.js").then((m) => m.default),
56
+ journey: () => import("../journey-ITMLYX23.js").then((m) => m.default),
57
+ kanban: () => import("../kanban-JDRCIYF6.js").then((m) => m.default),
58
+ message: () => import("../message-NI45JYMQ.js").then((m) => m.default),
59
+ metering: () => import("../metering-J6L5IPRJ.js").then((m) => m.default),
60
+ notes: () => import("../notes-WSEYYM2I.js").then((m) => m.default),
61
+ notification: () => import("../notification-GOGQMIRR.js").then((m) => m.default),
62
+ organization: () => import("../organization-IFUJHPGJ.js").then((m) => m.default),
63
+ "partner-directory": () => import("../partner-directory-O5HSDE2K.js").then((m) => m.default),
64
+ permissions: () => import("../permissions-7MMSNXB5.js").then((m) => m.default),
65
+ pricing: () => import("../pricing-Z7HT4ROJ.js").then((m) => m.default),
66
+ "pricing-tier": () => import("../pricing-tier-MMWT57MJ.js").then((m) => m.default),
67
+ purpose: () => import("../purpose-BGXEOLJ7.js").then((m) => m.default),
68
+ sandbox: () => import("../sandbox-PQW5425Q.js").then((m) => m.default),
69
+ submission: () => import("../submission-5OFXHA3T.js").then((m) => m.default),
70
+ targeting: () => import("../targeting-ESL32NRT.js").then((m) => m.default),
71
+ "template-variables": () => import("../template-variables-DHSWLYWH.js").then((m) => m.default),
72
+ user: () => import("../user-HCHAYBZU.js").then((m) => m.default),
73
+ "validation-rules": () => import("../validation-rules-CQRPRNDS.js").then((m) => m.default),
74
+ webhooks: () => import("../webhooks-OOLV3K4A.js").then((m) => m.default),
75
+ workflow: () => import("../workflow-GHNKO7IJ.js").then((m) => m.default),
76
+ "workflow-definition": () => import("../workflow-definition-XPEHPQVQ.js").then((m) => m.default)
76
77
  }
77
78
  });
78
79
 
79
80
  // bin/epilot.ts
80
- var VERSION = true ? "0.1.3" : (await null).default.version;
81
+ var VERSION = true ? "0.1.4" : (await null).default.version;
81
82
  var args = process.argv.slice(2);
82
83
  var completionsIdx = args.indexOf("--_completions");
83
84
  if (completionsIdx >= 0) {
84
- const { handleCompletions } = await import("../completion-XN3BD2LS.js");
85
+ const { handleCompletions } = await import("../completion-YVPB2HSP.js");
85
86
  handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
86
87
  process.exit(0);
87
88
  }
@@ -179,6 +180,8 @@ function printRootHelp() {
179
180
  w(` ${CYAN}profile${R} Manage named profiles
180
181
  `);
181
182
  w(` ${CYAN}completion${R} Generate shell completion scripts
183
+ `);
184
+ w(` ${CYAN}upgrade${R} Upgrade to the latest version
182
185
  `);
183
186
  w(`
184
187
  `);
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-5CTRM3JQ.js";
4
+ } from "./chunk-SACM5JJP.js";
5
5
  import "./chunk-RSA7K5HB.js";
6
6
  import "./chunk-PDMWUCWD.js";
7
- import "./chunk-4VITQVW2.js";
8
- import "./chunk-TKZLQD2B.js";
7
+ import "./chunk-3FZ36LAB.js";
8
+ import "./chunk-6RBLA5YE.js";
9
9
 
10
10
  // src/commands/apis/blueprint-manifest.ts
11
11
  import { defineCommand } from "citty";
@@ -3,7 +3,7 @@ import {
3
3
  DIM,
4
4
  RESET,
5
5
  methodColor
6
- } from "./chunk-TKZLQD2B.js";
6
+ } from "./chunk-6RBLA5YE.js";
7
7
 
8
8
  // src/lib/interactive.ts
9
9
  var isInteractive = (flags) => {
@@ -57,6 +57,7 @@ var DIM = "\x1B[2m";
57
57
  var GREEN = "\x1B[32m";
58
58
  var RED = "\x1B[31m";
59
59
  var YELLOW = "\x1B[33m";
60
+ var CYAN = "\x1B[36m";
60
61
 
61
62
  export {
62
63
  isValidJson,
@@ -68,5 +69,6 @@ export {
68
69
  DIM,
69
70
  GREEN,
70
71
  RED,
71
- YELLOW
72
+ YELLOW,
73
+ CYAN
72
74
  };
@@ -10,7 +10,7 @@ import {
10
10
  pickOperation,
11
11
  printOperationsTable,
12
12
  promptParam
13
- } from "./chunk-4VITQVW2.js";
13
+ } from "./chunk-3FZ36LAB.js";
14
14
  import {
15
15
  BOLD,
16
16
  DIM,
@@ -22,7 +22,7 @@ import {
22
22
  methodColor,
23
23
  parseKeyValue,
24
24
  parseParamValue
25
- } from "./chunk-TKZLQD2B.js";
25
+ } from "./chunk-6RBLA5YE.js";
26
26
 
27
27
  // src/lib/call.ts
28
28
  import OpenAPIClientAxiosModule from "openapi-client-axios";
@@ -268,7 +268,7 @@ var formatResponse = async (response, options) => {
268
268
  }
269
269
  process.stderr.write("\n");
270
270
  }
271
- if (!json && process.stdout.isTTY && process.stderr.isTTY) {
271
+ if (!json && !include && process.stdout.isTTY && process.stderr.isTTY) {
272
272
  const statusColor = response.status >= 200 && response.status < 300 ? GREEN : response.status >= 400 ? RED : YELLOW;
273
273
  process.stderr.write(
274
274
  `${statusColor}${BOLD}${response.status}${RESET} ${statusColor}${response.statusText}${RESET}
@@ -615,7 +615,7 @@ Available operations:
615
615
  let token = resolveToken(args.token, args.profile);
616
616
  if (!token) {
617
617
  if (isInteractive({ interactive: args.interactive })) {
618
- const { promptToken } = await import("./interactive-RWCSFGXL.js");
618
+ const { promptToken } = await import("./interactive-5J6X74Q7.js");
619
619
  token = await promptToken();
620
620
  }
621
621
  if (!token) {