alpic 0.0.0-dev.6abfd55 → 0.0.0-dev.891478

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.
@@ -1,5 +1,5 @@
1
1
  import { Command } from "@oclif/core";
2
- export declare class Deploy extends Command {
2
+ export declare class Hello extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  run(): Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { Command } from "@oclif/core";
2
+ export class Hello extends Command {
3
+ static description = "A simple hello world command for testing";
4
+ static examples = ["<%= config.bin %> hello"];
5
+ async run() {
6
+ await this.parse(Hello);
7
+ this.log("Hello, world! 👋");
8
+ }
9
+ }
10
+ //# sourceMappingURL=hello.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello.js","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,OAAO,KAAM,SAAQ,OAAO;IAChC,MAAM,CAAU,WAAW,GAAG,0CAA0C,CAAC;IAEzE,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alpic",
3
- "version": "0.0.0-dev.6abfd55",
3
+ "version": "0.0.0-dev.891478",
4
4
  "description": "The command-line interface for Alpic",
5
5
  "homepage": "https://alpic.ai",
6
6
  "preferGlobal": true,
@@ -14,7 +14,7 @@
14
14
  "dist"
15
15
  ],
16
16
  "engines": {
17
- "node": ">= 18"
17
+ "node": ">= 18.20.8"
18
18
  },
19
19
  "keywords": [
20
20
  "chatgpt",
@@ -24,15 +24,10 @@
24
24
  ],
25
25
  "author": "Alpic",
26
26
  "license": "ISC",
