@alpic-ai/sdk 0.0.0-dev.ge52b305 → 0.0.0-dev.ge5497b2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/auth-scope.js +1 -0
- package/dist/api/auth-scope.js.map +1 -1
- package/dist/auth/api-key.d.ts +1 -0
- package/dist/auth/api-key.js +23 -0
- package/dist/auth/api-key.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.js +13 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +1 -1
- package/dist/auth/oauth-client.js +6 -5
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/auth/server/assets/authorize.html +43 -1
- package/dist/auth/server/index.js +1 -1
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/store.js +1 -0
- package/dist/auth/store.js.map +1 -1
- package/dist/client.d.ts +6 -0
- package/dist/client.js +11 -4
- package/dist/client.js.map +1 -1
- package/dist/deploy/archive.d.ts +8 -0
- package/dist/deploy/archive.js +61 -0
- package/dist/deploy/archive.js.map +1 -0
- package/dist/deploy/deployments.d.ts +45 -0
- package/dist/deploy/deployments.js +90 -0
- package/dist/deploy/deployments.js.map +1 -0
- package/dist/deploy/poll.d.ts +2 -0
- package/dist/deploy/poll.js +10 -0
- package/dist/deploy/poll.js.map +1 -0
- package/dist/deploy/upload.d.ts +1 -0
- package/dist/deploy/upload.js +13 -0
- package/dist/deploy/upload.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/emitter.js +5 -6
- package/dist/lib/emitter.js.map +1 -1
- package/dist/lib/errors.d.ts +3 -0
- package/dist/lib/errors.js +7 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/project/config.d.ts +10 -0
- package/dist/project/config.js +31 -0
- package/dist/project/config.js.map +1 -0
- package/dist/project/detect-runtime.d.ts +2 -0
- package/dist/project/detect-runtime.js +25 -0
- package/dist/project/detect-runtime.js.map +1 -0
- package/dist/project/projects.d.ts +21 -0
- package/dist/project/projects.js +52 -0
- package/dist/project/projects.js.map +1 -0
- package/dist/tunnel/tunnel.d.ts +1 -2
- package/dist/tunnel/tunnel.js +9 -23
- package/dist/tunnel/tunnel.js.map +1 -1
- package/dist/vendor/pipenet.js +1688 -576
- package/dist/vendor/pipenet.js.map +4 -4
- package/dist/whoami.d.ts +15 -0
- package/dist/whoami.js +13 -0
- package/dist/whoami.js.map +1 -0
- package/package.json +15 -14
package/dist/api/auth-scope.js
CHANGED
|
@@ -2,6 +2,7 @@ import { AUTH_SCOPE_ANY, contract } from "@alpic-ai/api";
|
|
|
2
2
|
import { getContractRouter } from "@orpc/contract";
|
|
3
3
|
export function getAuthScopeForPath(path) {
|
|
4
4
|
const procedure = getContractRouter(contract, path);
|
|
5
|
+
// biome-ignore lint/plugin/no-type-assertion: Contract procedures expose route metadata through the oRPC internal field.
|
|
5
6
|
return procedure?.["~orpc"]?.meta?.authScope ?? AUTH_SCOPE_ANY;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=auth-scope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-scope.js","sourceRoot":"","sources":["../../src/api/auth-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAQnD,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,OAAQ,SAA2C,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,cAAc,CAAC;AACpG,CAAC"}
|
|
1
|
+
{"version":3,"file":"auth-scope.js","sourceRoot":"","sources":["../../src/api/auth-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAQnD,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,yHAAyH;IACzH,OAAQ,SAA2C,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,cAAc,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readApiKeyFromEnv(): string | undefined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UserInputError } from "../lib/errors.js";
|
|
2
|
+
// undici rejects header values outside this set while WHATWG `Headers` accepts C0 controls, so an unchecked key surfaces as an opaque "fetch failed".
|
|
3
|
+
const INVALID_HEADER_CHARACTER = /[^\t\x20-\x7e\x80-\xff]/;
|
|
4
|
+
function formatCodePointAt(value, index) {
|
|
5
|
+
const codePoint = value.codePointAt(index) ?? 0;
|
|
6
|
+
return `U+${codePoint.toString(16).toUpperCase().padStart(4, "0")}`;
|
|
7
|
+
}
|
|
8
|
+
export function readApiKeyFromEnv() {
|
|
9
|
+
const rawApiKey = process.env.ALPIC_API_KEY;
|
|
10
|
+
if (rawApiKey === undefined) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const apiKey = rawApiKey.trim();
|
|
14
|
+
if (apiKey === "") {
|
|
15
|
+
throw new UserInputError("ALPIC_API_KEY is set but empty. Set it to your Alpic API key, or unset it to sign in with `alpic login`.");
|
|
16
|
+
}
|
|
17
|
+
const invalidCharacter = INVALID_HEADER_CHARACTER.exec(apiKey);
|
|
18
|
+
if (invalidCharacter) {
|
|
19
|
+
throw new UserInputError(`ALPIC_API_KEY contains an invalid character (${formatCodePointAt(apiKey, invalidCharacter.index)} at position ${invalidCharacter.index + 1}). Copy the key again from the Alpic dashboard.`);
|
|
20
|
+
}
|
|
21
|
+
return apiKey;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=api-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/auth/api-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,sJAAsJ;AACtJ,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAE3D,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC5C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,cAAc,CACtB,gDAAgD,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,gBAAgB,CAAC,KAAK,GAAG,CAAC,iDAAiD,CAC7L,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export declare class AlpicAuth {
|
|
|
14
14
|
isAuthenticated(): Promise<boolean>;
|
|
15
15
|
getToken(): Promise<string | undefined>;
|
|
16
16
|
getUserAccessToken(): Promise<string | undefined>;
|
|
17
|
+
getUserInfo(): Promise<{
|
|
18
|
+
email: string | undefined;
|
|
19
|
+
name: string | undefined;
|
|
20
|
+
} | null>;
|
|
17
21
|
login(opts?: LoginOptions): Promise<{
|
|
18
22
|
sub: string;
|
|
19
23
|
}>;
|
package/dist/auth/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TypedEventEmitter } from "../lib/emitter.js";
|
|
2
|
+
import { readApiKeyFromEnv } from "./api-key.js";
|
|
2
3
|
import { oauthLogin } from "./login.js";
|
|
3
4
|
import { getOAuthClient } from "./oauth-client.js";
|
|
4
5
|
import { globalStore } from "./store.js";
|
|
@@ -17,11 +18,22 @@ export class AlpicAuth {
|
|
|
17
18
|
return (await this.getToken()) !== undefined;
|
|
18
19
|
}
|
|
19
20
|
async getToken() {
|
|
20
|
-
return
|
|
21
|
+
return readApiKeyFromEnv() ?? (await getOAuthClient().getValidAccessToken())?.access_token;
|
|
21
22
|
}
|
|
22
23
|
async getUserAccessToken() {
|
|
23
24
|
return (await getOAuthClient().getValidAccessToken())?.access_token;
|
|
24
25
|
}
|
|
26
|
+
async getUserInfo() {
|
|
27
|
+
const credentials = await getOAuthClient().getValidAccessToken();
|
|
28
|
+
if (!credentials) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const userInfo = await getOAuthClient().fetchUserInfo(credentials);
|
|
32
|
+
if (!userInfo) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return { email: userInfo.email, name: userInfo.name };
|
|
36
|
+
}
|
|
25
37
|
async login(opts) {
|
|
26
38
|
const result = await oauthLogin(opts);
|
|
27
39
|
this.events.emit("authenticated", { sub: result.sub });
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ3D,MAAM,OAAO,SAAS;IACH,MAAM,GAAG,IAAI,iBAAiB,EAAc,CAAC;IAE9D,EAAE,CAA6B,KAAQ,EAAE,QAA0C;QACjF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAA6B,KAAQ,EAAE,QAA0C;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ3D,MAAM,OAAO,SAAS;IACH,MAAM,GAAG,IAAI,iBAAiB,EAAc,CAAC;IAE9D,EAAE,CAA6B,KAAQ,EAAE,QAA0C;QACjF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAA6B,KAAQ,EAAE,QAA0C;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,iBAAiB,EAAE,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,CAAC,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAmB;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -19,7 +19,7 @@ export declare class OAuthClient {
|
|
|
19
19
|
state: string;
|
|
20
20
|
nonce: string;
|
|
21
21
|
}): Promise<openid.TokenEndpointResponse & openid.TokenEndpointResponseHelpers>;
|
|
22
|
-
getExpiresAt(
|
|
22
|
+
getExpiresAt(expiresInSeconds: number | undefined): number;
|
|
23
23
|
private loadConfig;
|
|
24
24
|
private fetchOAuthProtectedResourceConfig;
|
|
25
25
|
private getConfig;
|
|
@@ -36,7 +36,7 @@ export class OAuthClient {
|
|
|
36
36
|
const refreshed = {
|
|
37
37
|
access_token: response.access_token,
|
|
38
38
|
refresh_token: response.refresh_token ?? credentials.refresh_token,
|
|
39
|
-
expires_at: this.getExpiresAt(response.expires_in
|
|
39
|
+
expires_at: this.getExpiresAt(response.expires_in),
|
|
40
40
|
sub: credentials.sub,
|
|
41
41
|
};
|
|
42
42
|
globalStore.saveCredentials(refreshed);
|
|
@@ -69,8 +69,8 @@ export class OAuthClient {
|
|
|
69
69
|
expectedNonce: nonce,
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
-
getExpiresAt(
|
|
73
|
-
return
|
|
72
|
+
getExpiresAt(expiresInSeconds) {
|
|
73
|
+
return Math.floor(Date.now() / 1000) + (expiresInSeconds ?? 3600);
|
|
74
74
|
}
|
|
75
75
|
async loadConfig() {
|
|
76
76
|
const protectedResourceConfig = await this.fetchOAuthProtectedResourceConfig();
|
|
@@ -82,8 +82,8 @@ export class OAuthClient {
|
|
|
82
82
|
try {
|
|
83
83
|
this.config = await openid.discovery(issuerUrl, env.ALPIC_COGNITO_CLIENT_ID);
|
|
84
84
|
}
|
|
85
|
-
catch {
|
|
86
|
-
throw new Error(
|
|
85
|
+
catch (cause) {
|
|
86
|
+
throw new Error(`Failed to discover OAuth config from ${issuerUrl.href}`, { cause });
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
async fetchOAuthProtectedResourceConfig() {
|
|
@@ -92,6 +92,7 @@ export class OAuthClient {
|
|
|
92
92
|
if (!response.ok) {
|
|
93
93
|
throw new Error(`Failed to load service config from ${baseUrl} (${response.status} ${response.statusText})`);
|
|
94
94
|
}
|
|
95
|
+
// biome-ignore lint/plugin/no-type-assertion: The well-known endpoint returns the OAuth protected-resource document.
|
|
95
96
|
return (await response.json());
|
|
96
97
|
}
|
|
97
98
|
async getConfig() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAU9C,MAAM,OAAO,WAAW;IACd,MAAM,GAAgC,IAAI,CAAC;IACnD,UAAU,CAAgB;IAE1B;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,UAAU,CAAC;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAwB;QAC1C,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,WAAwB;QAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;QAEnG,MAAM,SAAS,GAAgB;YAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa;YAClE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,9 +62,25 @@
|
|
|
62
62
|
.buttons {
|
|
63
63
|
display: flex;
|
|
64
64
|
flex-direction: column;
|
|
65
|
+
align-items: center;
|
|
65
66
|
gap: 12px;
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
.section-label {
|
|
70
|
+
width: 256px;
|
|
71
|
+
text-align: left;
|
|
72
|
+
font-size: 14px;
|
|
73
|
+
font-weight: 500;
|
|
74
|
+
color: var(--midnight);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.section-divider {
|
|
78
|
+
width: 256px;
|
|
79
|
+
border: none;
|
|
80
|
+
border-top: 1px solid rgba(5, 20, 19, 0.15);
|
|
81
|
+
margin: 8px 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
68
84
|
.btn {
|
|
69
85
|
display: flex;
|
|
70
86
|
align-items: center;
|
|
@@ -78,6 +94,7 @@
|
|
|
78
94
|
font-family: "Inter", system-ui, sans-serif;
|
|
79
95
|
font-size: 16px;
|
|
80
96
|
font-weight: 500;
|
|
97
|
+
text-decoration: none;
|
|
81
98
|
cursor: pointer;
|
|
82
99
|
transition: background 0.15s;
|
|
83
100
|
}
|
|
@@ -181,6 +198,7 @@
|
|
|
181
198
|
<h1>Welcome to Alpic</h1>
|
|
182
199
|
<p class="subtitle">Sign in to use Alpic CLI</p>
|
|
183
200
|
<div class="buttons">
|
|
201
|
+
<p class="section-label">For humans</p>
|
|
184
202
|
<button class="btn btn-github" onclick="login('Github', this)" type="button">
|
|
185
203
|
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
186
204
|
<title>GitHub</title>
|
|
@@ -212,10 +230,34 @@
|
|
|
212
230
|
</svg>
|
|
213
231
|
Sign in with SSO
|
|
214
232
|
</button>
|
|
233
|
+
<hr class="section-divider" />
|
|
234
|
+
<p class="section-label">If you’re an agent</p>
|
|
235
|
+
<button class="btn btn-github" onclick="login('AgentID', this)" type="button">
|
|
236
|
+
<svg viewBox="0 0 351 339" xmlns="http://www.w3.org/2000/svg">
|
|
237
|
+
<title>AgentID</title>
|
|
238
|
+
<path
|
|
239
|
+
d="M318.029 88.3407C196.474 115.33 153.48 115.321 33.9244 88.3271C30.6216 87.5814 27.1432 88.9727 25.3284 91.8313L1.24109 129.774C-1.76483 134.509 0.965276 140.798 6.46483 141.898C152.613 171.13 197.678 171.182 343.903 141.835C349.304 140.751 352.064 134.641 349.247 129.907L326.719 92.0479C324.95 89.0744 321.407 87.5907 318.029 88.3407Z"
|
|
240
|
+
/>
|
|
241
|
+
<path
|
|
242
|
+
d="M75.9931 246.6L149.939 311.655C151.973 313.444 151.633 316.969 149.281 318.48L119.141 337.84C117.283 339.034 114.951 338.412 113.933 336.452L70.1276 252.036C68.0779 248.086 72.7553 243.751 75.9931 246.6Z"
|
|
243
|
+
/>
|
|
244
|
+
<path
|
|
245
|
+
d="M274.025 246.6L200.08 311.655C198.046 313.444 198.385 316.969 200.737 318.48L230.877 337.84C232.736 339.034 235.068 338.412 236.085 336.452L279.891 252.036C281.941 248.086 277.263 243.751 274.025 246.6Z"
|
|
246
|
+
/>
|
|
247
|
+
<path
|
|
248
|
+
d="M138.75 198.472L152.436 192.983C155.238 191.918 157.77 191.918 158.574 191.918C164.115 192.126 169.564 192.232 175.009 192.235C180.454 192.232 185.904 192.126 191.444 191.918C192.248 191.918 194.78 191.918 197.583 192.983L211.269 198.472C212.645 199.025 214.082 199.382 215.544 199.448C218.585 199.587 221.733 199.464 224.63 198.811C225.706 198.568 226.728 198.103 227.704 197.545L243.046 188.784C244.81 187.777 246.726 187.138 248.697 186.9L258.276 185.5H259.242H263.556L262.713 190.965L256.679 234.22C255.957 238.31 254.25 242.328 250.443 245.834L187.376 299.258C184.555 301.648 181.107 302.942 177.562 302.942H175.009H172.457C168.911 302.942 165.464 301.648 162.643 299.258L99.5761 245.834C95.7684 242.328 94.0614 238.31 93.3393 234.22L87.3059 190.965L86.4624 185.5H90.7771H91.7429L101.322 186.9C103.293 187.138 105.208 187.777 106.972 188.784L122.314 197.545C123.291 198.103 124.313 198.568 125.389 198.811C128.286 199.464 131.434 199.587 134.474 199.448C135.936 199.382 137.373 199.025 138.75 198.472Z"
|
|
249
|
+
/>
|
|
250
|
+
<path
|
|
251
|
+
d="M102.47 0.847827C205.434 44.796 156.456 42.1015 248.434 1.63153C252.885 -1.09955 258.353 1.88915 259.419 7.69219L269.235 61.1686L270.819 69.7893L263.592 71.8231L263.582 71.8259C190.588 92.3069 165.244 92.0078 86.7576 71.7428L79.1971 69.7905L80.9925 60.8681L91.8401 6.91975C92.9559 1.3706 98.105 -1.55777 102.47 0.847827Z"
|
|
252
|
+
/>
|
|
253
|
+
</svg>
|
|
254
|
+
Sign in with AgentID
|
|
255
|
+
</button>
|
|
256
|
+
<a class="btn btn-sso" href="https://alpic.ai/auth.md" target="_blank" rel="noreferrer">Sign in with auth.md</a>
|
|
215
257
|
</div>
|
|
216
258
|
</div>
|
|
217
259
|
<script>
|
|
218
|
-
|
|
260
|
+
const loaderSvg =
|
|
219
261
|
'<svg class="spinner" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>';
|
|
220
262
|
// biome-ignore lint/correctness/noUnusedVariables: The function is used within the buttons onclick handlers
|
|
221
263
|
function login(provider, btn) {
|
|
@@ -56,7 +56,7 @@ const createCallbackServer = ({ state, nonce, codeVerifier, authorizeUrl, onSucc
|
|
|
56
56
|
const stored = {
|
|
57
57
|
access_token: tokens.access_token,
|
|
58
58
|
refresh_token: tokens.refresh_token,
|
|
59
|
-
expires_at: getOAuthClient().getExpiresAt(tokens.expires_in
|
|
59
|
+
expires_at: getOAuthClient().getExpiresAt(tokens.expires_in),
|
|
60
60
|
sub,
|
|
61
61
|
};
|
|
62
62
|
const msg = "Authentication successful";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/store.js
CHANGED
package/dist/auth/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,WAAW,CAAC;AAejC,MAAM,OAAO,WAAW;IACL,SAAS,CAAS;IAEnC,YAAY,IAA6B;QACvC,MAAM,iBAAiB,GAAG,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACjF,IAAI,CAAC,SAAS,GAAG,iBAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IACjF,CAAC;IAED,cAAc;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAc,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,WAAwB;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAS,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACtE,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAW;YACrB,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;YACrD,SAAS,EAAE;gBACT,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI;aAC9C;SACF,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,sBAAsB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;IAEO,aAAa,CAAI,QAAgB;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,8GAA8G;YAC9G,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,IAAa;QAClD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;YACrD,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAgB;QAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { type AlpicApi } from "./api/client.js";
|
|
2
2
|
import { AlpicAuth } from "./auth/index.js";
|
|
3
|
+
import { Deployments } from "./deploy/deployments.js";
|
|
4
|
+
import { Projects } from "./project/projects.js";
|
|
3
5
|
import { Tunnel } from "./tunnel/tunnel.js";
|
|
6
|
+
import { type WhoamiInfo } from "./whoami.js";
|
|
4
7
|
export declare class Alpic {
|
|
5
8
|
readonly auth: AlpicAuth;
|
|
6
9
|
readonly api: AlpicApi;
|
|
7
10
|
readonly tunnel: Tunnel;
|
|
11
|
+
readonly deployments: Deployments;
|
|
12
|
+
readonly projects: Projects;
|
|
8
13
|
constructor();
|
|
14
|
+
whoami(): Promise<WhoamiInfo>;
|
|
9
15
|
}
|
package/dist/client.js
CHANGED
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { createApiClient } from "./api/client.js";
|
|
2
2
|
import { AlpicAuth } from "./auth/index.js";
|
|
3
|
+
import { Deployments } from "./deploy/deployments.js";
|
|
3
4
|
import { env } from "./env.js";
|
|
5
|
+
import { Projects } from "./project/projects.js";
|
|
4
6
|
import { Tunnel } from "./tunnel/tunnel.js";
|
|
7
|
+
import { whoami } from "./whoami.js";
|
|
5
8
|
export class Alpic {
|
|
6
9
|
auth;
|
|
7
10
|
api;
|
|
8
11
|
tunnel;
|
|
12
|
+
deployments;
|
|
13
|
+
projects;
|
|
9
14
|
constructor() {
|
|
10
15
|
this.auth = new AlpicAuth();
|
|
11
16
|
this.api = createApiClient({
|
|
12
17
|
apiBaseUrl: env.ALPIC_API_BASE_URL,
|
|
13
18
|
auth: this.auth,
|
|
14
19
|
});
|
|
15
|
-
this.tunnel = new Tunnel({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
this.tunnel = new Tunnel({ api: this.api });
|
|
21
|
+
this.deployments = new Deployments({ api: this.api });
|
|
22
|
+
this.projects = new Projects({ api: this.api });
|
|
23
|
+
}
|
|
24
|
+
whoami() {
|
|
25
|
+
return whoami(this.auth, this.api);
|
|
19
26
|
}
|
|
20
27
|
}
|
|
21
28
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAmB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,OAAO,KAAK;IACP,IAAI,CAAY;IAChB,GAAG,CAAW;IACd,MAAM,CAAS;IACf,WAAW,CAAc;IACzB,QAAQ,CAAW;IAE5B;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC;YACzB,UAAU,EAAE,GAAG,CAAC,kBAAkB;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function isExcluded(file: string): boolean;
|
|
2
|
+
export declare function ensureGitAvailable(): void;
|
|
3
|
+
export declare function getGitFiles(): string[];
|
|
4
|
+
export declare function getFilesToPack(): string[];
|
|
5
|
+
export declare function createTarArchive(files: string[]): Promise<{
|
|
6
|
+
tmpDir: string;
|
|
7
|
+
archivePath: string;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
const EXCLUDED_DIRS = new Set(["node_modules", ".venv", "venv", "__pycache__", ".git", "dist"]);
|
|
8
|
+
export function isExcluded(file) {
|
|
9
|
+
return file.split("/").some((segment) => EXCLUDED_DIRS.has(segment));
|
|
10
|
+
}
|
|
11
|
+
function isGitRepository() {
|
|
12
|
+
return existsSync(join(process.cwd(), ".git"));
|
|
13
|
+
}
|
|
14
|
+
export function ensureGitAvailable() {
|
|
15
|
+
try {
|
|
16
|
+
execSync("git --version", { stdio: "ignore" });
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
throw new Error("Git is required to deploy. Please install git and ensure it is available in your PATH.");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function getGitFiles() {
|
|
23
|
+
const output = execSync("git ls-files -z --cached --others --exclude-standard -- .", {
|
|
24
|
+
encoding: "utf8",
|
|
25
|
+
maxBuffer: GIT_FILES_MAX_BUFFER,
|
|
26
|
+
});
|
|
27
|
+
const files = output
|
|
28
|
+
.split("\0")
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.filter((file) => !isExcluded(file));
|
|
31
|
+
if (files.length === 0) {
|
|
32
|
+
throw new Error("No tracked or untracked files found. Ensure you are in a git repository with files to deploy.");
|
|
33
|
+
}
|
|
34
|
+
return files;
|
|
35
|
+
}
|
|
36
|
+
export function getFilesToPack() {
|
|
37
|
+
if (isGitRepository()) {
|
|
38
|
+
return getGitFiles();
|
|
39
|
+
}
|
|
40
|
+
ensureGitAvailable();
|
|
41
|
+
execSync("git init", { stdio: "ignore" });
|
|
42
|
+
try {
|
|
43
|
+
return getGitFiles();
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
rmSync(join(process.cwd(), ".git"), { recursive: true, force: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export async function createTarArchive(files) {
|
|
50
|
+
const tmpDir = mkdtempSync(join(tmpdir(), "alpic-deploy-"));
|
|
51
|
+
const archivePath = join(tmpDir, "source.tar.gz");
|
|
52
|
+
try {
|
|
53
|
+
await tarCreate({ gzip: true, file: archivePath }, files);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
rmSync(tmpDir, { recursive: true, force: true });
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
return { tmpDir, archivePath };
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/deploy/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RouterInput, RouterOutput } from "@alpic-ai/api";
|
|
2
|
+
import type { AlpicApi } from "../api/client.js";
|
|
3
|
+
export type Deployment = RouterOutput["deployments"]["get"]["v1"];
|
|
4
|
+
export type DeploymentStatus = Deployment["status"];
|
|
5
|
+
export type DeploySettings = NonNullable<RouterInput["environments"]["deploy"]["v1"]["settings"]>;
|
|
6
|
+
export type DeployOptions = {
|
|
7
|
+
environmentId: string;
|
|
8
|
+
teamId: string;
|
|
9
|
+
detectSettings?: (files: string[]) => DeploySettings | Promise<DeploySettings>;
|
|
10
|
+
onProgress?: (event: DeployEvent) => void;
|
|
11
|
+
};
|
|
12
|
+
export type DeployResult = {
|
|
13
|
+
deploymentId: string;
|
|
14
|
+
status: DeploymentStatus;
|
|
15
|
+
mcpServerUrl: string;
|
|
16
|
+
domains: string[];
|
|
17
|
+
deploymentPageUrl: string | null;
|
|
18
|
+
elapsedMs: number;
|
|
19
|
+
};
|
|
20
|
+
export type DeployEvent = {
|
|
21
|
+
type: "collecting";
|
|
22
|
+
} | {
|
|
23
|
+
type: "collected";
|
|
24
|
+
fileCount: number;
|
|
25
|
+
} | {
|
|
26
|
+
type: "uploading";
|
|
27
|
+
} | {
|
|
28
|
+
type: "triggering";
|
|
29
|
+
} | {
|
|
30
|
+
type: "deploying";
|
|
31
|
+
status: DeploymentStatus;
|
|
32
|
+
elapsedMs: number;
|
|
33
|
+
deploymentPageUrl: string | null;
|
|
34
|
+
};
|
|
35
|
+
export type DeploymentsDeps = {
|
|
36
|
+
api: AlpicApi;
|
|
37
|
+
};
|
|
38
|
+
export declare class Deployments {
|
|
39
|
+
private readonly api;
|
|
40
|
+
constructor(deps: DeploymentsDeps);
|
|
41
|
+
getLatestForEnvironment(environmentId: string): Promise<Deployment>;
|
|
42
|
+
watch(deploymentId: string): Promise<Deployment>;
|
|
43
|
+
private pollUntilFinal;
|
|
44
|
+
deploy({ environmentId, teamId, detectSettings, onProgress }: DeployOptions): Promise<DeployResult>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { readFileSync, rmSync } from "node:fs";
|
|
2
|
+
import { createTarArchive, getFilesToPack } from "./archive.js";
|
|
3
|
+
import { pollIntervalMs, sleep } from "./poll.js";
|
|
4
|
+
import { uploadToPresignedUrl } from "./upload.js";
|
|
5
|
+
const FINAL_STATUSES = new Set(["deployed", "failed", "canceled"]);
|
|
6
|
+
const TIMEOUT_MS = 15 * 60 * 1000;
|
|
7
|
+
const DEPLOY_POLL_MS = 10_000;
|
|
8
|
+
const WATCH_POLL_MS = 3_000;
|
|
9
|
+
export class Deployments {
|
|
10
|
+
api;
|
|
11
|
+
constructor(deps) {
|
|
12
|
+
this.api = deps.api;
|
|
13
|
+
}
|
|
14
|
+
async getLatestForEnvironment(environmentId) {
|
|
15
|
+
const environment = await this.api.environments.get.v1({ environmentId });
|
|
16
|
+
const deployments = await this.api.deployments.list.v1({
|
|
17
|
+
projectId: environment.projectId,
|
|
18
|
+
environmentId,
|
|
19
|
+
});
|
|
20
|
+
const latest = deployments[0];
|
|
21
|
+
if (!latest) {
|
|
22
|
+
throw new Error(`No deployments found for environment ${environmentId}.`);
|
|
23
|
+
}
|
|
24
|
+
return latest;
|
|
25
|
+
}
|
|
26
|
+
watch(deploymentId) {
|
|
27
|
+
return this.pollUntilFinal(deploymentId, WATCH_POLL_MS);
|
|
28
|
+
}
|
|
29
|
+
async pollUntilFinal(deploymentId, intervalMs) {
|
|
30
|
+
const startedAt = Date.now();
|
|
31
|
+
let current = await this.api.deployments.get.v1({ deploymentId });
|
|
32
|
+
while (!FINAL_STATUSES.has(current.status)) {
|
|
33
|
+
if (Date.now() - startedAt >= TIMEOUT_MS) {
|
|
34
|
+
throw new Error("Deployment did not reach a final state within 15 minutes.");
|
|
35
|
+
}
|
|
36
|
+
await sleep(pollIntervalMs(intervalMs));
|
|
37
|
+
current = await this.api.deployments.get.v1({ deploymentId });
|
|
38
|
+
}
|
|
39
|
+
return current;
|
|
40
|
+
}
|
|
41
|
+
async deploy({ environmentId, teamId, detectSettings, onProgress }) {
|
|
42
|
+
const emit = onProgress ?? (() => { });
|
|
43
|
+
let tmpDir;
|
|
44
|
+
const startedAt = Date.now();
|
|
45
|
+
try {
|
|
46
|
+
emit({ type: "collecting" });
|
|
47
|
+
const files = getFilesToPack();
|
|
48
|
+
emit({ type: "collected", fileCount: files.length });
|
|
49
|
+
const settings = detectSettings ? await detectSettings(files) : undefined;
|
|
50
|
+
const archive = await createTarArchive(files);
|
|
51
|
+
tmpDir = archive.tmpDir;
|
|
52
|
+
const { uploadUrl, token } = await this.api.deployments.uploadArtifact.v1({ teamId });
|
|
53
|
+
emit({ type: "uploading" });
|
|
54
|
+
await uploadToPresignedUrl(uploadUrl, readFileSync(archive.archivePath));
|
|
55
|
+
emit({ type: "triggering" });
|
|
56
|
+
const initial = await this.api.environments.deploy.v1({ environmentId, token, settings });
|
|
57
|
+
let deployment = initial;
|
|
58
|
+
const deploymentPageUrl = deployment.deploymentPageUrl ?? null;
|
|
59
|
+
const emitDeploying = () => emit({ type: "deploying", status: deployment.status, elapsedMs: Date.now() - startedAt, deploymentPageUrl });
|
|
60
|
+
emitDeploying();
|
|
61
|
+
while (deployment.status === "ongoing") {
|
|
62
|
+
if (Date.now() - startedAt >= TIMEOUT_MS) {
|
|
63
|
+
throw new Error(deploymentPageUrl
|
|
64
|
+
? `Deployment aborted after 15 minutes. View status: ${deploymentPageUrl}`
|
|
65
|
+
: "Deployment aborted after 15 minutes.");
|
|
66
|
+
}
|
|
67
|
+
deployment = await this.api.deployments.get.v1({ deploymentId: deployment.id });
|
|
68
|
+
emitDeploying();
|
|
69
|
+
if (deployment.status === "ongoing") {
|
|
70
|
+
await sleep(pollIntervalMs(DEPLOY_POLL_MS));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const environment = await this.api.environments.get.v1({ environmentId });
|
|
74
|
+
return {
|
|
75
|
+
deploymentId: deployment.id,
|
|
76
|
+
status: deployment.status,
|
|
77
|
+
mcpServerUrl: environment.mcpServerUrl,
|
|
78
|
+
domains: environment.domains,
|
|
79
|
+
deploymentPageUrl: deployment.deploymentPageUrl ?? null,
|
|
80
|
+
elapsedMs: Date.now() - startedAt,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
if (tmpDir) {
|
|
85
|
+
rmSync(tmpDir, { recursive: true, force: true });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=deployments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/deploy/deployments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function pollIntervalMs(defaultMs) {
|
|
2
|
+
const override = process.env.ALPIC_POLL_INTERVAL_MS;
|
|
3
|
+
if (override !== undefined) {
|
|
4
|
+
const parsed = Number.parseInt(override, 10);
|
|
5
|
+
return Number.isNaN(parsed) ? defaultMs : parsed;
|
|
6
|
+
}
|
|
7
|
+
return defaultMs;
|
|
8
|
+
}
|
|
9
|
+
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
10
|
+
//# sourceMappingURL=poll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/deploy/poll.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function uploadToPresignedUrl(uploadUrl: string, buffer: Buffer): Promise<void>;
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|