alpic 0.0.0-dev.daba89c → 0.0.0-dev.dc6dd37
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/api.d.ts +1 -2
- package/dist/api.js +0 -7
- package/dist/api.js.map +1 -1
- package/dist/commands/deploy.js +4 -4
- package/dist/commands/deploy.js.map +1 -1
- package/dist/lib/project.d.ts +2 -3
- package/dist/lib/project.js +13 -133
- package/dist/lib/project.js.map +1 -1
- package/dist/types.d.ts +0 -19
- package/package.json +3 -3
package/dist/api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ApiDeployment, type ApiEnvironment, type ApiProject, type PresignedUploadResponse } from "./types.js";
|
|
2
2
|
export declare class ApiError extends Error {
|
|
3
3
|
readonly statusCode: number;
|
|
4
4
|
constructor(message: string, statusCode: number);
|
|
@@ -7,7 +7,6 @@ export declare function getFrontendBaseUrl(): string;
|
|
|
7
7
|
export declare const api: {
|
|
8
8
|
listProjects: () => Promise<ApiProject[]>;
|
|
9
9
|
getProject: (projectId: string) => Promise<ApiProject>;
|
|
10
|
-
createProject: (input: CreateProjectInput) => Promise<ApiCreateProjectOutput>;
|
|
11
10
|
getPresignedUploadUrl: () => Promise<PresignedUploadResponse>;
|
|
12
11
|
deployEnvironment: (environmentId: string, body?: {
|
|
13
12
|
token?: string;
|
package/dist/api.js
CHANGED
|
@@ -42,13 +42,6 @@ export const api = {
|
|
|
42
42
|
getProject: async (projectId) => {
|
|
43
43
|
return doFetch(`/v1/projects/${projectId}`, { method: "GET" });
|
|
44
44
|
},
|
|
45
|
-
createProject: async (input) => {
|
|
46
|
-
return doFetch("/v1/projects", {
|
|
47
|
-
method: "POST",
|
|
48
|
-
body: JSON.stringify(input),
|
|
49
|
-
headers: { "Content-Type": "application/json" },
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
45
|
getPresignedUploadUrl: async () => {
|
|
53
46
|
return doFetch("/v1/deployments/upload", { method: "POST" });
|
|
54
47
|
},
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -21,7 +21,7 @@ export class Deploy extends Command {
|
|
|
21
21
|
p.intro("Deploying to Alpic");
|
|
22
22
|
const apiKey = process.env.ALPIC_API_KEY;
|
|
23
23
|
if (!apiKey) {
|
|
24
|
-
p.cancel("ALPIC_API_KEY environment variable is required
|
|
24
|
+
p.cancel("ALPIC_API_KEY environment variable is required");
|
|
25
25
|
this.exit(1);
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
@@ -57,9 +57,6 @@ export class Deploy extends Command {
|
|
|
57
57
|
projectId: config.projectId,
|
|
58
58
|
});
|
|
59
59
|
const elapsedStr = formatElapsed(elapsedMs);
|
|
60
|
-
if (deployment.status !== "deployed") {
|
|
61
|
-
throw new Error("Deployment failed");
|
|
62
|
-
}
|
|
63
60
|
const environment = await api.getEnvironment(config.environmentId);
|
|
64
61
|
const urls = environment.mcpServerUrl ? [environment.mcpServerUrl] : environment.domains;
|
|
65
62
|
p.box([...urls.map((url) => chalk.bold(`🔗 ${url}`)), "", `Completed in ${elapsedStr}`].join("\n"), "Deployment summary:", {
|
|
@@ -69,6 +66,9 @@ export class Deploy extends Command {
|
|
|
69
66
|
rounded: true,
|
|
70
67
|
contentPadding: 3,
|
|
71
68
|
});
|
|
69
|
+
if (deployment.status !== "deployed") {
|
|
70
|
+
throw new Error("Deployment failed");
|
|
71
|
+
}
|
|
72
72
|
}
|
|
73
73
|
catch (error) {
|
|
74
74
|
spinner.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,OAAO,MAAO,SAAQ,OAAO;IACjC,MAAM,CAAU,WAAW,GAAG,2BAA2B,CAAC;IAE1D,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,EAAE,mCAAmC,CAAC,CAAC;IAE7F,MAAM,CAAU,IAAI,GAAG;QACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,CAAC,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/project.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { ApiEnvironment, ApiProject, ProjectConfig } from "../types.js";
|
|
2
2
|
export declare function resolveDeployDir(raw: string | undefined): string;
|
|
3
|
-
export declare function confirmDeployWithExistingConfig(existingConfig: ProjectConfig): Promise<boolean
|
|
3
|
+
export declare function confirmDeployWithExistingConfig(existingConfig: ProjectConfig): Promise<boolean>;
|
|
4
4
|
export declare function selectEnvironmentFromList(environments: ApiEnvironment[]): Promise<ApiEnvironment | null>;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function confirmDeployWithoutConfig(deployDir: string): Promise<boolean>;
|
|
6
6
|
export declare function confirmLinkExisting(): Promise<boolean>;
|
|
7
7
|
export declare function confirmLinkToAnotherProject(): Promise<boolean>;
|
|
8
8
|
export declare function selectProjectFromList(projects: ApiProject[]): Promise<ApiProject | null>;
|
|
9
|
-
export declare function promptRootDirectory(deployDir: string): Promise<string | null | undefined>;
|
|
10
9
|
export declare function resolveProjectForDeploy(deployDir: string): Promise<(ProjectConfig & {
|
|
11
10
|
environmentId: string;
|
|
12
11
|
}) | null>;
|
package/dist/lib/project.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { existsSync,
|
|
3
|
+
import { existsSync, statSync } from "node:fs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { api } from "../api.js";
|
|
6
6
|
import { config } from "./config.js";
|
|
@@ -21,7 +21,7 @@ export async function confirmDeployWithExistingConfig(existingConfig) {
|
|
|
21
21
|
initialValue: true,
|
|
22
22
|
});
|
|
23
23
|
if (p.isCancel(confirm))
|
|
24
|
-
return
|
|
24
|
+
return false;
|
|
25
25
|
return confirm === true;
|
|
26
26
|
}
|
|
27
27
|
export async function selectEnvironmentFromList(environments) {
|
|
@@ -32,7 +32,7 @@ export async function selectEnvironmentFromList(environments) {
|
|
|
32
32
|
message: chalk.bold("Choose an environment to deploy to"),
|
|
33
33
|
options: environments.map((env) => ({
|
|
34
34
|
value: env.id,
|
|
35
|
-
label:
|
|
35
|
+
label: `${env.name} (${env.sourceBranch})`,
|
|
36
36
|
})),
|
|
37
37
|
});
|
|
38
38
|
if (p.isCancel(choice))
|
|
@@ -40,7 +40,7 @@ export async function selectEnvironmentFromList(environments) {
|
|
|
40
40
|
const environment = environments.find((e) => e.id === choice);
|
|
41
41
|
return environment ?? null;
|
|
42
42
|
}
|
|
43
|
-
export async function
|
|
43
|
+
export async function confirmDeployWithoutConfig(deployDir) {
|
|
44
44
|
const confirm = await p.confirm({
|
|
45
45
|
message: chalk.bold(`Deploy the directory? `) + chalk.cyan(deployDir),
|
|
46
46
|
initialValue: true,
|
|
@@ -80,35 +80,6 @@ export async function selectProjectFromList(projects) {
|
|
|
80
80
|
const project = projects.find((proj) => proj.id === choice);
|
|
81
81
|
return project ?? null;
|
|
82
82
|
}
|
|
83
|
-
export async function promptRootDirectory(deployDir) {
|
|
84
|
-
while (true) {
|
|
85
|
-
const rootDir = await p.text({
|
|
86
|
-
message: chalk.bold("Root directory"),
|
|
87
|
-
placeholder: ".",
|
|
88
|
-
initialValue: ".",
|
|
89
|
-
validate: (value) => {
|
|
90
|
-
if (value != null && value.length > 512)
|
|
91
|
-
return "Path must be at most 512 characters.";
|
|
92
|
-
return undefined;
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
if (p.isCancel(rootDir))
|
|
96
|
-
return null;
|
|
97
|
-
const trimmed = rootDir.trim();
|
|
98
|
-
if (trimmed === "" || trimmed === ".")
|
|
99
|
-
return undefined;
|
|
100
|
-
const resolved = resolve(deployDir, trimmed);
|
|
101
|
-
if (!existsSync(resolved)) {
|
|
102
|
-
p.log.error(`Path does not exist: ${resolved}`);
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
if (!statSync(resolved).isDirectory()) {
|
|
106
|
-
p.log.error(`Path is not a directory: ${resolved}`);
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
return trimmed;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
83
|
async function resolveEnvironmentForProject(projectId) {
|
|
113
84
|
const project = await api.getProject(projectId);
|
|
114
85
|
const environments = project.environments ?? [];
|
|
@@ -121,28 +92,14 @@ async function resolveEnvironmentForProject(projectId) {
|
|
|
121
92
|
return { environmentId: environment.id, environmentName: environment.name };
|
|
122
93
|
}
|
|
123
94
|
export async function resolveProjectForDeploy(deployDir) {
|
|
124
|
-
const ok = await confirmDeployDirectory(deployDir);
|
|
125
|
-
if (!ok)
|
|
126
|
-
return null;
|
|
127
95
|
const existingConfig = config.load(deployDir);
|
|
128
96
|
if (existingConfig) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
confirm = await confirmDeployWithExistingConfig(existingConfig);
|
|
132
|
-
if (confirm === null)
|
|
133
|
-
return null;
|
|
134
|
-
if (confirm)
|
|
135
|
-
break;
|
|
97
|
+
const confirm = await confirmDeployWithExistingConfig(existingConfig);
|
|
98
|
+
if (!confirm) {
|
|
136
99
|
const linkAnother = await confirmLinkToAnotherProject();
|
|
137
|
-
if (
|
|
100
|
+
if (!linkAnother)
|
|
138
101
|
return null;
|
|
139
|
-
|
|
140
|
-
const linkExisting = await confirmLinkExisting();
|
|
141
|
-
if (!linkExisting) {
|
|
142
|
-
return runCreateProjectFlow(deployDir);
|
|
143
|
-
}
|
|
144
|
-
return runLinkingFlow(deployDir);
|
|
145
|
-
}
|
|
102
|
+
return runLinkingFlow(deployDir);
|
|
146
103
|
}
|
|
147
104
|
if (existingConfig.environmentId) {
|
|
148
105
|
return {
|
|
@@ -165,70 +122,15 @@ export async function resolveProjectForDeploy(deployDir) {
|
|
|
165
122
|
p.note(`Environment "${env.environmentName}" will be used for future deploys.`);
|
|
166
123
|
return updatedConfig;
|
|
167
124
|
}
|
|
125
|
+
const ok = await confirmDeployWithoutConfig(deployDir);
|
|
126
|
+
if (!ok)
|
|
127
|
+
return null;
|
|
168
128
|
const linkExisting = await confirmLinkExisting();
|
|
169
129
|
if (!linkExisting) {
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
return runLinkingFlow(deployDir);
|
|
173
|
-
}
|
|
174
|
-
async function runCreateProjectFlow(deployDir) {
|
|
175
|
-
const name = await p.text({
|
|
176
|
-
message: chalk.bold("Project name"),
|
|
177
|
-
placeholder: "my-app",
|
|
178
|
-
validate: (value) => {
|
|
179
|
-
if (!value?.trim())
|
|
180
|
-
return "Project name is required.";
|
|
181
|
-
if (value.length > 100)
|
|
182
|
-
return "Project name must be at most 100 characters.";
|
|
183
|
-
return undefined;
|
|
184
|
-
},
|
|
185
|
-
});
|
|
186
|
-
if (p.isCancel(name))
|
|
187
|
-
return null;
|
|
188
|
-
const detectedRuntime = detectRuntime(deployDir);
|
|
189
|
-
const runtime = await p.select({
|
|
190
|
-
message: chalk.bold("Runtime"),
|
|
191
|
-
options: [
|
|
192
|
-
{ value: "node24", label: "Node.js 24" },
|
|
193
|
-
{ value: "node22", label: "Node.js 22" },
|
|
194
|
-
{ value: "python3.14", label: "Python 3.14" },
|
|
195
|
-
{ value: "python3.13", label: "Python 3.13" },
|
|
196
|
-
],
|
|
197
|
-
initialValue: detectedRuntime ?? "node24",
|
|
198
|
-
});
|
|
199
|
-
if (p.isCancel(runtime))
|
|
130
|
+
p.note("Creating a new project is not implemented yet.", "Not yet implemented");
|
|
200
131
|
return null;
|
|
201
|
-
const rootDirectory = await promptRootDirectory(deployDir);
|
|
202
|
-
const spin = p.spinner();
|
|
203
|
-
spin.start("Creating project...");
|
|
204
|
-
try {
|
|
205
|
-
const projectInput = {
|
|
206
|
-
name: name.trim(),
|
|
207
|
-
runtime,
|
|
208
|
-
};
|
|
209
|
-
if (rootDirectory) {
|
|
210
|
-
projectInput.rootDirectory = rootDirectory;
|
|
211
|
-
}
|
|
212
|
-
const created = await api.createProject(projectInput);
|
|
213
|
-
spin.stop("Project created.");
|
|
214
|
-
const productionEnv = created.productionEnvironment;
|
|
215
|
-
if (!productionEnv) {
|
|
216
|
-
throw new Error("Project was created but has no Production environment.");
|
|
217
|
-
}
|
|
218
|
-
const newConfig = {
|
|
219
|
-
projectId: created.id,
|
|
220
|
-
teamId: created.teamId,
|
|
221
|
-
projectName: created.name,
|
|
222
|
-
environmentId: productionEnv.id,
|
|
223
|
-
environmentName: productionEnv.name,
|
|
224
|
-
};
|
|
225
|
-
config.save(newConfig, deployDir);
|
|
226
|
-
return newConfig;
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
spin.stop();
|
|
230
|
-
throw error;
|
|
231
132
|
}
|
|
133
|
+
return runLinkingFlow(deployDir);
|
|
232
134
|
}
|
|
233
135
|
async function runLinkingFlow(deployDir) {
|
|
234
136
|
const projects = await api.listProjects();
|
|
@@ -256,26 +158,4 @@ async function runLinkingFlow(deployDir) {
|
|
|
256
158
|
p.note(`Linked to project "${project.name}", environment "${environment.name}".`);
|
|
257
159
|
return newConfig;
|
|
258
160
|
}
|
|
259
|
-
function detectRuntime(dir) {
|
|
260
|
-
const has = (file) => existsSync(resolve(dir, file));
|
|
261
|
-
const read = (file) => {
|
|
262
|
-
try {
|
|
263
|
-
return readFileSync(resolve(dir, file), "utf8");
|
|
264
|
-
}
|
|
265
|
-
catch {
|
|
266
|
-
return "";
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
if (has("pyproject.toml") || has("requirements.txt") || has("setup.py") || has(".python-version")) {
|
|
270
|
-
return "python3.13";
|
|
271
|
-
}
|
|
272
|
-
if (has("package.json")) {
|
|
273
|
-
const nvmrc = has(".nvmrc") ? (read(".nvmrc").trim().split(/\s/)[0] ?? "") : "";
|
|
274
|
-
const major = nvmrc.replace(/^v/i, "").match(/^(\d+)/)?.[1];
|
|
275
|
-
if (major === "22")
|
|
276
|
-
return "node22";
|
|
277
|
-
return "node24";
|
|
278
|
-
}
|
|
279
|
-
return null;
|
|
280
|
-
}
|
|
281
161
|
//# sourceMappingURL=project.js.map
|
package/dist/lib/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -40,22 +40,3 @@ export type ApiDeployment = {
|
|
|
40
40
|
startedAt: string | null;
|
|
41
41
|
completedAt: string | null;
|
|
42
42
|
};
|
|
43
|
-
export type Runtime = "node22" | "node24" | "python3.13" | "python3.14";
|
|
44
|
-
export type CreateProjectInput = {
|
|
45
|
-
name: string;
|
|
46
|
-
runtime: Runtime;
|
|
47
|
-
rootDirectory?: string;
|
|
48
|
-
};
|
|
49
|
-
export type ApiCreateProjectOutput = {
|
|
50
|
-
id: string;
|
|
51
|
-
name: string;
|
|
52
|
-
teamId: string;
|
|
53
|
-
productionEnvironment: {
|
|
54
|
-
id: string;
|
|
55
|
-
name: string;
|
|
56
|
-
} | null;
|
|
57
|
-
environments: {
|
|
58
|
-
id: string;
|
|
59
|
-
name: string;
|
|
60
|
-
}[];
|
|
61
|
-
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alpic",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.dc6dd37",
|
|
4
4
|
"description": "The command-line interface for Alpic",
|
|
5
5
|
"homepage": "https://alpic.ai",
|
|
6
6
|
"preferGlobal": true,
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"dist"
|
|
15
15
|
],
|
|
16
16
|
"engines": {
|
|
17
|
-
"node": ">= 18
|
|
17
|
+
"node": ">= 18"
|
|
18
18
|
},
|
|
19
19
|
"keywords": [
|
|
20
20
|
"chatgpt",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
35
|
-
"@types/node": "^25.
|
|
35
|
+
"@types/node": "^25.1.0",
|
|
36
36
|
"biome": "^0.3.3",
|
|
37
37
|
"jsdom": "^27.4.0",
|
|
38
38
|
"shx": "^0.4.0",
|