@polpo-ai/cli 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import pc from "picocolors";
2
+ import * as clack from "@clack/prompts";
2
3
  import { createApiClient } from "./api.js";
3
- import { isTTY, promptMasked } from "./prompt.js";
4
+ import { isTTY } from "./prompt.js";
4
5
  import { requireAuth } from "../../util/auth.js";
5
6
  import { friendlyError } from "../../util/errors.js";
6
7
  const KNOWN_PROVIDERS = [
@@ -15,8 +16,7 @@ const KNOWN_PROVIDERS = [
15
16
  ];
16
17
  function warnUnknownProvider(provider) {
17
18
  if (!KNOWN_PROVIDERS.includes(provider.toLowerCase())) {
18
- console.error(pc.yellow(`Warning: "${provider}" isn't a recognised provider name.`));
19
- console.error(pc.dim(` Known: ${KNOWN_PROVIDERS.join(", ")}`));
19
+ clack.log.warn(`"${provider}" isn't a recognised provider name.\n${pc.dim(`Known: ${KNOWN_PROVIDERS.join(", ")}`)}`);
20
20
  }
21
21
  }
22
22
  export function registerByokCommand(program) {
@@ -30,6 +30,7 @@ export function registerByokCommand(program) {
30
30
  .option("--label <label>", "Optional label")
31
31
  .option("--project <project-id>", "Project ID (if not in credentials)")
32
32
  .action(async (provider, opts) => {
33
+ clack.intro(pc.bold("polpo byok set"));
33
34
  const creds = await requireAuth({
34
35
  context: "Managing BYOK keys requires an authenticated session.",
35
36
  });
@@ -37,31 +38,39 @@ export function registerByokCommand(program) {
37
38
  let key = opts.key;
38
39
  if (!key) {
39
40
  if (isTTY()) {
40
- key = await promptMasked(`API key for ${provider}: `);
41
- if (!key) {
42
- console.error(pc.red("API key is required."));
41
+ const result = await clack.password({
42
+ message: `API key for ${provider}`,
43
+ });
44
+ if (clack.isCancel(result) || !result) {
45
+ clack.outro(pc.red("API key is required."));
43
46
  process.exit(1);
44
47
  }
48
+ key = result;
45
49
  }
46
50
  else {
47
- console.error(pc.red("--key is required in non-interactive mode."));
51
+ clack.outro(pc.red("--key is required in non-interactive mode."));
48
52
  process.exit(1);
49
53
  }
50
54
  }
55
+ const s = clack.spinner();
56
+ s.start(`Setting BYOK key for "${provider}"...`);
51
57
  const client = createApiClient(creds);
52
58
  try {
53
59
  const res = await client.post("/v1/byok", { provider, key, label: opts.label });
54
60
  if (res.status >= 200 && res.status < 300) {
55
- console.log(pc.green(`✓ BYOK key set for "${provider}".`));
61
+ s.stop(`BYOK key set for "${provider}".`);
62
+ clack.outro(pc.green("Done"));
56
63
  }
57
64
  else {
58
65
  const data = res.data;
59
- console.error(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
66
+ s.stop(pc.red("Failed"));
67
+ clack.outro(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
60
68
  process.exit(1);
61
69
  }
62
70
  }
63
71
  catch (err) {
64
- console.error(pc.red(friendlyError(err.message)));
72
+ s.stop(pc.red("Failed"));
73
+ clack.outro(pc.red(friendlyError(err.message)));
65
74
  process.exit(1);
66
75
  }
67
76
  });
@@ -70,35 +79,41 @@ export function registerByokCommand(program) {
70
79
  .description("List BYOK keys")
71
80
  .option("--project <project-id>", "Project ID (if not in credentials)")
72
81
  .action(async () => {
82
+ clack.intro(pc.bold("polpo byok list"));
73
83
  const creds = await requireAuth({
74
84
  context: "Listing BYOK keys requires an authenticated session.",
75
85
  });
76
86
  const client = createApiClient(creds);
87
+ const s = clack.spinner();
88
+ s.start("Fetching BYOK keys...");
77
89
  try {
78
90
  const res = await client.get("/v1/byok");
79
91
  if (res.status >= 200 && res.status < 300) {
80
92
  const data = res.data;
81
93
  const keys = data?.data ?? [];
94
+ s.stop("Fetched BYOK keys.");
82
95
  if (keys.length === 0) {
83
- console.log(pc.dim("No BYOK keys configured."));
84
- console.log(pc.dim("Add one with ") + pc.bold("polpo byok set <provider>"));
96
+ clack.log.info(`No BYOK keys configured.\n${pc.dim("Add one with ")}${pc.bold("polpo byok set <provider>")}`);
85
97
  }
86
98
  else {
87
- console.log("BYOK keys:");
88
- for (const k of keys) {
99
+ const lines = keys.map((k) => {
89
100
  const label = k.label ? ` (${k.label})` : "";
90
- console.log(` ${k.provider}: ${k.maskedKey}${label}`);
91
- }
101
+ return ` ${k.provider}: ${k.maskedKey}${label}`;
102
+ });
103
+ clack.log.info(`BYOK keys:\n${lines.join("\n")}`);
92
104
  }
105
+ clack.outro(pc.green("Done"));
93
106
  }
94
107
  else {
95
108
  const data = res.data;
96
- console.error(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
109
+ s.stop(pc.red("Failed"));
110
+ clack.outro(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
97
111
  process.exit(1);
98
112
  }
99
113
  }
100
114
  catch (err) {
101
- console.error(pc.red(friendlyError(err.message)));
115
+ s.stop(pc.red("Failed"));
116
+ clack.outro(pc.red(friendlyError(err.message)));
102
117
  process.exit(1);
103
118
  }
104
119
  });
@@ -107,27 +122,34 @@ export function registerByokCommand(program) {
107
122
  .description("Remove a BYOK key")
108
123
  .option("--project <project-id>", "Project ID (if not in credentials)")
109
124
  .action(async (provider) => {
125
+ clack.intro(pc.bold("polpo byok remove"));
110
126
  const creds = await requireAuth({
111
127
  context: "Removing BYOK keys requires an authenticated session.",
112
128
  });
113
129
  const client = createApiClient(creds);
130
+ const s = clack.spinner();
131
+ s.start(`Removing BYOK key for "${provider}"...`);
114
132
  try {
115
133
  const res = await client.delete(`/v1/byok/${provider}`);
116
134
  if (res.status >= 200 && res.status < 300) {
117
- console.log(pc.green(`✓ BYOK key removed for "${provider}".`));
135
+ s.stop(`BYOK key removed for "${provider}".`);
136
+ clack.outro(pc.green("Done"));
118
137
  }
119
138
  else if (res.status === 404) {
120
- console.error(pc.yellow(`No BYOK key found for "${provider}".`));
139
+ s.stop(pc.yellow("Not found"));
140
+ clack.outro(pc.yellow(`No BYOK key found for "${provider}".`));
121
141
  process.exit(1);
122
142
  }
123
143
  else {
124
144
  const data = res.data;
125
- console.error(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
145
+ s.stop(pc.red("Failed"));
146
+ clack.outro(pc.red(friendlyError(data?.error ?? `HTTP ${res.status}`)));
126
147
  process.exit(1);
127
148
  }
128
149
  }
129
150
  catch (err) {
130
- console.error(pc.red(friendlyError(err.message)));
151
+ s.stop(pc.red("Failed"));
152
+ clack.outro(pc.red(friendlyError(err.message)));
131
153
  process.exit(1);
132
154
  }
133
155
  });
@@ -1 +1 @@
1
- {"version":3,"file":"byok.js","sourceRoot":"","sources":["../../../src/commands/cloud/byok.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"byok.js","sourceRoot":"","sources":["../../../src/commands/cloud/byok.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,eAAe,GAAG;IACtB,QAAQ;IACR,WAAW;IACX,KAAK;IACL,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,UAAU;IACV,QAAQ;CACT,CAAC;AAEF,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,IAAI,QAAQ,wCAAwC,EAAE,CAAC,GAAG,CAAC,UAAU,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC,CAAC;IAE5D,IAAI;SACD,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,wBAAwB,EAAE,oCAAoC,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,IAAI,EAAE,EAAE;QACvC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;YAC9B,OAAO,EAAE,uDAAuD;SACjE,CAAC,CAAC;QACH,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,GAAG,GAAuB,IAAI,CAAC,GAAG,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,KAAK,EAAE,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;oBAClC,OAAO,EAAE,eAAe,QAAQ,EAAE;iBACnC,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACtC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,yBAAyB,QAAQ,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEhF,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,qBAAqB,QAAQ,IAAI,CAAC,CAAC;gBAC1C,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAA0B,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,wBAAwB,EAAE,oCAAoC,CAAC;SACtE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;YAC9B,OAAO,EAAE,sDAAsD;SAChE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEzC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAiF,CAAC;gBACnG,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,6BAA6B,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAC9F,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7C,OAAO,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;oBACnD,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAA0B,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,wBAAwB,EAAE,oCAAoC,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;YAC9B,OAAO,EAAE,uDAAuD;SACjE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,0BAA0B,QAAQ,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;YAExD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,yBAAyB,QAAQ,IAAI,CAAC,CAAC;gBAC9C,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/B,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,0BAA0B,QAAQ,IAAI,CAAC,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAA0B,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}