asc-mcp-pro 0.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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +241 -0
  3. package/build/auth.d.ts +8 -0
  4. package/build/auth.js +44 -0
  5. package/build/auth.js.map +1 -0
  6. package/build/client.d.ts +21 -0
  7. package/build/client.js +91 -0
  8. package/build/client.js.map +1 -0
  9. package/build/index.d.ts +2 -0
  10. package/build/index.js +47 -0
  11. package/build/index.js.map +1 -0
  12. package/build/lib/jsonapi-write.d.ts +32 -0
  13. package/build/lib/jsonapi-write.js +18 -0
  14. package/build/lib/jsonapi-write.js.map +1 -0
  15. package/build/lib/jsonapi.d.ts +27 -0
  16. package/build/lib/jsonapi.js +27 -0
  17. package/build/lib/jsonapi.js.map +1 -0
  18. package/build/lib/locales.d.ts +24 -0
  19. package/build/lib/locales.js +66 -0
  20. package/build/lib/locales.js.map +1 -0
  21. package/build/lib/pagination.d.ts +11 -0
  22. package/build/lib/pagination.js +23 -0
  23. package/build/lib/pagination.js.map +1 -0
  24. package/build/lib/projections.d.ts +8 -0
  25. package/build/lib/projections.js +51 -0
  26. package/build/lib/projections.js.map +1 -0
  27. package/build/lib/upload.d.ts +38 -0
  28. package/build/lib/upload.js +133 -0
  29. package/build/lib/upload.js.map +1 -0
  30. package/build/tools/apps.d.ts +3 -0
  31. package/build/tools/apps.js +160 -0
  32. package/build/tools/apps.js.map +1 -0
  33. package/build/tools/builds.d.ts +3 -0
  34. package/build/tools/builds.js +158 -0
  35. package/build/tools/builds.js.map +1 -0
  36. package/build/tools/iap.d.ts +3 -0
  37. package/build/tools/iap.js +501 -0
  38. package/build/tools/iap.js.map +1 -0
  39. package/build/tools/ping.d.ts +3 -0
  40. package/build/tools/ping.js +12 -0
  41. package/build/tools/ping.js.map +1 -0
  42. package/build/tools/pricing.d.ts +3 -0
  43. package/build/tools/pricing.js +150 -0
  44. package/build/tools/pricing.js.map +1 -0
  45. package/build/tools/privacy.d.ts +3 -0
  46. package/build/tools/privacy.js +6 -0
  47. package/build/tools/privacy.js.map +1 -0
  48. package/build/tools/provisioning.d.ts +3 -0
  49. package/build/tools/provisioning.js +343 -0
  50. package/build/tools/provisioning.js.map +1 -0
  51. package/build/tools/registry.d.ts +3 -0
  52. package/build/tools/registry.js +35 -0
  53. package/build/tools/registry.js.map +1 -0
  54. package/build/tools/reports.d.ts +3 -0
  55. package/build/tools/reports.js +177 -0
  56. package/build/tools/reports.js.map +1 -0
  57. package/build/tools/reviews.d.ts +3 -0
  58. package/build/tools/reviews.js +51 -0
  59. package/build/tools/reviews.js.map +1 -0
  60. package/build/tools/runner.d.ts +3 -0
  61. package/build/tools/runner.js +174 -0
  62. package/build/tools/runner.js.map +1 -0
  63. package/build/tools/screenshots.d.ts +3 -0
  64. package/build/tools/screenshots.js +228 -0
  65. package/build/tools/screenshots.js.map +1 -0
  66. package/build/tools/testflight.d.ts +3 -0
  67. package/build/tools/testflight.js +360 -0
  68. package/build/tools/testflight.js.map +1 -0
  69. package/build/tools/types.d.ts +7 -0
  70. package/build/tools/types.js +2 -0
  71. package/build/tools/types.js.map +1 -0
  72. package/build/tools/users.d.ts +3 -0
  73. package/build/tools/users.js +65 -0
  74. package/build/tools/users.js.map +1 -0
  75. package/build/tools/versions.d.ts +3 -0
  76. package/build/tools/versions.js +443 -0
  77. package/build/tools/versions.js.map +1 -0
  78. package/build/tools/workflows.d.ts +3 -0
  79. package/build/tools/workflows.js +633 -0
  80. package/build/tools/workflows.js.map +1 -0
  81. package/examples/localize.workflow.json +30 -0
  82. package/examples/release.workflow.json +49 -0
  83. package/examples/testflight.workflow.json +21 -0
  84. package/package.json +59 -0
