@alpic-ai/api 0.0.0-dev.gfdd7d71 → 0.0.0-dev.gfdf177c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -322,8 +322,8 @@ declare const contract: {
322
322
  environmentId: z.ZodString;
323
323
  content: z.ZodString;
324
324
  source: z.ZodEnum<{
325
- model: "model";
326
325
  user: "user";
326
+ model: "model";
327
327
  }>;
328
328
  clientName: z.ZodNullable<z.ZodString>;
329
329
  clientId: z.ZodNullable<z.ZodString>;
@@ -470,6 +470,17 @@ declare const contract: {
470
470
  NOT_FOUND: {};
471
471
  }>, Record<never, never>>;
472
472
  };
473
+ delete: {
474
+ v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
475
+ environmentId: z.ZodString;
476
+ }, z.core.$strip>, z.ZodObject<{
477
+ success: z.ZodLiteral<true>;
478
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<import("@orpc/contract").MergedErrorMap<Record<never, never>, {
479
+ BAD_REQUEST: {};
480
+ }>, {
481
+ NOT_FOUND: {};
482
+ }>, Record<never, never>>;
483
+ };
473
484
  deploy: {
474
485
  v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
475
486
  environmentId: z.ZodString;
@@ -1590,8 +1601,8 @@ declare const contractForDocs: {
1590
1601
  environmentId: z.ZodString;
1591
1602
  content: z.ZodString;
1592
1603
  source: z.ZodEnum<{
1593
- model: "model";
1594
1604
  user: "user";
1605
+ model: "model";
1595
1606
  }>;
1596
1607
  clientName: z.ZodNullable<z.ZodString>;
1597
1608
  clientId: z.ZodNullable<z.ZodString>;
@@ -1645,6 +1656,17 @@ declare const contractForDocs: {
1645
1656
  NOT_FOUND: {};
1646
1657
  }>, Record<never, never>>;
1647
1658
  };
1659
+ delete: {
1660
+ v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
1661
+ environmentId: z.ZodString;
1662
+ }, z.core.$strip>, z.ZodObject<{
1663
+ success: z.ZodLiteral<true>;
1664
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<import("@orpc/contract").MergedErrorMap<Record<never, never>, {
1665
+ BAD_REQUEST: {};
1666
+ }>, {
1667
+ NOT_FOUND: {};
1668
+ }>, Record<never, never>>;
1669
+ };
1648
1670
  deploy: {
1649
1671
  v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
1650
1672
  environmentId: z.ZodString;
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import * as z$1 from "zod/v4";
3
3
  import { oc } from "@orpc/contract";
4
4
  import ms from "ms";
5
- //#region ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js
5
+ //#region ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_supports-color@7.2.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js
6
6
  /**
7
7
  * Reusable URL validation that disallows javascript: scheme
8
8
  */
@@ -179,6 +179,7 @@ const PLATFORM_LABELS = {
179
179
  };
180
180
  const WAF_PLATFORMS = [
181
181
  "akamai",
182
+ "cato",
182
183
  "cloudflare",
183
184
  "fastly"
184
185
  ];
@@ -256,16 +257,25 @@ z.object({
256
257
  clientSecret: z.string(),
257
258
  clientScopes: z.array(z.string())
258
259
  });
259
- z.enum([
260
- "opening_balance",
260
+ const creditEntryReasonSchema = z.enum([
261
261
  "free_seed",
262
262
  "paid_conversion_floor",
263
263
  "top_up",
264
264
  "usage",
265
- "refund",
266
265
  "admin_adjustment"
267
266
  ]);
268
267
  z.enum(["playground"]);
268
+ z.number().int().min(500);
269
+ const creditActivityEntrySchema = z.object({
270
+ reason: creditEntryReasonSchema,
271
+ day: z.number(),
272
+ amountInNanoUSD: z.number(),
273
+ messageCount: z.number().nullable()
274
+ });
275
+ z.object({
276
+ balanceInNanoUSD: z.number(),
277
+ recentActivity: z.array(creditActivityEntrySchema)
278
+ });
269
279
  const deploymentStatusSchema$1 = z.enum([
270
280
  "ongoing",
271
281
  "deployed",
@@ -1434,18 +1444,32 @@ const customerCreditsSchema = z.object({
1434
1444
  expiresAt: z.number().nullable(),
1435
1445
  currency: z.string()
1436
1446
  });
1437
- const customerUsageSchema = z.object({
1438
- amountInCents: z.number(),
1439
- currency: z.string(),
1440
- periodEnd: z.number()
1441
- });
1442
1447
  const partnerDiscountSchema = z.object({ endsAt: z.number() });
1443
- z.object({ balanceInNanoUSD: z.number() });
1444
1448
  z.object({
1445
1449
  customerCredits: customerCreditsSchema.nullable(),
1446
- customerUsage: customerUsageSchema.nullable(),
1447
1450
  partnerDiscount: partnerDiscountSchema.nullable()
1448
1451
  });
1452
+ const metricsQueueEventSchema = z.object({
1453
+ ts: z.number().int(),
1454
+ method: z.string(),
1455
+ tool: z.string().nullable(),
1456
+ client: z.string(),
1457
+ sessionId: z.string().nullable(),
1458
+ durationMs: z.number().int(),
1459
+ outputTokens: z.number().int().nullable(),
1460
+ errorType: z.enum([
1461
+ "mcp_error",
1462
+ "tool_error",
1463
+ "timeout"
1464
+ ]).nullable(),
1465
+ errorCode: z.number().int().nullable()
1466
+ });
1467
+ z.object({
1468
+ v: z.literal(1),
1469
+ envId: z.string(),
1470
+ events: z.array(metricsQueueEventSchema)
1471
+ });
1472
+ z.object({ v: z.number() });
1449
1473
  const telemetrySignalSchema = z.enum([
1450
1474
  "logs",
1451
1475
  "metrics",
@@ -1456,29 +1480,13 @@ const otlpEndpointSchema = z.string().trim().min(1).max(2048);
1456
1480
  const OTLP_HEADER_VALUE_MAX_LENGTH = 2048;
1457
1481
  const otlpHeaderNameSchema = z.string().trim().min(1, "Enter a header name").max(128).regex(/^[A-Za-z0-9!#$%&'*+\-.^_`|~]+$/, "Use letters, digits and !#$%&'*+-.^_`|~ only");
1458
1482
  const otlpHeaderValueSchema = z.string().trim().max(OTLP_HEADER_VALUE_MAX_LENGTH).refine((value) => !/[\r\n]/.test(value), "Line breaks are not allowed in a header value");
1459
- const logSeveritySchema = z.enum([
1460
- "TRACE",
1461
- "DEBUG",
1462
- "INFO",
1463
- "WARN",
1464
- "ERROR",
1465
- "FATAL"
1466
- ]);
1467
1483
  const telemetryDestinationHeaderSchema = z.object({
1468
1484
  id: z.string(),
1469
1485
  name: otlpHeaderNameSchema,
1470
1486
  value: otlpHeaderValueSchema,
1471
1487
  isSecret: z.boolean()
1472
1488
  });
1473
- z.object({
1474
- id: z.string(),
1475
- signal: telemetrySignalSchema,
1476
- endpoint: otlpEndpointSchema,
1477
- protocol: otlpProtocolSchema,
1478
- minimumSeverity: logSeveritySchema,
1479
- headers: z.array(telemetryDestinationHeaderSchema)
1480
- });
1481
- z.enum([
1489
+ const otlpPushFailureReasonSchema = z.enum([
1482
1490
  "credentials",
1483
1491
  "wrong-path",
1484
1492
  "wrong-protocol",
@@ -1490,6 +1498,16 @@ z.enum([
1490
1498
  "receiver-error",
1491
1499
  "unexpected-status"
1492
1500
  ]);
1501
+ const telemetryDestinationStatusSchema = z.enum(["active", "suspended"]);
1502
+ z.object({
1503
+ id: z.string(),
1504
+ signal: telemetrySignalSchema,
1505
+ endpoint: otlpEndpointSchema,
1506
+ protocol: otlpProtocolSchema,
1507
+ headers: z.array(telemetryDestinationHeaderSchema),
1508
+ status: telemetryDestinationStatusSchema,
1509
+ lastFailureReason: otlpPushFailureReasonSchema.nullable()
1510
+ });
1493
1511
  //#endregion
1494
1512
  //#region src/auth-scope.ts
1495
1513
  /** Accepts an API key or OAuth access token (default for most routes). */
@@ -1588,6 +1606,14 @@ const serverFieldsSchema = z.object({
1588
1606
  });
1589
1607
  //#endregion
1590
1608
  //#region src/api.contract.ts
1609
+ const isValidIanaTimeZone = (timeZone) => {
1610
+ try {
1611
+ new Intl.DateTimeFormat("en-US", { timeZone });
1612
+ return true;
1613
+ } catch {
1614
+ return false;
1615
+ }
1616
+ };
1591
1617
  const deploymentStatusSchema = z.enum([
1592
1618
  "ongoing",
1593
1619
  "deployed",
@@ -1658,6 +1684,14 @@ const getEnvironmentContractV1 = base.route({
1658
1684
  createdAt: z.coerce.date(),
1659
1685
  projectId: z.string()
1660
1686
  }));
1687
+ const deleteEnvironmentContractV1 = base.route({
1688
+ path: "/v1/environments/{environmentId}",
1689
+ method: "DELETE",
1690
+ summary: "Delete an environment",
1691
+ description: "All environments can be deleted except the production environment. This operation is not reversible: associated logs, analytics, and metrics are deleted as well.",
1692
+ tags: ["environments"],
1693
+ successDescription: "The environment has been deleted successfully"
1694
+ }).errors({ NOT_FOUND: {} }).input(z.object({ environmentId: z.string().describe("The ID of the environment") })).output(z.object({ success: z.literal(true) }));
1661
1695
  const domainSchema = z.object({
1662
1696
  domain: z.string(),
1663
1697
  status: z.enum([
@@ -1970,7 +2004,7 @@ const getProjectAnalyticsContractV1 = base.route({
1970
2004
  startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
1971
2005
  endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
1972
2006
  timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
1973
- }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp > 0, { message: "End date must be after start date" }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp <= 26784e5, { message: "Date range must be less than 1 month" }).refine(({ timeZone }) => Intl.supportedValuesOf("timeZone").includes(timeZone), { message: "Time zone must be a valid IANA timezone" })).output(z.object({
2007
+ }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp > 0, { message: "End date must be after start date" }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp <= 26784e5, { message: "Date range must be less than 1 month" }).refine(({ timeZone }) => isValidIanaTimeZone(timeZone), { message: "Time zone must be a valid IANA timezone" })).output(z.object({
1974
2008
  metadata: z.object({
1975
2009
  startTimestamp: z.number(),
1976
2010
  endTimestamp: z.number(),
@@ -2265,6 +2299,7 @@ const contract = {
2265
2299
  environments: {
2266
2300
  create: { v1: createEnvironmentContractV1 },
2267
2301
  get: { v1: getEnvironmentContractV1 },
2302
+ delete: { v1: deleteEnvironmentContractV1 },
2268
2303
  deploy: { v1: deployEnvironmentContractV1 },
2269
2304
  getLogs: { v1: getLogsContractV1 },
2270
2305
  getLatestLogs: { v1: getLatestLogsContractV1 }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-dev.gfdd7d71",
3
+ "version": "0.0.0-dev.gfdf177c",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",
@@ -35,9 +35,10 @@
35
35
  "dependencies": {
36
36
  "@orpc/contract": "^1.15.0",
37
37
  "ms": "^2.1.3",
38
- "zod": "^4.4.3"
38
+ "zod": "^4.5.4"
39
39
  },
40
40
  "devDependencies": {
41
+ "@alpic-ai/domains": "0.0.0",
41
42
  "@orpc/openapi": "^1.15.0",
42
43
  "@orpc/zod": "^1.15.0",
43
44
  "@total-typescript/tsconfig": "^1.0.4",
@@ -45,8 +46,7 @@
45
46
  "shx": "^0.4.0",
46
47
  "tsdown": "^0.22.14",
47
48
  "typescript": "^6.0.3",
48
- "vitest": "^4.1.10",
49
- "@alpic-ai/domains": "0.0.0"
49
+ "vitest": "^4.1.11"
50
50
  },
51
51
  "scripts": {
52
52
  "build": "shx rm -rf dist && tsdown",