alpic 0.0.0-dev.9867727 → 0.0.0-dev.9bfa9b0
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__/deploy.e2e.test.d.ts +1 -0
- package/dist/__tests__/deploy.e2e.test.js +250 -0
- package/dist/__tests__/deploy.e2e.test.js.map +1 -0
- package/dist/__tests__/fixtures/demo-project/index.d.ts +1 -0
- package/dist/__tests__/fixtures/demo-project/index.js +4 -0
- package/dist/__tests__/fixtures/demo-project/index.js.map +1 -0
- package/dist/__tests__/mock-server.d.ts +22 -0
- package/dist/__tests__/mock-server.js +353 -0
- package/dist/__tests__/mock-server.js.map +1 -0
- package/dist/__tests__/utils.d.ts +29 -0
- package/dist/__tests__/utils.js +87 -0
- package/dist/__tests__/utils.js.map +1 -0
- package/dist/api.d.ts +3 -15
- package/dist/api.js +11 -54
- package/dist/api.js.map +1 -1
- package/dist/commands/deploy.js +8 -8
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/telemetry/disable.d.ts +5 -0
- package/dist/commands/telemetry/disable.js +14 -0
- package/dist/commands/telemetry/disable.js.map +1 -0
- package/dist/commands/telemetry/enable.d.ts +5 -0
- package/dist/commands/telemetry/enable.js +13 -0
- package/dist/commands/telemetry/enable.js.map +1 -0
- package/dist/commands/telemetry/status.d.ts +5 -0
- package/dist/commands/telemetry/status.js +19 -0
- package/dist/commands/telemetry/status.js.map +1 -0
- package/dist/lib/deployment.d.ts +13 -3
- package/dist/lib/deployment.js +2 -2
- package/dist/lib/deployment.js.map +1 -1
- package/dist/lib/global-config.d.ts +9 -0
- package/dist/lib/global-config.js +48 -0
- package/dist/lib/global-config.js.map +1 -0
- package/dist/lib/project.d.ts +61 -5
- package/dist/lib/project.js +135 -15
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/telemetry.d.ts +7 -0
- package/dist/lib/telemetry.js +66 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/posthog.d.ts +3 -0
- package/dist/posthog.js +10 -0
- package/dist/posthog.js.map +1 -0
- package/dist/types.d.ts +0 -35
- package/package.json +33 -4
package/dist/lib/project.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { existsSync, statSync } from "node:fs";
|
|
3
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { api } from "../api.js";
|
|
6
6
|
import { config } from "./config.js";
|
|
@@ -21,7 +21,7 @@ export async function confirmDeployWithExistingConfig(existingConfig) {
|
|
|
21
21
|
initialValue: true,
|
|
22
22
|
});
|
|
23
23
|
if (p.isCancel(confirm))
|
|
24
|
-
return
|
|
24
|
+
return null;
|
|
25
25
|
return confirm === true;
|
|
26
26
|
}
|
|
27
27
|
export async function selectEnvironmentFromList(environments) {
|
|
@@ -32,7 +32,7 @@ export async function selectEnvironmentFromList(environments) {
|
|
|
32
32
|
message: chalk.bold("Choose an environment to deploy to"),
|
|
33
33
|
options: environments.map((env) => ({
|
|
34
34
|
value: env.id,
|
|
35
|
-
label: `${env.name} (${env.sourceBranch})
|
|
35
|
+
label: env.sourceBranch ? `${env.name} (${env.sourceBranch})` : env.name,
|
|
36
36
|
})),
|
|
37
37
|
});
|
|
38
38
|
if (p.isCancel(choice))
|
|
@@ -40,7 +40,7 @@ export async function selectEnvironmentFromList(environments) {
|
|
|
40
40
|
const environment = environments.find((e) => e.id === choice);
|
|
41
41
|
return environment ?? null;
|
|
42
42
|
}
|
|
43
|
-
export async function
|
|
43
|
+
export async function confirmDeployDirectory(deployDir) {
|
|
44
44
|
const confirm = await p.confirm({
|
|
45
45
|
message: chalk.bold(`Deploy the directory? `) + chalk.cyan(deployDir),
|
|
46
46
|
initialValue: true,
|
|
@@ -80,8 +80,37 @@ export async function selectProjectFromList(projects) {
|
|
|
80
80
|
const project = projects.find((proj) => proj.id === choice);
|
|
81
81
|
return project ?? null;
|
|
82
82
|
}
|
|
83
|
+
export async function promptRootDirectory(deployDir) {
|
|
84
|
+
while (true) {
|
|
85
|
+
const rootDir = await p.text({
|
|
86
|
+
message: chalk.bold("Root directory"),
|
|
87
|
+
placeholder: ".",
|
|
88
|
+
initialValue: ".",
|
|
89
|
+
validate: (value) => {
|
|
90
|
+
if (value != null && value.length > 512)
|
|
91
|
+
return "Path must be at most 512 characters.";
|
|
92
|
+
return undefined;
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
if (p.isCancel(rootDir))
|
|
96
|
+
return null;
|
|
97
|
+
const trimmed = rootDir.trim();
|
|
98
|
+
if (trimmed === "" || trimmed === ".")
|
|
99
|
+
return undefined;
|
|
100
|
+
const resolved = resolve(deployDir, trimmed);
|
|
101
|
+
if (!existsSync(resolved)) {
|
|
102
|
+
p.log.error(`Path does not exist: ${resolved}`);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (!statSync(resolved).isDirectory()) {
|
|
106
|
+
p.log.error(`Path is not a directory: ${resolved}`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
return trimmed;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
83
112
|
async function resolveEnvironmentForProject(projectId) {
|
|
84
|
-
const project = await api.
|
|
113
|
+
const project = await api.projects.get.v1({ projectId });
|
|
85
114
|
const environments = project.environments ?? [];
|
|
86
115
|
if (environments.length === 0) {
|
|
87
116
|
throw new Error("No environments found for this project.");
|
|
@@ -92,14 +121,28 @@ async function resolveEnvironmentForProject(projectId) {
|
|
|
92
121
|
return { environmentId: environment.id, environmentName: environment.name };
|
|
93
122
|
}
|
|
94
123
|
export async function resolveProjectForDeploy(deployDir) {
|
|
124
|
+
const ok = await confirmDeployDirectory(deployDir);
|
|
125
|
+
if (!ok)
|
|
126
|
+
return null;
|
|
95
127
|
const existingConfig = config.load(deployDir);
|
|
96
128
|
if (existingConfig) {
|
|
97
|
-
|
|
98
|
-
|
|
129
|
+
let confirm;
|
|
130
|
+
while (true) {
|
|
131
|
+
confirm = await confirmDeployWithExistingConfig(existingConfig);
|
|
132
|
+
if (confirm === null)
|
|
133
|
+
return null;
|
|
134
|
+
if (confirm)
|
|
135
|
+
break;
|
|
99
136
|
const linkAnother = await confirmLinkToAnotherProject();
|
|
100
|
-
if (
|
|
137
|
+
if (p.isCancel(linkAnother))
|
|
101
138
|
return null;
|
|
102
|
-
|
|
139
|
+
if (linkAnother) {
|
|
140
|
+
const linkExisting = await confirmLinkExisting();
|
|
141
|
+
if (!linkExisting) {
|
|
142
|
+
return runCreateProjectFlow(deployDir);
|
|
143
|
+
}
|
|
144
|
+
return runLinkingFlow(deployDir);
|
|
145
|
+
}
|
|
103
146
|
}
|
|
104
147
|
if (existingConfig.environmentId) {
|
|
105
148
|
return {
|
|
@@ -122,18 +165,73 @@ export async function resolveProjectForDeploy(deployDir) {
|
|
|
122
165
|
p.note(`Environment "${env.environmentName}" will be used for future deploys.`);
|
|
123
166
|
return updatedConfig;
|
|
124
167
|
}
|
|
125
|
-
const ok = await confirmDeployWithoutConfig(deployDir);
|
|
126
|
-
if (!ok)
|
|
127
|
-
return null;
|
|
128
168
|
const linkExisting = await confirmLinkExisting();
|
|
129
169
|
if (!linkExisting) {
|
|
130
|
-
|
|
131
|
-
return null;
|
|
170
|
+
return runCreateProjectFlow(deployDir);
|
|
132
171
|
}
|
|
133
172
|
return runLinkingFlow(deployDir);
|
|
134
173
|
}
|
|
174
|
+
async function runCreateProjectFlow(deployDir) {
|
|
175
|
+
const name = await p.text({
|
|
176
|
+
message: chalk.bold("Project name"),
|
|
177
|
+
placeholder: "my-app",
|
|
178
|
+
validate: (value) => {
|
|
179
|
+
if (!value?.trim())
|
|
180
|
+
return "Project name is required.";
|
|
181
|
+
if (value.length > 100)
|
|
182
|
+
return "Project name must be at most 100 characters.";
|
|
183
|
+
return undefined;
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
if (p.isCancel(name))
|
|
187
|
+
return null;
|
|
188
|
+
const detectedRuntime = detectRuntime(deployDir);
|
|
189
|
+
const runtime = await p.select({
|
|
190
|
+
message: chalk.bold("Runtime"),
|
|
191
|
+
options: [
|
|
192
|
+
{ value: "node24", label: "Node.js 24" },
|
|
193
|
+
{ value: "node22", label: "Node.js 22" },
|
|
194
|
+
{ value: "python3.14", label: "Python 3.14" },
|
|
195
|
+
{ value: "python3.13", label: "Python 3.13" },
|
|
196
|
+
],
|
|
197
|
+
initialValue: detectedRuntime ?? "node24",
|
|
198
|
+
});
|
|
199
|
+
if (p.isCancel(runtime))
|
|
200
|
+
return null;
|
|
201
|
+
const rootDirectory = await promptRootDirectory(deployDir);
|
|
202
|
+
const spin = p.spinner();
|
|
203
|
+
spin.start("Creating project...");
|
|
204
|
+
try {
|
|
205
|
+
const projectInput = {
|
|
206
|
+
name: name.trim(),
|
|
207
|
+
runtime,
|
|
208
|
+
};
|
|
209
|
+
if (rootDirectory) {
|
|
210
|
+
projectInput.rootDirectory = rootDirectory;
|
|
211
|
+
}
|
|
212
|
+
const created = await api.projects.create.v1(projectInput);
|
|
213
|
+
spin.stop("Project created.");
|
|
214
|
+
const productionEnv = created.productionEnvironment;
|
|
215
|
+
if (!productionEnv) {
|
|
216
|
+
throw new Error("Project was created but has no Production environment.");
|
|
217
|
+
}
|
|
218
|
+
const newConfig = {
|
|
219
|
+
projectId: created.id,
|
|
220
|
+
teamId: created.teamId,
|
|
221
|
+
projectName: created.name,
|
|
222
|
+
environmentId: productionEnv.id,
|
|
223
|
+
environmentName: productionEnv.name,
|
|
224
|
+
};
|
|
225
|
+
config.save(newConfig, deployDir);
|
|
226
|
+
return newConfig;
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
spin.stop();
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
135
233
|
async function runLinkingFlow(deployDir) {
|
|
136
|
-
const projects = await api.
|
|
234
|
+
const projects = await api.projects.list.v1();
|
|
137
235
|
if (projects.length === 0) {
|
|
138
236
|
throw new Error("No projects found. Create a project in the Alpic dashboard first.");
|
|
139
237
|
}
|
|
@@ -158,4 +256,26 @@ async function runLinkingFlow(deployDir) {
|
|
|
158
256
|
p.note(`Linked to project "${project.name}", environment "${environment.name}".`);
|
|
159
257
|
return newConfig;
|
|
160
258
|
}
|
|
259
|
+
function detectRuntime(dir) {
|
|
260
|
+
const has = (file) => existsSync(resolve(dir, file));
|
|
261
|
+
const read = (file) => {
|
|
262
|
+
try {
|
|
263
|
+
return readFileSync(resolve(dir, file), "utf8");
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return "";
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
if (has("pyproject.toml") || has("requirements.txt") || has("setup.py") || has(".python-version")) {
|
|
270
|
+
return "python3.13";
|
|
271
|
+
}
|
|
272
|
+
if (has("package.json")) {
|
|
273
|
+
const nvmrc = has(".nvmrc") ? (read(".nvmrc").trim().split(/\s/)[0] ?? "") : "";
|
|
274
|
+
const major = nvmrc.replace(/^v/i, "").match(/^(\d+)/)?.[1];
|
|
275
|
+
if (major === "22")
|
|
276
|
+
return "node22";
|
|
277
|
+
return "node24";
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
161
281
|
//# sourceMappingURL=project.js.map
|
package/dist/lib/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Hook } from "@oclif/core";
|
|
2
|
+
export declare function isEnabled(): boolean;
|
|
3
|
+
export declare function isDebugMode(): boolean;
|
|
4
|
+
export declare function setEnabled(enabled: boolean): void;
|
|
5
|
+
export declare function getMachineId(): string;
|
|
6
|
+
declare const hook: Hook<"finally">;
|
|
7
|
+
export default hook;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import ci from "ci-info";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
import posthog from "../posthog.js";
|
|
4
|
+
import { getGlobalConfig, saveGlobalConfig } from "./global-config.js";
|
|
5
|
+
const ENV_TELEMETRY_DISABLED = "ALPIC_TELEMETRY_DISABLED";
|
|
6
|
+
const ENV_TELEMETRY_DEBUG = "ALPIC_TELEMETRY_DEBUG";
|
|
7
|
+
const ENV_DO_NOT_TRACK = "DO_NOT_TRACK";
|
|
8
|
+
export function isEnabled() {
|
|
9
|
+
if (process.env[ENV_TELEMETRY_DISABLED] === "1" || process.env[ENV_TELEMETRY_DISABLED]?.toLowerCase() === "true") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (process.env[ENV_DO_NOT_TRACK] === "1" || process.env[ENV_DO_NOT_TRACK]?.toLowerCase() === "true") {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (ci.isCI) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
const config = getGlobalConfig();
|
|
19
|
+
return config.telemetry.enabled;
|
|
20
|
+
}
|
|
21
|
+
export function isDebugMode() {
|
|
22
|
+
return process.env[ENV_TELEMETRY_DEBUG] === "1" || process.env[ENV_TELEMETRY_DEBUG]?.toLowerCase() === "true";
|
|
23
|
+
}
|
|
24
|
+
export function setEnabled(enabled) {
|
|
25
|
+
const config = getGlobalConfig();
|
|
26
|
+
config.telemetry.enabled = enabled;
|
|
27
|
+
saveGlobalConfig(config);
|
|
28
|
+
}
|
|
29
|
+
export function getMachineId() {
|
|
30
|
+
if (ci.isCI) {
|
|
31
|
+
return ci.name ?? "unknown-ci";
|
|
32
|
+
}
|
|
33
|
+
return getGlobalConfig().machineId;
|
|
34
|
+
}
|
|
35
|
+
const hook = async ({ id: command, config: { version }, error, }) => {
|
|
36
|
+
if (!isEnabled()) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const event = {
|
|
40
|
+
command,
|
|
41
|
+
version,
|
|
42
|
+
machineId: getMachineId(),
|
|
43
|
+
sessionId: crypto.randomUUID(),
|
|
44
|
+
isCI: ci.isCI,
|
|
45
|
+
nodeVersion: process.version,
|
|
46
|
+
platform: process.platform,
|
|
47
|
+
outcome: error ? "failure" : "success",
|
|
48
|
+
error: error?.message,
|
|
49
|
+
};
|
|
50
|
+
if (isDebugMode()) {
|
|
51
|
+
console.error("[Telemetry Debug] Would send event:", JSON.stringify(event, null, 2));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
posthog.capture({
|
|
56
|
+
distinctId: event.machineId,
|
|
57
|
+
event: command,
|
|
58
|
+
properties: event,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
// Silently ignore telemetry errors - never block CLI operation
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export default hook;
|
|
66
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/posthog.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PostHog } from "posthog-node";
|
|
2
|
+
const POSTHOG_API_KEY = "phc_ksTmveDgBWGdJb7tlb8Vz6eeKsOl0UkdpCqUaSU2ypg";
|
|
3
|
+
const POSTHOG_HOST = "https://us.i.posthog.com";
|
|
4
|
+
const posthog = new PostHog(POSTHOG_API_KEY, {
|
|
5
|
+
host: POSTHOG_HOST,
|
|
6
|
+
flushAt: 1,
|
|
7
|
+
flushInterval: 0,
|
|
8
|
+
});
|
|
9
|
+
export default posthog;
|
|
10
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../src/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,eAAe,GAAG,iDAAiD,CAAC;AAC1E,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,EAAE;IAC3C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;CACjB,CAAC,CAAC;AAEH,eAAe,OAAO,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
export type ApiProject = {
|
|
2
|
-
id: string;
|
|
3
|
-
teamId: string;
|
|
4
|
-
name: string;
|
|
5
|
-
productionEnvironment?: {
|
|
6
|
-
id: string;
|
|
7
|
-
name: string;
|
|
8
|
-
mcpServerUrl: string;
|
|
9
|
-
} | null;
|
|
10
|
-
environments?: ApiEnvironment[];
|
|
11
|
-
};
|
|
12
|
-
export type PresignedUploadResponse = {
|
|
13
|
-
uploadUrl: string;
|
|
14
|
-
token: string;
|
|
15
|
-
expiresAt: string;
|
|
16
|
-
};
|
|
17
|
-
export type ApiEnvironment = {
|
|
18
|
-
id: string;
|
|
19
|
-
name: string;
|
|
20
|
-
sourceBranch: string;
|
|
21
|
-
mcpServerUrl: string;
|
|
22
|
-
projectId: string;
|
|
23
|
-
domains: string[];
|
|
24
|
-
};
|
|
25
1
|
export type ProjectConfig = {
|
|
26
2
|
projectId: string;
|
|
27
3
|
teamId: string;
|
|
@@ -29,14 +5,3 @@ export type ProjectConfig = {
|
|
|
29
5
|
environmentId?: string;
|
|
30
6
|
environmentName?: string;
|
|
31
7
|
};
|
|
32
|
-
export type ApiDeployment = {
|
|
33
|
-
id: string;
|
|
34
|
-
status: "ongoing" | "deployed" | "failed" | "canceled";
|
|
35
|
-
sourceRef: string;
|
|
36
|
-
sourceCommitId?: string;
|
|
37
|
-
sourceCommitMessage?: string;
|
|
38
|
-
authorUsername: string | null;
|
|
39
|
-
authorAvatarUrl: string | null;
|
|
40
|
-
startedAt: string | null;
|
|
41
|
-
completedAt: string | null;
|
|
42
|
-
};
|
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.9bfa9b0",
|
|
4
4
|
"description": "The command-line interface for Alpic",
|
|
5
5
|
"homepage": "https://alpic.ai",
|
|
6
6
|
"preferGlobal": true,
|
|
@@ -16,6 +16,20 @@
|
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">= 18.20.8"
|
|
18
18
|
},
|
|
19
|
+
"nx": {
|
|
20
|
+
"targets": {
|
|
21
|
+
"build": {
|
|
22
|
+
"dependsOn": [
|
|
23
|
+
"@alpic-ai/api:build"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"test:type": {
|
|
27
|
+
"dependsOn": [
|
|
28
|
+
"@alpic-ai/api:build"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
19
33
|
"keywords": [
|
|
20
34
|
"chatgpt",
|
|
21
35
|
"app",
|
|
@@ -27,14 +41,26 @@
|
|
|
27
41
|
"dependencies": {
|
|
28
42
|
"@clack/prompts": "^1.0.0",
|
|
29
43
|
"@oclif/core": "^4.8.0",
|
|
44
|
+
"@orpc/client": "^1.13.4",
|
|
45
|
+
"@orpc/contract": "^1.13.4",
|
|
46
|
+
"@orpc/openapi-client": "^1.13.4",
|
|
30
47
|
"chalk": "^5.6.2",
|
|
31
|
-
"
|
|
48
|
+
"ci-info": "^4.4.0",
|
|
49
|
+
"posthog-node": "^5.24.11",
|
|
50
|
+
"tar": "^7.4.0",
|
|
51
|
+
"@alpic-ai/api": "0.0.0-dev.9bfa9b0"
|
|
32
52
|
},
|
|
33
53
|
"devDependencies": {
|
|
54
|
+
"@orpc/openapi": "^1.13.4",
|
|
55
|
+
"@orpc/server": "^1.13.4",
|
|
56
|
+
"@orpc/zod": "^1.13.4",
|
|
34
57
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
35
|
-
"@types/node": "^25.2.
|
|
58
|
+
"@types/node": "^25.2.2",
|
|
59
|
+
"@types/express": "^5.0.6",
|
|
36
60
|
"biome": "^0.3.3",
|
|
61
|
+
"express": "^5.2.1",
|
|
37
62
|
"jsdom": "^27.4.0",
|
|
63
|
+
"node-pty": "1.0.0",
|
|
38
64
|
"shx": "^0.4.0",
|
|
39
65
|
"ts-node": "^10.9.2",
|
|
40
66
|
"typescript": "^5.9.3",
|
|
@@ -47,7 +73,10 @@
|
|
|
47
73
|
"bin": "alpic",
|
|
48
74
|
"commands": "./dist/commands",
|
|
49
75
|
"dirname": "alpic",
|
|
50
|
-
"topicSeparator": " "
|
|
76
|
+
"topicSeparator": " ",
|
|
77
|
+
"hooks": {
|
|
78
|
+
"finally": "./dist/lib/telemetry.js"
|
|
79
|
+
}
|
|
51
80
|
},
|
|
52
81
|
"scripts": {
|
|
53
82
|
"build": "shx rm -rf dist && tsc",
|