@alpic-ai/api 0.0.0-staging.g1628447 → 0.0.0-staging.g168e199

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 (2) hide show
  1. package/dist/index.mjs +78 -7
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -523,6 +523,16 @@ z.object({
523
523
  createdAt: z.coerce.date(),
524
524
  updatedAt: z.coerce.date()
525
525
  });
526
+ const alpicMcpRequestLogSchema = z.object({
527
+ type: z.literal("mcp_request"),
528
+ method: z.string()
529
+ });
530
+ const alpicMcpErrorLogSchema = z.object({
531
+ type: z.literal("mcp_error"),
532
+ method: z.string(),
533
+ error: z.string()
534
+ });
535
+ z.union([alpicMcpRequestLogSchema, alpicMcpErrorLogSchema]);
526
536
  z.enum([
527
537
  "INFO",
528
538
  "WARNING",
@@ -1434,17 +1444,70 @@ 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
1448
  z.object({
1444
1449
  customerCredits: customerCreditsSchema.nullable(),
1445
- customerUsage: customerUsageSchema.nullable(),
1446
1450
  partnerDiscount: partnerDiscountSchema.nullable()
1447
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() });
1473
+ const telemetrySignalSchema = z.enum([
1474
+ "logs",
1475
+ "metrics",
1476
+ "traces"
1477
+ ]);
1478
+ const otlpProtocolSchema = z.enum(["http/protobuf", "http/json"]);
1479
+ const otlpEndpointSchema = z.string().trim().min(1).max(2048);
1480
+ const OTLP_HEADER_VALUE_MAX_LENGTH = 2048;
1481
+ const otlpHeaderNameSchema = z.string().trim().min(1, "Enter a header name").max(128).regex(/^[A-Za-z0-9!#$%&'*+\-.^_`|~]+$/, "Use letters, digits and !#$%&'*+-.^_`|~ only");
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");
1483
+ const telemetryDestinationHeaderSchema = z.object({
1484
+ id: z.string(),
1485
+ name: otlpHeaderNameSchema,
1486
+ value: otlpHeaderValueSchema,
1487
+ isSecret: z.boolean()
1488
+ });
1489
+ const otlpPushFailureReasonSchema = z.enum([
1490
+ "credentials",
1491
+ "wrong-path",
1492
+ "wrong-protocol",
1493
+ "invalid-payload",
1494
+ "partial-rejection",
1495
+ "blocked-target",
1496
+ "timeout",
1497
+ "unreachable",
1498
+ "receiver-error",
1499
+ "unexpected-status"
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
+ });
1448
1511
  //#endregion
1449
1512
  //#region src/auth-scope.ts
1450
1513
  /** Accepts an API key or OAuth access token (default for most routes). */
@@ -1543,6 +1606,14 @@ const serverFieldsSchema = z.object({
1543
1606
  });
1544
1607
  //#endregion
1545
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
+ };
1546
1617
  const deploymentStatusSchema = z.enum([
1547
1618
  "ongoing",
1548
1619
  "deployed",
@@ -1925,7 +1996,7 @@ const getProjectAnalyticsContractV1 = base.route({
1925
1996
  startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
1926
1997
  endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
1927
1998
  timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
1928
- }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp > 0, { message: "End date must be after start date" }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp <= 744 * 60 * 60 * 1e3, { 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({
1999
+ }).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({
1929
2000
  metadata: z.object({
1930
2001
  startTimestamp: z.number(),
1931
2002
  endTimestamp: z.number(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-staging.g1628447",
3
+ "version": "0.0.0-staging.g168e199",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",