alpic 0.0.0-dev.ff9c7e6 → 0.0.0-dev.ffd67d5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # Alpic CLI
2
+
3
+ Deploy and manage your MCP servers from the command line.
4
+
5
+ Full documentation: **https://docs.alpic.ai/cli/overview**
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g alpic
11
+ ```
12
+
13
+ ## Authenticate
14
+
15
+ ```bash
16
+ alpic login
17
+ ```
18
+
19
+ Or set an API key:
20
+
21
+ ```bash
22
+ export ALPIC_API_KEY=your_api_key_here
23
+ ```
24
+
25
+ ## Commands
26
+
27
+ | Command | Description |
28
+ |---------|-------------|
29
+ | `deploy` | Deploy a project |
30
+ | `deployment list\|inspect\|logs` | Manage deployments |
31
+ | `environment-variable add\|list\|remove\|update` | Manage env vars |
32
+ | `git connect\|disconnect` | Link/unlink git repositories |
33
+ | `link` | Connect directory to a project |
34
+ | `login` | Authenticate via browser |
35
+ | `logout` | Clear local credentials |
36
+ | `logs` | Monitor runtime logs |
37
+ | `publish` | Share an MCP server to the registry |
38
+ | `telemetry enable\|disable\|status` | Manage usage reporting |
39
+ | `tunnel` | Expose local server to the internet |
40
+ | `whoami` | Display current user |
package/bin/run.js CHANGED
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { execute } from "@oclif/core";
4
+ import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
5
+
6
+ // Node's native fetch ignores HTTP_PROXY/HTTPS_PROXY/NO_PROXY env vars.
7
+ // This patches global fetch to route requests through the proxy when set.
8
+ setGlobalDispatcher(new EnvHttpProxyAgent());
4
9
 
5
10
  await execute({ dir: import.meta.url });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,557 @@
1
+ import { rmSync } from "node:fs";
2
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
3
+ import { MockApiServer } from "./mock-server.js";
4
+ import { buildMockProject, cliSession, createConfigFile, expectSuccessfulApiCall, setupTestDirectory, } from "./utils.js";
5
+ const TEAM_ID = "mock-team-id";
6
+ const PROJECT_ID = "mock-project-id";
7
+ const ENV_ID = "mock-env-id";
8
+ const STAGING_ENV_ID = "staging-env-id";
9
+ describe("alpic audit (E2E)", () => {
10
+ let mockServer;
11
+ let serverUrl;
12
+ let cwd;
13
+ let binPath;
14
+ beforeEach(async () => {
15
+ mockServer = new MockApiServer();
16
+ serverUrl = await mockServer.start();
17
+ const setup = await setupTestDirectory();
18
+ cwd = setup.cwd;
19
+ binPath = setup.binPath;
20
+ mockServer.addProject(buildMockProject({
21
+ projectId: PROJECT_ID,
22
+ teamId: TEAM_ID,
23
+ projectName: "my-project",
24
+ environmentId: ENV_ID,
25
+ environmentName: "production",
26
+ }));
27
+ });
28
+ afterEach(async () => {
29
+ await mockServer.stop();
30
+ if (cwd) {
31
+ rmSync(cwd, { recursive: true, force: true });
32
+ }
33
+ });
34
+ describe("standalone mode (--url)", () => {
35
+ it("runs audit with --url and no project association", async () => {
36
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
37
+ cwd,
38
+ env: {
39
+ ALPIC_API_BASE_URL: serverUrl,
40
+ ALPIC_API_KEY: "test-api-key",
41
+ },
42
+ }, async (cli) => {
43
+ await cli.expect("Beacon Report");
44
+ });
45
+ expect(exitCode).toBe(0);
46
+ const createCall = mockServer.getLastCall("POST", "/v1/beacon/analyses");
47
+ expectSuccessfulApiCall(createCall, (call) => {
48
+ expect(call.input).toMatchObject({ targetUrl: "https://example.com/mcp" });
49
+ expect(call.input.projectId).toBeUndefined();
50
+ });
51
+ });
52
+ it("errors when --url and --project-id are both provided", async () => {
53
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp", "--project-id", PROJECT_ID], {
54
+ cwd,
55
+ env: {
56
+ ALPIC_API_BASE_URL: serverUrl,
57
+ ALPIC_API_KEY: "test-api-key",
58
+ },
59
+ }, async (cli) => {
60
+ await cli.expect("--url and --project-id cannot be used together");
61
+ });
62
+ expect(exitCode).toBe(1);
63
+ });
64
+ it("errors when --team-id is used without --url", async () => {
65
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--team-id", TEAM_ID], {
66
+ cwd,
67
+ env: {
68
+ ALPIC_API_BASE_URL: serverUrl,
69
+ ALPIC_API_KEY: "test-api-key",
70
+ },
71
+ }, async (cli) => {
72
+ await cli.expect("--team-id can only be used with --url");
73
+ });
74
+ expect(exitCode).toBe(1);
75
+ });
76
+ });
77
+ describe("project mode", () => {
78
+ it("uses linked project config after confirmation", async () => {
79
+ createConfigFile(cwd, PROJECT_ID, TEAM_ID, "my-project", ENV_ID, "production", "Mock Team");
80
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit"], {
81
+ cwd,
82
+ env: {
83
+ ALPIC_API_BASE_URL: serverUrl,
84
+ ALPIC_API_KEY: "test-api-key",
85
+ },
86
+ }, async (cli) => {
87
+ await cli.expect("Using project config from .alpic");
88
+ await cli.expect('Run audit for project "my-project"?');
89
+ await cli.send("");
90
+ await cli.expect("Beacon Report");
91
+ });
92
+ expect(exitCode).toBe(0);
93
+ const createCall = mockServer.getLastCall("POST", "/v1/beacon/analyses");
94
+ expectSuccessfulApiCall(createCall, (call) => {
95
+ expect(call.input).toMatchObject({
96
+ teamId: TEAM_ID,
97
+ projectId: PROJECT_ID,
98
+ });
99
+ });
100
+ });
101
+ it("uses linked project config without prompt in --non-interactive mode", async () => {
102
+ createConfigFile(cwd, PROJECT_ID, TEAM_ID, "my-project", ENV_ID, "production", "Mock Team");
103
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--non-interactive"], {
104
+ cwd,
105
+ env: {
106
+ ALPIC_API_BASE_URL: serverUrl,
107
+ ALPIC_API_KEY: "test-api-key",
108
+ },
109
+ }, async (cli) => {
110
+ await cli.expect("Beacon Report");
111
+ });
112
+ expect(exitCode).toBe(0);
113
+ expect(output).not.toContain("Run audit for project");
114
+ });
115
+ it("uses explicit --project-id flag", async () => {
116
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--project-id", PROJECT_ID], {
117
+ cwd,
118
+ env: {
119
+ ALPIC_API_BASE_URL: serverUrl,
120
+ ALPIC_API_KEY: "test-api-key",
121
+ },
122
+ }, async (cli) => {
123
+ await cli.expect("Beacon Report");
124
+ });
125
+ expect(exitCode).toBe(0);
126
+ expect(output).not.toContain("Using project config from .alpic");
127
+ const createCall = mockServer.getLastCall("POST", "/v1/beacon/analyses");
128
+ expectSuccessfulApiCall(createCall, (call) => {
129
+ expect(call.input).toMatchObject({
130
+ projectId: PROJECT_ID,
131
+ teamId: TEAM_ID,
132
+ });
133
+ });
134
+ });
135
+ it("prompts for team and project selection in interactive mode without config", async () => {
136
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit"], {
137
+ cwd,
138
+ env: {
139
+ ALPIC_API_BASE_URL: serverUrl,
140
+ ALPIC_API_KEY: "test-api-key",
141
+ },
142
+ }, async (cli) => {
143
+ await cli.expect("Choose a team");
144
+ await cli.send("");
145
+ await cli.expect("Choose a project");
146
+ await cli.send("");
147
+ await cli.expect("Beacon Report");
148
+ });
149
+ expect(exitCode).toBe(0);
150
+ });
151
+ it("uses --environment-id to audit a specific environment", async () => {
152
+ const multiEnvProject = {
153
+ ...buildMockProject({
154
+ projectId: PROJECT_ID,
155
+ teamId: TEAM_ID,
156
+ projectName: "my-project",
157
+ environmentId: ENV_ID,
158
+ environmentName: "production",
159
+ }),
160
+ environments: [
161
+ {
162
+ id: ENV_ID,
163
+ name: "production",
164
+ sourceBranch: null,
165
+ mcpServerUrl: "https://mcp-production.alpic.ai",
166
+ createdAt: new Date(),
167
+ projectId: PROJECT_ID,
168
+ latestDeployment: null,
169
+ },
170
+ {
171
+ id: STAGING_ENV_ID,
172
+ name: "staging",
173
+ sourceBranch: "develop",
174
+ mcpServerUrl: "https://mcp-staging.alpic.ai",
175
+ createdAt: new Date(),
176
+ projectId: PROJECT_ID,
177
+ latestDeployment: null,
178
+ },
179
+ ],
180
+ };
181
+ mockServer.addProject(multiEnvProject);
182
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--project-id", PROJECT_ID, "--environment-id", STAGING_ENV_ID], {
183
+ cwd,
184
+ env: {
185
+ ALPIC_API_BASE_URL: serverUrl,
186
+ ALPIC_API_KEY: "test-api-key",
187
+ },
188
+ }, async (cli) => {
189
+ await cli.expect("Beacon Report");
190
+ });
191
+ expect(exitCode).toBe(0);
192
+ const createCall = mockServer.getLastCall("POST", "/v1/beacon/analyses");
193
+ expectSuccessfulApiCall(createCall, (call) => {
194
+ expect(call.input).toMatchObject({
195
+ targetUrl: "https://mcp-staging.alpic.ai",
196
+ projectId: PROJECT_ID,
197
+ });
198
+ });
199
+ });
200
+ it("errors when --environment-id is used with --url", async () => {
201
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp", "--environment-id", ENV_ID], {
202
+ cwd,
203
+ env: {
204
+ ALPIC_API_BASE_URL: serverUrl,
205
+ ALPIC_API_KEY: "test-api-key",
206
+ },
207
+ }, async (cli) => {
208
+ await cli.expect("--environment-id cannot be used with --url");
209
+ });
210
+ expect(exitCode).toBe(1);
211
+ });
212
+ it("errors in --non-interactive mode without flags or config", async () => {
213
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--non-interactive"], {
214
+ cwd,
215
+ env: {
216
+ ALPIC_API_BASE_URL: serverUrl,
217
+ ALPIC_API_KEY: "test-api-key",
218
+ },
219
+ }, async (cli) => {
220
+ await cli.expect("Either --url or --project-id is required");
221
+ });
222
+ expect(exitCode).toBe(1);
223
+ });
224
+ });
225
+ describe("analysis lifecycle", () => {
226
+ it("polls until analysis completes", async () => {
227
+ const pendingResponse = {
228
+ id: "mock-analysis-id",
229
+ targetUrl: "https://example.com/mcp",
230
+ status: "pending",
231
+ durationMs: null,
232
+ createdAt: new Date(),
233
+ report: null,
234
+ };
235
+ const completedResponse = {
236
+ id: "mock-analysis-id",
237
+ targetUrl: "https://example.com/mcp",
238
+ status: "completed",
239
+ durationMs: 1234,
240
+ createdAt: new Date(),
241
+ report: {
242
+ schemaVersion: "v20260224",
243
+ auditId: "mock-analysis-id",
244
+ targetUrl: "https://example.com/mcp",
245
+ startedAt: new Date().toISOString(),
246
+ completedAt: new Date().toISOString(),
247
+ durationMs: 1234,
248
+ results: [],
249
+ requiresAuth: false,
250
+ hasViewSupport: false,
251
+ isReadyForPlatform: { chatgpt: true, claudeai: true },
252
+ },
253
+ };
254
+ mockServer.setBeaconGetResponses([pendingResponse, pendingResponse, completedResponse]);
255
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
256
+ cwd,
257
+ env: {
258
+ ALPIC_API_BASE_URL: serverUrl,
259
+ ALPIC_API_KEY: "test-api-key",
260
+ },
261
+ }, async (cli) => {
262
+ await cli.expect("Beacon Report");
263
+ });
264
+ expect(exitCode).toBe(0);
265
+ const getCalls = mockServer.getCalls("GET", "/v1/beacon/analyses");
266
+ expect(getCalls.length).toBeGreaterThanOrEqual(3);
267
+ }, 15_000);
268
+ it("handles failed analysis", async () => {
269
+ mockServer.setBeaconGetResponses([
270
+ {
271
+ id: "mock-analysis-id",
272
+ targetUrl: "https://example.com/mcp",
273
+ status: "failed",
274
+ durationMs: null,
275
+ createdAt: new Date(),
276
+ report: null,
277
+ },
278
+ ]);
279
+ const { exitCode } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
280
+ cwd,
281
+ env: {
282
+ ALPIC_API_BASE_URL: serverUrl,
283
+ ALPIC_API_KEY: "test-api-key",
284
+ },
285
+ }, async (cli) => {
286
+ await cli.expect("The analysis failed");
287
+ });
288
+ expect(exitCode).toBe(1);
289
+ });
290
+ });
291
+ describe("report rendering", () => {
292
+ it("renders errors and warnings from check results", async () => {
293
+ mockServer.setBeaconGetResponses([
294
+ {
295
+ id: "mock-analysis-id",
296
+ targetUrl: "https://example.com/mcp",
297
+ status: "completed",
298
+ durationMs: 2000,
299
+ createdAt: new Date(),
300
+ report: {
301
+ schemaVersion: "v20260224",
302
+ auditId: "mock-analysis-id",
303
+ targetUrl: "https://example.com/mcp",
304
+ startedAt: new Date().toISOString(),
305
+ completedAt: new Date().toISOString(),
306
+ durationMs: 2000,
307
+ results: [
308
+ {
309
+ checkId: "check-pass",
310
+ status: "pass",
311
+ message: "Server is reachable",
312
+ severity: "error",
313
+ category: "connectivity",
314
+ scope: "server",
315
+ durationMs: 100,
316
+ },
317
+ {
318
+ checkId: "check-error",
319
+ status: "fail",
320
+ message: "Missing tool description",
321
+ severity: "error",
322
+ category: "tool-metadata",
323
+ scope: "server",
324
+ durationMs: 50,
325
+ hint: { text: "Add a description to your tool" },
326
+ },
327
+ {
328
+ checkId: "check-warning",
329
+ status: "fail",
330
+ message: "Slow response time",
331
+ severity: "warning",
332
+ category: "performance",
333
+ scope: "server",
334
+ durationMs: 200,
335
+ },
336
+ ],
337
+ requiresAuth: false,
338
+ hasViewSupport: false,
339
+ isReadyForPlatform: { chatgpt: false, claudeai: true },
340
+ },
341
+ },
342
+ ]);
343
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
344
+ cwd,
345
+ env: {
346
+ ALPIC_API_BASE_URL: serverUrl,
347
+ ALPIC_API_KEY: "test-api-key",
348
+ },
349
+ }, async (cli) => {
350
+ await cli.expect("Beacon Report");
351
+ });
352
+ expect(exitCode).toBe(1);
353
+ expect(output).toContain("1/3");
354
+ expect(output).toContain("Missing tool description");
355
+ expect(output).toContain("Add a description to your tool");
356
+ expect(output).toContain("Slow response time");
357
+ expect(output).toContain("1 error");
358
+ expect(output).toContain("1 warning");
359
+ });
360
+ it("shows auth required message and skips report when server requires authentication", async () => {
361
+ mockServer.setBeaconGetResponses([
362
+ {
363
+ id: "mock-analysis-id",
364
+ targetUrl: "https://example.com/mcp",
365
+ status: "completed",
366
+ durationMs: 500,
367
+ createdAt: new Date(),
368
+ report: {
369
+ schemaVersion: "v20260224",
370
+ auditId: "mock-analysis-id",
371
+ targetUrl: "https://example.com/mcp",
372
+ startedAt: new Date().toISOString(),
373
+ completedAt: new Date().toISOString(),
374
+ durationMs: 500,
375
+ results: [
376
+ {
377
+ checkId: "server-responds",
378
+ status: "skip",
379
+ message: "Server requires authentication",
380
+ skipReason: "The server returned HTTP 401",
381
+ severity: "error",
382
+ category: "connectivity",
383
+ scope: "server",
384
+ durationMs: 100,
385
+ },
386
+ ],
387
+ requiresAuth: true,
388
+ hasViewSupport: false,
389
+ isReadyForPlatform: { chatgpt: false, claudeai: false },
390
+ },
391
+ },
392
+ ]);
393
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
394
+ cwd,
395
+ env: {
396
+ ALPIC_API_BASE_URL: serverUrl,
397
+ ALPIC_API_KEY: "test-api-key",
398
+ },
399
+ }, async (cli) => {
400
+ await cli.expect("requires credentials");
401
+ });
402
+ expect(exitCode).toBe(0);
403
+ expect(output).toContain("requires credentials to connect");
404
+ expect(output).toContain("all checks have been skipped");
405
+ expect(output).not.toContain("Beacon Report");
406
+ });
407
+ });
408
+ describe("report snapshot", () => {
409
+ it("matches snapshot for a report with errors, warnings, and skipped checks", async () => {
410
+ mockServer.setBeaconGetResponses([
411
+ {
412
+ id: "mock-analysis-id",
413
+ targetUrl: "https://example.com/mcp",
414
+ status: "completed",
415
+ durationMs: 2000,
416
+ createdAt: new Date(),
417
+ report: {
418
+ schemaVersion: "v20260224",
419
+ auditId: "mock-analysis-id",
420
+ targetUrl: "https://example.com/mcp",
421
+ startedAt: "2026-03-01T00:00:00.000Z",
422
+ completedAt: "2026-03-01T00:00:02.000Z",
423
+ durationMs: 2000,
424
+ results: [
425
+ {
426
+ checkId: "connectivity-check",
427
+ status: "pass",
428
+ message: "Server is reachable",
429
+ severity: "error",
430
+ category: "connectivity",
431
+ scope: "server",
432
+ durationMs: 100,
433
+ },
434
+ {
435
+ checkId: "tool-description-check",
436
+ status: "fail",
437
+ message: "Missing tool description",
438
+ severity: "error",
439
+ category: "tool-metadata",
440
+ scope: "server",
441
+ durationMs: 50,
442
+ hint: { text: "Add a description to your tool" },
443
+ },
444
+ {
445
+ checkId: "response-time-check",
446
+ status: "fail",
447
+ message: "Slow response time",
448
+ severity: "warning",
449
+ category: "performance",
450
+ scope: "server",
451
+ durationMs: 200,
452
+ },
453
+ {
454
+ checkId: "view-check",
455
+ status: "skip",
456
+ message: "View support check",
457
+ skipReason: "No view resources found",
458
+ severity: "info",
459
+ category: "resource-metadata",
460
+ scope: "view",
461
+ durationMs: 0,
462
+ },
463
+ ],
464
+ requiresAuth: false,
465
+ hasViewSupport: false,
466
+ isReadyForPlatform: { chatgpt: false, claudeai: true },
467
+ },
468
+ },
469
+ ]);
470
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
471
+ cwd,
472
+ env: {
473
+ ALPIC_API_BASE_URL: serverUrl,
474
+ ALPIC_API_KEY: "test-api-key",
475
+ },
476
+ }, async (cli) => {
477
+ await cli.expect("Beacon Report");
478
+ });
479
+ expect(exitCode).toBe(1);
480
+ const startIdx = output.indexOf("Beacon Report");
481
+ expect(startIdx).toBeGreaterThanOrEqual(0);
482
+ expect(output.slice(startIdx)).toMatchSnapshot();
483
+ });
484
+ it("matches snapshot for a clean report with all checks passed", async () => {
485
+ mockServer.setBeaconGetResponses([
486
+ {
487
+ id: "mock-analysis-id",
488
+ targetUrl: "https://example.com/mcp",
489
+ status: "completed",
490
+ durationMs: 500,
491
+ createdAt: new Date(),
492
+ report: {
493
+ schemaVersion: "v20260224",
494
+ auditId: "mock-analysis-id",
495
+ targetUrl: "https://example.com/mcp",
496
+ startedAt: "2026-03-01T00:00:00.000Z",
497
+ completedAt: "2026-03-01T00:00:00.500Z",
498
+ durationMs: 500,
499
+ results: [
500
+ {
501
+ checkId: "connectivity-check",
502
+ status: "pass",
503
+ message: "Server is reachable",
504
+ severity: "error",
505
+ category: "connectivity",
506
+ scope: "server",
507
+ durationMs: 100,
508
+ },
509
+ {
510
+ checkId: "tool-description-check",
511
+ status: "pass",
512
+ message: "Tool descriptions are present",
513
+ severity: "error",
514
+ category: "tool-metadata",
515
+ scope: "server",
516
+ durationMs: 50,
517
+ },
518
+ ],
519
+ requiresAuth: false,
520
+ hasViewSupport: false,
521
+ isReadyForPlatform: { chatgpt: true, claudeai: true },
522
+ },
523
+ },
524
+ ]);
525
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp"], {
526
+ cwd,
527
+ env: {
528
+ ALPIC_API_BASE_URL: serverUrl,
529
+ ALPIC_API_KEY: "test-api-key",
530
+ },
531
+ }, async (cli) => {
532
+ await cli.expect("Beacon Report");
533
+ });
534
+ expect(exitCode).toBe(0);
535
+ const startIdx = output.indexOf("Beacon Report");
536
+ expect(startIdx).toBeGreaterThanOrEqual(0);
537
+ expect(output.slice(startIdx)).toMatchSnapshot();
538
+ });
539
+ });
540
+ describe("output", () => {
541
+ it("outputs JSON with --json flag", async () => {
542
+ const { exitCode, output } = await cliSession(process.execPath, [binPath, "audit", "--url", "https://example.com/mcp", "--json"], {
543
+ cwd,
544
+ env: {
545
+ ALPIC_API_BASE_URL: serverUrl,
546
+ ALPIC_API_KEY: "test-api-key",
547
+ },
548
+ }, async (cli) => {
549
+ await cli.expect("schemaVersion");
550
+ });
551
+ expect(exitCode).toBe(0);
552
+ expect(output).toContain('"schemaVersion"');
553
+ expect(output).not.toContain("Beacon Report");
554
+ });
555
+ });
556
+ });
557
+ //# sourceMappingURL=audit.e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/audit.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export type MockDeploymentLogPage = {
8
8
  }[];
9
9
  hasMoreLogs: boolean;
10
10
  };
11
+ type BeaconGetResponse = RouterOutput["beacon"]["get"]["v1"];
11
12
  export type ApiCall = {
12
13
  method: string;
13
14
  path: string;
@@ -37,6 +38,7 @@ export declare class MockApiServer {
37
38
  setPublishedServer(projectId: string, domain: string, server: PublishedServer): void;
38
39
  addDeployments(deployments: RouterOutput["deployments"]["list"]["v1"]): void;
39
40
  setDeploymentLogPages(deploymentId: string, pages: MockDeploymentLogPage[]): void;
41
+ setBeaconGetResponses(responses: BeaconGetResponse[]): void;
40
42
  addProject(project: RouterOutput["projects"]["get"]["v1"]): void;
41
43
  }
42
44
  export {};