alpic 0.0.0-dev.gec0fcf0 → 0.0.0-dev.gec642f4
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__/environment-list.e2e.test.js +1 -1
- package/dist/__tests__/environment-list.e2e.test.js.map +1 -1
- package/dist/__tests__/logs.e2e.test.js +6 -6
- package/dist/__tests__/logs.e2e.test.js.map +1 -1
- package/dist/__tests__/mock-api.js +1 -1
- package/dist/__tests__/mock-api.js.map +1 -1
- package/dist/__tests__/utils.js +2 -2
- package/dist/__tests__/utils.js.map +1 -1
- package/dist/commands/deploy.js +68 -52
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/git/connect.js +2 -2
- package/dist/commands/git/connect.js.map +1 -1
- package/dist/commands/git/disconnect.js +2 -2
- package/dist/commands/git/disconnect.js.map +1 -1
- package/dist/commands/link.js.map +1 -1
- package/dist/lib/alpic-command.js +1 -2
- package/dist/lib/alpic-command.js.map +1 -1
- package/dist/lib/audit.js +2 -2
- package/dist/lib/audit.js.map +1 -1
- package/dist/lib/deployment.d.ts +0 -21
- package/dist/lib/deployment.js +9 -58
- package/dist/lib/deployment.js.map +1 -1
- package/dist/lib/link.d.ts +1 -2
- package/dist/lib/link.js +9 -61
- package/dist/lib/link.js.map +1 -1
- package/dist/lib/project-settings.d.ts +7 -0
- package/dist/lib/project-settings.js +148 -0
- package/dist/lib/project-settings.js.map +1 -0
- package/dist/lib/project-settings.test.d.ts +1 -0
- package/dist/lib/project-settings.test.js +56 -0
- package/dist/lib/project-settings.test.js.map +1 -0
- package/dist/lib/resolve.js +4 -4
- package/dist/lib/resolve.js.map +1 -1
- package/dist/lib/whoami.js +4 -34
- package/dist/lib/whoami.js.map +1 -1
- package/package.json +18 -19
- package/dist/lib/archive.d.ts +0 -7
- package/dist/lib/archive.js +0 -57
- package/dist/lib/archive.js.map +0 -1
- package/dist/lib/config.d.ts +0 -12
- package/dist/lib/config.js +0 -32
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/upload.d.ts +0 -1
- package/dist/lib/upload.js +0 -13
- package/dist/lib/upload.js.map +0 -1
- package/dist/types.d.ts +0 -8
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { transportSchema } from "@alpic-ai/api";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
/**
|
|
6
|
+
* Deliberate duplicate of the server-side transport/alpic.json detection in
|
|
7
|
+
* `backends/marketplace` (`scm/transport-detection.ts` + `projects/project-settings.service.ts`).
|
|
8
|
+
* The CLI runs it locally so the deploy endpoint can skip downloading + extracting the uploaded
|
|
9
|
+
* archive just to detect these settings.
|
|
10
|
+
*
|
|
11
|
+
* If keeping them in sync becomes a maintenance burden, promote this into a shared published package
|
|
12
|
+
|
|
13
|
+
*/
|
|
14
|
+
const AlpicJsonSchema = z.object({
|
|
15
|
+
transportType: transportSchema.optional(),
|
|
16
|
+
buildOutputDir: z.string().optional(),
|
|
17
|
+
installCommand: z.string().optional(),
|
|
18
|
+
buildCommand: z.string().optional(),
|
|
19
|
+
startCommand: z.string().optional(),
|
|
20
|
+
});
|
|
21
|
+
const TRANSPORT_ALIASES = {
|
|
22
|
+
http: "streamablehttp",
|
|
23
|
+
"streamable-http": "streamablehttp",
|
|
24
|
+
streamablehttp: "streamablehttp",
|
|
25
|
+
};
|
|
26
|
+
function normalizeTransport(transport) {
|
|
27
|
+
const lowercased = transport.toLowerCase();
|
|
28
|
+
const normalized = TRANSPORT_ALIASES[lowercased] ?? lowercased;
|
|
29
|
+
const result = transportSchema.safeParse(normalized);
|
|
30
|
+
return result.success ? result.data : null;
|
|
31
|
+
}
|
|
32
|
+
function detectTransportFromXmcpConfig(content) {
|
|
33
|
+
const lines = content.split("\n");
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
if (/^\s*http:/.test(line)) {
|
|
36
|
+
return "streamablehttp";
|
|
37
|
+
}
|
|
38
|
+
if (/^\s*stdio:/.test(line)) {
|
|
39
|
+
return "stdio";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
function detectTransportFromTsFiles(tsFileContents) {
|
|
45
|
+
const importPattern = /import.*from ['"]@modelcontextprotocol\/sdk\/server\/(stdio|sse|streamableHttp)[.'"].*$/m;
|
|
46
|
+
for (const content of tsFileContents) {
|
|
47
|
+
const match = content.match(importPattern);
|
|
48
|
+
if (match?.[1]) {
|
|
49
|
+
return normalizeTransport(match[1]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
function detectTransportFromPyFiles(pyFileContents) {
|
|
55
|
+
const explicitPattern = /\w+\.(run|http_app)\((?:.*transport=)?["'](stdio|sse|streamable-http|http)["']/;
|
|
56
|
+
const fallbackPattern = /(mcp|server|app)\.run\(/;
|
|
57
|
+
for (const content of pyFileContents) {
|
|
58
|
+
const explicitMatch = content.match(explicitPattern);
|
|
59
|
+
if (explicitMatch?.[2]) {
|
|
60
|
+
return normalizeTransport(explicitMatch[2]);
|
|
61
|
+
}
|
|
62
|
+
if (fallbackPattern.test(content)) {
|
|
63
|
+
return "stdio";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
function detectTransport(input) {
|
|
69
|
+
if (input.alpicJsonTransport) {
|
|
70
|
+
return input.alpicJsonTransport;
|
|
71
|
+
}
|
|
72
|
+
if (input.xmcpConfigContent) {
|
|
73
|
+
const fromXmcpConfig = detectTransportFromXmcpConfig(input.xmcpConfigContent);
|
|
74
|
+
if (fromXmcpConfig) {
|
|
75
|
+
return fromXmcpConfig;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const fromTs = detectTransportFromTsFiles(input.tsFileContents);
|
|
79
|
+
if (fromTs) {
|
|
80
|
+
return fromTs;
|
|
81
|
+
}
|
|
82
|
+
const fromPy = detectTransportFromPyFiles(input.pyFileContents);
|
|
83
|
+
if (fromPy) {
|
|
84
|
+
return fromPy;
|
|
85
|
+
}
|
|
86
|
+
return "streamablehttp";
|
|
87
|
+
}
|
|
88
|
+
function prioritizeEntryPoints(files, entryPointNames) {
|
|
89
|
+
const MAX_FILES = 5;
|
|
90
|
+
const prioritized = [];
|
|
91
|
+
const remaining = [];
|
|
92
|
+
for (const file of files) {
|
|
93
|
+
const fileName = file.split("/").pop() ?? "";
|
|
94
|
+
if (entryPointNames.includes(fileName)) {
|
|
95
|
+
prioritized.push(file);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
remaining.push(file);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
prioritized.sort((pathA, pathB) => pathA.split("/").length - pathB.split("/").length);
|
|
102
|
+
return [...prioritized, ...remaining].slice(0, MAX_FILES);
|
|
103
|
+
}
|
|
104
|
+
export async function detectProjectSettings(rootDir, files) {
|
|
105
|
+
const fetchFile = async (relativePath) => {
|
|
106
|
+
try {
|
|
107
|
+
return await readFile(join(rootDir, relativePath), "utf-8");
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const [xmcpConfigContent, alpicJson] = await Promise.all([
|
|
114
|
+
fetchFile("xmcp.config.ts"),
|
|
115
|
+
fetchFile("alpic.json").then((content) => {
|
|
116
|
+
if (content === null) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const parsed = AlpicJsonSchema.safeParse(JSON.parse(content));
|
|
121
|
+
return parsed.success ? parsed.data : {};
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return {};
|
|
125
|
+
}
|
|
126
|
+
}),
|
|
127
|
+
]);
|
|
128
|
+
const tsFilePaths = prioritizeEntryPoints(files.filter((file) => file.endsWith(".ts") && !file.endsWith(".d.ts")), ["main.ts", "server.ts", "app.ts", "index.ts"]);
|
|
129
|
+
const pyFilePaths = prioritizeEntryPoints(files.filter((file) => file.endsWith(".py")), ["main.py", "app.py", "server.py", "__main__.py"]);
|
|
130
|
+
const [tsFileContents, pyFileContents] = await Promise.all([
|
|
131
|
+
Promise.all(tsFilePaths.map((filePath) => fetchFile(filePath))),
|
|
132
|
+
Promise.all(pyFilePaths.map((filePath) => fetchFile(filePath))),
|
|
133
|
+
]);
|
|
134
|
+
const transport = detectTransport({
|
|
135
|
+
alpicJsonTransport: alpicJson?.transportType,
|
|
136
|
+
xmcpConfigContent,
|
|
137
|
+
tsFileContents: tsFileContents.filter((content) => content !== null),
|
|
138
|
+
pyFileContents: pyFileContents.filter((content) => content !== null),
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
transport,
|
|
142
|
+
buildOutputDir: alpicJson?.buildOutputDir,
|
|
143
|
+
installCommand: alpicJson?.installCommand,
|
|
144
|
+
buildCommand: alpicJson?.buildCommand,
|
|
145
|
+
startCommand: alpicJson?.startCommand,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=project-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-settings.js","sourceRoot":"","sources":["../../src/lib/project-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAkB,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,aAAa,EAAE,eAAe,CAAC,QAAQ,EAAE;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAA8B;IACnD,IAAI,EAAE,gBAAgB;IACtB,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAE/D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAe;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,cAAwB;IAC1D,MAAM,aAAa,GAAG,0FAA0F,CAAC;IAEjH,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,cAAwB;IAC1D,MAAM,eAAe,GAAG,gFAAgF,CAAC;IACzG,MAAM,eAAe,GAAG,yBAAyB,CAAC;IAElD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAKxB;IACC,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,kBAAkB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,6BAA6B,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9E,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe,EAAE,eAAyB;IACvE,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtF,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,KAAe;IAC1E,MAAM,SAAS,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,SAAS,CAAC,gBAAgB,CAAC;QAC3B,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,qBAAqB,CACvC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EACvE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAC/C,CAAC;IACF,MAAM,WAAW,GAAG,qBAAqB,CACvC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC5C,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAClD,CAAC;IAEF,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KAChE,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,kBAAkB,EAAE,SAAS,EAAE,aAAa;QAC5C,iBAAiB;QACjB,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;QACvF,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;KACxF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,cAAc,EAAE,SAAS,EAAE,cAAc;QACzC,cAAc,EAAE,SAAS,EAAE,cAAc;QACzC,YAAY,EAAE,SAAS,EAAE,YAAY;QACrC,YAAY,EAAE,SAAS,EAAE,YAAY;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { detectProjectSettings } from "./project-settings.js";
|
|
6
|
+
describe("detectProjectSettings", () => {
|
|
7
|
+
let rootDir;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
rootDir = mkdtempSync(join(tmpdir(), "alpic-cli-settings-"));
|
|
10
|
+
});
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
rmSync(rootDir, { recursive: true, force: true });
|
|
13
|
+
});
|
|
14
|
+
const write = (relativePath, content) => {
|
|
15
|
+
writeFileSync(join(rootDir, relativePath), content);
|
|
16
|
+
};
|
|
17
|
+
it("defaults transport to streamablehttp when nothing is detectable", async () => {
|
|
18
|
+
const settings = await detectProjectSettings(rootDir, []);
|
|
19
|
+
expect(settings.transport).toBe("streamablehttp");
|
|
20
|
+
expect(settings.installCommand).toBeUndefined();
|
|
21
|
+
});
|
|
22
|
+
it("sources build commands and transport from alpic.json", async () => {
|
|
23
|
+
write("alpic.json", JSON.stringify({
|
|
24
|
+
transportType: "stdio",
|
|
25
|
+
installCommand: "pnpm install",
|
|
26
|
+
buildCommand: "pnpm build",
|
|
27
|
+
buildOutputDir: "out",
|
|
28
|
+
startCommand: "pnpm start",
|
|
29
|
+
}));
|
|
30
|
+
const settings = await detectProjectSettings(rootDir, ["alpic.json"]);
|
|
31
|
+
expect(settings).toEqual({
|
|
32
|
+
transport: "stdio",
|
|
33
|
+
installCommand: "pnpm install",
|
|
34
|
+
buildCommand: "pnpm build",
|
|
35
|
+
buildOutputDir: "out",
|
|
36
|
+
startCommand: "pnpm start",
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
it("alpic.json transport takes precedence over source detection", async () => {
|
|
40
|
+
write("alpic.json", JSON.stringify({ transportType: "stdio" }));
|
|
41
|
+
write("index.ts", `import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";`);
|
|
42
|
+
const settings = await detectProjectSettings(rootDir, ["alpic.json", "index.ts"]);
|
|
43
|
+
expect(settings.transport).toBe("stdio");
|
|
44
|
+
});
|
|
45
|
+
it("detects transport from a TypeScript entrypoint import", async () => {
|
|
46
|
+
write("index.ts", `import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";`);
|
|
47
|
+
const settings = await detectProjectSettings(rootDir, ["index.ts"]);
|
|
48
|
+
expect(settings.transport).toBe("stdio");
|
|
49
|
+
});
|
|
50
|
+
it("detects stdio from a Python entrypoint run() call", async () => {
|
|
51
|
+
write("main.py", "mcp.run()\n");
|
|
52
|
+
const settings = await detectProjectSettings(rootDir, ["main.py"]);
|
|
53
|
+
expect(settings.transport).toBe("stdio");
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=project-settings.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-settings.test.js","sourceRoot":"","sources":["../../src/lib/project-settings.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/resolve.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Flags } from "@oclif/core";
|
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { api } from "../api.js";
|
|
5
5
|
import { createSpinner, isAgentMode } from "./agent-mode.js";
|
|
6
|
-
import {
|
|
6
|
+
import { alpic } from "./alpic-sdk.js";
|
|
7
7
|
export const projectFlags = {
|
|
8
8
|
"project-id": Flags.string({ description: "The ID of the project", exclusive: ["project-name"] }),
|
|
9
9
|
"project-name": Flags.string({ description: "The name of the project", exclusive: ["project-id"] }),
|
|
@@ -36,7 +36,7 @@ export const resolveProjectId = async (flags, options = {}) => {
|
|
|
36
36
|
return project.id;
|
|
37
37
|
}
|
|
38
38
|
if (!options.skipLocalConfig) {
|
|
39
|
-
const projectId =
|
|
39
|
+
const projectId = alpic.projects.loadConfig()?.projectId;
|
|
40
40
|
if (projectId !== undefined) {
|
|
41
41
|
p.log.info(`Using project id from .alpic config: ${chalk.bold(projectId)}`);
|
|
42
42
|
return projectId;
|
|
@@ -73,7 +73,7 @@ export const resolveEnvironmentId = async (flags, options = {}) => {
|
|
|
73
73
|
projectId = await resolveProjectId({ "project-name": flags["project-name"], "non-interactive": flags["non-interactive"] }, { skipLocalConfig: options.skipLocalConfig });
|
|
74
74
|
}
|
|
75
75
|
if (!projectId && !options.skipLocalConfig) {
|
|
76
|
-
projectId =
|
|
76
|
+
projectId = alpic.projects.loadConfig()?.projectId;
|
|
77
77
|
}
|
|
78
78
|
if (!projectId) {
|
|
79
79
|
throw new Error("Cannot resolve --environment-name without a project context. Use --environment-id directly, or provide --project-id or --project-name.");
|
|
@@ -91,7 +91,7 @@ export const resolveEnvironmentId = async (flags, options = {}) => {
|
|
|
91
91
|
return match.id;
|
|
92
92
|
}
|
|
93
93
|
if (!options.skipLocalConfig) {
|
|
94
|
-
const localConfig =
|
|
94
|
+
const localConfig = alpic.projects.loadConfig();
|
|
95
95
|
const environmentId = localConfig?.environmentId;
|
|
96
96
|
if (environmentId !== undefined) {
|
|
97
97
|
p.log.info(`Using environment id from .alpic config: ${chalk.bold(environmentId)}`);
|
package/dist/lib/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/lib/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/lib/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/whoami.js
CHANGED
|
@@ -1,47 +1,17 @@
|
|
|
1
|
-
import { getOAuthClient } from "@alpic-ai/sdk";
|
|
2
1
|
import chalk from "chalk";
|
|
3
|
-
import {
|
|
2
|
+
import { alpic } from "./alpic-sdk.js";
|
|
4
3
|
export async function getWhoamiInfoMessage() {
|
|
5
|
-
const info =
|
|
6
|
-
if (info ===
|
|
4
|
+
const info = await alpic.whoami();
|
|
5
|
+
if (info.method === "unauthenticated") {
|
|
7
6
|
return "Not logged in. Run `alpic login` or set ALPIC_API_KEY.";
|
|
8
7
|
}
|
|
9
8
|
if (info.method === "api_key") {
|
|
10
9
|
return `Authenticated via API key — Team: ${chalk.green(info.team?.name ?? "unknown")}`;
|
|
11
10
|
}
|
|
12
|
-
let label = chalk.cyan(info.email);
|
|
11
|
+
let label = chalk.cyan(info.email ?? "unknown");
|
|
13
12
|
if (info.name) {
|
|
14
13
|
label = `${chalk.green(info.name)} (${label})`;
|
|
15
14
|
}
|
|
16
15
|
return `Authenticated as ${label}`;
|
|
17
16
|
}
|
|
18
|
-
async function getWhoamiInfoFromApiKey() {
|
|
19
|
-
if (process.env.ALPIC_API_KEY === undefined) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
const team = await getApiKeyTeam();
|
|
23
|
-
return {
|
|
24
|
-
method: "api_key",
|
|
25
|
-
team,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
async function getWhoamiInfoFromOAuth() {
|
|
29
|
-
const token = await getOAuthClient().getValidAccessToken();
|
|
30
|
-
if (!token) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
const userInfo = await getOAuthClient().fetchUserInfo(token);
|
|
34
|
-
if (!userInfo) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
method: "oauth",
|
|
39
|
-
email: userInfo.email ?? "unknown",
|
|
40
|
-
name: userInfo.name,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
async function getApiKeyTeam() {
|
|
44
|
-
const teams = await api.teams.list.v1();
|
|
45
|
-
return teams[0];
|
|
46
|
-
}
|
|
47
17
|
//# sourceMappingURL=whoami.js.map
|
package/dist/lib/whoami.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IAElC,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO,wDAAwD,CAAC;IAClE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,qCAAqC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;IACjD,CAAC;IAED,OAAO,oBAAoB,KAAK,EAAE,CAAC;AACrC,CAAC"}
|
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.gec642f4",
|
|
4
4
|
"description": "The command-line interface for Alpic",
|
|
5
5
|
"homepage": "https://alpic.ai",
|
|
6
6
|
"preferGlobal": true,
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"author": "Alpic",
|
|
26
26
|
"license": "ISC",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@clack/prompts": "^1.
|
|
29
|
-
"@oclif/core": "^4.11.
|
|
30
|
-
"@orpc/client": "^1.14.
|
|
31
|
-
"@orpc/contract": "^1.14.
|
|
32
|
-
"@orpc/openapi-client": "^1.14.
|
|
33
|
-
"@sentry/node": "^10.
|
|
28
|
+
"@clack/prompts": "^1.7.0",
|
|
29
|
+
"@oclif/core": "^4.11.14",
|
|
30
|
+
"@orpc/client": "^1.14.7",
|
|
31
|
+
"@orpc/contract": "^1.14.7",
|
|
32
|
+
"@orpc/openapi-client": "^1.14.7",
|
|
33
|
+
"@sentry/node": "^10.65.0",
|
|
34
34
|
"@t3-oss/env-core": "^0.13.11",
|
|
35
35
|
"@vercel/detect-agent": "^1.2.3",
|
|
36
36
|
"chalk": "^5.6.2",
|
|
@@ -38,31 +38,30 @@
|
|
|
38
38
|
"envfile": "^7.1.0",
|
|
39
39
|
"jwt-decode": "^4.0.0",
|
|
40
40
|
"open": "^11.0.0",
|
|
41
|
-
"posthog-node": "^5.
|
|
41
|
+
"posthog-node": "^5.41.0",
|
|
42
42
|
"semver": "^7.8.5",
|
|
43
|
-
"
|
|
44
|
-
"undici": "^8.5.0",
|
|
43
|
+
"undici": "^6.27.0",
|
|
45
44
|
"zod": "^4.4.3",
|
|
46
|
-
"@alpic-ai/api": "0.0.0-dev.
|
|
47
|
-
"@alpic-ai/sdk": "0.0.0-dev.
|
|
45
|
+
"@alpic-ai/api": "0.0.0-dev.gec642f4",
|
|
46
|
+
"@alpic-ai/sdk": "0.0.0-dev.gec642f4"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
50
|
-
"@orpc/openapi": "^1.14.
|
|
51
|
-
"@orpc/server": "^1.14.
|
|
52
|
-
"@orpc/zod": "^1.14.
|
|
49
|
+
"@orpc/openapi": "^1.14.7",
|
|
50
|
+
"@orpc/server": "^1.14.7",
|
|
51
|
+
"@orpc/zod": "^1.14.7",
|
|
53
52
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
54
53
|
"@types/express": "^5.0.6",
|
|
55
|
-
"@types/node": "^25.9.
|
|
54
|
+
"@types/node": "^25.9.5",
|
|
56
55
|
"@types/semver": "^7.7.1",
|
|
57
56
|
"express": "^5.2.1",
|
|
58
57
|
"jsdom": "^29.1.1",
|
|
59
58
|
"node-pty": "1.1.0",
|
|
60
|
-
"pipenet": "1.4.
|
|
59
|
+
"pipenet": "1.4.2",
|
|
61
60
|
"selfsigned": "^5.5.0",
|
|
62
61
|
"shx": "^0.4.0",
|
|
63
62
|
"ts-node": "^10.9.2",
|
|
64
63
|
"typescript": "^6.0.3",
|
|
65
|
-
"vitest": "^4.1.
|
|
64
|
+
"vitest": "^4.1.10"
|
|
66
65
|
},
|
|
67
66
|
"bin": {
|
|
68
67
|
"alpic": "bin/run.js"
|
|
@@ -82,7 +81,7 @@
|
|
|
82
81
|
"test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format && pnpm run test:pack",
|
|
83
82
|
"test:unit": "vitest run",
|
|
84
83
|
"test:format": "biome check --error-on-warnings .",
|
|
85
|
-
"test:type": "
|
|
84
|
+
"test:type": "tsgo --noEmit",
|
|
86
85
|
"test:pack": "sh scripts/test-pack.sh",
|
|
87
86
|
"update:docs": "claude --add-dir ../../docs --permission-mode acceptEdits -p \"/update-cli-docs\" 2>&1 && pnpm --filter docs run format",
|
|
88
87
|
"publish:npm": "pnpm publish --tag \"${NPM_TAG}\" --access public --no-git-checks"
|
package/dist/lib/archive.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare function ensureGitAvailable(): void;
|
|
2
|
-
export declare function getGitFiles(): string[];
|
|
3
|
-
export declare function getFilesToPack(): string[];
|
|
4
|
-
export declare function createTarArchive(files: string[]): Promise<{
|
|
5
|
-
tmpDir: string;
|
|
6
|
-
archivePath: string;
|
|
7
|
-
}>;
|
package/dist/lib/archive.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
import { existsSync, mkdtempSync, rmSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
import { create as tarCreate } from "tar";
|
|
6
|
-
const GIT_FILES_MAX_BUFFER = 10 * 1024 * 1024;
|
|
7
|
-
function isGitRepository() {
|
|
8
|
-
return existsSync(join(process.cwd(), ".git"));
|
|
9
|
-
}
|
|
10
|
-
export function ensureGitAvailable() {
|
|
11
|
-
try {
|
|
12
|
-
execSync("git --version", { stdio: "ignore" });
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
throw new Error("Git is required to deploy. Please install git and ensure it is available in your PATH.");
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function getGitFiles() {
|
|
19
|
-
const output = execSync("git ls-files -z --cached --others --exclude-standard -- .", {
|
|
20
|
-
encoding: "utf8",
|
|
21
|
-
maxBuffer: GIT_FILES_MAX_BUFFER,
|
|
22
|
-
});
|
|
23
|
-
const files = output.split("\0").filter(Boolean);
|
|
24
|
-
if (files.length === 0) {
|
|
25
|
-
throw new Error("No tracked or untracked files found. Ensure you are in a git repository with files to deploy.");
|
|
26
|
-
}
|
|
27
|
-
return files;
|
|
28
|
-
}
|
|
29
|
-
export function getFilesToPack() {
|
|
30
|
-
if (isGitRepository()) {
|
|
31
|
-
return getGitFiles();
|
|
32
|
-
}
|
|
33
|
-
ensureGitAvailable();
|
|
34
|
-
execSync("git init", { stdio: "ignore" });
|
|
35
|
-
try {
|
|
36
|
-
return getGitFiles();
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
rmSync(join(process.cwd(), ".git"), { recursive: true, force: true });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export async function createTarArchive(files) {
|
|
43
|
-
const tmpDir = mkdtempSync(join(tmpdir(), "alpic-deploy-"));
|
|
44
|
-
const archivePath = join(tmpDir, "source.tar.gz");
|
|
45
|
-
try {
|
|
46
|
-
await tarCreate({
|
|
47
|
-
gzip: true,
|
|
48
|
-
file: archivePath,
|
|
49
|
-
}, files);
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
rmSync(tmpDir, { recursive: true, force: true });
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
return { tmpDir, archivePath };
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=archive.js.map
|
package/dist/lib/archive.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC;AAE1C,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,SAAS,eAAe;IACtB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,2DAA2D,EAAE;QACnF,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,kBAAkB,EAAE,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,SAAS,CACb;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;SAClB,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
|
package/dist/lib/config.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ProjectConfig } from "../types.js";
|
|
2
|
-
export declare const config: {
|
|
3
|
-
load: () => {
|
|
4
|
-
projectId: string;
|
|
5
|
-
teamId: string;
|
|
6
|
-
teamName: string | undefined;
|
|
7
|
-
projectName: string;
|
|
8
|
-
environmentId: string | undefined;
|
|
9
|
-
environmentName: string | undefined;
|
|
10
|
-
} | null;
|
|
11
|
-
save: (projectConfig: ProjectConfig) => void;
|
|
12
|
-
};
|
package/dist/lib/config.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
const getProjectJsonPath = () => join(process.cwd(), ".alpic", "project.json");
|
|
4
|
-
export const config = {
|
|
5
|
-
load: () => {
|
|
6
|
-
const path = getProjectJsonPath();
|
|
7
|
-
if (!existsSync(path)) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
let raw;
|
|
11
|
-
try {
|
|
12
|
-
raw = JSON.parse(readFileSync(path, "utf8"));
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
throw new Error(`Failed to load project config: ${error.message}`);
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
projectId: raw.projectId,
|
|
19
|
-
teamId: raw.teamId,
|
|
20
|
-
teamName: raw.teamName,
|
|
21
|
-
projectName: raw.projectName ?? raw.projectId,
|
|
22
|
-
environmentId: raw.environmentId,
|
|
23
|
-
environmentName: raw.environmentName,
|
|
24
|
-
};
|
|
25
|
-
},
|
|
26
|
-
save: (projectConfig) => {
|
|
27
|
-
const path = getProjectJsonPath();
|
|
28
|
-
mkdirSync(join(process.cwd(), ".alpic"), { recursive: true });
|
|
29
|
-
writeFileSync(path, JSON.stringify(projectConfig, null, 2));
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,GAAG,EAAE;QACT,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAmE,CAAC;QACxE,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAG1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS;YAC7C,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,aAA4B,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC"}
|
package/dist/lib/upload.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function uploadToPresignedUrl(uploadUrl: string, buffer: Buffer): Promise<void>;
|
package/dist/lib/upload.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export async function uploadToPresignedUrl(uploadUrl, buffer) {
|
|
2
|
-
const res = await fetch(uploadUrl, {
|
|
3
|
-
method: "PUT",
|
|
4
|
-
headers: {
|
|
5
|
-
"Content-Type": "application/gzip",
|
|
6
|
-
},
|
|
7
|
-
body: new Uint8Array(buffer),
|
|
8
|
-
});
|
|
9
|
-
if (!res.ok) {
|
|
10
|
-
throw new Error(`Upload failed: ${res.status} ${res.statusText}`);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=upload.js.map
|
package/dist/lib/upload.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,MAAc;IAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;QACjC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
DELETED
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|