@alpic-ai/api 0.0.0-staging.gc50af01 → 0.0.0-staging.gc67971e

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 -5
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -595,6 +595,71 @@ const chatgptCategorySchema = z.enum([
595
595
  ]);
596
596
  const chatgptAuthenticationSchema = z.enum(["No auth needed", "OAuth 2.0"]);
597
597
  const chatgptAllowedCountriesSchema = z.enum(["Allow all", "Restrict to specific countries"]);
598
+ const chatgptTranslationLocaleSchema = z.enum([
599
+ "am",
600
+ "ar",
601
+ "bg-BG",
602
+ "bn-BD",
603
+ "bs-BA",
604
+ "ca-ES",
605
+ "cs-CZ",
606
+ "da-DK",
607
+ "de-DE",
608
+ "el-GR",
609
+ "es-419",
610
+ "es-ES",
611
+ "et-EE",
612
+ "fi-FI",
613
+ "fr-CA",
614
+ "fr-FR",
615
+ "gu-IN",
616
+ "hi-IN",
617
+ "hr-HR",
618
+ "hu-HU",
619
+ "hy-AM",
620
+ "id-ID",
621
+ "is-IS",
622
+ "it-IT",
623
+ "ja-JP",
624
+ "ka-GE",
625
+ "kk",
626
+ "kn-IN",
627
+ "ko-KR",
628
+ "lt",
629
+ "lv-LV",
630
+ "mk-MK",
631
+ "ml",
632
+ "mn",
633
+ "mr-IN",
634
+ "ms-MY",
635
+ "my-MM",
636
+ "nb-NO",
637
+ "nl-NL",
638
+ "pa",
639
+ "pl-PL",
640
+ "pt-BR",
641
+ "pt-PT",
642
+ "ro-RO",
643
+ "ru-RU",
644
+ "sk-SK",
645
+ "sl-SI",
646
+ "so-SO",
647
+ "sq-AL",
648
+ "sr-RS",
649
+ "sv-SE",
650
+ "sw-TZ",
651
+ "ta-IN",
652
+ "te-IN",
653
+ "th-TH",
654
+ "tl",
655
+ "tr-TR",
656
+ "uk-UA",
657
+ "ur",
658
+ "vi-VN",
659
+ "zh-CN",
660
+ "zh-HK",
661
+ "zh-TW"
662
+ ]);
598
663
  const negativeTestCaseSchema = z.object({
599
664
  scenario: z.string(),
600
665
  userPrompt: z.string()
@@ -605,11 +670,19 @@ const chatgptToolJustificationSchema = z.object({
605
670
  openWorldJustification: z.string(),
606
671
  destructiveJustification: z.string()
607
672
  }).describe("Per-tool justification of each MCP annotation value (one sentence per hint).");
673
+ /**
674
+ * Base copy fields, defined once and reused by both the submission form and per-locale
675
+ * translations so the constraints (tagline ≤ 30 chars) never drift. The translation generation
676
+ * path wraps these in {@link clampStringField} since the LLM tends to overshoot the limit.
677
+ */
678
+ const chatgptTaglineSchema = z.string().max(30);
679
+ const chatgptDescriptionSchema = z.string();
608
680
  const chatgptTranslationSchema = z.object({
609
- locale: z.string(),
610
- tagline: z.string().optional(),
611
- description: z.string().optional()
681
+ locale: chatgptTranslationLocaleSchema,
682
+ tagline: chatgptTaglineSchema,
683
+ description: chatgptDescriptionSchema
612
684
  }).describe("Locale-scoped override for tagline + description. English (US) is the default.");
685
+ chatgptTranslationSchema.extend({ tagline: clampStringField(chatgptTaglineSchema) });
613
686
  /**
614
687
  * Field order mirrors the ChatGPT (OpenAI) submission spreadsheet, grouped by section.
615
688
  * When adding/removing/reordering fields, keep this in sync with the sheet.
@@ -618,8 +691,8 @@ const chatgptSubmissionFormDataSchema = z.object({
618
691
  logoLight: z.string().describe("Logo icon for light mode. Square PNG, no borders or rounded corners (clients apply circular cropping)."),
619
692
  logoDark: z.string().optional().describe("Optional dark-mode logo icon. Square PNG, same specs as the light icon. Leave empty if the light icon also works on dark backgrounds."),
620
693
  appName: z.string().describe("The name users will see in ChatGPT and in the Apps Directory."),
621
- tagline: z.string().max(30).describe("Plain-language phrase focused on function and user value. 30 chars max."),
622
- description: z.string().describe("Clear, engaging description highlighting what the app does and why people will love it. Appears publicly on the directory page."),
694
+ tagline: chatgptTaglineSchema.describe("Plain-language phrase focused on function and user value. 30 chars max."),
695
+ description: chatgptDescriptionSchema.describe("Clear, engaging description highlighting what the app does and why people will love it. Appears publicly on the directory page."),
623
696
  category: chatgptCategorySchema.describe("Category from the OpenAI taxonomy."),
624
697
  developerName: z.string().describe("Developer name shown publicly on the app's directory page."),
625
698
  companyUrl: z.url().describe("Your company's main website URL."),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-staging.gc50af01",
3
+ "version": "0.0.0-staging.gc67971e",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",