pabal-web-mcp 0.1.6 → 1.1.0

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.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { androidpublisher_v3 } from '@googleapis/androidpublisher';
2
+ import { AppStoreVersionAttributes, AppStoreVersionLocalizationAttributes, AppInfoLocalizationAttributes, ScreenshotDisplayType } from 'appstore-connect-sdk/openapi';
3
+
1
4
  /**
2
5
  * Unified locale system for ASO (App Store Optimization)
3
6
  * Consolidates App Store Connect and Google Play Console locale codes
@@ -70,21 +73,32 @@ declare function isAppStoreLocale(locale: string): locale is AppStoreLocale;
70
73
  * Check if locale is supported by Google Play
71
74
  */
72
75
  declare function isGooglePlayLocale(locale: string): locale is GooglePlayLocale;
76
+ /**
77
+ * Google Play Android Publisher base types
78
+ */
79
+ type GooglePlayListing = androidpublisher_v3.Schema$Listing;
80
+ type GooglePlayImageType = NonNullable<androidpublisher_v3.Params$Resource$Edits$Images$List["imageType"]>;
81
+ type GooglePlayScreenshotType = Extract<GooglePlayImageType, "phoneScreenshots" | "sevenInchScreenshots" | "tenInchScreenshots" | "tvScreenshots" | "wearScreenshots">;
82
+ /**
83
+ * Google Play screenshots keyed by Android Publisher imageType
84
+ * Includes legacy aliases for existing data structures
85
+ */
86
+ interface GooglePlayScreenshots extends Partial<Record<GooglePlayScreenshotType, string[]>> {
87
+ phone?: string[];
88
+ tablet?: string[];
89
+ tablet7?: string[];
90
+ tablet10?: string[];
91
+ tv?: string[];
92
+ wear?: string[];
93
+ }
73
94
  /**
74
95
  * Google Play Store ASO data
75
96
  */
