@alpic-ai/api 0.0.0-dev.gec0fcf0 → 0.0.0-dev.gec642f4

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
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
2
  import { InferContractRouterInputs, InferContractRouterOutputs } from "@orpc/contract";
3
-
4
3
  //#region src/api.contract.d.ts
5
4
  type ApiContext = {
6
5
  request: Request & {
@@ -225,6 +224,17 @@ declare const contract: {
225
224
  v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
226
225
  environmentId: z.ZodString;
227
226
  token: z.ZodOptional<z.ZodString>;
227
+ settings: z.ZodOptional<z.ZodObject<{
228
+ installCommand: z.ZodOptional<z.ZodString>;
229
+ buildCommand: z.ZodOptional<z.ZodString>;
230
+ buildOutputDir: z.ZodOptional<z.ZodString>;
231
+ startCommand: z.ZodOptional<z.ZodString>;
232
+ transport: z.ZodEnum<{
233
+ stdio: "stdio";
234
+ sse: "sse";
235
+ streamablehttp: "streamablehttp";
236
+ }>;
237
+ }, z.core.$strip>>;
228
238
  }, z.core.$strip>, z.ZodObject<{
229
239
  id: z.ZodString;
230
240
  status: z.ZodEnum<{
package/dist/index.mjs CHANGED
@@ -342,6 +342,12 @@ z.union([
342
342
  protectedWithoutDiscoveryEnvironmentSchema
343
343
  ]);
344
344
  const allowedPlatformSchema = platformSchema;
345
+ const playgroundModelSchema = z.enum([
346
+ "global.anthropic.claude-haiku-4-5-20251001-v1:0",
347
+ "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
348
+ "openai.gpt-5.4",
349
+ "openai.gpt-5.5"
350
+ ]);
345
351
  const environmentDomainSchema = z.object({
346
352
  name: z.string(),
347
353
  status: z.enum([
@@ -361,6 +367,7 @@ const environmentSchema$1 = z.object({
361
367
  latestDeployment: deploymentSummarySchema.optional(),
362
368
  openaiAppsChallenge: z.string().nullable().optional(),
363
369
  isPlaygroundEnabled: z.boolean(),
370
+ playgroundModel: playgroundModelSchema,
364
371
  isIpWhitelistEnabled: z.boolean(),
365
372
  ipAllowlist: z.array(z.string()).nullable(),
366
373
  allowedPlatforms: z.array(allowedPlatformSchema),
@@ -373,7 +380,8 @@ z.object({
373
380
  sessionReplayEnabled: z.boolean(),
374
381
  collectRequestPayload: z.boolean(),
375
382
  collectResponsePayload: z.boolean(),
376
- collectErrorMessage: z.boolean()
383
+ collectErrorMessage: z.boolean(),
384
+ collectUserData: z.boolean()
377
385
  });
378
386
  z.object({
379
387
  id: z.string(),
@@ -508,6 +516,12 @@ z.object({
508
516
  environments: z.array(environmentWithDomainsSchema),
509
517
  productionEnvironment: environmentWithDomainsSchema.nullable()
510
518
  });
519
+ const domainFailureReasonSchema = z.enum([
520
+ "caa",
521
+ "dns",
522
+ "invalid_domain",
523
+ "other"
524
+ ]);
511
525
  const projectDomainMappingSchema = z.object({
512
526
  pathPrefix: z.string(),
513
527
  environment: environmentSchema$1
@@ -520,6 +534,8 @@ z.object({
520
534
  "deployed",
521
535
  "failed"
522
536
  ]),
537
+ failureReason: domainFailureReasonSchema.nullable(),
538
+ environment: environmentSchema$1,
523
539
  mappings: z.array(projectDomainMappingSchema)
524
540
  });
525
541
  const serverFieldsSchema$1 = z.object({
@@ -584,8 +600,9 @@ const positiveTestCaseSchema = z.object({
584
600
  }).partial().describe("Each case: Scenario, User prompt, Tool triggered, Expected output.");
585
601
  const screenshotEntrySchema = z.object({
586
602
  prompt: z.string(),
587
- url: z.url().or(z.literal(""))
603
+ url: z.url()
588
604
  }).describe("Each screenshot: the user prompt that produced it + the image URL.");
605
+ const screenshotDraftEntrySchema = screenshotEntrySchema.extend({ url: z.string() });
589
606
  /** Accepts either a valid email or URL. */
590
607
  const supportChannelSchema = z.string().refine((value) => z.email().safeParse(value).success || z.url().safeParse(value).success, { error: "Must be a valid email or URL" });
591
608
  /** A URL field whose error spells out that the scheme is required. */
@@ -944,6 +961,17 @@ const chatgptSubmissionFormDataSchema = z.object({
944
961
  allowedCountries: chatgptAllowedCountriesSchema.describe("Availability: all supported countries, or an allow-list / block-list of specific ones (ISO alpha-2)."),
945
962
  releaseNotes: z.string().describe("Publicly displayed on the app details page.")
946
963
  });
964
+ const chatgptSubmissionDraftSchema = chatgptSubmissionFormDataSchema.partial().extend({
965
+ tagline: z.string().optional(),
966
+ companyUrl: z.string().optional(),
967
+ supportChannel: z.string().optional(),
968
+ privacyPolicyUrl: z.string().optional(),
969
+ termsOfServiceUrl: z.string().optional(),
970
+ demoRecordingUrl: z.string().optional(),
971
+ serverUrl: z.string().optional(),
972
+ screenshots: z.array(screenshotDraftEntrySchema).optional(),
973
+ translations: z.array(chatgptTranslationSchema.extend({ tagline: z.string() })).optional()
974
+ });
947
975
  chatgptSubmissionFormDataSchema.pick({
948
976
  appName: true,
949
977
  developerName: true,
@@ -1022,8 +1050,8 @@ phrases like 'The best MCP server for...'. Example: 'Manage tasks and projects i
1022
1050
  description: z.string().max(2e3).describe(`A description of what your connector does and its key features, shown on the connector's detail page in
1023
1051
  claude.ai. Write it from a user perspective and be specific. Max 2000 characters.`),
1024
1052
  categories: z.array(claudeCategorySchema).max(5).describe(claudeCategoryDescription),
1025
- iconUrl: z.url().optional().describe(`Optional custom icon URL for the directory listing. By default the favicon from your MCP URL is used (recommended).
1026
- Set this only if you want to override the favicon.`),
1053
+ iconUrl: z.url().optional().describe(`Optional custom icon for the directory listing — a square SVG. By default the favicon from your MCP URL is used
1054
+ (recommended); upload a custom icon only to override it.`),
1027
1055
  documentation: z.url().describe(`A public URL pointing to documentation that helps users understand and use your connector. Must be publicly
1028
1056
  accessible without login. IT admins often review these when deciding whether to approve a server. Required to be live
1029
1057
  by your publish date.`),
@@ -1031,6 +1059,8 @@ by your publish date.`),
1031
1059
  used to notify you of security or compliance issues, so make sure it's actively monitored.`),
1032
1060
  privacyPolicy: z.url().describe(`URL to your privacy policy. Mandatory and displayed in the directory listing. Must be publicly accessible and cover
1033
1061
  what data you collect, how you use and store it, and whether you share it with third parties.`),
1062
+ screenshots: z.array(screenshotEntrySchema).optional().describe(`Carousel images shown on your connector's directory page (PNG). Each is paired with the user prompt that produced
1063
+ it. This is editable on the directory page only after the connector is submitted — optional here so you can prepare it.`),
1034
1064
  primaryUseCases: z.string().describe(`Describe the main tasks users will accomplish with this connector, and include a few example prompts a user might
1035
1065
  type. These may be shown publicly but are primarily used for internal review — reviewers test your server using them.`),
1036
1066
  connectionRequirements: z.string().describe(`What accounts, permissions, or setup a user needs before connecting (e.g. 'Requires a paid Acme account with admin
@@ -1068,6 +1098,21 @@ fully populated account.`),
1068
1098
  submission. Each is an attestation you are legally agreeing to by submitting.`),
1069
1099
  additionalNotes: z.string().optional().describe("Anything else the review team should know about your connector. Optional.")
1070
1100
  });
1101
+ const claudeSubmissionDraftSchema = claudeSubmissionFormDataSchema.partial().extend({
1102
+ serverUrl: z.string().optional(),
1103
+ name: z.string().optional(),
1104
+ slug: z.string().optional(),
1105
+ oneLiner: z.string().optional(),
1106
+ description: z.string().optional(),
1107
+ iconUrl: z.string().optional(),
1108
+ documentation: z.string().optional(),
1109
+ support: z.string().optional(),
1110
+ privacyPolicy: z.string().optional(),
1111
+ companyWebsite: z.string().optional(),
1112
+ primaryContactEmail: z.string().optional(),
1113
+ categories: z.array(claudeCategorySchema).optional(),
1114
+ screenshots: z.array(screenshotDraftEntrySchema).optional()
1115
+ });
1071
1116
  claudeSubmissionFormDataSchema.pick({
1072
1117
  serverUrl: true,
1073
1118
  name: true,
@@ -1108,14 +1153,14 @@ const submissionMetaFieldsSchema = z.object({
1108
1153
  });
1109
1154
  const claudeSubmissionSchemaInternal = submissionMetaFieldsSchema.extend({
1110
1155
  platform: z.literal("claudeai"),
1111
- formData: claudeSubmissionFormDataSchema.partial()
1156
+ formData: claudeSubmissionDraftSchema
1112
1157
  });
1113
1158
  const chatgptSubmissionSchemaInternal = submissionMetaFieldsSchema.extend({
1114
1159
  platform: z.literal("chatgpt"),
1115
- formData: chatgptSubmissionFormDataSchema.partial()
1160
+ formData: chatgptSubmissionDraftSchema
1116
1161
  });
1117
1162
  z.discriminatedUnion("platform", [claudeSubmissionSchemaInternal, chatgptSubmissionSchemaInternal]);
1118
- z.union([claudeSubmissionFormDataSchema.partial(), chatgptSubmissionFormDataSchema.partial()]);
1163
+ z.union([claudeSubmissionDraftSchema, chatgptSubmissionDraftSchema]);
1119
1164
  const subscriptionPlanSchema = z.enum([
1120
1165
  "pro",
1121
1166
  "business",
@@ -1499,7 +1544,8 @@ const deployEnvironmentContractV1 = oc.route({
1499
1544
  BAD_REQUEST: {}
1500
1545
  }).input(z.object({
1501
1546
  environmentId: z.string().describe("The ID of the environment to deploy"),
1502
- token: z.string().describe("The token to identify the source archive").optional()
1547
+ token: z.string().describe("The token to identify the source archive").optional(),
1548
+ settings: buildSettingsSchema.extend({ transport: transportSchema }).optional().describe("Project settings detected by the client from the source. When provided, the server skips downloading and extracting the source archive to detect them.")
1503
1549
  })).output(deploymentSchema);
1504
1550
  const uploadDeploymentArtifactContractV1 = oc.route({
1505
1551
  path: "/v1/deployments/upload",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-dev.gec0fcf0",
3
+ "version": "0.0.0-dev.gec642f4",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",
@@ -14,22 +14,38 @@
14
14
  "files": [
15
15
  "dist"
16
16
  ],
17
+ "nx": {
18
+ "targets": {
19
+ "build": {
20
+ "cache": true,
21
+ "inputs": [
22
+ "{projectRoot}/src/**/*",
23
+ "{projectRoot}/tsdown.config.ts",
24
+ "{projectRoot}/tsconfig.json",
25
+ "^default"
26
+ ],
27
+ "outputs": [
28
+ "{projectRoot}/dist"
29
+ ]
30
+ }
31
+ }
32
+ },
17
33
  "author": "Alpic",
18
34
  "license": "ISC",
19
35
  "dependencies": {
20
- "@orpc/contract": "^1.14.6",
36
+ "@orpc/contract": "^1.14.7",
21
37
  "ms": "^2.1.3",
22
38
  "zod": "^4.4.3"
23
39
  },
24
40
  "devDependencies": {
25
- "@orpc/openapi": "^1.14.6",
26
- "@orpc/zod": "^1.14.6",
41
+ "@orpc/openapi": "^1.14.7",
42
+ "@orpc/zod": "^1.14.7",
27
43
  "@total-typescript/tsconfig": "^1.0.4",
28
44
  "@types/ms": "^2.1.0",
29
45
  "shx": "^0.4.0",
30
- "tsdown": "^0.22.3",
46
+ "tsdown": "^0.22.5",
31
47
  "typescript": "^6.0.3",
32
- "vitest": "^4.1.9",
48
+ "vitest": "^4.1.10",
33
49
  "@alpic-ai/domains": "0.0.0"
34
50
  },
35
51
  "scripts": {
@@ -38,7 +54,7 @@
38
54
  "test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format",
39
55
  "test:unit": "vitest run",
40
56
  "test:format": "biome check --error-on-warnings .",
41
- "test:type": "tsc --noEmit",
57
+ "test:type": "tsgo --noEmit",
42
58
  "publish:npm": "pnpm publish --tag \"${NPM_TAG}\" --access public --no-git-checks"
43
59
  }
44
60
  }