alpic 0.0.0-dev.f74887d → 0.0.0-dev.f782aa6
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/README.md +40 -0
- package/bin/run.js +5 -0
- package/dist/__tests__/audit.e2e.test.d.ts +1 -0
- package/dist/__tests__/audit.e2e.test.js +557 -0
- package/dist/__tests__/audit.e2e.test.js.map +1 -0
- package/dist/__tests__/auth.e2e.test.js +18 -3
- package/dist/__tests__/auth.e2e.test.js.map +1 -1
- package/dist/__tests__/deploy-flags.e2e.test.js +92 -5
- package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
- package/dist/__tests__/deploy.e2e.test.js +22 -10
- package/dist/__tests__/deploy.e2e.test.js.map +1 -1
- package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js +114 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-list.e2e.test.js +116 -0
- package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.js +255 -0
- package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +259 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +139 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +150 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +342 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
- package/dist/__tests__/git-flags.e2e.test.js +6 -6
- package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
- package/dist/__tests__/git.e2e.test.js +2 -2
- package/dist/__tests__/link.e2e.test.d.ts +1 -0
- package/dist/__tests__/link.e2e.test.js +279 -0
- package/dist/__tests__/link.e2e.test.js.map +1 -0
- package/dist/__tests__/logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/logs.e2e.test.js +227 -0
- package/dist/__tests__/logs.e2e.test.js.map +1 -0
- package/dist/__tests__/mock-server.d.ts +22 -0
- package/dist/__tests__/mock-server.js +311 -20
- package/dist/__tests__/mock-server.js.map +1 -1
- package/dist/__tests__/publish.e2e.test.d.ts +1 -0
- package/dist/__tests__/publish.e2e.test.js +505 -0
- package/dist/__tests__/publish.e2e.test.js.map +1 -0
- package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
- package/dist/__tests__/tunnel.e2e.test.js +61 -0
- package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
- package/dist/__tests__/utils.d.ts +8 -2
- package/dist/__tests__/utils.js +55 -20
- package/dist/__tests__/utils.js.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +10 -3
- package/dist/api.js.map +1 -1
- package/dist/commands/audit.d.ts +14 -0
- package/dist/commands/audit.js +49 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -1
- package/dist/commands/deploy.js +37 -18
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployment/inspect.d.ts +11 -0
- package/dist/commands/deployment/inspect.js +91 -0
- package/dist/commands/deployment/inspect.js.map +1 -0
- package/dist/commands/deployment/list.d.ts +11 -0
- package/dist/commands/deployment/list.js +97 -0
- package/dist/commands/deployment/list.js.map +1 -0
- package/dist/commands/deployment/logs.d.ts +12 -0
- package/dist/commands/deployment/logs.js +50 -0
- package/dist/commands/deployment/logs.js.map +1 -0
- package/dist/commands/environment-variable/add.d.ts +14 -0
- package/dist/commands/environment-variable/add.js +47 -0
- package/dist/commands/environment-variable/add.js.map +1 -0
- package/dist/commands/environment-variable/list.d.ts +9 -0
- package/dist/commands/environment-variable/list.js +45 -0
- package/dist/commands/environment-variable/list.js.map +1 -0
- package/dist/commands/environment-variable/remove.d.ts +11 -0
- package/dist/commands/environment-variable/remove.js +33 -0
- package/dist/commands/environment-variable/remove.js.map +1 -0
- package/dist/commands/environment-variable/update.d.ts +13 -0
- package/dist/commands/environment-variable/update.js +41 -0
- package/dist/commands/environment-variable/update.js.map +1 -0
- package/dist/commands/git/connect.d.ts +1 -1
- package/dist/commands/git/connect.js +11 -12
- package/dist/commands/git/connect.js.map +1 -1
- package/dist/commands/git/disconnect.d.ts +1 -1
- package/dist/commands/git/disconnect.js +11 -11
- package/dist/commands/git/disconnect.js.map +1 -1
- package/dist/commands/link.d.ts +17 -0
- package/dist/commands/link.js +101 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.js +2 -13
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +16 -0
- package/dist/commands/logs.js +96 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/publish.d.ts +15 -0
- package/dist/commands/publish.js +51 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/tunnel.d.ts +9 -0
- package/dist/commands/tunnel.js +96 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/lib/alpic-command.d.ts +1 -1
- package/dist/lib/alpic-command.js +0 -2
- package/dist/lib/alpic-command.js.map +1 -1
- package/dist/lib/audit.d.ts +16 -0
- package/dist/lib/audit.js +244 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/auth/auth.d.ts +1 -0
- package/dist/lib/auth/auth.js +18 -0
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/oauth/server/index.js +5 -2
- package/dist/lib/auth/oauth/server/index.js.map +1 -1
- package/dist/lib/auth/whoami.js +6 -2
- package/dist/lib/auth/whoami.js.map +1 -1
- package/dist/lib/base-workflow.d.ts +1 -1
- package/dist/lib/base-workflow.js +1 -1
- package/dist/lib/base-workflow.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.js +1 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/deployment.d.ts +69 -1
- package/dist/lib/deployment.js +111 -3
- package/dist/lib/deployment.js.map +1 -1
- package/dist/lib/environment-variable.d.ts +37 -0
- package/dist/lib/environment-variable.js +299 -0
- package/dist/lib/environment-variable.js.map +1 -0
- package/dist/lib/git.d.ts +3 -3
- package/dist/lib/git.js +5 -7
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/global-store.js +2 -2
- package/dist/lib/global-store.js.map +1 -1
- package/dist/lib/{project.d.ts → link.d.ts} +26 -14
- package/dist/lib/{project.js → link.js} +173 -83
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/logs.d.ts +20 -0
- package/dist/lib/logs.js +86 -0
- package/dist/lib/logs.js.map +1 -0
- package/dist/lib/publish.d.ts +22 -0
- package/dist/lib/publish.js +185 -0
- package/dist/lib/publish.js.map +1 -0
- package/dist/lib/resolve.d.ts +6 -0
- package/dist/lib/resolve.js +26 -0
- package/dist/lib/resolve.js.map +1 -0
- package/dist/lib/table.d.ts +8 -0
- package/dist/lib/table.js +27 -0
- package/dist/lib/table.js.map +1 -0
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.js +45 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.test.d.ts +1 -0
- package/dist/lib/utils.test.js +27 -0
- package/dist/lib/utils.test.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/package.json +25 -19
- package/dist/lib/project.js.map +0 -1
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import type { RouterOutput, Runtime } from "@alpic-ai/api";
|
|
2
2
|
import type { ProjectConfig } from "../types.js";
|
|
3
3
|
import { BaseWorkflow } from "./base-workflow.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
4
|
+
export declare const RUNTIMES: ("python3.13" | "python3.14" | "node22" | "node24")[];
|
|
5
|
+
export type LinkFlags = {
|
|
6
|
+
"non-interactive"?: boolean;
|
|
7
|
+
teamId?: string;
|
|
8
|
+
projectId?: string;
|
|
9
|
+
environmentId?: string;
|
|
6
10
|
projectName?: string;
|
|
7
11
|
runtime?: Runtime;
|
|
8
12
|
rootDir?: string;
|
|
9
13
|
};
|
|
10
|
-
export declare class
|
|
11
|
-
|
|
14
|
+
export declare class LinkWorkflow extends BaseWorkflow<LinkFlags> {
|
|
15
|
+
confirmWorkingDirectory(): Promise<boolean | null>;
|
|
16
|
+
confirmLinkExisting(): Promise<boolean | null>;
|
|
17
|
+
confirmLinkToAnotherProject(): Promise<boolean | null>;
|
|
12
18
|
selectProjectFromList(projects: RouterOutput["projects"]["list"]["v1"]): Promise<{
|
|
13
19
|
id: string;
|
|
14
20
|
name: string;
|
|
@@ -28,12 +34,12 @@ export declare class ProjectWorkflow extends BaseWorkflow<ProjectFlags> {
|
|
|
28
34
|
mcpServerUrl: string;
|
|
29
35
|
domains: {
|
|
30
36
|
domain: string;
|
|
31
|
-
status: "
|
|
37
|
+
status: "failed" | "ongoing" | "deployed";
|
|
32
38
|
createdAt: Date;
|
|
33
39
|
}[];
|
|
34
40
|
latestDeployment: {
|
|
35
41
|
id: string;
|
|
36
|
-
status: "
|
|
42
|
+
status: "failed" | "ongoing" | "deployed" | "canceled";
|
|
37
43
|
sourceCommitId: string | null;
|
|
38
44
|
sourceCommitMessage: string | null;
|
|
39
45
|
completedAt: Date | null;
|
|
@@ -48,24 +54,30 @@ export declare class ProjectWorkflow extends BaseWorkflow<ProjectFlags> {
|
|
|
48
54
|
projectId: string;
|
|
49
55
|
latestDeployment: {
|
|
50
56
|
id: string;
|
|
51
|
-
status: "
|
|
57
|
+
status: "failed" | "ongoing" | "deployed" | "canceled";
|
|
52
58
|
sourceCommitId: string | null;
|
|
53
59
|
sourceCommitMessage: string | null;
|
|
54
60
|
completedAt: Date | null;
|
|
55
61
|
} | null;
|
|
56
62
|
}[];
|
|
57
63
|
} | null>;
|
|
64
|
+
selectEnvironmentFromList(environments: RouterOutput["projects"]["get"]["v1"]["environments"]): Promise<(typeof environments)[number] | null>;
|
|
65
|
+
resolveTeam(): Promise<{
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
} | null>;
|
|
58
69
|
promptRootDirectory(): Promise<string | null>;
|
|
59
|
-
private directoryExists;
|
|
60
|
-
private detectRuntime;
|
|
61
70
|
confirmDeployWithExistingConfig(existingConfig: ProjectConfig): Promise<boolean | null>;
|
|
62
|
-
|
|
63
|
-
confirmLinkExisting(): Promise<boolean>;
|
|
64
|
-
confirmLinkToAnotherProject(): Promise<boolean>;
|
|
65
|
-
resolveProjectForDeploy(): Promise<(ProjectConfig & {
|
|
71
|
+
runLinkFlow(): Promise<(ProjectConfig & {
|
|
66
72
|
environmentId: string;
|
|
67
73
|
}) | null>;
|
|
68
|
-
|
|
74
|
+
resolveEnvironmentForProject(projectId: string): Promise<{
|
|
75
|
+
environmentId: string;
|
|
76
|
+
environmentName: string;
|
|
77
|
+
} | null>;
|
|
78
|
+
private getConfigFromFlags;
|
|
79
|
+
private directoryExists;
|
|
80
|
+
private detectRuntime;
|
|
69
81
|
private runCreateProjectFlow;
|
|
70
82
|
private runLinkingFlow;
|
|
71
83
|
}
|
|
@@ -1,11 +1,59 @@
|
|
|
1
|
-
import * as p from "@clack/prompts";
|
|
2
|
-
import chalk from "chalk";
|
|
3
1
|
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
4
2
|
import { resolve } from "node:path";
|
|
3
|
+
import { runtimeSchema } from "@alpic-ai/api";
|
|
4
|
+
import * as p from "@clack/prompts";
|
|
5
|
+
import chalk from "chalk";
|
|
5
6
|
import { api } from "../api.js";
|
|
6
7
|
import { BaseWorkflow } from "./base-workflow.js";
|
|
7
8
|
import { config } from "./config.js";
|
|
8
|
-
export
|
|
9
|
+
export const RUNTIMES = runtimeSchema.options;
|
|
10
|
+
const RUNTIME_LABELS = {
|
|
11
|
+
node24: "Node.js 24",
|
|
12
|
+
node22: "Node.js 22",
|
|
13
|
+
"python3.14": "Python 3.14",
|
|
14
|
+
"python3.13": "Python 3.13",
|
|
15
|
+
};
|
|
16
|
+
export class LinkWorkflow extends BaseWorkflow {
|
|
17
|
+
async confirmWorkingDirectory() {
|
|
18
|
+
const confirmed = await this.confirm({
|
|
19
|
+
message: chalk.bold(`Use the current directory? `) + chalk.cyan(process.cwd()),
|
|
20
|
+
initialValue: true,
|
|
21
|
+
});
|
|
22
|
+
if (p.isCancel(confirmed))
|
|
23
|
+
return null;
|
|
24
|
+
return confirmed === true;
|
|
25
|
+
}
|
|
26
|
+
async confirmLinkExisting() {
|
|
27
|
+
const link = await this.confirm({
|
|
28
|
+
message: chalk.bold("Link to existing project?"),
|
|
29
|
+
initialValue: true,
|
|
30
|
+
}, false);
|
|
31
|
+
if (p.isCancel(link))
|
|
32
|
+
return null;
|
|
33
|
+
return link === true;
|
|
34
|
+
}
|
|
35
|
+
async confirmLinkToAnotherProject() {
|
|
36
|
+
const link = await this.confirm({
|
|
37
|
+
message: chalk.bold("Link to another project?"),
|
|
38
|
+
initialValue: true,
|
|
39
|
+
}, false);
|
|
40
|
+
if (p.isCancel(link))
|
|
41
|
+
return null;
|
|
42
|
+
return link === true;
|
|
43
|
+
}
|
|
44
|
+
async selectProjectFromList(projects) {
|
|
45
|
+
if (projects.length === 0) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const choice = await p.select({
|
|
49
|
+
message: chalk.bold("Choose a project"),
|
|
50
|
+
options: projects.map((proj) => ({ value: proj.id, label: proj.name })),
|
|
51
|
+
});
|
|
52
|
+
if (p.isCancel(choice))
|
|
53
|
+
return null;
|
|
54
|
+
const project = projects.find((proj) => proj.id === choice);
|
|
55
|
+
return project ?? null;
|
|
56
|
+
}
|
|
9
57
|
async selectEnvironmentFromList(environments) {
|
|
10
58
|
if (environments.length === 0) {
|
|
11
59
|
return null;
|
|
@@ -22,18 +70,37 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
22
70
|
const environment = environments.find((e) => e.id === choice);
|
|
23
71
|
return environment ?? null;
|
|
24
72
|
}
|
|
25
|
-
async
|
|
26
|
-
|
|
27
|
-
|
|
73
|
+
async resolveTeam() {
|
|
74
|
+
const teams = await api.teams.list.v1();
|
|
75
|
+
if (teams.length === 0) {
|
|
76
|
+
throw new Error("No teams found. Create a team in the Alpic dashboard first.");
|
|
77
|
+
}
|
|
78
|
+
if (this.flags.teamId) {
|
|
79
|
+
const match = teams.find((t) => t.id === this.flags.teamId);
|
|
80
|
+
if (!match) {
|
|
81
|
+
throw new Error(`Team "${this.flags.teamId}" not found.`);
|
|
82
|
+
}
|
|
83
|
+
return match;
|
|
84
|
+
}
|
|
85
|
+
if (this.isNonInteractive()) {
|
|
86
|
+
if (teams.length === 1) {
|
|
87
|
+
const singleTeam = teams[0];
|
|
88
|
+
if (!singleTeam) {
|
|
89
|
+
throw new Error("No teams found.");
|
|
90
|
+
}
|
|
91
|
+
p.log.info(`Using team ${chalk.bold(singleTeam.name)}`);
|
|
92
|
+
return singleTeam;
|
|
93
|
+
}
|
|
94
|
+
throw new Error("Multiple teams found. Use --team-id to select one.");
|
|
28
95
|
}
|
|
29
96
|
const choice = await p.select({
|
|
30
|
-
message: chalk.bold("Choose a
|
|
31
|
-
options:
|
|
97
|
+
message: chalk.bold("Choose a team"),
|
|
98
|
+
options: teams.map((t) => ({ value: t.id, label: t.name })),
|
|
32
99
|
});
|
|
33
100
|
if (p.isCancel(choice))
|
|
34
101
|
return null;
|
|
35
|
-
const
|
|
36
|
-
return
|
|
102
|
+
const selected = teams.find((t) => t.id === choice);
|
|
103
|
+
return selected ?? null;
|
|
37
104
|
}
|
|
38
105
|
async promptRootDirectory() {
|
|
39
106
|
if (this.isNonInteractive()) {
|
|
@@ -71,71 +138,23 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
71
138
|
return trimmed;
|
|
72
139
|
}
|
|
73
140
|
}
|
|
74
|
-
directoryExists(dir) {
|
|
75
|
-
return existsSync(dir) && statSync(dir).isDirectory();
|
|
76
|
-
}
|
|
77
|
-
detectRuntime() {
|
|
78
|
-
const has = (file) => existsSync(file);
|
|
79
|
-
const read = (file) => {
|
|
80
|
-
try {
|
|
81
|
-
return readFileSync(file, "utf8");
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return "";
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
if (has("pyproject.toml") || has("requirements.txt") || has("setup.py") || has(".python-version")) {
|
|
88
|
-
return "python3.13";
|
|
89
|
-
}
|
|
90
|
-
if (has("package.json")) {
|
|
91
|
-
const nvmrc = has(".nvmrc") ? (read(".nvmrc").trim().split(/\s/)[0] ?? "") : "";
|
|
92
|
-
const major = nvmrc.replace(/^v/i, "").match(/^(\d+)/)?.[1];
|
|
93
|
-
if (major === "22")
|
|
94
|
-
return "node22";
|
|
95
|
-
return "node24";
|
|
96
|
-
}
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
141
|
async confirmDeployWithExistingConfig(existingConfig) {
|
|
100
142
|
const envLabel = existingConfig.environmentName ? ` to environment "${existingConfig.environmentName}"` : "";
|
|
143
|
+
const teamLabel = existingConfig.teamName ? chalk.dim(` [team: ${existingConfig.teamName}]`) : "";
|
|
101
144
|
const confirmed = await this.confirm({
|
|
102
|
-
message: chalk.bold(`
|
|
145
|
+
message: chalk.bold(`Use project "${existingConfig.projectName}"${envLabel}?`) + teamLabel,
|
|
103
146
|
initialValue: true,
|
|
104
147
|
});
|
|
105
148
|
if (p.isCancel(confirmed))
|
|
106
149
|
return null;
|
|
107
150
|
return confirmed === true;
|
|
108
151
|
}
|
|
109
|
-
async
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
return false;
|
|
116
|
-
return confirmed === true;
|
|
117
|
-
}
|
|
118
|
-
async confirmLinkExisting() {
|
|
119
|
-
const link = await this.confirm({
|
|
120
|
-
message: chalk.bold("Link to existing project?"),
|
|
121
|
-
initialValue: true,
|
|
122
|
-
}, false);
|
|
123
|
-
if (p.isCancel(link))
|
|
124
|
-
return false;
|
|
125
|
-
return link === true;
|
|
126
|
-
}
|
|
127
|
-
async confirmLinkToAnotherProject() {
|
|
128
|
-
const link = await this.confirm({
|
|
129
|
-
message: chalk.bold("Link to another project?"),
|
|
130
|
-
initialValue: true,
|
|
131
|
-
}, false);
|
|
132
|
-
if (p.isCancel(link))
|
|
133
|
-
return false;
|
|
134
|
-
return link === true;
|
|
135
|
-
}
|
|
136
|
-
async resolveProjectForDeploy() {
|
|
137
|
-
const ok = await this.confirmDeployDirectory();
|
|
138
|
-
if (!ok)
|
|
152
|
+
async runLinkFlow() {
|
|
153
|
+
const fromFlags = await this.getConfigFromFlags();
|
|
154
|
+
if (fromFlags)
|
|
155
|
+
return fromFlags;
|
|
156
|
+
const ok = await this.confirmWorkingDirectory();
|
|
157
|
+
if (ok === null || ok === false)
|
|
139
158
|
return null;
|
|
140
159
|
const existingConfig = config.load();
|
|
141
160
|
if (existingConfig) {
|
|
@@ -147,10 +166,12 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
147
166
|
if (confirmed)
|
|
148
167
|
break;
|
|
149
168
|
const linkAnother = await this.confirmLinkToAnotherProject();
|
|
150
|
-
if (
|
|
169
|
+
if (linkAnother === null)
|
|
151
170
|
return null;
|
|
152
171
|
if (linkAnother) {
|
|
153
172
|
const linkExisting = await this.confirmLinkExisting();
|
|
173
|
+
if (linkExisting === null)
|
|
174
|
+
return null;
|
|
154
175
|
if (!linkExisting) {
|
|
155
176
|
return this.runCreateProjectFlow();
|
|
156
177
|
}
|
|
@@ -161,6 +182,7 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
161
182
|
return {
|
|
162
183
|
projectId: existingConfig.projectId,
|
|
163
184
|
teamId: existingConfig.teamId,
|
|
185
|
+
teamName: existingConfig.teamName,
|
|
164
186
|
projectName: existingConfig.projectName,
|
|
165
187
|
environmentId: existingConfig.environmentId,
|
|
166
188
|
environmentName: existingConfig.environmentName,
|
|
@@ -180,11 +202,16 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
180
202
|
});
|
|
181
203
|
return updatedConfig;
|
|
182
204
|
}
|
|
205
|
+
const team = await this.resolveTeam();
|
|
206
|
+
if (!team)
|
|
207
|
+
return null;
|
|
183
208
|
const linkExisting = await this.confirmLinkExisting();
|
|
184
|
-
if (
|
|
185
|
-
return
|
|
209
|
+
if (linkExisting === null)
|
|
210
|
+
return null;
|
|
211
|
+
if (linkExisting) {
|
|
212
|
+
return this.runLinkingFlow(team);
|
|
186
213
|
}
|
|
187
|
-
return this.
|
|
214
|
+
return this.runCreateProjectFlow(team);
|
|
188
215
|
}
|
|
189
216
|
async resolveEnvironmentForProject(projectId) {
|
|
190
217
|
const project = await api.projects.get.v1({ projectId });
|
|
@@ -197,9 +224,68 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
197
224
|
return null;
|
|
198
225
|
return { environmentId: environment.id, environmentName: environment.name };
|
|
199
226
|
}
|
|
200
|
-
async
|
|
227
|
+
async getConfigFromFlags() {
|
|
228
|
+
const { projectId, environmentId } = this.flags;
|
|
229
|
+
if (projectId && !environmentId) {
|
|
230
|
+
throw new Error("--environment-id is required when using --project-id.");
|
|
231
|
+
}
|
|
232
|
+
if (!projectId && environmentId) {
|
|
233
|
+
throw new Error("--project-id is required when using --environment-id.");
|
|
234
|
+
}
|
|
235
|
+
if (projectId && environmentId) {
|
|
236
|
+
const project = await api.projects.get.v1({ projectId });
|
|
237
|
+
const environment = project.environments?.find((env) => env.id === environmentId);
|
|
238
|
+
if (!environment) {
|
|
239
|
+
throw new Error(`Environment "${environmentId}" not found in project "${project.name}".`);
|
|
240
|
+
}
|
|
241
|
+
const teams = await api.teams.list.v1();
|
|
242
|
+
const team = teams.find((t) => t.id === project.teamId);
|
|
243
|
+
const resolvedConfig = {
|
|
244
|
+
projectId,
|
|
245
|
+
teamId: project.teamId,
|
|
246
|
+
teamName: team?.name,
|
|
247
|
+
projectName: project.name,
|
|
248
|
+
environmentId,
|
|
249
|
+
environmentName: environment.name,
|
|
250
|
+
};
|
|
251
|
+
config.save(resolvedConfig);
|
|
252
|
+
return resolvedConfig;
|
|
253
|
+
}
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
directoryExists(dir) {
|
|
257
|
+
return existsSync(dir) && statSync(dir).isDirectory();
|
|
258
|
+
}
|
|
259
|
+
detectRuntime() {
|
|
260
|
+
const has = (file) => existsSync(file);
|
|
261
|
+
const read = (file) => {
|
|
262
|
+
try {
|
|
263
|
+
return readFileSync(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
|
+
async runCreateProjectFlow(team) {
|
|
282
|
+
if (!team) {
|
|
283
|
+
team = (await this.resolveTeam()) ?? undefined;
|
|
284
|
+
if (!team)
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
201
287
|
if (this.isNonInteractive() && !this.flags.projectName) {
|
|
202
|
-
throw new Error("--project-name is required when using --
|
|
288
|
+
throw new Error("--project-name is required when using --non-interactive");
|
|
203
289
|
}
|
|
204
290
|
const name = this.flags.projectName ??
|
|
205
291
|
(await p.text({
|
|
@@ -214,7 +300,6 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
214
300
|
},
|
|
215
301
|
}));
|
|
216
302
|
if (p.isCancel(name)) {
|
|
217
|
-
p.cancel("Project name is required.");
|
|
218
303
|
return null;
|
|
219
304
|
}
|
|
220
305
|
const detectedRuntime = this.detectRuntime();
|
|
@@ -223,16 +308,13 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
223
308
|
? (this.flags.runtime ?? defaultRuntime)
|
|
224
309
|
: await p.select({
|
|
225
310
|
message: chalk.bold("Runtime"),
|
|
226
|
-
options:
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
{ value: "python3.13", label: "Python 3.13" },
|
|
231
|
-
],
|
|
311
|
+
options: RUNTIMES.map((value) => ({
|
|
312
|
+
value,
|
|
313
|
+
label: value === detectedRuntime ? `${RUNTIME_LABELS[value]} (detected)` : RUNTIME_LABELS[value],
|
|
314
|
+
})),
|
|
232
315
|
initialValue: defaultRuntime,
|
|
233
316
|
});
|
|
234
317
|
if (p.isCancel(runtime)) {
|
|
235
|
-
p.cancel("Runtime is required.");
|
|
236
318
|
return null;
|
|
237
319
|
}
|
|
238
320
|
const rootDirectory = await this.promptRootDirectory();
|
|
@@ -242,6 +324,7 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
242
324
|
const projectInput = {
|
|
243
325
|
name,
|
|
244
326
|
runtime,
|
|
327
|
+
teamId: team.id,
|
|
245
328
|
};
|
|
246
329
|
projectInput.rootDirectory = rootDirectory ?? undefined;
|
|
247
330
|
const created = await api.projects.create.v1(projectInput);
|
|
@@ -253,6 +336,7 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
253
336
|
const newConfig = {
|
|
254
337
|
projectId: created.id,
|
|
255
338
|
teamId: created.teamId,
|
|
339
|
+
teamName: team.name,
|
|
256
340
|
projectName: created.name,
|
|
257
341
|
environmentId: productionEnv.id,
|
|
258
342
|
environmentName: productionEnv.name,
|
|
@@ -265,8 +349,13 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
265
349
|
throw error;
|
|
266
350
|
}
|
|
267
351
|
}
|
|
268
|
-
async runLinkingFlow() {
|
|
269
|
-
|
|
352
|
+
async runLinkingFlow(team) {
|
|
353
|
+
if (!team) {
|
|
354
|
+
team = (await this.resolveTeam()) ?? undefined;
|
|
355
|
+
if (!team)
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
const projects = await api.projects.list.v1({ teamId: team.id });
|
|
270
359
|
if (projects.length === 0) {
|
|
271
360
|
throw new Error("No projects found. Create a project in the Alpic dashboard first.");
|
|
272
361
|
}
|
|
@@ -283,6 +372,7 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
283
372
|
const newConfig = {
|
|
284
373
|
projectId: project.id,
|
|
285
374
|
teamId: project.teamId,
|
|
375
|
+
teamName: team.name,
|
|
286
376
|
projectName: project.name,
|
|
287
377
|
environmentId: environment.id,
|
|
288
378
|
environmentName: environment.name,
|
|
@@ -294,4 +384,4 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
294
384
|
return newConfig;
|
|
295
385
|
}
|
|
296
386
|
}
|
|
297
|
-
//# sourceMappingURL=
|
|
387
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/lib/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RouterOutput } from "@alpic-ai/api";
|
|
2
|
+
export type RuntimeLogEntry = RouterOutput["environments"]["getLogs"]["v1"]["logs"][number];
|
|
3
|
+
type LogLevel = "INFO" | "ERROR" | "WARNING" | "DEBUG";
|
|
4
|
+
type FollowEnvironmentLogsParams = {
|
|
5
|
+
environmentId: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
level?: LogLevel[];
|
|
8
|
+
search?: string;
|
|
9
|
+
nextToken?: string | null;
|
|
10
|
+
initialLogs?: RuntimeLogEntry[];
|
|
11
|
+
pollIntervalMs?: number;
|
|
12
|
+
onLog: (log: RuntimeLogEntry) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare function formatLogTimestamp(timestamp: Date | undefined, noColor: boolean): string;
|
|
15
|
+
export declare function printLog(log: RuntimeLogEntry, { noColor }?: {
|
|
16
|
+
noColor?: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
export declare function followEnvironmentLogs({ environmentId, limit, level, search, nextToken, initialLogs, pollIntervalMs, onLog, }: FollowEnvironmentLogsParams): Promise<never>;
|
|
19
|
+
export declare function parseLevel(values: string[]): LogLevel[];
|
|
20
|
+
export {};
|
package/dist/lib/logs.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { api } from "../api.js";
|
|
3
|
+
const LOG_TYPE_COLORS = {
|
|
4
|
+
ERROR: chalk.red,
|
|
5
|
+
WARNING: chalk.yellow,
|
|
6
|
+
DEBUG: chalk.gray,
|
|
7
|
+
INFO: chalk.white,
|
|
8
|
+
START: chalk.dim,
|
|
9
|
+
END: chalk.dim,
|
|
10
|
+
};
|
|
11
|
+
const LOG_TYPE_LABELS = {
|
|
12
|
+
START: "START",
|
|
13
|
+
END: "END",
|
|
14
|
+
INFO: "INFO",
|
|
15
|
+
ERROR: "ERROR",
|
|
16
|
+
WARNING: "WARN",
|
|
17
|
+
DEBUG: "DEBUG",
|
|
18
|
+
};
|
|
19
|
+
const LOG_LEVEL_WIDTH = 5;
|
|
20
|
+
export function formatLogTimestamp(timestamp, noColor) {
|
|
21
|
+
if (!timestamp)
|
|
22
|
+
return "";
|
|
23
|
+
const formatted = timestamp.toISOString().replace("T", " ").slice(0, 23);
|
|
24
|
+
return noColor ? formatted : chalk.gray(formatted);
|
|
25
|
+
}
|
|
26
|
+
export function printLog(log, { noColor = false } = {}) {
|
|
27
|
+
const colorize = noColor ? (s) => s : (LOG_TYPE_COLORS[log.type] ?? chalk.white);
|
|
28
|
+
const ts = formatLogTimestamp(log.timestamp, noColor);
|
|
29
|
+
const shortRequestId = log.requestId.split("-")[0] ?? log.requestId;
|
|
30
|
+
const levelPrefix = `${LOG_TYPE_LABELS[log.type].padEnd(LOG_LEVEL_WIDTH, " ")} `;
|
|
31
|
+
let message;
|
|
32
|
+
if (log.type === "START") {
|
|
33
|
+
const methodPrefix = log.method ? `method: ${log.method}, ` : "";
|
|
34
|
+
const startMessage = `--- MCP REQUEST START --- (${methodPrefix}requestId: ${shortRequestId})`;
|
|
35
|
+
message = noColor ? startMessage : chalk.dim(startMessage);
|
|
36
|
+
process.stdout.write(`${ts} ${levelPrefix}${message}\n`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
else if (log.type === "END") {
|
|
40
|
+
const durationSuffix = log.durationInMs !== undefined ? ` (duration: ${log.durationInMs}ms)` : "";
|
|
41
|
+
const endMessage = `--- MCP REQUEST END -----${durationSuffix}`;
|
|
42
|
+
message = noColor ? endMessage : chalk.dim(endMessage);
|
|
43
|
+
process.stdout.write(`${ts} ${levelPrefix}${message}\n`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
message = colorize(log.content ?? "");
|
|
48
|
+
}
|
|
49
|
+
process.stdout.write(`${ts} ${levelPrefix}${message}\n`);
|
|
50
|
+
}
|
|
51
|
+
export async function followEnvironmentLogs({ environmentId, limit, level, search, nextToken, initialLogs = [], pollIntervalMs = 3_000, onLog, }) {
|
|
52
|
+
const lastInitialLog = initialLogs.at(-1);
|
|
53
|
+
let lastTimestamp = lastInitialLog === undefined
|
|
54
|
+
? new Date().toISOString()
|
|
55
|
+
: new Date(lastInitialLog.timestamp.getTime() + 1).toISOString();
|
|
56
|
+
let cursor = nextToken ?? null;
|
|
57
|
+
while (true) {
|
|
58
|
+
const options = {
|
|
59
|
+
environmentId,
|
|
60
|
+
since: lastTimestamp,
|
|
61
|
+
limit,
|
|
62
|
+
level,
|
|
63
|
+
search,
|
|
64
|
+
nextToken: cursor ?? undefined,
|
|
65
|
+
};
|
|
66
|
+
const response = await api.environments.getLogs.v1(options);
|
|
67
|
+
for (const log of response.logs) {
|
|
68
|
+
onLog(log);
|
|
69
|
+
lastTimestamp = new Date(log.timestamp.getTime() + 1).toISOString();
|
|
70
|
+
}
|
|
71
|
+
cursor = response.nextToken;
|
|
72
|
+
if (cursor === null) {
|
|
73
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function parseLevel(values) {
|
|
78
|
+
return values.map((value) => {
|
|
79
|
+
const normalized = value.toUpperCase();
|
|
80
|
+
if (!["INFO", "ERROR", "WARNING", "DEBUG"].includes(normalized)) {
|
|
81
|
+
throw new Error(`Invalid log level: "${value}". Valid values: info, error, warning, debug`);
|
|
82
|
+
}
|
|
83
|
+
return normalized;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/lib/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseWorkflow } from "./base-workflow.js";
|
|
2
|
+
type PublishFlags = {
|
|
3
|
+
"non-interactive"?: boolean;
|
|
4
|
+
"project-id"?: string;
|
|
5
|
+
domain?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
"website-url"?: string;
|
|
9
|
+
"icon-src"?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const getMcpRegistrySearchUrl: (serverName: string) => string;
|
|
12
|
+
export declare class PublishWorkflow extends BaseWorkflow<PublishFlags> {
|
|
13
|
+
publish(projectId: string): Promise<void>;
|
|
14
|
+
private doPublish;
|
|
15
|
+
private getDeployedCustomDomains;
|
|
16
|
+
private sortCandidates;
|
|
17
|
+
private selectDomain;
|
|
18
|
+
private promptTitle;
|
|
19
|
+
private promptDescription;
|
|
20
|
+
private promptOptionalUrl;
|
|
21
|
+
}
|
|
22
|
+
export {};
|