76
- interface GooglePlayAsoData {
77
- title: string;
78
- shortDescription: string;
79
- fullDescription: string;
80
- screenshots: {
81
- phone: string[];
82
- tablet?: string[];
83
- tablet7?: string[];
84
- tablet10?: string[];
85
- tv?: string[];
86
- wear?: string[];
87
- };
97
+ interface GooglePlayAsoData extends Pick<GooglePlayListing, "video" | "language"> {
98
+ title: NonNullable<GooglePlayListing["title"]>;
99
+ shortDescription: NonNullable<GooglePlayListing["shortDescription"]>;
100
+ fullDescription: NonNullable<GooglePlayListing["fullDescription"]>;
101
+ screenshots: GooglePlayScreenshots;
88
102
  featureGraphic?: string;
89
103
  promoGraphic?: string;
90
104
  category?: string;
@@ -99,59 +113,57 @@ interface GooglePlayAsoData {
99
113
  /**
100
114
  * Google Play release notes (per version)
101
115
  */
102
- interface GooglePlayReleaseNote {
103
- versionCode: number;
104
- versionName: string;
105
- releaseNotes: {
106
- [language: string]: string;
107
- };
108
- track: string;
109
- status: string;
110
- releaseDate?: string;
111
- }
116
+ type GooglePlayReleaseNote = androidpublisher_v3.Schema$TrackRelease;
112
117
  /**
113
118
  * App Store release notes (per version)
114
119
  */
115
- interface AppStoreReleaseNote {
116
- versionString: string;
117
- releaseNotes: {
118
- [locale: string]: string;
119
- };
120
- platform: string;
120
+ type AppStoreReleaseNote = Pick<AppStoreVersionAttributes, "versionString" | "platform"> & {
121
+ releaseNotes: Record<string, NonNullable<AppStoreVersionLocalizationAttributes["whatsNew"]>>;
121
122
  releaseDate?: string;
123
+ };
124
+ /**
125
+ * App Store Connect base types
126
+ */
127
+ type AppStoreInfoLocalization = AppInfoLocalizationAttributes;
128
+ type AppStoreVersionLocalization = AppStoreVersionLocalizationAttributes;
129
+ type AppStoreScreenshotDisplayType = ScreenshotDisplayType;
130
+ /**
131
+ * App Store screenshots keyed by official display type
132
+ * Includes legacy aliases used in existing data structures
133
+ */
134
+ interface AppStoreScreenshots extends Partial<Record<AppStoreScreenshotDisplayType, string[]>> {
135
+ iphone65?: string[];
136
+ iphone61?: string[];
137
+ iphone58?: string[];
138
+ iphone55?: string[];
139
+ iphone47?: string[];
140
+ iphone40?: string[];
141
+ ipadPro129?: string[];
142
+ ipadPro11?: string[];
143
+ ipad105?: string[];
144
+ ipad97?: string[];
145
+ appleWatch?: string[];
122
146
  }
123
147
  /**
124
148
  * App Store ASO data
125
149
  */
126
150
  interface AppStoreAsoData {
127
- name: string;
128
- subtitle?: string;
129
- description: string;
130
- keywords?: string;
131
- promotionalText?: string;
132
- screenshots: {
133
- iphone65?: string[];
134
- iphone61?: string[];
135
- iphone58?: string[];
136
- iphone55?: string[];
137
- iphone47?: string[];
138
- iphone40?: string[];
139
- ipadPro129?: string[];
140
- ipadPro11?: string[];
141
- ipad105?: string[];
142
- ipad97?: string[];
143
- appleWatch?: string[];
144
- };
151
+ name: NonNullable<AppStoreInfoLocalization["name"]>;
152
+ subtitle?: AppStoreInfoLocalization["subtitle"];
153
+ description: NonNullable<AppStoreVersionLocalization["description"]>;
154
+ keywords?: AppStoreVersionLocalization["keywords"];
155
+ promotionalText?: AppStoreVersionLocalization["promotionalText"];
156
+ screenshots: AppStoreScreenshots;
145
157
  appPreview?: string[];
146
158
  primaryCategory?: string;
147
159
  secondaryCategory?: string;
148
160
  contentRightId?: string;
149
- supportUrl?: string;
150
- marketingUrl?: string;
151
- privacyPolicyUrl?: string;
161
+ supportUrl?: AppStoreVersionLocalization["supportUrl"];
162
+ marketingUrl?: AppStoreVersionLocalization["marketingUrl"];
163
+ privacyPolicyUrl?: AppStoreInfoLocalization["privacyPolicyUrl"];
152
164
  bundleId: string;
153
- locale: string;
154
- whatsNew?: string;
165
+ locale: NonNullable<AppStoreVersionLocalization["locale"]>;
166
+ whatsNew?: AppStoreVersionLocalization["whatsNew"];
155
167
  }
156
168
  /**
157
169
  * Multilingual Google Play ASO data
@@ -354,6 +366,86 @@ interface ProductLocale {
354
366
  landing?: LandingPageLocale;
355
367
  }
356
368
 
369
+ /**
370
+ * Types for the create-blog-html MCP tool
371
+ */
372
+ interface BlogMeta {
373
+ title: string;
374
+ description: string;
375
+ appSlug: string;
376
+ slug: string;
377
+ locale: string;
378
+ publishedAt: string;
379
+ modifiedAt: string;
380
+ coverImage: string;
381
+ tags: string[];
382
+ }
383
+ interface CreateBlogHtmlInput {
384
+ /**
385
+ * Product/app slug used for paths and CTAs
386
+ */
387
+ appSlug: string;
388
+ /**
389
+ * English title used for slug creation and H1
390
+ */
391
+ title?: string;
392
+ /**
393
+ * Topic/angle to cover inside the article body
394
+ */
395
+ topic: string;
396
+ /**
397
+ * Single locale to generate (default en-US). Ignored when locales[] is provided.
398
+ */
399
+ locale?: string;
400
+ /**
401
+ * Optional list of locales to generate. Each gets its own HTML file.
402
+ */
403
+ locales?: string[];
404
+ /**
405
+ * Meta description override. If absent, a locale-aware summary is generated from topic/appSlug.
406
+ */
407
+ description?: string;
408
+ /**
409
+ * Optional tags for BLOG_META. If absent, tags are derived from topic and appSlug.
410
+ */
411
+ tags?: string[];
412
+ /**
413
+ * Optional cover image. Relative paths are rewritten to /blogs/<app>/<slug>/...
414
+ */
415
+ coverImage?: string;
416
+ /**
417
+ * Include a relative image example in the body (./images/hero.png by default).
418
+ */
419
+ includeRelativeImageExample?: boolean;
420
+ /**
421
+ * Override the relative image path used when includeRelativeImageExample is true.
422
+ */
423
+ relativeImagePath?: string;
424
+ /**
425
+ * Publish date (YYYY-MM-DD). Defaults to today.
426
+ */
427
+ publishedAt?: string;
428
+ /**
429
+ * Last modified date (YYYY-MM-DD). Defaults to publishedAt.
430
+ */
431
+ modifiedAt?: string;
432
+ /**
433
+ * Overwrite existing HTML files when true (default false).
434
+ */
435
+ overwrite?: boolean;
436
+ }
437
+ interface GeneratedBlogFile {
438
+ locale: string;
439
+ path: string;
440
+ }
441
+ interface CreateBlogHtmlResult {
442
+ slug: string;
443
+ baseDir: string;
444
+ files: GeneratedBlogFile[];
445
+ coverImage: string;
446
+ metaByLocale: Record<string, BlogMeta>;
447
+ }
448
+
357
449
  /**
358
450
  * Locale conversion utilities for ASO platforms
359
451
  * Handles conversion between unified locales and platform-specific locale codes
@@ -609,4 +701,4 @@ declare function getPublicDir(): string;
609
701
  */
610
702
  declare function getProductsDir(): string;
611
703
 
612
- export { APP_STORE_TO_UNIFIED, type AppMetaLinks, type AppPageData, type AppStoreAsoData, type AppStoreLocale, type AppStoreMultilingualAsoData, type AppStoreReleaseNote, type AsoData, type AsoLocaleContent, type AsoTemplate, DEFAULT_LOCALE, type DeepPartial, type FeatureItem, GOOGLE_PLAY_TO_UNIFIED, type GooglePlayAsoData, type GooglePlayLocale, type GooglePlayMultilingualAsoData, type GooglePlayReleaseNote, type ImageAsset, type LandingCta, type LandingFeatures, type LandingHero, type LandingPage, type LandingPageLocale, type LandingReviews, type LandingScreenshots, type LayoutColors, type ProductConfig, type ProductContent, type ProductLocale, type ProductMetadata, type ProductScreenshots, type SupportedLocale, type Testimonial, UNIFIED_LOCALES, UNIFIED_TO_APP_STORE, UNIFIED_TO_GOOGLE_PLAY, type UnifiedLocale, appStoreToGooglePlay, appStoreToUnified, appStoreToUnifiedBatch, convertObjectFromAppStore, convertObjectFromGooglePlay, convertObjectToAppStore, convertObjectToGooglePlay, getAsoDataDir, getProductsDir, getPublicDir, getPullDataDir, getPushDataDir, googlePlayToAppStore, googlePlayToUnified, googlePlayToUnifiedBatch, isAppStoreLocale, isAppStoreMultilingual, isGooglePlayLocale, isGooglePlayMultilingual, isSupportedLocale, loadAsoFromConfig, saveAsoToAsoDir, saveAsoToConfig, unifiedToAppStore, unifiedToAppStoreBatch, unifiedToBothPlatforms, unifiedToGooglePlay, unifiedToGooglePlayBatch };
704
+ export { APP_STORE_TO_UNIFIED, type AppMetaLinks, type AppPageData, type AppStoreAsoData, type AppStoreInfoLocalization, type AppStoreLocale, type AppStoreMultilingualAsoData, type AppStoreReleaseNote, type AppStoreScreenshotDisplayType, type AppStoreScreenshots, type AppStoreVersionLocalization, type AsoData, type AsoLocaleContent, type AsoTemplate, type BlogMeta, type CreateBlogHtmlInput, type CreateBlogHtmlResult, DEFAULT_LOCALE, type DeepPartial, type FeatureItem, GOOGLE_PLAY_TO_UNIFIED, type GeneratedBlogFile, type GooglePlayAsoData, type GooglePlayImageType, type GooglePlayListing, type GooglePlayLocale, type GooglePlayMultilingualAsoData, type GooglePlayReleaseNote, type GooglePlayScreenshotType, type GooglePlayScreenshots, type ImageAsset, type LandingCta, type LandingFeatures, type LandingHero, type LandingPage, type LandingPageLocale, type LandingReviews, type LandingScreenshots, type LayoutColors, type ProductConfig, type ProductContent, type ProductLocale, type ProductMetadata, type ProductScreenshots, type SupportedLocale, type Testimonial, UNIFIED_LOCALES, UNIFIED_TO_APP_STORE, UNIFIED_TO_GOOGLE_PLAY, type UnifiedLocale, appStoreToGooglePlay, appStoreToUnified, appStoreToUnifiedBatch, convertObjectFromAppStore, convertObjectFromGooglePlay, convertObjectToAppStore, convertObjectToGooglePlay, getAsoDataDir, getProductsDir, getPublicDir, getPullDataDir, getPushDataDir, googlePlayToAppStore, googlePlayToUnified, googlePlayToUnifiedBatch, isAppStoreLocale, isAppStoreMultilingual, isGooglePlayLocale, isGooglePlayMultilingual, isSupportedLocale, loadAsoFromConfig, saveAsoToAsoDir, saveAsoToConfig, unifiedToAppStore, unifiedToAppStoreBatch, unifiedToBothPlatforms, unifiedToGooglePlay, unifiedToGooglePlayBatch };
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ import {
33
33
  unifiedToBothPlatforms,
34
34
  unifiedToGooglePlay,
35
35
  unifiedToGooglePlayBatch
36
- } from "./chunk-YPDLNPLX.js";
36
+ } from "./chunk-OCOFNMN2.js";
37
37
  export {
38
38
  APP_STORE_TO_UNIFIED,
39
39
  DEFAULT_LOCALE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pabal-web-mcp",
3
- "version": "0.1.6",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "MCP server for ASO data management with shared types and utilities",
6
6
  "author": "skyu",
@@ -39,7 +39,9 @@
39
39
  "prepublishOnly": "npm run build"
40
40
  },
41
41
  "dependencies": {
42
+ "@googleapis/androidpublisher": "^33.2.0",
42
43
  "@modelcontextprotocol/sdk": "^1.22.0",
44
+ "appstore-connect-sdk": "^1.3.2",
43
45
  "zod": "^3.25.76",
44
46
  "zod-to-json-schema": "^3.25.0"
45
47
  },