alpic 0.0.0-dev.f5b9b93 → 0.0.0-dev.f5c14d5
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/__tests__/audit.e2e.test.d.ts +1 -0
- package/dist/__tests__/audit.e2e.test.js +242 -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 +107 -6
- 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 +20 -0
- package/dist/__tests__/mock-server.js +300 -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 +64 -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 +1 -1
- package/dist/api.js.map +1 -1
- package/dist/commands/audit.d.ts +19 -0
- package/dist/commands/audit.js +235 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -4
- package/dist/commands/deploy.js +44 -33
- 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 -4
- package/dist/commands/git/connect.js +16 -26
- package/dist/commands/git/connect.js.map +1 -1
- package/dist/commands/git/disconnect.d.ts +1 -4
- package/dist/commands/git/disconnect.js +14 -26
- package/dist/commands/git/disconnect.js.map +1 -1
- package/dist/commands/git.js +2 -2
- package/dist/commands/git.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 +4 -2
- 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 +53 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/lib/archive.d.ts +3 -3
- package/dist/lib/archive.js +11 -15
- package/dist/lib/archive.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/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 +3 -2
- package/dist/lib/config.js +8 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/deployment.d.ts +68 -1
- package/dist/lib/deployment.js +111 -15
- 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 +5 -5
- package/dist/lib/git.js +10 -13
- 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} +24 -12
- package/dist/lib/{project.js → link.js} +183 -98
- 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 +24 -19
- package/dist/lib/project.js.map +0 -1
|
@@ -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 * as p from "@clack/prompts";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { runtimeSchema } from "@alpic-ai/api";
|
|
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,28 +70,43 @@ 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
|
+
p.log.info(`Using team ${chalk.bold(singleTeam.name)}`);
|
|
89
|
+
return singleTeam;
|
|
90
|
+
}
|
|
91
|
+
throw new Error("Multiple teams found. Use --team-id to select one.");
|
|
28
92
|
}
|
|
29
93
|
const choice = await p.select({
|
|
30
|
-
message: chalk.bold("Choose a
|
|
31
|
-
options:
|
|
94
|
+
message: chalk.bold("Choose a team"),
|
|
95
|
+
options: teams.map((t) => ({ value: t.id, label: t.name })),
|
|
32
96
|
});
|
|
33
97
|
if (p.isCancel(choice))
|
|
34
98
|
return null;
|
|
35
|
-
const
|
|
36
|
-
return
|
|
99
|
+
const selected = teams.find((t) => t.id === choice);
|
|
100
|
+
return selected ?? null;
|
|
37
101
|
}
|
|
38
|
-
async promptRootDirectory(
|
|
102
|
+
async promptRootDirectory() {
|
|
39
103
|
if (this.isNonInteractive()) {
|
|
40
104
|
if (this.flags.rootDir) {
|
|
41
105
|
const trimmed = this.flags.rootDir.trim();
|
|
42
106
|
if (trimmed === "" || trimmed === ".")
|
|
43
107
|
return null;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
throw new Error(`Directory does not exist: ${resolved}`);
|
|
108
|
+
if (!this.directoryExists(trimmed)) {
|
|
109
|
+
throw new Error(`Directory does not exist: ${resolve(trimmed)}`);
|
|
47
110
|
}
|
|
48
111
|
return trimmed;
|
|
49
112
|
}
|
|
@@ -65,81 +128,32 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
65
128
|
const trimmed = rootDir.trim();
|
|
66
129
|
if (trimmed === "" || trimmed === ".")
|
|
67
130
|
return null;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
p.log.error(`Directory does not exist: ${resolved}`);
|
|
131
|
+
if (!this.directoryExists(trimmed)) {
|
|
132
|
+
p.log.error(`Directory does not exist: ${trimmed}`);
|
|
71
133
|
continue;
|
|
72
134
|
}
|
|
73
135
|
return trimmed;
|
|
74
136
|
}
|
|
75
137
|
}
|
|
76
|
-
directoryExists(dir) {
|
|
77
|
-
return existsSync(dir) && statSync(dir).isDirectory();
|
|
78
|
-
}
|
|
79
|
-
detectRuntime(dir) {
|
|
80
|
-
const has = (file) => existsSync(resolve(dir, file));
|
|
81
|
-
const read = (file) => {
|
|
82
|
-
try {
|
|
83
|
-
return readFileSync(resolve(dir, file), "utf8");
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return "";
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
if (has("pyproject.toml") || has("requirements.txt") || has("setup.py") || has(".python-version")) {
|
|
90
|
-
return "python3.13";
|
|
91
|
-
}
|
|
92
|
-
if (has("package.json")) {
|
|
93
|
-
const nvmrc = has(".nvmrc") ? (read(".nvmrc").trim().split(/\s/)[0] ?? "") : "";
|
|
94
|
-
const major = nvmrc.replace(/^v/i, "").match(/^(\d+)/)?.[1];
|
|
95
|
-
if (major === "22")
|
|
96
|
-
return "node22";
|
|
97
|
-
return "node24";
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
138
|
async confirmDeployWithExistingConfig(existingConfig) {
|
|
102
139
|
const envLabel = existingConfig.environmentName ? ` to environment "${existingConfig.environmentName}"` : "";
|
|
140
|
+
const teamLabel = existingConfig.teamName ? chalk.dim(` [team: ${existingConfig.teamName}]`) : "";
|
|
103
141
|
const confirmed = await this.confirm({
|
|
104
|
-
message: chalk.bold(`
|
|
142
|
+
message: chalk.bold(`Use project "${existingConfig.projectName}"${envLabel}?`) + teamLabel,
|
|
105
143
|
initialValue: true,
|
|
106
144
|
});
|
|
107
145
|
if (p.isCancel(confirmed))
|
|
108
146
|
return null;
|
|
109
147
|
return confirmed === true;
|
|
110
148
|
}
|
|
111
|
-
async
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (
|
|
117
|
-
return false;
|
|
118
|
-
return confirmed === true;
|
|
119
|
-
}
|
|
120
|
-
async confirmLinkExisting() {
|
|
121
|
-
const link = await this.confirm({
|
|
122
|
-
message: chalk.bold("Link to existing project?"),
|
|
123
|
-
initialValue: true,
|
|
124
|
-
}, false);
|
|
125
|
-
if (p.isCancel(link))
|
|
126
|
-
return false;
|
|
127
|
-
return link === true;
|
|
128
|
-
}
|
|
129
|
-
async confirmLinkToAnotherProject() {
|
|
130
|
-
const link = await this.confirm({
|
|
131
|
-
message: chalk.bold("Link to another project?"),
|
|
132
|
-
initialValue: true,
|
|
133
|
-
}, false);
|
|
134
|
-
if (p.isCancel(link))
|
|
135
|
-
return false;
|
|
136
|
-
return link === true;
|
|
137
|
-
}
|
|
138
|
-
async resolveProjectForDeploy(deployDir) {
|
|
139
|
-
const ok = await this.confirmDeployDirectory(deployDir);
|
|
140
|
-
if (!ok)
|
|
149
|
+
async runLinkFlow() {
|
|
150
|
+
const fromFlags = await this.getConfigFromFlags();
|
|
151
|
+
if (fromFlags)
|
|
152
|
+
return fromFlags;
|
|
153
|
+
const ok = await this.confirmWorkingDirectory();
|
|
154
|
+
if (ok === null || ok === false)
|
|
141
155
|
return null;
|
|
142
|
-
const existingConfig = config.load(
|
|
156
|
+
const existingConfig = config.load();
|
|
143
157
|
if (existingConfig) {
|
|
144
158
|
let confirmed;
|
|
145
159
|
while (true) {
|
|
@@ -149,20 +163,23 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
149
163
|
if (confirmed)
|
|
150
164
|
break;
|
|
151
165
|
const linkAnother = await this.confirmLinkToAnotherProject();
|
|
152
|
-
if (
|
|
166
|
+
if (linkAnother === null)
|
|
153
167
|
return null;
|
|
154
168
|
if (linkAnother) {
|
|
155
169
|
const linkExisting = await this.confirmLinkExisting();
|
|
170
|
+
if (linkExisting === null)
|
|
171
|
+
return null;
|
|
156
172
|
if (!linkExisting) {
|
|
157
|
-
return this.runCreateProjectFlow(
|
|
173
|
+
return this.runCreateProjectFlow();
|
|
158
174
|
}
|
|
159
|
-
return this.runLinkingFlow(
|
|
175
|
+
return this.runLinkingFlow();
|
|
160
176
|
}
|
|
161
177
|
}
|
|
162
178
|
if (existingConfig.environmentId) {
|
|
163
179
|
return {
|
|
164
180
|
projectId: existingConfig.projectId,
|
|
165
181
|
teamId: existingConfig.teamId,
|
|
182
|
+
teamName: existingConfig.teamName,
|
|
166
183
|
projectName: existingConfig.projectName,
|
|
167
184
|
environmentId: existingConfig.environmentId,
|
|
168
185
|
environmentName: existingConfig.environmentName,
|
|
@@ -176,17 +193,22 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
176
193
|
environmentId: env.environmentId,
|
|
177
194
|
environmentName: env.environmentName,
|
|
178
195
|
};
|
|
179
|
-
config.save(updatedConfig
|
|
196
|
+
config.save(updatedConfig);
|
|
180
197
|
p.note(`Environment "${env.environmentName}" will be used for future deploys.`, undefined, {
|
|
181
198
|
format: (line) => line,
|
|
182
199
|
});
|
|
183
200
|
return updatedConfig;
|
|
184
201
|
}
|
|
202
|
+
const team = await this.resolveTeam();
|
|
203
|
+
if (!team)
|
|
204
|
+
return null;
|
|
185
205
|
const linkExisting = await this.confirmLinkExisting();
|
|
186
|
-
if (
|
|
187
|
-
return
|
|
206
|
+
if (linkExisting === null)
|
|
207
|
+
return null;
|
|
208
|
+
if (linkExisting) {
|
|
209
|
+
return this.runLinkingFlow(team);
|
|
188
210
|
}
|
|
189
|
-
return this.
|
|
211
|
+
return this.runCreateProjectFlow(team);
|
|
190
212
|
}
|
|
191
213
|
async resolveEnvironmentForProject(projectId) {
|
|
192
214
|
const project = await api.projects.get.v1({ projectId });
|
|
@@ -199,9 +221,68 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
199
221
|
return null;
|
|
200
222
|
return { environmentId: environment.id, environmentName: environment.name };
|
|
201
223
|
}
|
|
202
|
-
async
|
|
224
|
+
async getConfigFromFlags() {
|
|
225
|
+
const { projectId, environmentId } = this.flags;
|
|
226
|
+
if (projectId && !environmentId) {
|
|
227
|
+
throw new Error("--environment-id is required when using --project-id.");
|
|
228
|
+
}
|
|
229
|
+
if (!projectId && environmentId) {
|
|
230
|
+
throw new Error("--project-id is required when using --environment-id.");
|
|
231
|
+
}
|
|
232
|
+
if (projectId && environmentId) {
|
|
233
|
+
const project = await api.projects.get.v1({ projectId });
|
|
234
|
+
const environment = project.environments?.find((env) => env.id === environmentId);
|
|
235
|
+
if (!environment) {
|
|
236
|
+
throw new Error(`Environment "${environmentId}" not found in project "${project.name}".`);
|
|
237
|
+
}
|
|
238
|
+
const teams = await api.teams.list.v1();
|
|
239
|
+
const team = teams.find((t) => t.id === project.teamId);
|
|
240
|
+
const resolvedConfig = {
|
|
241
|
+
projectId,
|
|
242
|
+
teamId: project.teamId,
|
|
243
|
+
teamName: team?.name,
|
|
244
|
+
projectName: project.name,
|
|
245
|
+
environmentId,
|
|
246
|
+
environmentName: environment.name,
|
|
247
|
+
};
|
|
248
|
+
config.save(resolvedConfig);
|
|
249
|
+
return resolvedConfig;
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
directoryExists(dir) {
|
|
254
|
+
return existsSync(dir) && statSync(dir).isDirectory();
|
|
255
|
+
}
|
|
256
|
+
detectRuntime() {
|
|
257
|
+
const has = (file) => existsSync(file);
|
|
258
|
+
const read = (file) => {
|
|
259
|
+
try {
|
|
260
|
+
return readFileSync(file, "utf8");
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
return "";
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
if (has("pyproject.toml") || has("requirements.txt") || has("setup.py") || has(".python-version")) {
|
|
267
|
+
return "python3.13";
|
|
268
|
+
}
|
|
269
|
+
if (has("package.json")) {
|
|
270
|
+
const nvmrc = has(".nvmrc") ? (read(".nvmrc").trim().split(/\s/)[0] ?? "") : "";
|
|
271
|
+
const major = nvmrc.replace(/^v/i, "").match(/^(\d+)/)?.[1];
|
|
272
|
+
if (major === "22")
|
|
273
|
+
return "node22";
|
|
274
|
+
return "node24";
|
|
275
|
+
}
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
async runCreateProjectFlow(team) {
|
|
279
|
+
if (!team) {
|
|
280
|
+
team = (await this.resolveTeam()) ?? undefined;
|
|
281
|
+
if (!team)
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
203
284
|
if (this.isNonInteractive() && !this.flags.projectName) {
|
|
204
|
-
throw new Error("--project-name is required when using --
|
|
285
|
+
throw new Error("--project-name is required when using --non-interactive");
|
|
205
286
|
}
|
|
206
287
|
const name = this.flags.projectName ??
|
|
207
288
|
(await p.text({
|
|
@@ -216,34 +297,31 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
216
297
|
},
|
|
217
298
|
}));
|
|
218
299
|
if (p.isCancel(name)) {
|
|
219
|
-
p.cancel("Project name is required.");
|
|
220
300
|
return null;
|
|
221
301
|
}
|
|
222
|
-
const detectedRuntime = this.detectRuntime(
|
|
302
|
+
const detectedRuntime = this.detectRuntime();
|
|
223
303
|
const defaultRuntime = detectedRuntime ?? "node24";
|
|
224
304
|
const runtime = this.isNonInteractive()
|
|
225
305
|
? (this.flags.runtime ?? defaultRuntime)
|
|
226
306
|
: await p.select({
|
|
227
307
|
message: chalk.bold("Runtime"),
|
|
228
|
-
options:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
{ value: "python3.13", label: "Python 3.13" },
|
|
233
|
-
],
|
|
308
|
+
options: RUNTIMES.map((value) => ({
|
|
309
|
+
value,
|
|
310
|
+
label: value === detectedRuntime ? `${RUNTIME_LABELS[value]} (detected)` : RUNTIME_LABELS[value],
|
|
311
|
+
})),
|
|
234
312
|
initialValue: defaultRuntime,
|
|
235
313
|
});
|
|
236
314
|
if (p.isCancel(runtime)) {
|
|
237
|
-
p.cancel("Runtime is required.");
|
|
238
315
|
return null;
|
|
239
316
|
}
|
|
240
|
-
const rootDirectory = await this.promptRootDirectory(
|
|
317
|
+
const rootDirectory = await this.promptRootDirectory();
|
|
241
318
|
const spin = p.spinner();
|
|
242
319
|
spin.start("Creating project...");
|
|
243
320
|
try {
|
|
244
321
|
const projectInput = {
|
|
245
322
|
name,
|
|
246
323
|
runtime,
|
|
324
|
+
teamId: team.id,
|
|
247
325
|
};
|
|
248
326
|
projectInput.rootDirectory = rootDirectory ?? undefined;
|
|
249
327
|
const created = await api.projects.create.v1(projectInput);
|
|
@@ -255,11 +333,12 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
255
333
|
const newConfig = {
|
|
256
334
|
projectId: created.id,
|
|
257
335
|
teamId: created.teamId,
|
|
336
|
+
teamName: team.name,
|
|
258
337
|
projectName: created.name,
|
|
259
338
|
environmentId: productionEnv.id,
|
|
260
339
|
environmentName: productionEnv.name,
|
|
261
340
|
};
|
|
262
|
-
config.save(newConfig
|
|
341
|
+
config.save(newConfig);
|
|
263
342
|
return newConfig;
|
|
264
343
|
}
|
|
265
344
|
catch (error) {
|
|
@@ -267,8 +346,13 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
267
346
|
throw error;
|
|
268
347
|
}
|
|
269
348
|
}
|
|
270
|
-
async runLinkingFlow(
|
|
271
|
-
|
|
349
|
+
async runLinkingFlow(team) {
|
|
350
|
+
if (!team) {
|
|
351
|
+
team = (await this.resolveTeam()) ?? undefined;
|
|
352
|
+
if (!team)
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
const projects = await api.projects.list.v1({ teamId: team.id });
|
|
272
356
|
if (projects.length === 0) {
|
|
273
357
|
throw new Error("No projects found. Create a project in the Alpic dashboard first.");
|
|
274
358
|
}
|
|
@@ -285,15 +369,16 @@ export class ProjectWorkflow extends BaseWorkflow {
|
|
|
285
369
|
const newConfig = {
|
|
286
370
|
projectId: project.id,
|
|
287
371
|
teamId: project.teamId,
|
|
372
|
+
teamName: team.name,
|
|
288
373
|
projectName: project.name,
|
|
289
374
|
environmentId: environment.id,
|
|
290
375
|
environmentName: environment.name,
|
|
291
376
|
};
|
|
292
|
-
config.save(newConfig
|
|
377
|
+
config.save(newConfig);
|
|
293
378
|
p.note(`Linked to project "${project.name}", environment "${environment.name}".`, undefined, {
|
|
294
379
|
format: (line) => line,
|
|
295
380
|
});
|
|
296
381
|
return newConfig;
|
|
297
382
|
}
|
|
298
383
|
}
|
|
299
|
-
//# sourceMappingURL=
|
|
384
|
+
//# 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 {};
|