alpic 0.0.0-dev.gf5cd963 → 0.0.0-dev.gf60a82f

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.
Files changed (161) hide show
  1. package/README.md +18 -0
  2. package/bin/run.js +15 -1
  3. package/dist/__tests__/audit.e2e.test.js +16 -29
  4. package/dist/__tests__/audit.e2e.test.js.map +1 -1
  5. package/dist/__tests__/auth.e2e.test.js +6 -22
  6. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  7. package/dist/__tests__/deploy-flags.e2e.test.js +6 -21
  8. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
  9. package/dist/__tests__/deploy.e2e.test.js +5 -21
  10. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  11. package/dist/__tests__/deployment-inspect.e2e.test.js +18 -31
  12. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -1
  13. package/dist/__tests__/deployment-list.e2e.test.js +18 -31
  14. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -1
  15. package/dist/__tests__/deployment-logs.e2e.test.js +15 -29
  16. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -1
  17. package/dist/__tests__/environment-delete.e2e.test.d.ts +1 -0
  18. package/dist/__tests__/environment-delete.e2e.test.js +95 -0
  19. package/dist/__tests__/environment-delete.e2e.test.js.map +1 -0
  20. package/dist/__tests__/environment-list.e2e.test.js +6 -22
  21. package/dist/__tests__/environment-list.e2e.test.js.map +1 -1
  22. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +19 -31
  23. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -1
  24. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +19 -31
  25. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -1
  26. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +18 -31
  27. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -1
  28. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +18 -31
  29. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -1
  30. package/dist/__tests__/git-flags.e2e.test.js +6 -22
  31. package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
  32. package/dist/__tests__/git.e2e.test.js +7 -22
  33. package/dist/__tests__/git.e2e.test.js.map +1 -1
  34. package/dist/__tests__/insights-category.e2e.test.d.ts +1 -0
  35. package/dist/__tests__/insights-category.e2e.test.js +248 -0
  36. package/dist/__tests__/insights-category.e2e.test.js.map +1 -0
  37. package/dist/__tests__/insights.e2e.test.d.ts +1 -0
  38. package/dist/__tests__/insights.e2e.test.js +193 -0
  39. package/dist/__tests__/insights.e2e.test.js.map +1 -0
  40. package/dist/__tests__/logs.e2e.test.js +21 -35
  41. package/dist/__tests__/logs.e2e.test.js.map +1 -1
  42. package/dist/__tests__/mock-api.d.ts +17 -1
  43. package/dist/__tests__/mock-api.js +227 -41
  44. package/dist/__tests__/mock-api.js.map +1 -1
  45. package/dist/__tests__/playground/playground-configure.e2e.test.js +18 -26
  46. package/dist/__tests__/playground/playground-configure.e2e.test.js.map +1 -1
  47. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js +18 -26
  48. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js.map +1 -1
  49. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js +18 -26
  50. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js.map +1 -1
  51. package/dist/__tests__/playground/playground-headers.e2e.test.js +18 -26
  52. package/dist/__tests__/playground/playground-headers.e2e.test.js.map +1 -1
  53. package/dist/__tests__/playground/playground-status.e2e.test.js +18 -26
  54. package/dist/__tests__/playground/playground-status.e2e.test.js.map +1 -1
  55. package/dist/__tests__/project-list.e2e.test.js +5 -21
  56. package/dist/__tests__/project-list.e2e.test.js.map +1 -1
  57. package/dist/__tests__/publish.e2e.test.js +24 -42
  58. package/dist/__tests__/publish.e2e.test.js.map +1 -1
  59. package/dist/__tests__/team-inspect.e2e.test.js +26 -1
  60. package/dist/__tests__/team-inspect.e2e.test.js.map +1 -1
  61. package/dist/__tests__/team-list.e2e.test.js +5 -21
  62. package/dist/__tests__/team-list.e2e.test.js.map +1 -1
  63. package/dist/__tests__/tunnel.e2e.test.js +8 -30
  64. package/dist/__tests__/tunnel.e2e.test.js.map +1 -1
  65. package/dist/__tests__/utils.d.ts +17 -6
  66. package/dist/__tests__/utils.js +49 -20
  67. package/dist/__tests__/utils.js.map +1 -1
  68. package/dist/commands/deploy.js +69 -52
  69. package/dist/commands/deploy.js.map +1 -1
  70. package/dist/commands/environment/delete.d.ts +13 -0
  71. package/dist/commands/environment/delete.js +45 -0
  72. package/dist/commands/environment/delete.js.map +1 -0
  73. package/dist/commands/git/connect.js +2 -2
  74. package/dist/commands/git/connect.js.map +1 -1
  75. package/dist/commands/git/disconnect.js +2 -2
  76. package/dist/commands/git/disconnect.js.map +1 -1
  77. package/dist/commands/insights/category/create.d.ts +17 -0
  78. package/dist/commands/insights/category/create.js +63 -0
  79. package/dist/commands/insights/category/create.js.map +1 -0
  80. package/dist/commands/insights/category/delete.d.ts +13 -0
  81. package/dist/commands/insights/category/delete.js +40 -0
  82. package/dist/commands/insights/category/delete.js.map +1 -0
  83. package/dist/commands/insights/category/link.d.ts +14 -0
  84. package/dist/commands/insights/category/link.js +36 -0
  85. package/dist/commands/insights/category/link.js.map +1 -0
  86. package/dist/commands/insights/category/list.d.ts +13 -0
  87. package/dist/commands/insights/category/list.js +45 -0
  88. package/dist/commands/insights/category/list.js.map +1 -0
  89. package/dist/commands/insights/category/unlink.d.ts +14 -0
  90. package/dist/commands/insights/category/unlink.js +36 -0
  91. package/dist/commands/insights/category/unlink.js.map +1 -0
  92. package/dist/commands/insights/category/update.d.ts +16 -0
  93. package/dist/commands/insights/category/update.js +44 -0
  94. package/dist/commands/insights/category/update.js.map +1 -0
  95. package/dist/commands/insights/feedback/list.d.ts +19 -0
  96. package/dist/commands/insights/feedback/list.js +72 -0
  97. package/dist/commands/insights/feedback/list.js.map +1 -0
  98. package/dist/commands/insights/intent/list.d.ts +22 -0
  99. package/dist/commands/insights/intent/list.js +88 -0
  100. package/dist/commands/insights/intent/list.js.map +1 -0
  101. package/dist/commands/link.js +1 -0
  102. package/dist/commands/link.js.map +1 -1
  103. package/dist/commands/logs.js +1 -9
  104. package/dist/commands/logs.js.map +1 -1
  105. package/dist/commands/team/inspect.js +17 -2
  106. package/dist/commands/team/inspect.js.map +1 -1
  107. package/dist/commands/tunnel.js +2 -6
  108. package/dist/commands/tunnel.js.map +1 -1
  109. package/dist/lib/alpic-command.js +12 -2
  110. package/dist/lib/alpic-command.js.map +1 -1
  111. package/dist/lib/alpic-sdk.js +1 -2
  112. package/dist/lib/alpic-sdk.js.map +1 -1
  113. package/dist/lib/audit.js +6 -3
  114. package/dist/lib/audit.js.map +1 -1
  115. package/dist/lib/deployment.d.ts +0 -21
  116. package/dist/lib/deployment.js +9 -58
  117. package/dist/lib/deployment.js.map +1 -1
  118. package/dist/lib/environment-variable.js +1 -0
  119. package/dist/lib/environment-variable.js.map +1 -1
  120. package/dist/lib/insights.d.ts +17 -0
  121. package/dist/lib/insights.js +54 -0
  122. package/dist/lib/insights.js.map +1 -0
  123. package/dist/lib/link.d.ts +2 -3
  124. package/dist/lib/link.js +16 -71
  125. package/dist/lib/link.js.map +1 -1
  126. package/dist/lib/logs.js +4 -5
  127. package/dist/lib/logs.js.map +1 -1
  128. package/dist/lib/project-settings.d.ts +7 -0
  129. package/dist/lib/project-settings.js +140 -0
  130. package/dist/lib/project-settings.js.map +1 -0
  131. package/dist/lib/project-settings.test.d.ts +1 -0
  132. package/dist/lib/project-settings.test.js +56 -0
  133. package/dist/lib/project-settings.test.js.map +1 -0
  134. package/dist/lib/publish.js +1 -1
  135. package/dist/lib/publish.js.map +1 -1
  136. package/dist/lib/resolve.js +4 -5
  137. package/dist/lib/resolve.js.map +1 -1
  138. package/dist/lib/telemetry.js +24 -17
  139. package/dist/lib/telemetry.js.map +1 -1
  140. package/dist/lib/utils.d.ts +9 -1
  141. package/dist/lib/utils.js +28 -2
  142. package/dist/lib/utils.js.map +1 -1
  143. package/dist/lib/utils.test.js +43 -5
  144. package/dist/lib/utils.test.js.map +1 -1
  145. package/dist/lib/whoami.js +4 -34
  146. package/dist/lib/whoami.js.map +1 -1
  147. package/dist/sentry.js +3 -6
  148. package/dist/sentry.js.map +1 -1
  149. package/package.json +26 -27
  150. package/dist/lib/archive.d.ts +0 -7
  151. package/dist/lib/archive.js +0 -57
  152. package/dist/lib/archive.js.map +0 -1
  153. package/dist/lib/config.d.ts +0 -12
  154. package/dist/lib/config.js +0 -32
  155. package/dist/lib/config.js.map +0 -1
  156. package/dist/lib/upload.d.ts +0 -1
  157. package/dist/lib/upload.js +0 -13
  158. package/dist/lib/upload.js.map +0 -1
  159. package/dist/types.d.ts +0 -8
  160. package/dist/types.js +0 -2
  161. package/dist/types.js.map +0 -1