27
- "dependencies": {
28
- "@clack/prompts": "^0.8.2",
29
- "chalk": "^5.6.2",
30
- "tar": "^7.4.0"
31
- },
32
27
  "devDependencies": {
33
28
  "@oclif/core": "^4.8.0",
34
29
  "@total-typescript/tsconfig": "^1.0.4",
35
- "@types/node": "^25.0.10",
30
+ "@types/node": "^25.1.0",
36
31
  "biome": "^0.3.3",
37
32
  "jsdom": "^27.4.0",
38
33
  "shx": "^0.4.0",
package/dist/api.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { type ApiProject, type PresignedUploadResponse } from "./types";
2
- export declare const api: {
3
- listProjects: () => Promise<{
4
- teamId: string;
5
- projects: ApiProject[];
6
- }>;
7
- getPresignedUploadUrl: () => Promise<PresignedUploadResponse>;
8
- };
package/dist/api.js DELETED
@@ -1,26 +0,0 @@
1
- import { API_BASE_URLS } from "./types";
2
- function getApiBaseUrl() {
3
- const target = (process.env.ALPIC_TARGET?.toLowerCase() ?? "production");
4
- if (!API_BASE_URLS[target]) {
5
- throw new Error(`Invalid ALPIC_TARGET: ${process.env.ALPIC_TARGET}.`);
6
- }
7
- return API_BASE_URLS[target];
8
- }
9
- const doFetch = async (path, options) => {
10
- const res = await fetch(`${getApiBaseUrl()}${path}`, {
11
- ...options,
12
- headers: {
13
- Authorization: `Bearer ${process.env.ALPIC_API_KEY}`,
14
- },
15
- });
16
- return res.json();
17
- };
18
- export const api = {
19
- listProjects: async () => {
20
- return doFetch("/v1/projects", { method: "GET" });
21
- },
22
- getPresignedUploadUrl: async () => {
23
- return doFetch("/v1/deployments/upload", { method: "POST" });
24
- },
25
- };
26
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmE,MAAM,SAAS,CAAC;AAEzG,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,YAAY,CAAgB,CAAC;IAExF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,GAAG,KAAK,EAAK,IAAY,EAAE,OAAoB,EAAc,EAAE;IAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,EAAE,GAAG,IAAI,EAAE,EAAE;QACnD,GAAG,OAAO;QACV,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;SACrD;KACF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,YAAY,EAAE,KAAK,IAAI,EAAE;QACvB,OAAO,OAAO,CAA6C,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAChC,OAAO,OAAO,CAA0B,wBAAwB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;CACF,CAAC"}
@@ -1,53 +0,0 @@
1
- import * as p from "@clack/prompts";
2
- import { Command } from "@oclif/core";
3
- import { api } from "../api";
4
- import { createTarArchive, ensureGitAvailable, getGitFiles } from "../lib/archive";
5
- import { resolveProjectForDeploy } from "../lib/project";
6
- import { readArchiveAndCleanup, uploadToPresignedUrl } from "../lib/upload";
7
- export class Deploy extends Command {
8
- static description = "Deploy a project to Alpic";
9
- static examples = ["<%= config.bin %> deploy"];
10
- async run() {
11
- await this.parse(Deploy);
12
- p.intro("Deploying to Alpic");
13
- const apiKey = process.env.ALPIC_API_KEY;
14
- if (!apiKey) {
15
- p.cancel("ALPIC_API_KEY environment variable is required");
16
- this.exit(1);
17
- return;
18
- }
19
- const spinner = p.spinner();
20
- try {
21
- const config = await resolveProjectForDeploy({
22
- onFetchProjectsStart: () => spinner.start("Fetching projects..."),
23
- onFetchProjectsEnd: (msg) => spinner.stop(msg),
24
- });
25
- if (!config) {
26
- p.cancel("Deploy cancelled");
27
- this.exit(1);
28
- return;
29
- }
30
- spinner.start("Collecting source files...");
31
- ensureGitAvailable();
32
- const files = getGitFiles();
33
- spinner.stop(`Collected ${files.length} file${files.length === 1 ? "" : "s"}`);
34
- spinner.start("Creating archive...");
35
- const { tmpDir, archivePath } = await createTarArchive(files);
36
- spinner.stop("Archive created");
37
- spinner.start("Getting upload URL...");
38
- const { uploadUrl, objectKey } = await api.getPresignedUploadUrl();
39
- spinner.stop("Upload URL received");
40
- spinner.start("Uploading source...");
41
- const buffer = readArchiveAndCleanup(archivePath, tmpDir);
42
- await uploadToPresignedUrl(uploadUrl, buffer);
43
- spinner.stop("Upload complete");
44
- p.note(objectKey, "Artifact key (use this when triggering a deployment)");
45
- }
46
- catch (error) {
47
- spinner.stop("Deploy failed");
48
- p.cancel(`Error: ${error instanceof Error ? error.message : String(error)}`);
49
- this.exit(1);
50
- }
51
- }
52
- }
53
- //# sourceMappingURL=deploy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function ensureGitAvailable(): void;
2
- export declare function getGitFiles(): string[];
3
- export declare function createTarArchive(files: string[]): Promise<{
4
- tmpDir: string;
5
- archivePath: string;
6
- }>;
@@ -1,36 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { mkdtempSync } 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
- export function ensureGitAvailable() {
8
- try {
9
- execSync("git --version", { stdio: "ignore" });
10
- }
11
- catch {
12
- throw new Error("Git is required to deploy. Please install git and ensure it is available in your PATH.");
13
- }
14
- }
15
- export function getGitFiles() {
16
- const output = execSync("git ls-files -z --cached --others --exclude-standard", {
17
- encoding: "utf8",
18
- maxBuffer: GIT_FILES_MAX_BUFFER,
19
- });
20
- const files = output.split("\0").filter(Boolean);
21
- if (files.length === 0) {
22
- throw new Error("No tracked or untracked files found. Ensure you are in a git repository with files to deploy.");
23
- }
24
- return files;
25
- }
26
- export async function createTarArchive(files) {
27
- const tmpDir = mkdtempSync(join(tmpdir(), "alpic-deploy-"));
28
- const archivePath = join(tmpDir, "source.tar.gz");
29
- await tarCreate({
30
- gzip: true,
31
- file: archivePath,
32
- cwd: process.cwd(),
33
- }, files);
34
- return { tmpDir, archivePath };
35
- }
36
- //# sourceMappingURL=archive.js.map
@@ -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,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,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,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,sDAAsD,EAAE;QAC9E,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,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,MAAM,SAAS,CACb;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,EACD,KAAK,CACN,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { ProjectConfig } from "../types";
2
- export declare const config: {
3
- load: () => {
4
- projectId: string;
5
- teamId: string;
6
- projectName: string;
7
- } | null;
8
- save: (config: ProjectConfig) => void;
9
- };
@@ -1,21 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- const projectJsonPath = join(process.cwd(), ".alpic", "project.json");
4
- export const config = {
5
- load: () => {
6
- if (!existsSync(projectJsonPath)) {
7
- return null;
8
- }
9
- const raw = JSON.parse(readFileSync(projectJsonPath, "utf8"));
10
- return {
11
- projectId: raw.projectId,
12
- teamId: raw.teamId,
13
- projectName: raw.projectName ?? raw.projectId,
14
- };
15
- },
16
- save: (config) => {
17
- mkdirSync(join(process.cwd(), ".alpic"), { recursive: true });
18
- writeFileSync(projectJsonPath, JSON.stringify(config, null, 2));
19
- },
20
- };
21
- //# sourceMappingURL=config.js.map
@@ -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,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,GAAG,EAAE;QACT,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAG3D,CAAC;QACF,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS;SAC9C,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,MAAqB,EAAE,EAAE;QAC9B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;CACF,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { ApiProject, ProjectConfig } from "../types";
2
- export declare function confirmDeployWithExistingConfig(existingConfig: ProjectConfig): Promise<boolean>;
3
- export declare function confirmDeployWithoutConfig(): Promise<boolean>;
4
- export declare function confirmLinkExisting(): Promise<boolean>;
5
- export declare function selectProjectFromList(projects: ApiProject[]): Promise<ApiProject | null>;
6
- export type ResolveProjectOptions = {
7
- onFetchProjectsStart?: () => void;
8
- onFetchProjectsEnd?: (message: string) => void;
9
- };
10
- export declare function resolveProjectForDeploy(options?: ResolveProjectOptions): Promise<ProjectConfig | null>;
@@ -1,90 +0,0 @@
1
- import * as p from "@clack/prompts";
2
- import chalk from "chalk";
3
- import { api } from "../api";
4
- import { config } from "./config";
5
- export async function confirmDeployWithExistingConfig(existingConfig) {
6
- p.note(JSON.stringify(existingConfig, null, 2), ".alpic/project.json");
7
- const confirm = await p.confirm({
8
- message: chalk.bold(`Deploy project "${existingConfig.projectName}"?`),
9
- initialValue: true,
10
- });
11
- if (p.isCancel(confirm))
12
- return false;
13
- return confirm === true;
14
- }
15
- export async function confirmDeployWithoutConfig() {
16
- const confirm = await p.confirm({
17
- message: chalk.bold(`Deploy current directory?\n`) + chalk.cyan(process.cwd()),
18
- initialValue: true,
19
- });
20
- if (p.isCancel(confirm))
21
- return false;
22
- return confirm === true;
23
- }
24
- export async function confirmLinkExisting() {
25
- const link = await p.confirm({
26
- message: chalk.bold("Link to existing project?"),
27
- initialValue: false,
28
- });
29
- if (p.isCancel(link))
30
- return false;
31
- return link === true;
32
- }
33
- export async function selectProjectFromList(projects) {
34
- if (projects.length === 0) {
35
- return null;
36
- }
37
- const choice = await p.select({
38
- message: chalk.bold("Choose a project"),
39
- options: projects.map((proj) => ({ value: proj.id, label: proj.name })),
40
- });
41
- if (p.isCancel(choice))
42
- return null;
43
- const project = projects.find((proj) => proj.id === choice);
44
- return project ?? null;
45
- }
46
- export async function resolveProjectForDeploy(options = {}) {
47
- const { onFetchProjectsStart, onFetchProjectsEnd } = options;
48
- const existingConfig = config.load();
49
- if (existingConfig) {
50
- const ok = await confirmDeployWithExistingConfig(existingConfig);
51
- return ok ? existingConfig : null;
52
- }
53
- const ok = await confirmDeployWithoutConfig();
54
- if (!ok)
55
- return null;
56
- const linkExisting = await confirmLinkExisting();
57
- if (!linkExisting) {
58
- p.note("Creating a new project is not implemented yet.");
59
- return { projectId: "", teamId: "", projectName: "Untitled" };
60
- }
61
- onFetchProjectsStart?.();
62
- let teamId;
63
- let projects;
64
- try {
65
- const result = await api.listProjects();
66
- teamId = result.teamId;
67
- projects = result.projects;
68
- }
69
- finally {
70
- onFetchProjectsEnd?.("Projects loaded");
71
- }
72
- if (projects.length === 0) {
73
- throw new Error("No projects found. Create a project in the Alpic dashboard first.");
74
- }
75
- const project = await selectProjectFromList(projects);
76
- if (!project)
77
- return null;
78
- config.save({
79
- projectId: project.id,
80
- teamId,
81
- projectName: project.name,
82
- });
83
- p.note(JSON.stringify(config, null, 2), "Created .alpic/project.json");
84
- return {
85
- projectId: project.id,
86
- teamId,
87
- projectName: project.name,
88
- };
89
- }
90
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function uploadToPresignedUrl(uploadUrl: string, buffer: Buffer): Promise<void>;
2
- export declare function readArchiveAndCleanup(archivePath: string, tmpDir: string): Buffer;
@@ -1,20 +0,0 @@
1
- import { readFileSync, rmSync } from "node:fs";
2
- export async function uploadToPresignedUrl(uploadUrl, buffer) {
3
- const res = await fetch(uploadUrl, {
4
- method: "PUT",
5
- headers: {
6
- "Content-Type": "application/gzip",
7
- "Content-Length": String(buffer.byteLength),
8
- },
9
- body: new Uint8Array(buffer),
10
- });
11
- if (!res.ok) {
12
- throw new Error(`Upload failed: ${res.status} ${res.statusText}`);
13
- }
14
- }
15
- export function readArchiveAndCleanup(archivePath, tmpDir) {
16
- const buffer = readFileSync(archivePath);
17
- rmSync(tmpDir, { recursive: true });
18
- return buffer;
19
- }
20
- //# sourceMappingURL=upload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C,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;YAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;SAC5C;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;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAc;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,20 +0,0 @@
1
- export declare const API_BASE_URLS: {
2
- readonly local: "http://localhost:3000";
3
- readonly staging: "https://api.staging.alpic.ai";
4
- readonly production: "https://api.alpic.ai";
5
- };
6
- export type Environment = keyof typeof API_BASE_URLS;
7
- export type ApiProject = {
8
- id: string;
9
- name: string;
10
- };
11
- export type PresignedUploadResponse = {
12
- uploadUrl: string;
13
- objectKey: string;
14
- expiresAt: string;
15
- };
16
- export type ProjectConfig = {
17
- projectId: string;
18
- teamId: string;
19
- projectName: string;
20
- };
package/dist/types.js DELETED
@@ -1,6 +0,0 @@
1
- export const API_BASE_URLS = {
2
- local: "http://localhost:3000",
3
- staging: "https://api.staging.alpic.ai",
4
- production: "https://api.alpic.ai",
5
- };
6
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,uBAAuB;IAC9B,OAAO,EAAE,8BAA8B;IACvC,UAAU,EAAE,sBAAsB;CAC1B,CAAC"}