alpic 1.142.1 → 1.142.2
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__/alpic-command.test.js +8 -4
- package/dist/__tests__/alpic-command.test.js.map +1 -1
- package/dist/__tests__/auth.e2e.test.js +3 -1
- package/dist/__tests__/auth.e2e.test.js.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +2 -21
- package/dist/api.js.map +1 -1
- package/dist/commands/login.js +7 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/tunnel.js +27 -111
- package/dist/commands/tunnel.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/lib/alpic-command.js +5 -3
- package/dist/lib/alpic-command.js.map +1 -1
- package/dist/lib/alpic-sdk.d.ts +2 -0
- package/dist/lib/alpic-sdk.js +9 -0
- package/dist/lib/alpic-sdk.js.map +1 -0
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/{auth/whoami.js → whoami.js} +2 -2
- package/dist/lib/whoami.js.map +1 -0
- package/package.json +12 -15
- package/dist/lib/auth/auth.d.ts +0 -5
- package/dist/lib/auth/auth.js +0 -50
- package/dist/lib/auth/auth.js.map +0 -1
- package/dist/lib/auth/oauth/client.d.ts +0 -28
- package/dist/lib/auth/oauth/client.js +0 -116
- package/dist/lib/auth/oauth/client.js.map +0 -1
- package/dist/lib/auth/oauth/constants.d.ts +0 -2
- package/dist/lib/auth/oauth/constants.js +0 -3
- package/dist/lib/auth/oauth/constants.js.map +0 -1
- package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
- package/dist/lib/auth/oauth/server/assets/authorize.html +0 -234
- package/dist/lib/auth/oauth/server/assets/callback.html +0 -88
- package/dist/lib/auth/oauth/server/index.d.ts +0 -9
- package/dist/lib/auth/oauth/server/index.js +0 -128
- package/dist/lib/auth/oauth/server/index.js.map +0 -1
- package/dist/lib/auth/whoami.js.map +0 -1
- package/dist/lib/global-store.d.ts +0 -28
- package/dist/lib/global-store.js +0 -76
- package/dist/lib/global-store.js.map +0 -1
- package/dist/lib/vendor/pipenet.d.ts +0 -1
- package/dist/lib/vendor/pipenet.js +0 -16877
- package/dist/lib/vendor/pipenet.js.LEGAL.txt +0 -17
- package/dist/lib/vendor/pipenet.js.map +0 -7
- /package/dist/lib/{auth/whoami.d.ts → whoami.d.ts} +0 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
2
|
const mockIsAuthenticated = vi.fn();
|
|
3
3
|
const mockOauthLogin = vi.fn();
|
|
4
|
-
vi.mock("../lib/
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
vi.mock("../lib/alpic-sdk.js", () => ({
|
|
5
|
+
alpic: {
|
|
6
|
+
auth: {
|
|
7
|
+
isAuthenticated: () => mockIsAuthenticated(),
|
|
8
|
+
login: () => mockOauthLogin(),
|
|
9
|
+
},
|
|
10
|
+
},
|
|
7
11
|
}));
|
|
8
12
|
// Must import after vi.mock so the mock is in place
|
|
9
13
|
const { AlpicCommand } = await import("../lib/alpic-command.js");
|
|
@@ -26,7 +30,7 @@ describe("ensureAuthenticated", () => {
|
|
|
26
30
|
});
|
|
27
31
|
it("triggers login flow when not authenticated in interactive mode", async () => {
|
|
28
32
|
mockIsAuthenticated.mockResolvedValue(false);
|
|
29
|
-
mockOauthLogin.mockResolvedValue(
|
|
33
|
+
mockOauthLogin.mockResolvedValue({ sub: "user-sub-123" });
|
|
30
34
|
const command = new TestCommand([], {});
|
|
31
35
|
await command.ensureAuthenticated({ "non-interactive": false });
|
|
32
36
|
expect(mockOauthLogin).toHaveBeenCalled();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpic-command.test.js","sourceRoot":"","sources":["../../src/__tests__/alpic-command.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE/B,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,eAAe,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;
|
|
1
|
+
{"version":3,"file":"alpic-command.test.js","sourceRoot":"","sources":["../../src/__tests__/alpic-command.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE/B,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,eAAe,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;YAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;SAC9B;KACF;CACF,CAAC,CAAC,CAAC;AAEJ,oDAAoD;AACpD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAEjE,MAAM,WAAY,SAAQ,YAAY;IACpC,MAAM,CAAU,EAAE,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;;AAGH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,EAAW,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7C,cAAc,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,EAAW,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,EAAW,CAAC,CAAC;QAEjD,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAEzF,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
4
|
-
|
|
4
|
+
// Constants moved to @alpic-ai/sdk (not re-exported); inlined here to avoid dep on internals
|
|
5
|
+
const LOOPBACK_HOST = "127.0.0.1";
|
|
6
|
+
const LOOPBACK_PORT = 38472;
|
|
5
7
|
import { MockApiServer } from "./mock-api.js";
|
|
6
8
|
import { cliSession, createOAuthEnv, setupTestDirectory } from "./utils.js";
|
|
7
9
|
describe("alpic login, logout, whoami (E2E)", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/auth.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE1F,
|
|
1
|
+
{"version":3,"file":"auth.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/auth.e2e.test.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
package/dist/api.js
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { ResponseValidationPlugin } from "@orpc/contract/plugins";
|
|
4
|
-
import { OpenAPILink } from "@orpc/openapi-client/fetch";
|
|
5
|
-
import { env } from "./env.js";
|
|
6
|
-
import { getApiToken } from "./lib/auth/auth.js";
|
|
7
|
-
const link = new OpenAPILink(contract, {
|
|
8
|
-
url: env.ALPIC_API_BASE_URL,
|
|
9
|
-
headers: async ({ context }) => {
|
|
10
|
-
const headers = context.request?.headers || {};
|
|
11
|
-
if (!headers.Authorization) {
|
|
12
|
-
const token = await getApiToken();
|
|
13
|
-
if (token) {
|
|
14
|
-
headers.Authorization = `Bearer ${token}`;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return headers;
|
|
18
|
-
},
|
|
19
|
-
plugins: [new ResponseValidationPlugin(contract)],
|
|
20
|
-
});
|
|
21
|
-
export const api = createORPCClient(link);
|
|
1
|
+
import { alpic } from "./lib/alpic-sdk.js";
|
|
2
|
+
export const api = alpic.api;
|
|
22
3
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,CAAC,MAAM,GAAG,GAA0C,KAAK,CAAC,GAAG,CAAC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
import { AlpicCommand } from "../lib/alpic-command.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { getWhoamiInfoMessage } from "../lib/auth/whoami.js";
|
|
4
|
+
import { alpic } from "../lib/alpic-sdk.js";
|
|
5
|
+
import { getWhoamiInfoMessage } from "../lib/whoami.js";
|
|
6
6
|
export class Login extends AlpicCommand {
|
|
7
7
|
static description = "Log in to Alpic (opens browser, stores tokens)";
|
|
8
8
|
static examples = ["<%= config.bin %> login"];
|
|
9
9
|
async run() {
|
|
10
10
|
await this.parse(Login);
|
|
11
11
|
p.intro("Log in to Alpic");
|
|
12
|
-
const token = await
|
|
12
|
+
const token = await alpic.auth.getValidAccessToken();
|
|
13
13
|
if (token) {
|
|
14
14
|
p.outro("Already logged in.");
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
await
|
|
17
|
+
await alpic.auth.login({
|
|
18
|
+
onLoginUrl: (url) => p.log.message(`Opening browser to log in…\n\nIf the browser does not open, copy this URL: ${chalk.cyan(url)}`),
|
|
19
|
+
});
|
|
18
20
|
p.outro(await getWhoamiInfoMessage());
|
|
19
21
|
}
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACrB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,8EAA8E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SACjH,CAAC,CAAC;QAEH,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { globalStore } from "@alpic-ai/sdk";
|
|
1
2
|
import * as p from "@clack/prompts";
|
|
2
3
|
import { AlpicCommand } from "../lib/alpic-command.js";
|
|
3
|
-
import { globalStore } from "../lib/global-store.js";
|
|
4
4
|
export class Logout extends AlpicCommand {
|
|
5
5
|
static description = "Log out from Alpic (removes stored OAuth credentials)";
|
|
6
6
|
static examples = ["<%= config.bin %> logout"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,uDAAuD,CAAC;IAEtF,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE9B,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAE/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAEhD,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC"}
|
package/dist/commands/tunnel.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import { Flags } from "@oclif/core";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
-
import { api } from "../api.js";
|
|
5
4
|
import { AlpicCommand } from "../lib/alpic-command.js";
|
|
6
|
-
import {
|
|
7
|
-
import { getOAuthClient } from "../lib/auth/oauth/client.js";
|
|
8
|
-
import { pipenet } from "../lib/vendor/pipenet.js";
|
|
5
|
+
import { alpic } from "../lib/alpic-sdk.js";
|
|
9
6
|
export class Tunnel extends AlpicCommand {
|
|
10
7
|
static description = "Expose a local server to the internet through an Alpic tunnel";
|
|
11
8
|
static examples = ["<%= config.bin %> tunnel --port 3000"];
|
|
@@ -23,20 +20,18 @@ export class Tunnel extends AlpicCommand {
|
|
|
23
20
|
async run() {
|
|
24
21
|
const { flags } = await this.parse(Tunnel);
|
|
25
22
|
const isPlain = flags.plain;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!token) {
|
|
39
|
-
throw new Error("Cannot get valid access token");
|
|
23
|
+
// Authenticate before opening (tunnel.open requires a token) so we control the
|
|
24
|
+
// login messaging. Check the OAuth token specifically (not isAuthenticated):
|
|
25
|
+
// tunnels require user OAuth, and an ALPIC_API_KEY alone cannot open one.
|
|
26
|
+
if (!(await alpic.auth.getValidAccessToken())) {
|
|
27
|
+
const loginMsg = "You need to be logged in to use the Alpic tunnel";
|
|
28
|
+
isPlain ? console.log(loginMsg) : p.log.step(loginMsg);
|
|
29
|
+
await alpic.auth.login({
|
|
30
|
+
onLoginUrl: (url) => {
|
|
31
|
+
const msg = `Opening browser to log in: ${url}`;
|
|
32
|
+
isPlain ? console.log(msg) : p.log.step(msg);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
40
35
|
}
|
|
41
36
|
let spinner;
|
|
42
37
|
const intro = "Opening tunnel...";
|
|
@@ -47,59 +42,18 @@ export class Tunnel extends AlpicCommand {
|
|
|
47
42
|
spinner = this.spinner();
|
|
48
43
|
spinner.start(intro);
|
|
49
44
|
}
|
|
50
|
-
let
|
|
51
|
-
let tunnelHost;
|
|
52
|
-
let subdomain;
|
|
53
|
-
let proto;
|
|
45
|
+
let handle;
|
|
54
46
|
try {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
request: {
|
|
58
|
-
headers: {
|
|
59
|
-
Authorization: `Bearer ${token?.access_token}`,
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
},
|
|
47
|
+
handle = await alpic.tunnel.open({
|
|
48
|
+
port: flags.port,
|
|
63
49
|
});
|
|
64
|
-
// ALPIC_TUNNEL_HOST points a real ticket at a locally-run tunnel server. It's a dev
|
|
65
|
-
// override for a local (plain-HTTP) server, so default to http regardless of the host;
|
|
66
|
-
// pass an explicit https:// to force TLS.
|
|
67
|
-
const tunnelHostOverride = process.env.ALPIC_TUNNEL_HOST;
|
|
68
|
-
if (tunnelHostOverride) {
|
|
69
|
-
proto = tunnelHostOverride.startsWith("https://") ? "https" : "http";
|
|
70
|
-
tunnelHost = tunnelHostOverride.replace(/^https?:\/\//, "");
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
tunnelHost = ticketInfo.tunnelHost;
|
|
74
|
-
proto = tunnelHost.startsWith("localhost") ? "http" : "https";
|
|
75
|
-
}
|
|
76
|
-
subdomain = ticketInfo.subdomain;
|
|
77
|
-
tunnel = await Promise.race([
|
|
78
|
-
pipenet({
|
|
79
|
-
port: flags.port,
|
|
80
|
-
host: `${proto}://${tunnelHost}`,
|
|
81
|
-
subdomain: subdomain,
|
|
82
|
-
headers: { Authorization: `Bearer ${ticketInfo.ticket}` },
|
|
83
|
-
// Idle before TCP keepalive probes start. Paired with offlineTimeoutMs below.
|
|
84
|
-
keepAliveDelayMs: 30_000,
|
|
85
|
-
// Give-up window once all tunnel sockets are dead — pipenet emits 'close'
|
|
86
|
-
// and our `tunnel.on('close', ...)` exits the CLI.
|
|
87
|
-
offlineTimeoutMs: 30_000,
|
|
88
|
-
}),
|
|
89
|
-
new Promise((_, reject) => {
|
|
90
|
-
const id = setTimeout(() => reject(new Error("Failed to connect to tunnel server")), 10_000);
|
|
91
|
-
id.unref?.(); // don't keep the event loop alive just for this timer
|
|
92
|
-
}),
|
|
93
|
-
]);
|
|
94
50
|
}
|
|
95
51
|
catch (err) {
|
|
96
|
-
// Stop the spinner before the error propagates so the base class's p.cancel()
|
|
97
|
-
// can render cleanly instead of colliding with the spinner's render loop.
|
|
98
52
|
spinner?.stop(intro);
|
|
99
53
|
throw err;
|
|
100
54
|
}
|
|
101
|
-
const url =
|
|
102
|
-
const message = `Forwarding: ${
|
|
55
|
+
const url = handle.url;
|
|
56
|
+
const message = `Forwarding: ${url} -> http://localhost:${flags.port}`;
|
|
103
57
|
if (isPlain) {
|
|
104
58
|
console.log(message);
|
|
105
59
|
}
|
|
@@ -132,31 +86,33 @@ export class Tunnel extends AlpicCommand {
|
|
|
132
86
|
await new Promise((resolve, reject) => {
|
|
133
87
|
let closing = false;
|
|
134
88
|
let lastError;
|
|
135
|
-
let lastRequestAt = 0;
|
|
136
89
|
const shutdown = () => {
|
|
137
90
|
if (closing) {
|
|
138
91
|
process.exit(0);
|
|
139
92
|
}
|
|
140
93
|
closing = true;
|
|
141
|
-
|
|
94
|
+
handle.close();
|
|
142
95
|
resolve();
|
|
143
96
|
};
|
|
144
97
|
process.on("SIGINT", shutdown);
|
|
145
98
|
process.on("SIGTERM", shutdown);
|
|
146
|
-
|
|
147
|
-
lastRequestAt = Date.now();
|
|
99
|
+
handle.on("request", (req) => {
|
|
148
100
|
const message = `${req.method} ${req.path}`;
|
|
149
101
|
isPlain ? console.log(message) : pushActivity(message);
|
|
150
102
|
});
|
|
151
|
-
|
|
103
|
+
handle.on("error", (err) => {
|
|
152
104
|
lastError = err;
|
|
153
105
|
const message = err.message;
|
|
154
106
|
isPlain ? console.error(message) : pushActivity(chalk.red(message));
|
|
155
107
|
});
|
|
156
108
|
// If the tunnel dies without a user-initiated shutdown, surface the
|
|
157
109
|
// captured error so it reaches `catch` (and telemetry) instead of
|
|
158
|
-
// silently exiting 0.
|
|
159
|
-
|
|
110
|
+
// silently exiting 0. The SDK reports `displaced` when a newer tunnel takes over.
|
|
111
|
+
handle.on("close", (info) => {
|
|
112
|
+
if (info?.displaced) {
|
|
113
|
+
const message = "Tunnel closed: a new tunnel was opened for this account";
|
|
114
|
+
isPlain ? console.log(message) : pushActivity(message);
|
|
115
|
+
}
|
|
160
116
|
if (!closing && lastError) {
|
|
161
117
|
reject(lastError);
|
|
162
118
|
}
|
|
@@ -164,46 +120,6 @@ export class Tunnel extends AlpicCommand {
|
|
|
164
120
|
resolve();
|
|
165
121
|
}
|
|
166
122
|
});
|
|
167
|
-
// Detect being displaced by a newer tunnel. When another `alpic tunnel` takes over
|
|
168
|
-
// this account's subdomain, the server closes our tunnel and rejects our
|
|
169
|
-
// reconnections (they target a session id that no longer exists), so each one
|
|
170
|
-
// connects and is dropped within milliseconds. pipenet's offlineTimeoutMs never
|
|
171
|
-
// fires for this — it only triggers when the server is unreachable entirely (failed
|
|
172
|
-
// connects emit no "dead"). A "dead" with a prior "open" means a socket reached the
|
|
173
|
-
// server and was dropped, so a sustained storm of them is the takeover signature.
|
|
174
|
-
// Close on it so this CLI stays in sync instead of flapping forever.
|
|
175
|
-
//
|
|
176
|
-
// But normal serving also churns sockets: with the server's small keep-alive pool,
|
|
177
|
-
// most concurrent requests get their tunnel socket destroyed right after serving,
|
|
178
|
-
// emitting a "dead" each. A heavy page load can fire 15+ of these in a few seconds
|
|
179
|
-
// and look identical to a takeover. The discriminator: a real takeover routes all
|
|
180
|
-
// traffic to the new tunnel, so we serve zero requests during the storm. Ignore the
|
|
181
|
-
// storm while requests are still flowing through us.
|
|
182
|
-
const FLAP_WINDOW_MS = 5_000;
|
|
183
|
-
const FLAP_MIN_SPAN_MS = 2_000;
|
|
184
|
-
const FLAP_THRESHOLD = 15;
|
|
185
|
-
let drops = [];
|
|
186
|
-
let takenOver = false;
|
|
187
|
-
tunnel.tunnelCluster?.on("dead", () => {
|
|
188
|
-
if (takenOver || closing) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const now = Date.now();
|
|
192
|
-
// Still serving requests → we own the subdomain, this is churn, not a takeover.
|
|
193
|
-
if (now - lastRequestAt < FLAP_WINDOW_MS) {
|
|
194
|
-
drops = [];
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
drops.push(now);
|
|
198
|
-
drops = drops.filter((at) => now - at < FLAP_WINDOW_MS);
|
|
199
|
-
const oldest = drops[0] ?? now;
|
|
200
|
-
if (drops.length >= FLAP_THRESHOLD && now - oldest >= FLAP_MIN_SPAN_MS) {
|
|
201
|
-
takenOver = true;
|
|
202
|
-
const message = "Tunnel closed: a new tunnel was opened for this account";
|
|
203
|
-
isPlain ? console.log(message) : pushActivity(message);
|
|
204
|
-
tunnel.close();
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
123
|
});
|
|
208
124
|
const outro = "Tunnel closed";
|
|
209
125
|
if (isPlain) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/commands/tunnel.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":"tunnel.js","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import { AlpicCommand } from "../lib/alpic-command.js";
|
|
3
|
-
import { getWhoamiInfoMessage } from "../lib/
|
|
3
|
+
import { getWhoamiInfoMessage } from "../lib/whoami.js";
|
|
4
4
|
export class Whoami extends AlpicCommand {
|
|
5
5
|
static description = "Show the current Alpic identity (API key or logged-in user)";
|
|
6
6
|
static examples = ["<%= config.bin %> whoami"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,6DAA6D,CAAC;IAE5F,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE1C,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import * as p from "@clack/prompts";
|
|
|
2
2
|
import { Command, Errors, Flags } from "@oclif/core";
|
|
3
3
|
import { ORPCError } from "@orpc/client";
|
|
4
4
|
import { createSpinner } from "./agent-mode.js";
|
|
5
|
-
import {
|
|
5
|
+
import { alpic } from "./alpic-sdk.js";
|
|
6
6
|
import { config } from "./config.js";
|
|
7
7
|
export class AlpicCommand extends Command {
|
|
8
8
|
static baseFlags = {
|
|
@@ -25,12 +25,14 @@ export class AlpicCommand extends Command {
|
|
|
25
25
|
this.exitWithErrorMessage(String(error), error);
|
|
26
26
|
}
|
|
27
27
|
async ensureAuthenticated(flags) {
|
|
28
|
-
if (!(await isAuthenticated())) {
|
|
28
|
+
if (!(await alpic.auth.isAuthenticated())) {
|
|
29
29
|
if (flags["non-interactive"]) {
|
|
30
30
|
this.exitWithErrorMessage("Not authenticated. Set ALPIC_API_KEY or run `alpic login` interactively.");
|
|
31
31
|
}
|
|
32
32
|
p.log.warn("Not authenticated. Starting login…");
|
|
33
|
-
await
|
|
33
|
+
await alpic.auth.login({
|
|
34
|
+
onLoginUrl: (url) => p.log.message(`Opening browser to log in…\n\nIf the browser does not open, copy this URL: ${url}`),
|
|
35
|
+
});
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
spinner() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpic-command.js","sourceRoot":"","sources":["../../src/lib/alpic-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"alpic-command.js","sourceRoot":"","sources":["../../src/lib/alpic-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAgB,YAAa,SAAQ,OAAO;IAChD,MAAM,CAAU,SAAS,GAAG;QAC1B,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8BAA8B;YAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;SAC/B,CAAC;KACH,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,KAAc;QACjC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,IAAI,OAAO,GAAG,gDAAgD,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9E,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,OAAO,IAAI,qFAAqF,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAsC;QAC9D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,0EAA0E,CAAC,CAAC;YACxG,CAAC;YACD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,8EAA8E,GAAG,EAAE,CAAC;aACrG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAES,OAAO;QACf,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAES,oBAAoB,CAAC,OAAe,EAAE,KAAe;QAC7D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,MAAM,SAAS,CAAC;IAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Alpic } from "@alpic-ai/sdk";
|
|
2
|
+
import { aliasMachineToUser } from "./telemetry.js";
|
|
3
|
+
export const alpic = new Alpic();
|
|
4
|
+
// The SDK is telemetry-free; the CLI owns transport. Alias the machine to the
|
|
5
|
+
// user on every authentication (explicit login + auto-login from any command).
|
|
6
|
+
alpic.auth.on("authenticated", ({ sub }) => {
|
|
7
|
+
void aliasMachineToUser(sub);
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=alpic-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alpic-sdk.js","sourceRoot":"","sources":["../../src/lib/alpic-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAEjC,8EAA8E;AAC9E,+EAA+E;AAC/E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACzC,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC"}
|
package/dist/lib/telemetry.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
+
import { globalStore } from "@alpic-ai/sdk";
|
|
2
3
|
import ci from "ci-info";
|
|
3
4
|
import posthog from "../posthog.js";
|
|
4
5
|
import { initSentry, Sentry } from "../sentry.js";
|
|
5
|
-
import { globalStore } from "./global-store.js";
|
|
6
6
|
const ENV_TELEMETRY_DISABLED = "ALPIC_TELEMETRY_DISABLED";
|
|
7
7
|
const ENV_TELEMETRY_DEBUG = "ALPIC_TELEMETRY_DEBUG";
|
|
8
8
|
const ENV_DO_NOT_TRACK = "DO_NOT_TRACK";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { getOAuthClient } from "@alpic-ai/sdk";
|
|
1
2
|
import chalk from "chalk";
|
|
2
|
-
import { api } from "
|
|
3
|
-
import { getOAuthClient } from "./oauth/client.js";
|
|
3
|
+
import { api } from "../api.js";
|
|
4
4
|
export async function getWhoamiInfoMessage() {
|
|
5
5
|
const info = (await getWhoamiInfoFromApiKey()) ?? (await getWhoamiInfoFromOAuth());
|
|
6
6
|
if (info === null) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAahC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,CAAC,MAAM,uBAAuB,EAAE,CAAC,IAAI,CAAC,MAAM,sBAAsB,EAAE,CAAC,CAAC;IAEnF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,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,CAAC,CAAC;IACnC,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;AAED,KAAK,UAAU,uBAAuB;IACpC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;IACnC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,SAAS;QAClC,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alpic",
|
|
3
|
-
"version": "1.142.
|
|
3
|
+
"version": "1.142.2",
|
|
4
4
|
"description": "The command-line interface for Alpic",
|
|
5
5
|
"homepage": "https://alpic.ai",
|
|
6
6
|
"preferGlobal": true,
|
|
@@ -25,27 +25,26 @@
|
|
|
25
25
|
"author": "Alpic",
|
|
26
26
|
"license": "ISC",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@clack/prompts": "^1.
|
|
29
|
-
"@oclif/core": "^4.11.
|
|
28
|
+
"@clack/prompts": "^1.6.0",
|
|
29
|
+
"@oclif/core": "^4.11.8",
|
|
30
30
|
"@orpc/client": "^1.14.6",
|
|
31
31
|
"@orpc/contract": "^1.14.6",
|
|
32
32
|
"@orpc/openapi-client": "^1.14.6",
|
|
33
|
-
"@sentry/node": "^10.
|
|
33
|
+
"@sentry/node": "^10.59.0",
|
|
34
34
|
"@t3-oss/env-core": "^0.13.11",
|
|
35
35
|
"@vercel/detect-agent": "^1.2.3",
|
|
36
36
|
"chalk": "^5.6.2",
|
|
37
37
|
"ci-info": "^4.4.0",
|
|
38
|
-
"env-paths": "^4.0.0",
|
|
39
38
|
"envfile": "^7.1.0",
|
|
40
39
|
"jwt-decode": "^4.0.0",
|
|
41
40
|
"open": "^11.0.0",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"semver": "^7.8.4",
|
|
41
|
+
"posthog-node": "^5.38.2",
|
|
42
|
+
"semver": "^7.8.5",
|
|
45
43
|
"tar": "^7.5.16",
|
|
46
|
-
"undici": "^8.
|
|
44
|
+
"undici": "^8.5.0",
|
|
47
45
|
"zod": "^4.4.3",
|
|
48
|
-
"@alpic-ai/api": "1.142.
|
|
46
|
+
"@alpic-ai/api": "1.142.2",
|
|
47
|
+
"@alpic-ai/sdk": "1.142.2"
|
|
49
48
|
},
|
|
50
49
|
"devDependencies": {
|
|
51
50
|
"@orpc/openapi": "^1.14.6",
|
|
@@ -53,9 +52,8 @@
|
|
|
53
52
|
"@orpc/zod": "^1.14.6",
|
|
54
53
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
55
54
|
"@types/express": "^5.0.6",
|
|
56
|
-
"@types/node": "^25.9.
|
|
55
|
+
"@types/node": "^25.9.4",
|
|
57
56
|
"@types/semver": "^7.7.1",
|
|
58
|
-
"esbuild": "^0.28.1",
|
|
59
57
|
"express": "^5.2.1",
|
|
60
58
|
"jsdom": "^29.1.1",
|
|
61
59
|
"node-pty": "1.1.0",
|
|
@@ -64,7 +62,7 @@
|
|
|
64
62
|
"shx": "^0.4.0",
|
|
65
63
|
"ts-node": "^10.9.2",
|
|
66
64
|
"typescript": "^6.0.3",
|
|
67
|
-
"vitest": "^4.1.
|
|
65
|
+
"vitest": "^4.1.9"
|
|
68
66
|
},
|
|
69
67
|
"bin": {
|
|
70
68
|
"alpic": "bin/run.js"
|
|
@@ -79,8 +77,7 @@
|
|
|
79
77
|
}
|
|
80
78
|
},
|
|
81
79
|
"scripts": {
|
|
82
|
-
"build": "shx rm -rf dist && tsc
|
|
83
|
-
"build:assets": "shx cp -r src/lib/auth/oauth/server/assets dist/lib/auth/oauth/server/",
|
|
80
|
+
"build": "shx rm -rf dist && tsc",
|
|
84
81
|
"format": "biome check --write --error-on-warnings .",
|
|
85
82
|
"test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format && pnpm run test:pack",
|
|
86
83
|
"test:unit": "vitest run",
|