alpic 0.0.0-dev.gee3e167 → 0.0.0-dev.gee425da

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 (263) hide show
  1. package/README.md +18 -0
  2. package/bin/dev.js +0 -0
  3. package/bin/run.js +15 -1
  4. package/dist/__tests__/alpic-command.test.js +8 -4
  5. package/dist/__tests__/alpic-command.test.js.map +1 -1
  6. package/dist/__tests__/audit.e2e.test.js +17 -30
  7. package/dist/__tests__/audit.e2e.test.js.map +1 -1
  8. package/dist/__tests__/auth.e2e.test.js +9 -23
  9. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  10. package/dist/__tests__/deploy-flags.e2e.test.js +6 -21
  11. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
  12. package/dist/__tests__/deploy.e2e.test.js +5 -21
  13. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  14. package/dist/__tests__/deployment-inspect.e2e.test.js +18 -31
  15. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -1
  16. package/dist/__tests__/deployment-list.e2e.test.js +18 -31
  17. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -1
  18. package/dist/__tests__/deployment-logs.e2e.test.js +15 -29
  19. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -1
  20. package/dist/__tests__/environment-delete.e2e.test.d.ts +1 -0
  21. package/dist/__tests__/environment-delete.e2e.test.js +95 -0
  22. package/dist/__tests__/environment-delete.e2e.test.js.map +1 -0
  23. package/dist/__tests__/environment-list.e2e.test.js +6 -22
  24. package/dist/__tests__/environment-list.e2e.test.js.map +1 -1
  25. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +19 -31
  26. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -1
  27. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +19 -31
  28. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -1
  29. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +18 -31
  30. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -1
  31. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +18 -31
  32. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -1
  33. package/dist/__tests__/git-flags.e2e.test.js +6 -22
  34. package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
  35. package/dist/__tests__/git.e2e.test.js +7 -22
  36. package/dist/__tests__/git.e2e.test.js.map +1 -1
  37. package/dist/__tests__/insights-category.e2e.test.d.ts +1 -0
  38. package/dist/__tests__/insights-category.e2e.test.js +247 -0
  39. package/dist/__tests__/insights-category.e2e.test.js.map +1 -0
  40. package/dist/__tests__/insights.e2e.test.d.ts +1 -0
  41. package/dist/__tests__/insights.e2e.test.js +193 -0
  42. package/dist/__tests__/insights.e2e.test.js.map +1 -0
  43. package/dist/__tests__/logs.e2e.test.js +21 -35
  44. package/dist/__tests__/logs.e2e.test.js.map +1 -1
  45. package/dist/__tests__/mock-api.d.ts +28 -1
  46. package/dist/__tests__/mock-api.js +385 -41
  47. package/dist/__tests__/mock-api.js.map +1 -1
  48. package/dist/__tests__/playground/playground-configure.e2e.test.js +18 -26
  49. package/dist/__tests__/playground/playground-configure.e2e.test.js.map +1 -1
  50. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js +18 -26
  51. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js.map +1 -1
  52. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js +18 -26
  53. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js.map +1 -1
  54. package/dist/__tests__/playground/playground-headers.e2e.test.js +18 -26
  55. package/dist/__tests__/playground/playground-headers.e2e.test.js.map +1 -1
  56. package/dist/__tests__/playground/playground-status.e2e.test.js +18 -26
  57. package/dist/__tests__/playground/playground-status.e2e.test.js.map +1 -1
  58. package/dist/__tests__/project-list.e2e.test.js +5 -21
  59. package/dist/__tests__/project-list.e2e.test.js.map +1 -1
  60. package/dist/__tests__/publish.e2e.test.js +6 -24
  61. package/dist/__tests__/publish.e2e.test.js.map +1 -1
  62. package/dist/__tests__/submission.e2e.test.d.ts +1 -0
  63. package/dist/__tests__/submission.e2e.test.js +173 -0
  64. package/dist/__tests__/submission.e2e.test.js.map +1 -0
  65. package/dist/__tests__/team-inspect.e2e.test.js +26 -1
  66. package/dist/__tests__/team-inspect.e2e.test.js.map +1 -1
  67. package/dist/__tests__/team-list.e2e.test.js +5 -21
  68. package/dist/__tests__/team-list.e2e.test.js.map +1 -1
  69. package/dist/__tests__/telemetry-destinations.e2e.test.d.ts +1 -0
  70. package/dist/__tests__/telemetry-destinations.e2e.test.js +105 -0
  71. package/dist/__tests__/telemetry-destinations.e2e.test.js.map +1 -0
  72. package/dist/__tests__/tunnel.e2e.test.js +114 -23
  73. package/dist/__tests__/tunnel.e2e.test.js.map +1 -1
  74. package/dist/__tests__/utils.d.ts +17 -6
  75. package/dist/__tests__/utils.js +49 -20
  76. package/dist/__tests__/utils.js.map +1 -1
  77. package/dist/api.d.ts +1 -1
  78. package/dist/api.js +2 -21
  79. package/dist/api.js.map +1 -1
  80. package/dist/commands/audit.js +3 -1
  81. package/dist/commands/audit.js.map +1 -1
  82. package/dist/commands/deploy.js +71 -54
  83. package/dist/commands/deploy.js.map +1 -1
  84. package/dist/commands/deployment/list.js +3 -3
  85. package/dist/commands/deployment/list.js.map +1 -1
  86. package/dist/commands/environment/delete.d.ts +13 -0
  87. package/dist/commands/environment/delete.js +45 -0
  88. package/dist/commands/environment/delete.js.map +1 -0
  89. package/dist/commands/environment/inspect.js +3 -3
  90. package/dist/commands/environment/inspect.js.map +1 -1
  91. package/dist/commands/environment/list.js +3 -3
  92. package/dist/commands/environment/list.js.map +1 -1
  93. package/dist/commands/git/connect.js +2 -2
  94. package/dist/commands/git/connect.js.map +1 -1
  95. package/dist/commands/git/disconnect.js +2 -2
  96. package/dist/commands/git/disconnect.js.map +1 -1
  97. package/dist/commands/insights/category/create.d.ts +17 -0
  98. package/dist/commands/insights/category/create.js +63 -0
  99. package/dist/commands/insights/category/create.js.map +1 -0
  100. package/dist/commands/insights/category/delete.d.ts +13 -0
  101. package/dist/commands/insights/category/delete.js +40 -0
  102. package/dist/commands/insights/category/delete.js.map +1 -0
  103. package/dist/commands/insights/category/link.d.ts +14 -0
  104. package/dist/commands/insights/category/link.js +36 -0
  105. package/dist/commands/insights/category/link.js.map +1 -0
  106. package/dist/commands/insights/category/list.d.ts +13 -0
  107. package/dist/commands/insights/category/list.js +46 -0
  108. package/dist/commands/insights/category/list.js.map +1 -0
  109. package/dist/commands/insights/category/unlink.d.ts +14 -0
  110. package/dist/commands/insights/category/unlink.js +36 -0
  111. package/dist/commands/insights/category/unlink.js.map +1 -0
  112. package/dist/commands/insights/category/update.d.ts +16 -0
  113. package/dist/commands/insights/category/update.js +45 -0
  114. package/dist/commands/insights/category/update.js.map +1 -0
  115. package/dist/commands/insights/feedback/list.d.ts +19 -0
  116. package/dist/commands/insights/feedback/list.js +73 -0
  117. package/dist/commands/insights/feedback/list.js.map +1 -0
  118. package/dist/commands/insights/intent/list.d.ts +22 -0
  119. package/dist/commands/insights/intent/list.js +89 -0
  120. package/dist/commands/insights/intent/list.js.map +1 -0
  121. package/dist/commands/link.js +4 -3
  122. package/dist/commands/link.js.map +1 -1
  123. package/dist/commands/login.js +7 -5
  124. package/dist/commands/login.js.map +1 -1
  125. package/dist/commands/logout.js +1 -1
  126. package/dist/commands/logout.js.map +1 -1
  127. package/dist/commands/logs.js +1 -9
  128. package/dist/commands/logs.js.map +1 -1
  129. package/dist/commands/project/inspect.js +3 -3
  130. package/dist/commands/project/inspect.js.map +1 -1
  131. package/dist/commands/project/list.js +3 -3
  132. package/dist/commands/project/list.js.map +1 -1
  133. package/dist/commands/submission/create.d.ts +15 -0
  134. package/dist/commands/submission/create.js +59 -0
  135. package/dist/commands/submission/create.js.map +1 -0
  136. package/dist/commands/submission/inspect.d.ts +10 -0
  137. package/dist/commands/submission/inspect.js +56 -0
  138. package/dist/commands/submission/inspect.js.map +1 -0
  139. package/dist/commands/submission/list.d.ts +13 -0
  140. package/dist/commands/submission/list.js +63 -0
  141. package/dist/commands/submission/list.js.map +1 -0
  142. package/dist/commands/submission/update.d.ts +12 -0
  143. package/dist/commands/submission/update.js +37 -0
  144. package/dist/commands/submission/update.js.map +1 -0
  145. package/dist/commands/team/inspect.js +25 -10
  146. package/dist/commands/team/inspect.js.map +1 -1
  147. package/dist/commands/team/list.js +3 -3
  148. package/dist/commands/team/list.js.map +1 -1
  149. package/dist/commands/telemetry/destinations/create.d.ts +19 -0
  150. package/dist/commands/telemetry/destinations/create.js +57 -0
  151. package/dist/commands/telemetry/destinations/create.js.map +1 -0
  152. package/dist/commands/telemetry/destinations/delete.d.ts +13 -0
  153. package/dist/commands/telemetry/destinations/delete.js +27 -0
  154. package/dist/commands/telemetry/destinations/delete.js.map +1 -0
  155. package/dist/commands/telemetry/destinations/list.d.ts +13 -0
  156. package/dist/commands/telemetry/destinations/list.js +48 -0
  157. package/dist/commands/telemetry/destinations/list.js.map +1 -0
  158. package/dist/commands/telemetry/destinations/update.d.ts +20 -0
  159. package/dist/commands/telemetry/destinations/update.js +62 -0
  160. package/dist/commands/telemetry/destinations/update.js.map +1 -0
  161. package/dist/commands/tunnel.js +30 -66
  162. package/dist/commands/tunnel.js.map +1 -1
  163. package/dist/commands/whoami.js +1 -1
  164. package/dist/commands/whoami.js.map +1 -1
  165. package/dist/lib/agent-mode.d.ts +8 -1
  166. package/dist/lib/agent-mode.js +25 -26
  167. package/dist/lib/agent-mode.js.map +1 -1
  168. package/dist/lib/alpic-command.d.ts +2 -1
  169. package/dist/lib/alpic-command.js +20 -8
  170. package/dist/lib/alpic-command.js.map +1 -1
  171. package/dist/lib/alpic-sdk.d.ts +2 -0
  172. package/dist/lib/alpic-sdk.js +8 -0
  173. package/dist/lib/alpic-sdk.js.map +1 -0
  174. package/dist/lib/audit.d.ts +1 -0
  175. package/dist/lib/audit.js +24 -15
  176. package/dist/lib/audit.js.map +1 -1
  177. package/dist/lib/base-workflow.d.ts +2 -1
  178. package/dist/lib/base-workflow.js +3 -3
  179. package/dist/lib/base-workflow.js.map +1 -1
  180. package/dist/lib/deployment.d.ts +0 -21
  181. package/dist/lib/deployment.js +20 -69
  182. package/dist/lib/deployment.js.map +1 -1
  183. package/dist/lib/environment-variable.js +14 -13
  184. package/dist/lib/environment-variable.js.map +1 -1
  185. package/dist/lib/insights.d.ts +19 -0
  186. package/dist/lib/insights.js +54 -0
  187. package/dist/lib/insights.js.map +1 -0
  188. package/dist/lib/link.d.ts +1 -2
  189. package/dist/lib/link.js +20 -75
  190. package/dist/lib/link.js.map +1 -1
  191. package/dist/lib/logs.js +4 -5
  192. package/dist/lib/logs.js.map +1 -1
  193. package/dist/lib/playground.js +25 -25
  194. package/dist/lib/playground.js.map +1 -1
  195. package/dist/lib/project-settings.d.ts +7 -0
  196. package/dist/lib/project-settings.js +140 -0
  197. package/dist/lib/project-settings.js.map +1 -0
  198. package/dist/lib/project-settings.test.d.ts +1 -0
  199. package/dist/lib/project-settings.test.js +56 -0
  200. package/dist/lib/project-settings.test.js.map +1 -0
  201. package/dist/lib/publish.js +3 -3
  202. package/dist/lib/publish.js.map +1 -1
  203. package/dist/lib/resolve.d.ts +7 -6
  204. package/dist/lib/resolve.js +27 -23
  205. package/dist/lib/resolve.js.map +1 -1
  206. package/dist/lib/submission.d.ts +13 -0
  207. package/dist/lib/submission.js +52 -0
  208. package/dist/lib/submission.js.map +1 -0
  209. package/dist/lib/telemetry-destinations.d.ts +9 -0
  210. package/dist/lib/telemetry-destinations.js +21 -0
  211. package/dist/lib/telemetry-destinations.js.map +1 -0
  212. package/dist/lib/telemetry-destinations.test.d.ts +1 -0
  213. package/dist/lib/telemetry-destinations.test.js +14 -0
  214. package/dist/lib/telemetry-destinations.test.js.map +1 -0
  215. package/dist/lib/telemetry.js +27 -17
  216. package/dist/lib/telemetry.js.map +1 -1
  217. package/dist/lib/utils.d.ts +9 -1
  218. package/dist/lib/utils.js +28 -2
  219. package/dist/lib/utils.js.map +1 -1
  220. package/dist/lib/utils.test.js +43 -5
  221. package/dist/lib/utils.test.js.map +1 -1
  222. package/dist/lib/whoami.js +17 -0
  223. package/dist/lib/whoami.js.map +1 -0
  224. package/dist/sentry.js +3 -6
  225. package/dist/sentry.js.map +1 -1
  226. package/package.json +29 -32
  227. package/dist/lib/archive.d.ts +0 -7
  228. package/dist/lib/archive.js +0 -57
  229. package/dist/lib/archive.js.map +0 -1
  230. package/dist/lib/auth/auth.d.ts +0 -5
  231. package/dist/lib/auth/auth.js +0 -50
  232. package/dist/lib/auth/auth.js.map +0 -1
  233. package/dist/lib/auth/oauth/client.d.ts +0 -28
  234. package/dist/lib/auth/oauth/client.js +0 -116
  235. package/dist/lib/auth/oauth/client.js.map +0 -1
  236. package/dist/lib/auth/oauth/constants.d.ts +0 -2
  237. package/dist/lib/auth/oauth/constants.js +0 -3
  238. package/dist/lib/auth/oauth/constants.js.map +0 -1
  239. package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
  240. package/dist/lib/auth/oauth/server/assets/authorize.html +0 -234
  241. package/dist/lib/auth/oauth/server/assets/callback.html +0 -88
  242. package/dist/lib/auth/oauth/server/index.d.ts +0 -9
  243. package/dist/lib/auth/oauth/server/index.js +0 -128
  244. package/dist/lib/auth/oauth/server/index.js.map +0 -1
  245. package/dist/lib/auth/whoami.js +0 -47
  246. package/dist/lib/auth/whoami.js.map +0 -1
  247. package/dist/lib/config.d.ts +0 -12
  248. package/dist/lib/config.js +0 -32
  249. package/dist/lib/config.js.map +0 -1
  250. package/dist/lib/global-store.d.ts +0 -28
  251. package/dist/lib/global-store.js +0 -76
  252. package/dist/lib/global-store.js.map +0 -1
  253. package/dist/lib/upload.d.ts +0 -1
  254. package/dist/lib/upload.js +0 -13
  255. package/dist/lib/upload.js.map +0 -1
  256. package/dist/lib/vendor/pipenet.d.ts +0 -1
  257. package/dist/lib/vendor/pipenet.js +0 -16877
  258. package/dist/lib/vendor/pipenet.js.LEGAL.txt +0 -17
  259. package/dist/lib/vendor/pipenet.js.map +0 -7
  260. package/dist/types.d.ts +0 -8
  261. package/dist/types.js +0 -2
  262. package/dist/types.js.map +0 -1
  263. /package/dist/lib/{auth/whoami.d.ts → whoami.d.ts} +0 -0
