polpo-ai 0.3.10 → 0.3.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.
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* polpo
|
|
3
|
-
*
|
|
4
|
-
* NOTE: Projects API uses session auth (Better Auth), not API key auth.
|
|
5
|
-
* These commands are stubs that use API key auth — they may not work
|
|
6
|
-
* with the current control plane auth model.
|
|
2
|
+
* polpo cloud projects — manage projects via session token auth.
|
|
7
3
|
*/
|
|
8
4
|
import type { Command } from "commander";
|
|
9
5
|
export declare function registerProjectsCommand(program: Command): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/cloud/projects.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/cloud/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgG9D"}
|
|
@@ -1,39 +1,55 @@
|
|
|
1
1
|
import { loadCredentials } from "./config.js";
|
|
2
2
|
import { createApiClient } from "./api.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fetch the user's first org ID. The server requires an orgId for
|
|
5
|
+
* project list/create, so we resolve it automatically.
|
|
6
|
+
*/
|
|
7
|
+
async function resolveOrgId(client) {
|
|
8
|
+
const res = await client.get("/v1/orgs");
|
|
9
|
+
if (res.status !== 200) {
|
|
10
|
+
console.error(`Failed to fetch organizations (status ${res.status}). Are you logged in?`);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const orgs = Array.isArray(res.data) ? res.data : [];
|
|
14
|
+
if (orgs.length === 0) {
|
|
15
|
+
console.error("No organizations found. Create one in the dashboard first.");
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
return orgs[0].id;
|
|
19
|
+
}
|
|
3
20
|
export function registerProjectsCommand(program) {
|
|
4
21
|
const projects = program
|
|
5
22
|
.command("projects")
|
|
6
|
-
.description("Manage projects
|
|
23
|
+
.description("Manage cloud projects");
|
|
7
24
|
projects
|
|
8
25
|
.command("list")
|
|
9
26
|
.description("List projects")
|
|
10
|
-
.
|
|
27
|
+
.option("--org <org-id>", "Organization ID (auto-detected if omitted)")
|
|
28
|
+
.action(async (opts) => {
|
|
11
29
|
const creds = loadCredentials();
|
|
12
30
|
if (!creds) {
|
|
13
|
-
console.error("Not logged in. Run: polpo
|
|
31
|
+
console.error("Not logged in. Run: polpo login --api-key <key>");
|
|
14
32
|
process.exit(1);
|
|
15
33
|
}
|
|
16
34
|
const client = createApiClient(creds);
|
|
17
35
|
try {
|
|
18
|
-
const
|
|
36
|
+
const orgId = opts.org ?? (await resolveOrgId(client));
|
|
37
|
+
const res = await client.get(`/v1/projects?orgId=${encodeURIComponent(orgId)}`);
|
|
19
38
|
if (res.status === 200) {
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
39
|
+
const list = Array.isArray(res.data) ? res.data : [];
|
|
40
|
+
if (list.length === 0) {
|
|
22
41
|
console.log("No projects found.");
|
|
23
42
|
}
|
|
24
43
|
else {
|
|
25
|
-
for (const p of
|
|
44
|
+
for (const p of list) {
|
|
26
45
|
const status = p.status ? ` [${p.status}]` : "";
|
|
27
46
|
console.log(` ${p.name ?? p.id}${status}`);
|
|
28
47
|
}
|
|
29
48
|
}
|
|
30
49
|
}
|
|
31
|
-
else if (res.status === 401) {
|
|
32
|
-
console.error("Error: Projects API requires session auth. Use the web dashboard to manage projects.");
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
50
|
else {
|
|
36
|
-
|
|
51
|
+
const data = res.data;
|
|
52
|
+
console.error("Error: " + (data?.error ?? `status ${res.status}`));
|
|
37
53
|
process.exit(1);
|
|
38
54
|
}
|
|
39
55
|
}
|
|
@@ -45,29 +61,35 @@ export function registerProjectsCommand(program) {
|
|
|
45
61
|
projects
|
|
46
62
|
.command("create <name>")
|
|
47
63
|
.description("Create a project")
|
|
48
|
-
.option("--org <org-id>", "Organization ID")
|
|
64
|
+
.option("--org <org-id>", "Organization ID (auto-detected if omitted)")
|
|
49
65
|
.action(async (name, opts) => {
|
|
50
66
|
const creds = loadCredentials();
|
|
51
67
|
if (!creds) {
|
|
52
|
-
console.error("Not logged in. Run: polpo
|
|
68
|
+
console.error("Not logged in. Run: polpo login --api-key <key>");
|
|
53
69
|
process.exit(1);
|
|
54
70
|
}
|
|
55
71
|
const client = createApiClient(creds);
|
|
56
72
|
try {
|
|
73
|
+
const orgId = opts.org ?? (await resolveOrgId(client));
|
|
74
|
+
// Derive slug from name: lowercase, replace non-alphanumeric with dashes
|
|
75
|
+
const slug = name
|
|
76
|
+
.toLowerCase()
|
|
77
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
78
|
+
.replace(/^-|-$/g, "");
|
|
57
79
|
const res = await client.post("/v1/projects", {
|
|
80
|
+
orgId,
|
|
58
81
|
name,
|
|
59
|
-
|
|
82
|
+
slug,
|
|
60
83
|
});
|
|
61
84
|
if (res.status >= 200 && res.status < 300) {
|
|
62
|
-
const project = res.data
|
|
85
|
+
const project = res.data;
|
|
63
86
|
console.log(`Project "${name}" created.`);
|
|
64
87
|
if (project?.id) {
|
|
65
88
|
console.log(` ID: ${project.id}`);
|
|
66
89
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
process.exit(1);
|
|
90
|
+
if (project?.slug) {
|
|
91
|
+
console.log(` Slug: ${project.slug}`);
|
|
92
|
+
}
|
|
71
93
|
}
|
|
72
94
|
else {
|
|
73
95
|
const data = res.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../../src/cli/commands/cloud/projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../../src/cli/commands/cloud/projects.ts"],"names":[],"mappings":"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"}
|