@@ -0,0 +1,177 @@
1
+ import { z } from "zod";
2
+ import { gunzipSync } from "node:zlib";
3
+ function requireVendor(client) {
4
+ if (!client.vendorNumber) {
5
+ throw new Error("APP_STORE_CONNECT_VENDOR_NUMBER must be set for sales/finance reports. Find it under Payments and Financial Reports in App Store Connect.");
6
+ }
7
+ return client.vendorNumber;
8
+ }
9
+ function parseTsv(text) {
10
+ const lines = text.split(/\r?\n/).filter((l) => l.length > 0);
11
+ if (lines.length === 0)
12
+ return [];
13
+ const headers = lines[0].split("\t");
14
+ return lines.slice(1).map((line) => {
15
+ const cells = line.split("\t");
16
+ const row = {};
17
+ headers.forEach((h, i) => {
18
+ row[h] = cells[i] ?? "";
19
+ });
20
+ return row;
21
+ });
22
+ }
23
+ export function reportsTools(client) {
24
+ return [
25
+ {
26
+ name: "asc_reports_sales",
27
+ description: "Download a sales/trends report. Returns parsed rows (gzipped TSV decoded). Requires APP_STORE_CONNECT_VENDOR_NUMBER.",
28
+ inputSchema: z.object({
29
+ frequency: z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]),
30
+ reportDate: z
31
+ .string()
32
+ .describe("YYYY-MM-DD for DAILY, YYYY-MM-DD (Sunday) for WEEKLY, YYYY-MM for MONTHLY, YYYY for YEARLY"),
33
+ reportType: z
34
+ .enum([
35
+ "SALES",
36
+ "PRE_ORDER",
37
+ "NEWSSTAND",
38
+ "SUBSCRIPTION",
39
+ "SUBSCRIPTION_EVENT",
40
+ "SUBSCRIBER",
41
+ "SUBSCRIPTION_OFFER_CODE_REDEMPTION",
42
+ "INSTALLS",
43
+ "FIRST_ANNUAL",
44
+ ])
45
+ .default("SALES"),
46
+ reportSubType: z.enum(["SUMMARY", "DETAILED", "OPT_IN"]).default("SUMMARY"),
47
+ version: z.string().optional().describe("Report version, e.g. '1_0' for SALES SUMMARY"),
48
+ vendorNumber: z.string().optional(),
49
+ returnRaw: z.boolean().default(false).describe("Return raw decoded TSV instead of parsed rows"),
50
+ }),
51
+ handler: async ({ frequency, reportDate, reportType, reportSubType, version, vendorNumber, returnRaw }) => {
52
+ const vendor = vendorNumber ?? requireVendor(client);
53
+ const buf = await client.request("/salesReports", {
54
+ query: {
55
+ "filter[frequency]": frequency,
56
+ "filter[reportDate]": reportDate,
57
+ "filter[reportType]": reportType,
58
+ "filter[reportSubType]": reportSubType,
59
+ "filter[vendorNumber]": vendor,
60
+ "filter[version]": version,
61
+ },
62
+ headers: { Accept: "application/a-gzip" },
63
+ expectBinary: true,
64
+ });
65
+ const text = gunzipSync(Buffer.from(buf)).toString("utf8");
66
+ return returnRaw ? text : parseTsv(text);
67
+ },
68
+ },
69
+ {
70
+ name: "asc_reports_finance",
71
+ description: "Download a regional finance report. Requires APP_STORE_CONNECT_VENDOR_NUMBER.",
72
+ inputSchema: z.object({
73
+ reportDate: z.string().describe("YYYY-MM"),
74
+ regionCode: z.string().describe("e.g. US, Z1 (combined Latin America), etc."),
75
+ reportType: z.enum(["FINANCIAL", "FINANCE_DETAIL"]).default("FINANCIAL"),
76
+ vendorNumber: z.string().optional(),
77
+ returnRaw: z.boolean().default(false),
78
+ }),
79
+ handler: async ({ reportDate, regionCode, reportType, vendorNumber, returnRaw }) => {
80
+ const vendor = vendorNumber ?? requireVendor(client);
81
+ const buf = await client.request("/financeReports", {
82
+ query: {
83
+ "filter[reportDate]": reportDate,
84
+ "filter[regionCode]": regionCode,
85
+ "filter[reportType]": reportType,
86
+ "filter[vendorNumber]": vendor,
87
+ },
88
+ headers: { Accept: "application/a-gzip" },
89
+ expectBinary: true,
90
+ });
91
+ const text = gunzipSync(Buffer.from(buf)).toString("utf8");
92
+ return returnRaw ? text : parseTsv(text);
93
+ },
94
+ },
95
+ {
96
+ name: "asc_analytics_create_request",
97
+ description: "Create an Analytics Report Request for an app. Step 1 of the async analytics flow: returns the request id you'll poll.",
98
+ inputSchema: z.object({
99
+ appId: z.string(),
100
+ accessType: z.enum(["ONGOING", "ONE_TIME_SNAPSHOT"]).default("ONE_TIME_SNAPSHOT"),
101
+ }),
102
+ handler: async ({ appId, accessType }) => client.request("/analyticsReportRequests", {
103
+ method: "POST",
104
+ body: {
105
+ data: {
106
+ type: "analyticsReportRequests",
107
+ attributes: { accessType },
108
+ relationships: {
109
+ app: { data: { type: "apps", id: appId } },
110
+ },
111
+ },
112
+ },
113
+ }),
114
+ },
115
+ {
116
+ name: "asc_analytics_list_reports",
117
+ description: "List Analytics Reports available under a request id (step 2).",
118
+ inputSchema: z.object({
119
+ requestId: z.string(),
120
+ category: z
121
+ .enum([
122
+ "APP_USAGE",
123
+ "APP_STORE_ENGAGEMENT",
124
+ "COMMERCE",
125
+ "FRAMEWORKS_USAGE",
126
+ "PERFORMANCE",
127
+ ])
128
+ .optional(),
129
+ limit: z.number().int().min(1).max(200).optional(),
130
+ }),
131
+ handler: async ({ requestId, category, limit }) => client.request(`/analyticsReportRequests/${requestId}/reports`, {
132
+ query: {
133
+ "filter[category]": category,
134
+ limit: limit ?? 200,
135
+ },
136
+ }),
137
+ },
138
+ {
139
+ name: "asc_analytics_list_instances",
140
+ description: "List instances of an Analytics Report (step 3).",
141
+ inputSchema: z.object({
142
+ reportId: z.string(),
143
+ limit: z.number().int().min(1).max(200).optional(),
144
+ }),
145
+ handler: async ({ reportId, limit }) => client.request(`/analyticsReports/${reportId}/instances`, {
146
+ query: { limit: limit ?? 100 },
147
+ }),
148
+ },
149
+ {
150
+ name: "asc_analytics_list_segments",
151
+ description: "List downloadable segments for an Analytics Report Instance (step 3b).",
152
+ inputSchema: z.object({
153
+ instanceId: z.string(),
154
+ limit: z.number().int().min(1).max(200).optional(),
155
+ }),
156
+ handler: async ({ instanceId, limit }) => client.request(`/analyticsReportInstances/${instanceId}/segments`, {
157
+ query: { limit: limit ?? 100 },
158
+ }),
159
+ },
160
+ {
161
+ name: "asc_analytics_download_segment",
162
+ description: "Download a specific Analytics Report segment by its presigned URL (step 4). Returns parsed CSV rows.",
163
+ inputSchema: z.object({
164
+ url: z.string().url(),
165
+ returnRaw: z.boolean().default(false),
166
+ }),
167
+ handler: async ({ url, returnRaw }) => {
168
+ const res = await fetch(url);
169
+ if (!res.ok)
170
+ throw new Error(`Segment download ${res.status}: ${await res.text()}`);
171
+ const text = await res.text();
172
+ return returnRaw ? text : parseTsv(text);
173
+ },
174
+ },
175
+ ];
176
+ }
177
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/tools/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,SAAS,aAAa,CAAC,MAAiB;IACtC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,2IAA2I,CAC5I,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO;QACL;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,sHAAsH;YACxH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3D,UAAU,EAAE,CAAC;qBACV,MAAM,EAAE;qBACR,QAAQ,CAAC,4FAA4F,CAAC;gBACzG,UAAU,EAAE,CAAC;qBACV,IAAI,CAAC;oBACJ,OAAO;oBACP,WAAW;oBACX,WAAW;oBACX,cAAc;oBACd,oBAAoB;oBACpB,YAAY;oBACZ,oCAAoC;oBACpC,UAAU;oBACV,cAAc;iBACf,CAAC;qBACD,OAAO,CAAC,OAAO,CAAC;gBACnB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC3E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;gBACvF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;aAChG,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE;gBACxG,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAc,eAAe,EAAE;oBAC7D,KAAK,EAAE;wBACL,mBAAmB,EAAE,SAAS;wBAC9B,oBAAoB,EAAE,UAAU;wBAChC,oBAAoB,EAAE,UAAU;wBAChC,uBAAuB,EAAE,aAAa;wBACtC,sBAAsB,EAAE,MAAM;wBAC9B,iBAAiB,EAAE,OAAO;qBAC3B;oBACD,OAAO,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;oBACzC,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,+EAA+E;YAC5F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;gBAC7E,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;gBACxE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;aACtC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE;gBACjF,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAc,iBAAiB,EAAE;oBAC/D,KAAK,EAAE;wBACL,oBAAoB,EAAE,UAAU;wBAChC,oBAAoB,EAAE,UAAU;wBAChC,oBAAoB,EAAE,UAAU;wBAChC,sBAAsB,EAAE,MAAM;qBAC/B;oBACD,OAAO,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;oBACzC,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,WAAW,EACT,wHAAwH;YAC1H,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;aAClF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CACvC,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE;gBACzC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACJ,IAAI,EAAE;wBACJ,IAAI,EAAE,yBAAyB;wBAC/B,UAAU,EAAE,EAAE,UAAU,EAAE;wBAC1B,aAAa,EAAE;4BACb,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;yBAC3C;qBACF;iBACF;aACF,CAAC;SACL;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,+DAA+D;YAC5E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,QAAQ,EAAE,CAAC;qBACR,IAAI,CAAC;oBACJ,WAAW;oBACX,sBAAsB;oBACtB,UAAU;oBACV,kBAAkB;oBAClB,aAAa;iBACd,CAAC;qBACD,QAAQ,EAAE;gBACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACnD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAChD,MAAM,CAAC,OAAO,CAAC,4BAA4B,SAAS,UAAU,EAAE;gBAC9D,KAAK,EAAE;oBACL,kBAAkB,EAAE,QAAQ;oBAC5B,KAAK,EAAE,KAAK,IAAI,GAAG;iBACpB;aACF,CAAC;SACL;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,iDAAiD;YAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACnD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CACrC,MAAM,CAAC,OAAO,CAAC,qBAAqB,QAAQ,YAAY,EAAE;gBACxD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE;aAC/B,CAAC;SACL;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,wEAAwE;YACrF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACnD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CACvC,MAAM,CAAC,OAAO,CAAC,6BAA6B,UAAU,WAAW,EAAE;gBACjE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE;aAC/B,CAAC;SACL;QACD;YACE,IAAI,EAAE,gCAAgC;YACtC,WAAW,EAAE,sGAAsG;YACnH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;gBACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;aACtC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;gBACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AscClient } from "../client.js";
2
+ import type { ToolDef } from "./types.js";
3
+ export declare function reviewsTools(client: AscClient): ToolDef[];
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { DEFAULT_FIELDS } from "../lib/projections.js";
3
+ export function reviewsTools(client) {
4
+ return [
5
+ {
6
+ name: "asc_reviews_list",
7
+ description: "List customer reviews for an app.",
8
+ inputSchema: z.object({
9
+ appId: z.string(),
10
+ rating: z.number().int().min(1).max(5).optional(),
11
+ territory: z.string().optional().describe("Territory code e.g. USA"),
12
+ sort: z
13
+ .enum([
14
+ "createdDate",
15
+ "-createdDate",
16
+ "rating",
17
+ "-rating",
18
+ ])
19
+ .optional(),
20
+ limit: z.number().int().min(1).max(200).optional(),
21
+ }),
22
+ handler: async ({ appId, rating, territory, sort, limit }) => client.request(`/apps/${appId}/customerReviews`, {
23
+ query: {
24
+ "filter[rating]": rating !== undefined ? String(rating) : undefined,
25
+ "filter[territory]": territory,
26
+ sort: sort ?? "-createdDate",
27
+ limit: limit ?? 50,
28
+ "fields[customerReviews]": DEFAULT_FIELDS.customerReviews,
29
+ include: ["response"],
30
+ },
31
+ }),
32
+ },
33
+ {
34
+ name: "asc_reviews_get",
35
+ description: "Get one customer review by id, including the developer response if any.",
36
+ inputSchema: z.object({
37
+ reviewId: z.string(),
38
+ }),
39
+ handler: async ({ reviewId }) => client.request(`/customerReviews/${reviewId}`, {
40
+ query: { include: ["response"] },
41
+ }),
42
+ },
43
+ {
44
+ name: "asc_reviews_get_response",
45
+ description: "Get the developer's response to a customer review.",
46
+ inputSchema: z.object({ reviewId: z.string() }),
47
+ handler: async ({ reviewId }) => client.request(`/customerReviews/${reviewId}/response`),
48
+ },
49
+ ];
50
+ }
51
+ //# sourceMappingURL=reviews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/tools/reviews.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO;QACL;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,mCAAmC;YAChD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBACpE,IAAI,EAAE,CAAC;qBACJ,IAAI,CAAC;oBACJ,aAAa;oBACb,cAAc;oBACd,QAAQ;oBACR,SAAS;iBACV,CAAC;qBACD,QAAQ,EAAE;gBACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACnD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,kBAAkB,EAAE;gBAC/C,KAAK,EAAE;oBACL,gBAAgB,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;oBACnE,mBAAmB,EAAE,SAAS;oBAC9B,IAAI,EAAE,IAAI,IAAI,cAAc;oBAC5B,KAAK,EAAE,KAAK,IAAI,EAAE;oBAClB,yBAAyB,EAAE,cAAc,CAAC,eAAe;oBACzD,OAAO,EAAE,CAAC,UAAU,CAAC;iBACtB;aACF,CAAC;SACL;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,yEAAyE;YACtF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACrB,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC9B,MAAM,CAAC,OAAO,CAAC,oBAAoB,QAAQ,EAAE,EAAE;gBAC7C,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;aACjC,CAAC;SACL;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,oDAAoD;YACjE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC9B,MAAM,CAAC,OAAO,CAAC,oBAAoB,QAAQ,WAAW,CAAC;SAC1D;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AscClient } from "../client.js";
2
+ import type { ToolDef } from "./types.js";
3
+ export declare function runnerTools(client: AscClient): ToolDef[];
@@ -0,0 +1,174 @@
1
+ import { z } from "zod";
2
+ import { readFileSync } from "node:fs";
3
+ import { allTools } from "./registry.js";
4
+ /**
5
+ * Declarative workflow runner. Workflow file shape:
6
+ *
7
+ * {
8
+ * "name": "Release v1.2.3",
9
+ * "vars": { "appId": "1234", "newVersion": "1.2.3" },
10
+ * "steps": [
11
+ * {
12
+ * "name": "create",
13
+ * "tool": "asc_versions_create",
14
+ * "input": { "appId": "${vars.appId}", "platform": "IOS", "versionString": "${vars.newVersion}" },
15
+ * "if": "${vars.dryRun}", // optional truthy gate
16
+ * "continueOnError": false, // default false — abort run on error
17
+ * "saveAs": "newVersion" // optional alias for the step result
18
+ * }
19
+ * ]
20
+ * }
21
+ *
22
+ * Template syntax in `input`:
23
+ * "${vars.foo}" → vars.foo (whole-string match returns the original type)
24
+ * "prefix-${vars.foo}-x" → string interpolation
25
+ * "${steps.stepName.data.id}" → dotted path into a prior step's result
26
+ */
27
+ function getPath(obj, path) {
28
+ const parts = path.split(".");
29
+ let cur = obj;
30
+ for (const p of parts) {
31
+ if (cur == null)
32
+ return undefined;
33
+ cur = cur[p];
34
+ }
35
+ return cur;
36
+ }
37
+ function resolveValue(value, ctx) {
38
+ if (value == null)
39
+ return value;
40
+ if (typeof value === "string") {
41
+ // Whole-string template: return the raw resolved value (preserves type)
42
+ const whole = value.match(/^\$\{([^}]+)\}$/);
43
+ if (whole)
44
+ return getPath(ctx, whole[1]);
45
+ // Interpolation
46
+ return value.replace(/\$\{([^}]+)\}/g, (_m, p1) => {
47
+ const v = getPath(ctx, p1);
48
+ return v == null ? "" : typeof v === "string" ? v : JSON.stringify(v);
49
+ });
50
+ }
51
+ if (Array.isArray(value))
52
+ return value.map((v) => resolveValue(v, ctx));
53
+ if (typeof value === "object") {
54
+ const out = {};
55
+ for (const [k, v] of Object.entries(value)) {
56
+ out[k] = resolveValue(v, ctx);
57
+ }
58
+ return out;
59
+ }
60
+ return value;
61
+ }
62
+ function isTruthy(value) {
63
+ if (value == null)
64
+ return false;
65
+ if (typeof value === "boolean")
66
+ return value;
67
+ if (typeof value === "string")
68
+ return value.length > 0 && value.toLowerCase() !== "false";
69
+ if (typeof value === "number")
70
+ return value !== 0;
71
+ return true;
72
+ }
73
+ const StepSchema = z.object({
74
+ name: z.string(),
75
+ tool: z.string(),
76
+ input: z.record(z.string(), z.unknown()).optional(),
77
+ if: z.unknown().optional(),
78
+ continueOnError: z.boolean().optional(),
79
+ saveAs: z.string().optional(),
80
+ });
81
+ const WorkflowSchema = z.object({
82
+ name: z.string().optional(),
83
+ vars: z.record(z.string(), z.unknown()).optional(),
84
+ steps: z.array(StepSchema).min(1),
85
+ });
86
+ export function runnerTools(client) {
87
+ return [
88
+ {
89
+ name: "asc_workflow_run",
90
+ description: "Run a declarative workflow JSON file. Steps reference other asc_* tools; values support `${vars.x}` and `${steps.stepName.path}` templates. Set dryRun=true to validate + return per-step planned input without executing writes.",
91
+ inputSchema: z.object({
92
+ workflowPath: z.string().optional().describe("Absolute path to a workflow JSON file"),
93
+ workflow: z.record(z.string(), z.unknown()).optional().describe("Inline workflow object (alternative to workflowPath)"),
94
+ vars: z.record(z.string(), z.unknown()).optional().describe("Override / supplement workflow.vars"),
95
+ dryRun: z.boolean().default(false).describe("Propagates dryRun=true to every step's input"),
96
+ }),
97
+ handler: async ({ workflowPath, workflow, vars, dryRun }) => {
98
+ let raw;
99
+ if (workflowPath)
100
+ raw = JSON.parse(readFileSync(workflowPath, "utf8"));
101
+ else if (workflow)
102
+ raw = workflow;
103
+ else
104
+ throw new Error("Provide workflowPath or workflow");
105
+ const wf = WorkflowSchema.parse(raw);
106
+ const tools = allTools(client);
107
+ const toolMap = new Map(tools.map((t) => [t.name, t]));
108
+ const ctx = {
109
+ vars: { ...(wf.vars ?? {}), ...(vars ?? {}) },
110
+ steps: {},
111
+ };
112
+ const log = [];
113
+ for (const step of wf.steps) {
114
+ if (step.if !== undefined) {
115
+ const cond = resolveValue(step.if, ctx);
116
+ if (!isTruthy(cond)) {
117
+ log.push({ step: step.name, tool: step.tool, status: "skipped" });
118
+ continue;
119
+ }
120
+ }
121
+ const tool = toolMap.get(step.tool);
122
+ if (!tool) {
123
+ const err = `Unknown tool: ${step.tool}`;
124
+ log.push({ step: step.name, tool: step.tool, status: "error", error: err });
125
+ if (!step.continueOnError)
126
+ throw new Error(err);
127
+ continue;
128
+ }
129
+ let resolvedInput = (resolveValue(step.input ?? {}, ctx) ?? {});
130
+ if (dryRun && !("dryRun" in resolvedInput)) {
131
+ resolvedInput = { ...resolvedInput, dryRun: true };
132
+ }
133
+ try {
134
+ const parsed = tool.inputSchema.parse(resolvedInput);
135
+ const result = await tool.handler(parsed);
136
+ ctx.steps[step.saveAs ?? step.name] = result;
137
+ log.push({ step: step.name, tool: step.tool, status: "ran", input: resolvedInput, result });
138
+ }
139
+ catch (err) {
140
+ const msg = err.message;
141
+ log.push({ step: step.name, tool: step.tool, status: "error", input: resolvedInput, error: msg });
142
+ if (!step.continueOnError)
143
+ throw new Error(`Step "${step.name}" failed: ${msg}`);
144
+ }
145
+ }
146
+ return { name: wf.name, executed: log.filter((l) => l.status === "ran").length, log };
147
+ },
148
+ },
149
+ {
150
+ name: "asc_workflow_validate",
151
+ description: "Validate a workflow file's structure (does not execute).",
152
+ inputSchema: z.object({
153
+ workflowPath: z.string().optional(),
154
+ workflow: z.record(z.string(), z.unknown()).optional(),
155
+ }),
156
+ handler: async ({ workflowPath, workflow }) => {
157
+ const raw = workflowPath ? JSON.parse(readFileSync(workflowPath, "utf8")) : workflow;
158
+ if (!raw)
159
+ throw new Error("Provide workflowPath or workflow");
160
+ const wf = WorkflowSchema.parse(raw);
161
+ const tools = allTools(client);
162
+ const known = new Set(tools.map((t) => t.name));
163
+ const unknown = wf.steps.filter((s) => !known.has(s.tool)).map((s) => s.tool);
164
+ return {
165
+ name: wf.name,
166
+ stepCount: wf.steps.length,
167
+ unknownTools: unknown,
168
+ valid: unknown.length === 0,
169
+ };
170
+ },
171
+ },
172
+ ];
173
+ }
174
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/tools/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AscClient } from "../client.js";
2
+ import type { ToolDef } from "./types.js";
3
+ export declare function screenshotsTools(client: AscClient): ToolDef[];