@@ -0,0 +1,105 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import { cliSession, expectSuccessfulApiCall, registerCliE2ELifecycle } from "./utils.js";
3
+ const ENV_ID = "env-telemetry-destinations-test";
4
+ const PROJECT_ID = "prj-telemetry-destinations-test";
5
+ const DESTINATION_ID = "otlp-destination-test";
6
+ describe("alpic telemetry destinations (E2E)", () => {
7
+ const context = registerCliE2ELifecycle({
8
+ projects: [
9
+ {
10
+ projectId: PROJECT_ID,
11
+ teamId: "mock-team-id",
12
+ projectName: "telemetry-destinations-project",
13
+ environmentId: ENV_ID,
14
+ environmentName: "production",
15
+ },
16
+ ],
17
+ });
18
+ let mockServer;
19
+ let serverUrl;
20
+ let cwd;
21
+ let binPath;
22
+ beforeEach(() => {
23
+ ({ mockServer, serverUrl, cwd, binPath } = context);
24
+ mockServer.setTelemetryDestinations(ENV_ID, [
25
+ {
26
+ id: DESTINATION_ID,
27
+ signal: "traces",
28
+ endpoint: "https://otlp.example.com/v1/traces",
29
+ protocol: "http/protobuf",
30
+ status: "active",
31
+ lastFailureReason: null,
32
+ isScopedToIntentionalRequestsOnly: false,
33
+ headers: [
34
+ { id: "header-visible", name: "X-Tenant", value: "acme", isSecret: false },
35
+ { id: "header-secret", name: "Authorization", value: null, isSecret: true },
36
+ ],
37
+ },
38
+ ]);
39
+ });
40
+ const env = () => ({ ALPIC_API_BASE_URL: serverUrl, ALPIC_API_KEY: "test-api-key" });
41
+ it("lists destinations without exposing secret header values", async () => {
42
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "telemetry", "destinations", "list", "--environment-id", ENV_ID], { cwd, env: env() });
43
+ expect(exitCode).toBe(0);
44
+ expect(output).toContain("https://otlp.example.com/v1/traces");
45
+ expect(output).toContain("Authorization=<secret>");
46
+ expect(output).not.toContain("Bearer private");
47
+ expectSuccessfulApiCall(mockServer.getLastCall("GET", /\/telemetry-destinations$/));
48
+ });
49
+ it("creates a destination with visible and secret headers", async () => {
50
+ const { exitCode, output } = await cliSession(process.execPath, [
51
+ binPath,
52
+ "telemetry",
53
+ "destinations",
54
+ "create",
55
+ "--environment-id",
56
+ ENV_ID,
57
+ "--signal",
58
+ "logs",
59
+ "--endpoint",
60
+ "https://otlp.example.com/v1/logs",
61
+ "--header",
62
+ "X-Tenant=acme",
63
+ "--secret-header",
64
+ "Authorization=Bearer private",
65
+ ], { cwd, env: env() });
66
+ expect(exitCode).toBe(0);
67
+ expect(output).toContain("Created logs destination");
68
+ const call = mockServer.getLastCall("POST", /\/telemetry-destinations$/);
69
+ expectSuccessfulApiCall(call);
70
+ expect(call.input).toMatchObject({
71
+ signal: "logs",
72
+ endpoint: "https://otlp.example.com/v1/logs",
73
+ protocol: "http/protobuf",
74
+ headers: [
75
+ { name: "X-Tenant", value: "acme", isSecret: false },
76
+ { name: "Authorization", value: "Bearer private", isSecret: true },
77
+ ],
78
+ });
79
+ });
80
+ it("updates trace filtering without replacing headers", async () => {
81
+ const { exitCode, output } = await cliSession(process.execPath, [
82
+ binPath,
83
+ "telemetry",
84
+ "destinations",
85
+ "update",
86
+ "--environment-id",
87
+ ENV_ID,
88
+ "--destination-id",
89
+ DESTINATION_ID,
90
+ "--intentional-only",
91
+ ], { cwd, env: env() });
92
+ expect(exitCode).toBe(0);
93
+ expect(output).toContain("Updated traces destination");
94
+ const call = mockServer.getLastCall("PATCH", new RegExp(`/telemetry-destinations/${DESTINATION_ID}$`));
95
+ expectSuccessfulApiCall(call);
96
+ expect(call.input).toEqual({ isScopedToIntentionalRequestsOnly: true });
97
+ });
98
+ it("deletes a destination", async () => {
99
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "telemetry", "destinations", "delete", "--environment-id", ENV_ID, "--destination-id", DESTINATION_ID], { cwd, env: env() });
100
+ expect(exitCode).toBe(0);
101
+ expect(output).toContain(`Deleted telemetry destination ${DESTINATION_ID}`);
102
+ expectSuccessfulApiCall(mockServer.getLastCall("DELETE", new RegExp(`/telemetry-destinations/${DESTINATION_ID}$`)));
103
+ });
104
+ });
105
+ //# sourceMappingURL=telemetry-destinations.e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-destinations.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/telemetry-destinations.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,61 @@
1
- import { rmSync } from "node:fs";
2
- import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
3
- import { MockApiServer } from "./mock-api.js";
4
- import { cliSession, createOAuthEnv, setupTestDirectory } from "./utils.js";
1
+ import http from "node:http";
2
+ import { createServer } from "pipenet/server";
3
+ import { beforeEach, describe, expect, it } from "vitest";
4
+ import { cliSession, createOAuthEnv, registerCliE2ELifecycle } from "./utils.js";
5
+ function freePort() {
6
+ return new Promise((resolve, reject) => {
7
+ const probe = http.createServer();
8
+ probe.on("error", reject);
9
+ probe.listen(0, "127.0.0.1", () => {
10
+ const { port } = probe.address();
11
+ probe.close(() => resolve(port));
12
+ });
13
+ });
14
+ }
15
+ async function startTunnelServer() {
16
+ const tunnelPort = await freePort();
17
+ const tunnelServer = createServer({
18
+ domains: ["localhost"],
19
+ tunnelPort,
20
+ maxTcpSockets: 10,
21
+ keepAliveDelayMs: 1_000,
22
+ });
23
+ // Bind on all interfaces so the CLI's `localhost` tunnel sockets connect whether it resolves to IPv4 or IPv6.
24
+ await tunnelServer.tunnelServer?.listen(tunnelPort);
25
+ const httpPort = await new Promise((resolve) => {
26
+ tunnelServer.listen(0, () => resolve(tunnelServer.address().port));
27
+ });
28
+ const close = async () => {
29
+ tunnelServer.tunnelServer?.close();
30
+ await new Promise((resolve) => tunnelServer.close(() => resolve()));
31
+ };
32
+ return { httpPort, close };
33
+ }
34
+ function proxiedStatus(port, subdomain) {
35
+ return new Promise((resolve, reject) => {
36
+ const req = http.request({
37
+ agent: false,
38
+ host: "127.0.0.1",
39
+ port,
40
+ method: "POST",
41
+ path: "/mcp",
42
+ headers: { host: `${subdomain}.localhost`, connection: "close", "content-type": "application/json" },
43
+ }, (res) => {
44
+ res.resume();
45
+ res.on("end", () => resolve(res.statusCode ?? 0));
46
+ });
47
+ req.on("error", reject);
48
+ req.end("{}");
49
+ });
50
+ }
5
51
  describe("alpic tunnel (E2E)", () => {
52
+ const context = registerCliE2ELifecycle();
6
53
  let mockServer;
7
54
  let serverUrl;
8
55
  let cwd;
9
56
  let binPath;
10
- beforeAll(async () => {
11
- mockServer = new MockApiServer();
12
- serverUrl = await mockServer.start();
13
- });
14
- afterAll(async () => {
15
- await mockServer.stop();
16
- });
17
- beforeEach(async () => {
18
- mockServer.reset();
19
- const setup = await setupTestDirectory();
20
- cwd = setup.cwd;
21
- binPath = setup.binPath;
22
- });
23
- afterEach(() => {
24
- if (cwd) {
25
- rmSync(cwd, { recursive: true, force: true });
26
- }
57
+ beforeEach(() => {
58
+ ({ mockServer, serverUrl, cwd, binPath } = context);
27
59
  });
28
60
  it("triggers login when not authenticated", async () => {
29
61
  const { output } = await cliSession(process.execPath, [binPath, "tunnel", "--port", "3000"], {
@@ -57,8 +89,7 @@ describe("alpic tunnel (E2E)", () => {
57
89
  timeoutMs: 12000,
58
90
  }, async (cli) => {
59
91
  await cli.expect("Opening tunnel");
60
- // "Opening tunnel" is printed before the API request is sent (tunnel.ts:51 vs :54).
61
- // Wait for the request to reach the mock server before killing the process.
92
+ // "Opening tunnel" prints before the API request is sent, so wait for the request to reach the mock server before killing the process.
62
93
  const deadline = Date.now() + 500;
63
94
  while (Date.now() < deadline) {
64
95
  if (mockServer.getCalls().some((call) => call.path.includes("tunnels"))) {
@@ -71,5 +102,65 @@ describe("alpic tunnel (E2E)", () => {
71
102
  const ticketCall = mockServer.getCalls().find((call) => call.path.includes("tunnels"));
72
103
  expect(ticketCall).toBeDefined();
73
104
  });
105
+ it("closes the previous tunnel when a new one is opened for the same account", async () => {
106
+ // The patched pipenet enforces at-most-one tunnel per subdomain: opening a second closes the first and severs its sockets, so the displaced CLI detects the takeover and exits on its own.
107
+ const subdomain = "cool-mongoose-123";
108
+ const tunnelServer = await startTunnelServer();
109
+ const { httpPort } = tunnelServer;
110
+ mockServer.setTunnelTicket({ subdomain, ticket: "mock-ticket", tunnelHost: `localhost:${httpPort}` });
111
+ const env = createOAuthEnv(cwd, serverUrl);
112
+ let startSecondTunnel = () => { };
113
+ const secondTunnelStarted = new Promise((resolve) => {
114
+ startSecondTunnel = resolve;
115
+ });
116
+ const firstSession = cliSession(process.execPath, [binPath, "tunnel", "--port", "4011"], { cwd, env, timeoutMs: 30_000 }, async (cli) => {
117
+ await cli.expect("Forwarding");
118
+ startSecondTunnel();
119
+ await cli.expect("a new tunnel was opened for this account", { timeoutMs: 20_000 });
120
+ });
121
+ await secondTunnelStarted;
122
+ const secondSession = cliSession(process.execPath, [binPath, "tunnel", "--port", "4012"], { cwd, env, timeoutMs: 30_000 }, async (cli) => {
123
+ await cli.expect("Forwarding");
124
+ // Keep the new tunnel alive until the old one has exited, then shut it down.
125
+ await firstSession;
126
+ cli.stop();
127
+ });
128
+ try {
129
+ const first = await firstSession;
130
+ await secondSession;
131
+ expect(first.output).toContain("a new tunnel was opened for this account");
132
+ }
133
+ finally {
134
+ await tunnelServer.close();
135
+ }
136
+ }, 40_000);
137
+ it("keeps proxying when the local server answers Connection: keep-alive to a Connection: close request", async () => {
138
+ const subdomain = "cool-mongoose-456";
139
+ const { httpPort, close } = await startTunnelServer();
140
+ const local = http.createServer((_req, res) => {
141
+ res.writeHead(200, { "content-type": "text/event-stream", connection: "keep-alive" });
142
+ res.end("event: message\ndata: {}\n\n");
143
+ });
144
+ const localPort = await new Promise((resolve) => {
145
+ local.listen(0, "127.0.0.1", () => resolve(local.address().port));
146
+ });
147
+ mockServer.setTunnelTicket({ subdomain, ticket: "mock-ticket", tunnelHost: `localhost:${httpPort}` });
148
+ const env = createOAuthEnv(cwd, serverUrl);
149
+ const statuses = [];
150
+ try {
151
+ await cliSession(process.execPath, [binPath, "tunnel", "--port", String(localPort)], { cwd, env, timeoutMs: 30_000 }, async (cli) => {
152
+ await cli.expect("Forwarding");
153
+ for (let attempt = 0; attempt < 4; attempt++) {
154
+ statuses.push(await proxiedStatus(httpPort, subdomain));
155
+ }
156
+ cli.stop();
157
+ });
158
+ expect(statuses).toEqual([200, 200, 200, 200]);
159
+ }
160
+ finally {
161
+ await close();
162
+ await new Promise((resolve) => local.close(() => resolve()));
163
+ }
164
+ }, 40_000);
74
165
  });
75
166
  //# sourceMappingURL=tunnel.e2e.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/tunnel.e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/tunnel.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import type { RouterOutput } from "@alpic-ai/api";
2
- import type { ApiCall, MockApiServer } from "./mock-api.js";
2
+ import { type ApiCall, MockApiServer } from "./mock-api.js";
3
3
  type Expectable = string | RegExp;
4
4
  type ProjectGetV1 = RouterOutput["projects"]["get"]["v1"];
5
5
  type DeploymentGetV1 = RouterOutput["deployments"]["get"]["v1"];
6
+ type TeamUsageGetV1 = RouterOutput["teams"]["getUsage"]["v1"];
6
7
  type ProductionEnvironment = NonNullable<ProjectGetV1["productionEnvironment"]>;
7
8
  type ProductionEnvironmentDomains = ProductionEnvironment["domains"];
8
9
  export type CliSessionOptions = {
@@ -45,6 +46,8 @@ export type BuildMockProjectParams = {
45
46
  };
46
47
  export declare function buildMockProject(params: BuildMockProjectParams): ProjectGetV1;
47
48
  export declare function buildMockDeployment(overrides?: Partial<DeploymentGetV1>): DeploymentGetV1;
49
+ /** Anchored on the run so the rendered "resets in 12 days" stays snapshot-stable. */
50
+ export declare function buildMockTeamUsage(teamId: string, overrides?: Partial<TeamUsageGetV1>): TeamUsageGetV1;
48
51
  export type SetupTestDirectoryOptions = {
49
52
  /** If true, run git init and add origin/upstream remotes */
50
53
  initGit?: boolean;
@@ -53,14 +56,22 @@ export declare function setupTestDirectory(options?: SetupTestDirectoryOptions):
53
56
  cwd: string;
54
57
  binPath: string;
55
58
  }>;
59
+ export type CliE2EContext = {
60
+ mockServer: MockApiServer;
61
+ serverUrl: string;
62
+ cwd: string;
63
+ binPath: string;
64
+ };
65
+ export type RegisterCliE2ELifecycleOptions = {
66
+ projects?: BuildMockProjectParams[];
67
+ testDirectory?: SetupTestDirectoryOptions;
68
+ };
69
+ /** Registers the standard e2e lifecycle (one mock API server per suite, fresh test directory and mock state per test); context fields are (re)assigned by the hooks, so read them inside tests or a `beforeEach`, never at `describe` scope. */
70
+ export declare function registerCliE2ELifecycle(options?: RegisterCliE2ELifecycleOptions): CliE2EContext;
56
71
  export declare function createConfigFile(cwd: string, projectId: string, teamId: string, projectName: string, environmentId: string, environmentName: string, teamName?: string): void;
57
72
  export declare function runGit(args: string[], cwd: string): void;
58
73
  export declare function expectSuccessfulApiCall(call: ApiCall | undefined, customAssertions?: (call: ApiCall) => void): asserts call is ApiCall;
59
- /**
60
- * Create OAuth credentials in a temp config dir and return env for CLI subprocess.
61
- * Use this to run commands with OAuth auth (no ALPIC_API_KEY).
62
- * Caller must pass serverUrl so userinfo can be pointed at the mock server.
63
- */
74
+ /** Creates OAuth credentials in a temp config dir and returns env for running the CLI with OAuth auth (no ALPIC_API_KEY); serverUrl points userinfo at the mock server. */
64
75
  export declare function createOAuthEnv(cwd: string, serverUrl: string): Record<string, string>;
65
76
  export declare function verifyConfigFile(cwd: string, expected: {
66
77
  projectName: string;
@@ -7,8 +7,10 @@ import { dirname, join } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { stripVTControlCharacters } from "node:util";
9
9
  import pty from "node-pty";
10
- import { expect } from "vitest";
10
+ import { afterAll, afterEach, beforeAll, beforeEach, expect } from "vitest";
11
+ import { MockApiServer } from "./mock-api.js";
11
12
  const DEFAULT_CLI_SESSION_TIMEOUT_MS = 10_000;
13
+ const DAY_MS = 24 * 60 * 60 * 1000;
12
14
  const __testDirname = dirname(fileURLToPath(import.meta.url));
13
15
  export async function cliSession(cmd, args, options, fn = async () => { }) {
14
16
  const { cwd, env, cols = 100, rows = 30, timeoutMs = DEFAULT_CLI_SESSION_TIMEOUT_MS } = options;
@@ -21,11 +23,9 @@ export async function cliSession(cmd, args, options, fn = async () => { }) {
21
23
  ALPIC_POLL_INTERVAL_MS: "100",
22
24
  // Prevent browser windows from opening during tests.
23
25
  ALPIC_NO_OPEN: "1",
24
- // Disable PostHog telemetry: every CLI invocation in CI/local tests would
25
- // otherwise fire a real production event and drown out customer signal.
26
+ // Disable PostHog telemetry: every CLI invocation in CI/local tests would otherwise fire a real production event and drown out customer signal.
26
27
  ALPIC_TELEMETRY_DISABLED: "1",
27
- // Resolve @alpic-ai/api to TypeScript source via the "development" export condition,
28
- // so e2e tests run without building the api package first.
28
+ // Resolve @alpic-ai/api to TypeScript source via the "development" export condition, so e2e tests run without building the api package first.
29
29
  NODE_OPTIONS: [process.env.NODE_OPTIONS, "--conditions=development"].filter(Boolean).join(" "),
30
30
  ...Object.fromEntries(Object.entries(env ?? {}).filter(([, value]) => value !== undefined)),
31
31
  };
@@ -59,10 +59,7 @@ export async function cliSession(cmd, args, options, fn = async () => { }) {
59
59
  const controller = {
60
60
  expect: (pattern, opts) => waitFor(() => matches(buf, pattern), opts?.timeoutMs ?? timeoutMs, () => buf, pattern),
61
61
  send: async (line) => {
62
- // Wait until PTY output has gone quiet for quietMs before writing.
63
- // This ensures the CLI has yielded its event loop and entered the I/O
64
- // polling phase where it can receive keypresses — without a fixed
65
- // overly-conservative delay.
62
+ // Wait until PTY output has gone quiet so the CLI has yielded its event loop and can receive keypresses, without a fixed overly-conservative delay.
66
63
  const quietMs = 10;
67
64
  while (Date.now() - lastDataAt < quietMs) {
68
65
  await sleep(5);
@@ -78,9 +75,7 @@ export async function cliSession(cmd, args, options, fn = async () => { }) {
78
75
  try {
79
76
  term.kill();
80
77
  }
81
- catch {
82
- // ignore
83
- }
78
+ catch { }
84
79
  },
85
80
  };
86
81
  try {
@@ -141,7 +136,7 @@ export function buildMockProject(params) {
141
136
  name: environmentName,
142
137
  sourceBranch,
143
138
  mcpServerUrl,
144
- createdAt: new Date("2024-01-01T00:00:00.000Z"),
139
+ createdAt: new Date(Date.now() - 2 * 365 * 24 * 60 * 60 * 1000),
145
140
  projectId,
146
141
  latestDeployment,
147
142
  },
@@ -161,7 +156,7 @@ export function buildMockProject(params) {
161
156
  buildOutputDir: null,
162
157
  installCommand: null,
163
158
  startCommand: null,
164
- createdAt: new Date("2024-01-01T00:00:00.000Z"),
159
+ createdAt: new Date(Date.now() - 2 * 365 * 24 * 60 * 60 * 1000),
165
160
  };
166
161
  }
167
162
  export function buildMockDeployment(overrides) {
@@ -181,6 +176,18 @@ export function buildMockDeployment(overrides) {
181
176
  };
182
177
  return { ...base, ...overrides };
183
178
  }
179
+ /** Anchored on the run so the rendered "resets in 12 days" stays snapshot-stable. */
180
+ export function buildMockTeamUsage(teamId, overrides) {
181
+ const base = {
182
+ teamId,
183
+ plan: null,
184
+ periodStart: new Date(Date.now() - 18 * DAY_MS),
185
+ periodEnd: new Date(Date.now() + 12 * DAY_MS),
186
+ requestCount: 0,
187
+ includedRequests: 10_000,
188
+ };
189
+ return { ...base, ...overrides };
190
+ }
184
191
  export async function setupTestDirectory(options = {}) {
185
192
  const { initGit = false } = options;
186
193
  const uniqueId = randomUUID();
@@ -195,6 +202,32 @@ export async function setupTestDirectory(options = {}) {
195
202
  const binPath = join(process.cwd(), "bin", "dev.js");
196
203
  return { cwd, binPath };
197
204
  }
205
+ /** Registers the standard e2e lifecycle (one mock API server per suite, fresh test directory and mock state per test); context fields are (re)assigned by the hooks, so read them inside tests or a `beforeEach`, never at `describe` scope. */
206
+ export function registerCliE2ELifecycle(options = {}) {
207
+ const context = {};
208
+ beforeAll(async () => {
209
+ context.mockServer = new MockApiServer();
210
+ context.serverUrl = await context.mockServer.start();
211
+ });
212
+ afterAll(async () => {
213
+ await context.mockServer.stop();
214
+ });
215
+ beforeEach(async () => {
216
+ context.mockServer.reset();
217
+ const setup = await setupTestDirectory(options.testDirectory);
218
+ context.cwd = setup.cwd;
219
+ context.binPath = setup.binPath;
220
+ for (const project of options.projects ?? []) {
221
+ context.mockServer.addProject(buildMockProject(project));
222
+ }
223
+ });
224
+ afterEach(async () => {
225
+ if (context.cwd) {
226
+ await rm(context.cwd, { recursive: true, force: true });
227
+ }
228
+ });
229
+ return context;
230
+ }
198
231
  export function createConfigFile(cwd, projectId, teamId, projectName, environmentId, environmentName, teamName) {
199
232
  const configDir = join(cwd, ".alpic");
200
233
  mkdirSync(configDir, { recursive: true });
@@ -224,16 +257,12 @@ export function expectSuccessfulApiCall(call, customAssertions) {
224
257
  customAssertions(call);
225
258
  }
226
259
  }
227
- /**
228
- * Create OAuth credentials in a temp config dir and return env for CLI subprocess.
229
- * Use this to run commands with OAuth auth (no ALPIC_API_KEY).
230
- * Caller must pass serverUrl so userinfo can be pointed at the mock server.
231
- */
260
+ /** Creates OAuth credentials in a temp config dir and returns env for running the CLI with OAuth auth (no ALPIC_API_KEY); serverUrl points userinfo at the mock server. */
232
261
  export function createOAuthEnv(cwd, serverUrl) {
233
262
  const alpicConfigDir = join(cwd, ".config", "alpic");
234
263
  mkdirSync(alpicConfigDir, { recursive: true });
235
264
  const credentialsPath = join(alpicConfigDir, "credentials.json");
236
- const expiresAt = Math.floor(Date.now() / 1000) + 3600; // seconds
265
+ const expiresAt = Math.floor(Date.now() / 1000) + 3600;
237
266
  writeFileSync(credentialsPath, JSON.stringify({
238
267
  access_token: "test-oauth-token",
239
268
  refresh_token: "test-refresh-token",
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/__tests__/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/__tests__/utils.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { contract } from "@alpic-ai/api";
1
+ import type { contract } from "@alpic-ai/api";
2
2
  import type { ContractRouterClient } from "@orpc/contract";
3
3
  export declare const api: ContractRouterClient<typeof contract>;
package/dist/api.js CHANGED
@@ -1,22 +1,3 @@
1
- import { contract } from "@alpic-ai/api";
2
- import { createORPCClient } from "@orpc/client";
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE;IACrC,GAAG,EAAE,GAAG,CAAC,kBAAkB;IAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;YAClC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAA0C,gBAAgB,CAAC,IAAI,CAAC,CAAC"}
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"}
@@ -33,7 +33,9 @@ export class Audit extends AlpicCommand {
33
33
  };
34
34
  async run() {
35
35
  const { flags } = await this.parse(Audit);
36
- p.intro("Alpic Beacon");
36
+ if (!flags.json) {
37
+ p.intro("Alpic Beacon");
38
+ }
37
39
  await this.ensureAuthenticated(flags);
38
40
  const workflow = new AuditWorkflow(flags);
39
41
  const exitCode = await workflow.runAudit();
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,qCAAqC,CAAC;IAEpE,MAAM,CAAU,QAAQ,GAAG;QACzB,yBAAyB;QACzB,iEAAiE;QACjE,gCAAgC;KACjC,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;YACb,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gCAAgC;YAC7C,OAAO,EAAE,KAAK;SACf,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,iDAAiD;YAC9D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,qCAAqC,CAAC;IAEpE,MAAM,CAAU,QAAQ,GAAG;QACzB,yBAAyB;QACzB,iEAAiE;QACjE,gCAAgC;KACjC,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;YACb,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gCAAgC;YAC7C,OAAO,EAAE,KAAK;SACf,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,iDAAiD;YAC9D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC"}