package/dist/lib/utils.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  export function pollIntervalMs(defaultMs) {
2
3
  const override = process.env.ALPIC_POLL_INTERVAL_MS;
3
4
  if (override !== undefined) {
@@ -51,7 +52,32 @@ export const formatAgo = (date, options = {}) => {
51
52
  return rtf.format(value, unit);
52
53
  };
53
54
  export const plural = (count, word) => `${count} ${word}${count === 1 ? "" : "s"}`;
54
- import { z } from "zod";
55
+ const numberFormatter = new Intl.NumberFormat("en-US");
56
+ export const formatUsage = ({ requestCount, includedRequests, periodEnd, now, }) => {
57
+ const allowance = includedRequests === null ? "" : ` / ${numberFormatter.format(includedRequests)}`;
58
+ return `${numberFormatter.format(requestCount)}${allowance} requests (resets ${formatAgo(periodEnd, { now })})`;
59
+ };
60
+ const errorStatusSchema = z.object({ status: z.number() });
61
+ const errorCauseStatusSchema = z.object({ cause: errorStatusSchema });
62
+ export function getResponseErrorStatus(error) {
63
+ const direct = errorStatusSchema.safeParse(error);
64
+ if (direct.success) {
65
+ return direct.data.status;
66
+ }
67
+ const viaCause = errorCauseStatusSchema.safeParse(error);
68
+ if (viaCause.success) {
69
+ return viaCause.data.cause.status;
70
+ }
71
+ return undefined;
72
+ }
55
73
  const RELATIVE_TIME_RE = /^\d+(\.\d+)?\s*(ms|s|m|h|d|w|y)$/i;
56
- export const isValidLogTimeInput = (input) => RELATIVE_TIME_RE.test(input) || z.iso.datetime().safeParse(input).success;
74
+ export const isValidTimeInput = (input) => RELATIVE_TIME_RE.test(input) || z.iso.datetime().safeParse(input).success;
75
+ export function validateTimeFlag(value, flagName) {
76
+ if (value === undefined) {
77
+ return;
78
+ }
79
+ if (!isValidTimeInput(value)) {
80
+ throw new Error(`Invalid --${flagName} value: "${value}". Use a relative duration (1h, 30m, 2d) or ISO 8601 date (2024-01-01T00:00:00Z).`);
81
+ }
82
+ }
57
83
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { formatAgo, isValidLogTimeInput } from "./utils.js";
2
+ import { formatAgo, formatUsage, getResponseErrorStatus, isValidTimeInput, validateTimeFlag } from "./utils.js";
3
3
  describe("formatAgo", () => {
4
4
  const now = new Date("2026-01-01T00:00:00.000Z");
5
5
  it("formats past dates", () => {
@@ -24,21 +24,59 @@ describe("formatAgo", () => {
24
24
  })).toBe("3mo");
25
25
  });
26
26
  });
27
- describe("isValidLogTimeInput", () => {
27
+ describe("isValidTimeInput", () => {
28
28
  it("accepts relative durations", () => {
29
29
  for (const value of ["1s", "30m", "2h", "1d", "1w", "1y", "1.5h", "10 ms", "5 m"]) {
30
- expect(isValidLogTimeInput(value)).toBe(true);
30
+ expect(isValidTimeInput(value)).toBe(true);
31
31
  }
32
32
  });
33
33
  it("accepts ISO 8601 dates", () => {
34
34
  for (const value of ["2024-01-01T00:00:00Z", "2024-06-01T12:34:56.789Z"]) {
35
- expect(isValidLogTimeInput(value)).toBe(true);
35
+ expect(isValidTimeInput(value)).toBe(true);
36
36
  }
37
37
  });
38
38
  it("rejects invalid values", () => {
39
39
  for (const value of ["", "abc", "123", "1x", "2024-13-01T00:00:00Z"]) {
40
- expect(isValidLogTimeInput(value)).toBe(false);
40
+ expect(isValidTimeInput(value)).toBe(false);
41
41
  }
42
42
  });
43
43
  });
44
+ describe("formatUsage", () => {
45
+ const now = new Date("2026-08-20T00:00:00.000Z");
46
+ const periodEnd = new Date("2026-09-01T00:00:00.000Z");
47
+ it("renders the count against the plan allowance", () => {
48
+ expect(formatUsage({ requestCount: 4_231, includedRequests: 10_000, periodEnd, now })).toBe("4,231 / 10,000 requests (resets in 12 days)");
49
+ });
50
+ it("renders zero for a team that has made no request in the window", () => {
51
+ expect(formatUsage({ requestCount: 0, includedRequests: 10_000, periodEnd, now })).toBe("0 / 10,000 requests (resets in 12 days)");
52
+ });
53
+ it("omits the allowance when the plan has no published one", () => {
54
+ expect(formatUsage({ requestCount: 3_000_000, includedRequests: null, periodEnd, now })).toBe("3,000,000 requests (resets in 12 days)");
55
+ });
56
+ });
57
+ describe("validateTimeFlag", () => {
58
+ it("accepts missing and valid values", () => {
59
+ expect(() => validateTimeFlag(undefined, "since")).not.toThrow();
60
+ expect(() => validateTimeFlag("1h", "since")).not.toThrow();
61
+ expect(() => validateTimeFlag("2024-01-01T00:00:00Z", "until")).not.toThrow();
62
+ });
63
+ it("includes the flag name when rejecting invalid values", () => {
64
+ expect(() => validateTimeFlag("yesterday", "since")).toThrow('Invalid --since value: "yesterday"');
65
+ });
66
+ });
67
+ describe("getResponseErrorStatus", () => {
68
+ it("reads a numeric status off the error itself", () => {
69
+ expect(getResponseErrorStatus(Object.assign(new Error("challenge"), { status: 401 }))).toBe(401);
70
+ });
71
+ it("reads the status off a Response held as cause", () => {
72
+ expect(getResponseErrorStatus(new Error("unexpected", { cause: new Response(null, { status: 403 }) }))).toBe(403);
73
+ expect(getResponseErrorStatus(new Error("unexpected", { cause: new Response(null, { status: 500 }) }))).toBe(500);
74
+ });
75
+ it("returns undefined when no status is present", () => {
76
+ expect(getResponseErrorStatus(new Error("boom"))).toBeUndefined();
77
+ expect(getResponseErrorStatus("boom")).toBeUndefined();
78
+ expect(getResponseErrorStatus(undefined)).toBeUndefined();
79
+ expect(getResponseErrorStatus({ cause: {} })).toBeUndefined();
80
+ });
81
+ });
44
82
  //# sourceMappingURL=utils.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/lib/utils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/lib/utils.test.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,17 @@
1
- import { getOAuthClient } from "@alpic-ai/sdk";
2
1
  import chalk from "chalk";
3
- import { api } from "../api.js";
2
+ import { alpic } from "./alpic-sdk.js";
4
3
  export async function getWhoamiInfoMessage() {
5
- const info = (await getWhoamiInfoFromApiKey()) ?? (await getWhoamiInfoFromOAuth());
6
- if (info === null) {
4
+ const info = await alpic.whoami();
5
+ if (info.method === "unauthenticated") {
7
6
  return "Not logged in. Run `alpic login` or set ALPIC_API_KEY.";
8
7
  }
9
8
  if (info.method === "api_key") {
10
9
  return `Authenticated via API key — Team: ${chalk.green(info.team?.name ?? "unknown")}`;
11
10
  }
12
- let label = chalk.cyan(info.email);
11
+ let label = chalk.cyan(info.email ?? "unknown");
13
12
  if (info.name) {
14
13
  label = `${chalk.green(info.name)} (${label})`;
15
14
  }
16
15
  return `Authenticated as ${label}`;
17
16
  }
18
- async function getWhoamiInfoFromApiKey() {
19
- if (process.env.ALPIC_API_KEY === undefined) {
20
- return null;
21
- }
22
- const team = await getApiKeyTeam();
23
- return {
24
- method: "api_key",
25
- team,
26
- };
27
- }
28
- async function getWhoamiInfoFromOAuth() {
29
- const token = await getOAuthClient().getValidAccessToken();
30
- if (!token) {
31
- return null;
32
- }
33
- const userInfo = await getOAuthClient().fetchUserInfo(token);
34
- if (!userInfo) {
35
- return null;
36
- }
37
- return {
38
- method: "oauth",
39
- email: userInfo.email ?? "unknown",
40
- name: userInfo.name,
41
- };
42
- }
43
- async function getApiKeyTeam() {
44
- const teams = await api.teams.list.v1();
45
- return teams[0];
46
- }
47
17
  //# sourceMappingURL=whoami.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IAElC,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO,wDAAwD,CAAC;IAClE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,qCAAqC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;IACjD,CAAC;IAED,OAAO,oBAAoB,KAAK,EAAE,CAAC;AACrC,CAAC"}
package/dist/sentry.js CHANGED
@@ -12,14 +12,11 @@ export function initSentry(release) {
12
12
  release,
13
13
  // No tracing, profiling, or logs for a one-shot CLI process.
14
14
  tracesSampleRate: 0,
15
- // The default integrations register uncaughtException / unhandledRejection
16
- // handlers and start OpenTelemetry. We init lazily after oclif has already
17
- // caught the error, so those are pure overhead with no benefit.
15
+ // The default integrations register uncaughtException/unhandledRejection handlers and start OpenTelemetry — pure overhead since we init lazily after oclif has already caught the error.
18
16
  defaultIntegrations: false,
17
+ integrations: [Sentry.linkedErrorsIntegration()],
19
18
  beforeSend(event) {
20
- // Stack frames and exception messages often contain the user's home
21
- // directory. Replace it with `~` so we don't ship absolute paths to
22
- // Sentry.
19
+ // Stack frames and exception messages often contain the user's home directory; replace it with `~` so absolute paths never ship to Sentry.
23
20
  const home = os.homedir();
24
21
  if (!home) {
25
22
  return event;
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,GAAG,iGAAiG,CAAC;AAErH,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,UAAU;QACf,OAAO;QACP,6DAA6D;QAC7D,gBAAgB,EAAE,CAAC;QACnB,2EAA2E;QAC3E,2EAA2E;QAC3E,gEAAgE;QAChE,mBAAmB,EAAE,KAAK;QAC1B,UAAU,CAAC,KAAK;YACd,oEAAoE;YACpE,oEAAoE;YACpE,UAAU;YACV,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3F,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC/C,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;oBAChD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACvC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,GAAG,iGAAiG,CAAC;AAErH,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,UAAU;QACf,OAAO;QACP,6DAA6D;QAC7D,gBAAgB,EAAE,CAAC;QACnB,yLAAyL;QACzL,mBAAmB,EAAE,KAAK;QAC1B,YAAY,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QAChD,UAAU,CAAC,KAAK;YACd,2IAA2I;YAC3I,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3F,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC/C,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;oBAChD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACvC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alpic",
3
- "version": "0.0.0-dev.gf5cd963",
3
+ "version": "0.0.0-dev.gf60a82f",
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.20.8"
17
+ "node": ">= 22.23.2"
18
18
  },
19
19
  "keywords": [
20
20
  "chatgpt",
@@ -25,44 +25,43 @@
25
25
  "author": "Alpic",
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
- "@clack/prompts": "^1.6.0",
29
- "@oclif/core": "^4.11.8",
30
- "@orpc/client": "^1.14.6",
31
- "@orpc/contract": "^1.14.6",
32
- "@orpc/openapi-client": "^1.14.6",
33
- "@sentry/node": "^10.59.0",
28
+ "@alpic-ai/api": "0.0.0-dev.gf60a82f",
29
+ "@alpic-ai/sdk": "0.0.0-dev.gf60a82f",
30
+ "@clack/prompts": "^1.7.0",
31
+ "@oclif/core": "^4.14.0",
32
+ "@orpc/client": "^1.15.0",
33
+ "@orpc/contract": "^1.15.0",
34
+ "@orpc/openapi-client": "^1.15.0",
35
+ "@sentry/node": "^10.72.0",
34
36
  "@t3-oss/env-core": "^0.13.11",
35
- "@vercel/detect-agent": "^1.2.3",
36
- "chalk": "^5.6.2",
37
+ "@vercel/detect-agent": "^1.2.5",
38
+ "chalk": "^6.0.0",
37
39
  "ci-info": "^4.4.0",
38
40
  "envfile": "^7.1.0",
39
41
  "jwt-decode": "^4.0.0",
40
- "open": "^11.0.0",
41
- "posthog-node": "^5.38.2",
42
+ "open": "^11.0.2",
43
+ "posthog-node": "^5.51.4",
42
44
  "semver": "^7.8.5",
43
- "tar": "^7.5.16",
44
- "undici": "^8.5.0",
45
- "zod": "^4.4.3",
46
- "@alpic-ai/api": "0.0.0-dev.gf5cd963",
47
- "@alpic-ai/sdk": "0.0.0-dev.gf5cd963"
45
+ "undici": "^6.27.0",
46
+ "zod": "^4.5.4"
48
47
  },
49
48
  "devDependencies": {
50
- "@orpc/openapi": "^1.14.6",
51
- "@orpc/server": "^1.14.6",
52
- "@orpc/zod": "^1.14.6",
49
+ "@orpc/openapi": "^1.15.0",
50
+ "@orpc/server": "^1.15.0",
51
+ "@orpc/zod": "^1.15.0",
53
52
  "@total-typescript/tsconfig": "^1.0.4",
54
53
  "@types/express": "^5.0.6",
55
- "@types/node": "^25.9.4",
56
- "@types/semver": "^7.7.1",
54
+ "@types/node": "^25.9.5",
55
+ "@types/semver": "^7.8.0",
57
56
  "express": "^5.2.1",
58
- "jsdom": "^29.1.1",
57
+ "jsdom": "^30.0.1",
59
58
  "node-pty": "1.1.0",
60
- "pipenet": "1.4.0",
59
+ "pipenet": "1.4.2",
61
60
  "selfsigned": "^5.5.0",
62
61
  "shx": "^0.4.0",
63
62
  "ts-node": "^10.9.2",
64
63
  "typescript": "^6.0.3",
65
- "vitest": "^4.1.9"
64
+ "vitest": "^4.1.11"
66
65
  },
67
66
  "bin": {
68
67
  "alpic": "bin/run.js"
@@ -82,9 +81,9 @@
82
81
  "test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format && pnpm run test:pack",
83
82
  "test:unit": "vitest run",
84
83
  "test:format": "biome check --error-on-warnings .",
85
- "test:type": "tsc --noEmit",
84
+ "test:type": "tsgo --noEmit",
86
85
  "test:pack": "sh scripts/test-pack.sh",
87
86
  "update:docs": "claude --add-dir ../../docs --permission-mode acceptEdits -p \"/update-cli-docs\" 2>&1 && pnpm --filter docs run format",
88
- "publish:npm": "pnpm publish --tag \"${NPM_TAG}\" --access public --no-git-checks"
87
+ "publish:npm": "../../scripts/publish-if-new.sh"
89
88
  }
90
89
  }
@@ -1,7 +0,0 @@
1
- export declare function ensureGitAvailable(): void;
2
- export declare function getGitFiles(): string[];
3
- export declare function getFilesToPack(): string[];
4
- export declare function createTarArchive(files: string[]): Promise<{
5
- tmpDir: string;
6
- archivePath: string;
7
- }>;
@@ -1,57 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { existsSync, mkdtempSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { create as tarCreate } from "tar";
6
- const GIT_FILES_MAX_BUFFER = 10 * 1024 * 1024;
7
- function isGitRepository() {
8
- return existsSync(join(process.cwd(), ".git"));
9
- }
10
- export function ensureGitAvailable() {
11
- try {
12
- execSync("git --version", { stdio: "ignore" });
13
- }
14
- catch {
15
- throw new Error("Git is required to deploy. Please install git and ensure it is available in your PATH.");
16
- }
17
- }
18
- export function getGitFiles() {
19
- const output = execSync("git ls-files -z --cached --others --exclude-standard -- .", {
20
- encoding: "utf8",
21
- maxBuffer: GIT_FILES_MAX_BUFFER,
22
- });
23
- const files = output.split("\0").filter(Boolean);
24
- if (files.length === 0) {
25
- throw new Error("No tracked or untracked files found. Ensure you are in a git repository with files to deploy.");
26
- }
27
- return files;
28
- }
29
- export function getFilesToPack() {
30
- if (isGitRepository()) {
31
- return getGitFiles();
32
- }
33
- ensureGitAvailable();
34
- execSync("git init", { stdio: "ignore" });
35
- try {
36
- return getGitFiles();
37
- }
38
- finally {
39
- rmSync(join(process.cwd(), ".git"), { recursive: true, force: true });
40
- }
41
- }
42
- export async function createTarArchive(files) {
43
- const tmpDir = mkdtempSync(join(tmpdir(), "alpic-deploy-"));
44
- const archivePath = join(tmpDir, "source.tar.gz");
45
- try {
46
- await tarCreate({
47
- gzip: true,
48
- file: archivePath,
49
- }, files);
50
- }
51
- catch (error) {
52
- rmSync(tmpDir, { recursive: true, force: true });
53
- throw error;
54
- }
55
- return { tmpDir, archivePath };
56
- }
57
- //# sourceMappingURL=archive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC;AAE1C,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,SAAS,eAAe;IACtB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,2DAA2D,EAAE;QACnF,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,kBAAkB,EAAE,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,SAAS,CACb;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;SAClB,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { ProjectConfig } from "../types.js";
2
- export declare const config: {
3
- load: () => {
4
- projectId: string;
5
- teamId: string;
6
- teamName: string | undefined;
7
- projectName: string;
8
- environmentId: string | undefined;
9
- environmentName: string | undefined;
10
- } | null;
11
- save: (projectConfig: ProjectConfig) => void;
12
- };
@@ -1,32 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- const getProjectJsonPath = () => join(process.cwd(), ".alpic", "project.json");
4
- export const config = {
5
- load: () => {
6
- const path = getProjectJsonPath();
7
- if (!existsSync(path)) {
8
- return null;
9
- }
10
- let raw;
11
- try {
12
- raw = JSON.parse(readFileSync(path, "utf8"));
13
- }
14
- catch (error) {
15
- throw new Error(`Failed to load project config: ${error.message}`);
16
- }
17
- return {
18
- projectId: raw.projectId,
19
- teamId: raw.teamId,
20
- teamName: raw.teamName,
21
- projectName: raw.projectName ?? raw.projectId,
22
- environmentId: raw.environmentId,
23
- environmentName: raw.environmentName,
24
- };
25
- },
26
- save: (projectConfig) => {
27
- const path = getProjectJsonPath();
28
- mkdirSync(join(process.cwd(), ".alpic"), { recursive: true });
29
- writeFileSync(path, JSON.stringify(projectConfig, null, 2));
30
- },
31
- };
32
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,GAAG,EAAE;QACT,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAmE,CAAC;QACxE,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAG1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS;YAC7C,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,aAA4B,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- export declare function uploadToPresignedUrl(uploadUrl: string, buffer: Buffer): Promise<void>;
@@ -1,13 +0,0 @@
1
- export async function uploadToPresignedUrl(uploadUrl, buffer) {
2
- const res = await fetch(uploadUrl, {
3
- method: "PUT",
4
- headers: {
5
- "Content-Type": "application/gzip",
6
- },
7
- body: new Uint8Array(buffer),
8
- });
9
- if (!res.ok) {
10
- throw new Error(`Upload failed: ${res.status} ${res.statusText}`);
11
- }
12
- }
13
- //# sourceMappingURL=upload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,MAAc;IAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;QACjC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export type ProjectConfig = {
2
- projectId: string;
3
- teamId: string;
4
- teamName?: string;
5
- projectName: string;
6
- environmentId?: string;
7
- environmentName?: string;
8
- };
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# 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":""}