@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.
- package/dist/commands/cloud/byok.js +44 -22
- package/dist/commands/cloud/byok.js.map +1 -1
- package/dist/commands/cloud/deploy.js +254 -134
- package/dist/commands/cloud/deploy.js.map +1 -1
- package/dist/commands/cloud/login.js +42 -20
- package/dist/commands/cloud/login.js.map +1 -1
- package/dist/commands/cloud/logout.js +8 -1
- package/dist/commands/cloud/logout.js.map +1 -1
- package/dist/commands/cloud/projects.js +24 -10
- package/dist/commands/cloud/projects.js.map +1 -1
- package/dist/commands/cloud/status.js +9 -8
- package/dist/commands/cloud/status.js.map +1 -1
- package/dist/commands/create.js +69 -15
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/link.js +167 -9
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/orgs.js +12 -6
- package/dist/commands/orgs.js.map +1 -1
- package/dist/commands/update.js +24 -17
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/whoami.js +18 -11
- package/dist/commands/whoami.js.map +1 -1
- package/dist/util/conflicts.js +90 -0
- package/dist/util/conflicts.js.map +1 -0
- package/dist/util/pull.js +286 -0
- package/dist/util/pull.js.map +1 -0
- package/package.json +3 -3
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
88
|
-
for (const k of keys) {
|
|
99
|
+
const lines = keys.map((k) => {
|
|
89
100
|
const label = k.label ? ` (${k.label})` : "";
|
|
90
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
135
|
+
s.stop(`BYOK key removed for "${provider}".`);
|
|
136
|
+
clack.outro(pc.green("Done"));
|
|
118
137
|
}
|
|
119
138
|
else if (res.status === 404) {
|
|
120
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"byok.js","sourceRoot":"","sources":["../../../src/commands/cloud/byok.ts"],"names":[],"mappings":"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"}
|