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,228 @@
1
+ import { z } from "zod";
2
+ import { patchBody, postBody, singleRel, maybeSend } from "../lib/jsonapi-write.js";
3
+ import { uploadAsset, uploadScreenshotFolder, SCREENSHOT_DISPLAY_TYPES } from "../lib/upload.js";
4
+ export function screenshotsTools(client) {
5
+ return [
6
+ {
7
+ name: "asc_screenshots_list_sets",
8
+ description: "List screenshot sets for a version localization (one set per display type per locale).",
9
+ inputSchema: z.object({
10
+ localizationId: z.string().describe("App Store Version Localization id"),
11
+ limit: z.number().int().min(1).max(200).optional(),
12
+ }),
13
+ handler: async ({ localizationId, limit }) => client.request(`/appStoreVersionLocalizations/${localizationId}/appScreenshotSets`, { query: { limit: limit ?? 50 } }),
14
+ },
15
+ {
16
+ name: "asc_screenshots_get_set",
17
+ description: "Get one screenshot set by id.",
18
+ inputSchema: z.object({
19
+ setId: z.string(),
20
+ include: z.array(z.string()).optional().describe("e.g. appScreenshots"),
21
+ }),
22
+ handler: async ({ setId, include }) => client.request(`/appScreenshotSets/${setId}`, { query: { include } }),
23
+ },
24
+ {
25
+ name: "asc_screenshots_list_assets",
26
+ description: "List screenshots in a set.",
27
+ inputSchema: z.object({
28
+ setId: z.string(),
29
+ limit: z.number().int().min(1).max(200).optional(),
30
+ }),
31
+ handler: async ({ setId, limit }) => client.request(`/appScreenshotSets/${setId}/appScreenshots`, {
32
+ query: { limit: limit ?? 50 },
33
+ }),
34
+ },
35
+ {
36
+ name: "asc_screenshots_get_asset",
37
+ description: "Get one screenshot asset by id (incl. image URLs).",
38
+ inputSchema: z.object({ assetId: z.string() }),
39
+ handler: async ({ assetId }) => client.request(`/appScreenshots/${assetId}`),
40
+ },
41
+ {
42
+ name: "asc_previews_list_sets",
43
+ description: "List app preview (video) sets for a version localization.",
44
+ inputSchema: z.object({
45
+ localizationId: z.string(),
46
+ limit: z.number().int().min(1).max(200).optional(),
47
+ }),
48
+ handler: async ({ localizationId, limit }) => client.request(`/appStoreVersionLocalizations/${localizationId}/appPreviewSets`, { query: { limit: limit ?? 50 } }),
49
+ },
50
+ {
51
+ name: "asc_previews_get_set",
52
+ description: "Get one app preview set by id.",
53
+ inputSchema: z.object({
54
+ setId: z.string(),
55
+ include: z.array(z.string()).optional().describe("e.g. appPreviews"),
56
+ }),
57
+ handler: async ({ setId, include }) => client.request(`/appPreviewSets/${setId}`, { query: { include } }),
58
+ },
59
+ {
60
+ name: "asc_previews_list_assets",
61
+ description: "List previews in a set.",
62
+ inputSchema: z.object({
63
+ setId: z.string(),
64
+ limit: z.number().int().min(1).max(200).optional(),
65
+ }),
66
+ handler: async ({ setId, limit }) => client.request(`/appPreviewSets/${setId}/appPreviews`, {
67
+ query: { limit: limit ?? 50 },
68
+ }),
69
+ },
70
+ {
71
+ name: "asc_previews_get_asset",
72
+ description: "Get one preview asset by id.",
73
+ inputSchema: z.object({ assetId: z.string() }),
74
+ handler: async ({ assetId }) => client.request(`/appPreviews/${assetId}`),
75
+ },
76
+ // ---- WRITES: Phase 6 (sets, single upload, folder upload, reorder, delete) ----
77
+ {
78
+ name: "asc_screenshots_create_set",
79
+ description: "Create a screenshot set for a display type on a version localization.",
80
+ inputSchema: z.object({
81
+ localizationId: z.string(),
82
+ displayType: z.enum(SCREENSHOT_DISPLAY_TYPES),
83
+ dryRun: z.boolean().optional(),
84
+ }),
85
+ handler: async ({ localizationId, displayType, dryRun }) => {
86
+ const body = postBody("appScreenshotSets", { screenshotDisplayType: displayType }, { appStoreVersionLocalization: singleRel("appStoreVersionLocalizations", localizationId) });
87
+ return maybeSend(client, dryRun, "POST", `/appScreenshotSets`, body);
88
+ },
89
+ },
90
+ {
91
+ name: "asc_screenshots_delete_set",
92
+ description: "Delete a screenshot set (and all its assets).",
93
+ inputSchema: z.object({
94
+ setId: z.string(),
95
+ dryRun: z.boolean().optional(),
96
+ }),
97
+ handler: async ({ setId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/appScreenshotSets/${setId}`),
98
+ },
99
+ {
100
+ name: "asc_screenshots_upload_one",
101
+ description: "Upload a single screenshot into a set: reserves the asset, uploads bytes, commits with MD5 checksum.",
102
+ inputSchema: z.object({
103
+ setId: z.string(),
104
+ filePath: z.string().describe("Absolute path to the image file"),
105
+ fileName: z.string().optional().describe("Override file name reported to ASC"),
106
+ }),
107
+ handler: async ({ setId, filePath, fileName }) => uploadAsset(client, {
108
+ assetType: "appScreenshots",
109
+ setType: "appScreenshotSets",
110
+ setId,
111
+ filePath,
112
+ fileName,
113
+ }),
114
+ },
115
+ {
116
+ name: "asc_screenshots_upload_folder",
117
+ description: "Walk a folder organized as `<displayType>/<locale>/*.{png,jpg}` and upload everything to the version. Creates missing sets. Supports dryRun.",
118
+ inputSchema: z.object({
119
+ versionId: z.string(),
120
+ folder: z.string().describe("Absolute path to the screenshots root"),
121
+ dryRun: z.boolean().optional(),
122
+ }),
123
+ handler: async ({ versionId, folder, dryRun }) => uploadScreenshotFolder(client, { versionId, folder, dryRun }),
124
+ },
125
+ {
126
+ name: "asc_screenshots_reorder_set",
127
+ description: "Reorder screenshots in a set. Pass the asset ids in the desired order.",
128
+ inputSchema: z.object({
129
+ setId: z.string(),
130
+ assetIds: z.array(z.string()).min(1),
131
+ dryRun: z.boolean().optional(),
132
+ }),
133
+ handler: async ({ setId, assetIds, dryRun }) => {
134
+ const body = { data: assetIds.map((id) => ({ type: "appScreenshots", id })) };
135
+ return maybeSend(client, dryRun, "PATCH", `/appScreenshotSets/${setId}/relationships/appScreenshots`, body);
136
+ },
137
+ },
138
+ {
139
+ name: "asc_screenshots_delete_asset",
140
+ description: "Delete a screenshot asset.",
141
+ inputSchema: z.object({
142
+ assetId: z.string(),
143
+ dryRun: z.boolean().optional(),
144
+ }),
145
+ handler: async ({ assetId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/appScreenshots/${assetId}`),
146
+ },
147
+ // App Previews (videos)
148
+ {
149
+ name: "asc_previews_create_set",
150
+ description: "Create a preview (video) set on a version localization.",
151
+ inputSchema: z.object({
152
+ localizationId: z.string(),
153
+ previewType: z.string().describe("e.g. IPHONE_69, IPAD_PRO_3GEN_129"),
154
+ dryRun: z.boolean().optional(),
155
+ }),
156
+ handler: async ({ localizationId, previewType, dryRun }) => {
157
+ const body = postBody("appPreviewSets", { previewType }, { appStoreVersionLocalization: singleRel("appStoreVersionLocalizations", localizationId) });
158
+ return maybeSend(client, dryRun, "POST", `/appPreviewSets`, body);
159
+ },
160
+ },
161
+ {
162
+ name: "asc_previews_delete_set",
163
+ description: "Delete a preview set.",
164
+ inputSchema: z.object({
165
+ setId: z.string(),
166
+ dryRun: z.boolean().optional(),
167
+ }),
168
+ handler: async ({ setId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/appPreviewSets/${setId}`),
169
+ },
170
+ {
171
+ name: "asc_previews_upload_one",
172
+ description: "Upload a single app preview video into a preview set.",
173
+ inputSchema: z.object({
174
+ setId: z.string(),
175
+ filePath: z.string(),
176
+ fileName: z.string().optional(),
177
+ }),
178
+ handler: async ({ setId, filePath, fileName }) => uploadAsset(client, {
179
+ assetType: "appPreviews",
180
+ setType: "appPreviewSets",
181
+ setId,
182
+ filePath,
183
+ fileName,
184
+ }),
185
+ },
186
+ {
187
+ name: "asc_previews_reorder_set",
188
+ description: "Reorder previews in a set.",
189
+ inputSchema: z.object({
190
+ setId: z.string(),
191
+ assetIds: z.array(z.string()).min(1),
192
+ dryRun: z.boolean().optional(),
193
+ }),
194
+ handler: async ({ setId, assetIds, dryRun }) => {
195
+ const body = { data: assetIds.map((id) => ({ type: "appPreviews", id })) };
196
+ return maybeSend(client, dryRun, "PATCH", `/appPreviewSets/${setId}/relationships/appPreviews`, body);
197
+ },
198
+ },
199
+ {
200
+ name: "asc_previews_delete_asset",
201
+ description: "Delete a preview asset.",
202
+ inputSchema: z.object({
203
+ assetId: z.string(),
204
+ dryRun: z.boolean().optional(),
205
+ }),
206
+ handler: async ({ assetId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/appPreviews/${assetId}`),
207
+ },
208
+ {
209
+ name: "asc_previews_update_metadata",
210
+ description: "Update preview metadata (mimeType, previewFrameTimeCode).",
211
+ inputSchema: z.object({
212
+ assetId: z.string(),
213
+ attributes: z
214
+ .object({
215
+ mimeType: z.string().optional(),
216
+ previewFrameTimeCode: z.string().optional().describe("HH:MM:SS:FF"),
217
+ })
218
+ .refine((a) => Object.keys(a).length > 0),
219
+ dryRun: z.boolean().optional(),
220
+ }),
221
+ handler: async ({ assetId, attributes, dryRun }) => {
222
+ const body = patchBody("appPreviews", assetId, attributes);
223
+ return maybeSend(client, dryRun, "PATCH", `/appPreviews/${assetId}`, body);
224
+ },
225
+ },
226
+ ];
227
+ }
228
+ //# sourceMappingURL=screenshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshots.js","sourceRoot":"","sources":["../../src/tools/screenshots.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 testflightTools(client: AscClient): ToolDef[];
@@ -0,0 +1,360 @@
1
+ import { z } from "zod";
2
+ import { DEFAULT_FIELDS } from "../lib/projections.js";
3
+ import { patchBody, postBody, singleRel, maybeSend } from "../lib/jsonapi-write.js";
4
+ import { APP_STORE_LOCALES } from "../lib/locales.js";
5
+ const BETA_APP_LOC_FIELDS = ["description", "feedbackEmail", "marketingUrl", "tvOsPrivacyPolicy", "privacyPolicyUrl"];
6
+ export function testflightTools(client) {
7
+ return [
8
+ // ---- READS ----
9
+ {
10
+ name: "asc_testflight_list_groups",
11
+ description: "List Beta Groups, optionally scoped to one app.",
12
+ inputSchema: z.object({
13
+ appId: z.string().optional(),
14
+ isInternal: z.boolean().optional(),
15
+ limit: z.number().int().min(1).max(200).optional(),
16
+ }),
17
+ handler: async ({ appId, isInternal, limit }) => client.request("/betaGroups", {
18
+ query: {
19
+ "filter[app]": appId,
20
+ "filter[isInternalGroup]": isInternal !== undefined ? String(isInternal) : undefined,
21
+ limit: limit ?? 50,
22
+ "fields[betaGroups]": DEFAULT_FIELDS.betaGroups,
23
+ },
24
+ }),
25
+ },
26
+ {
27
+ name: "asc_testflight_get_group",
28
+ description: "Get one Beta Group by id.",
29
+ inputSchema: z.object({
30
+ groupId: z.string(),
31
+ include: z.array(z.string()).optional(),
32
+ }),
33
+ handler: async ({ groupId, include }) => client.request(`/betaGroups/${groupId}`, { query: { include } }),
34
+ },
35
+ {
36
+ name: "asc_testflight_list_testers",
37
+ description: "List Beta Testers, optionally scoped to a group, app, or filtered by email.",
38
+ inputSchema: z.object({
39
+ groupId: z.string().optional(),
40
+ appId: z.string().optional(),
41
+ email: z.string().optional(),
42
+ limit: z.number().int().min(1).max(200).optional(),
43
+ }),
44
+ handler: async ({ groupId, appId, email, limit }) => {
45
+ const path = groupId ? `/betaGroups/${groupId}/betaTesters` : "/betaTesters";
46
+ return client.request(path, {
47
+ query: {
48
+ "filter[apps]": appId,
49
+ "filter[email]": email,
50
+ limit: limit ?? 100,
51
+ "fields[betaTesters]": DEFAULT_FIELDS.betaTesters,
52
+ },
53
+ });
54
+ },
55
+ },
56
+ {
57
+ name: "asc_testflight_get_tester",
58
+ description: "Get one Beta Tester by id.",
59
+ inputSchema: z.object({
60
+ testerId: z.string(),
61
+ include: z.array(z.string()).optional(),
62
+ }),
63
+ handler: async ({ testerId, include }) => client.request(`/betaTesters/${testerId}`, { query: { include } }),
64
+ },
65
+ {
66
+ name: "asc_testflight_list_app_localizations",
67
+ description: "List TestFlight beta app localizations.",
68
+ inputSchema: z.object({
69
+ appId: z.string(),
70
+ limit: z.number().int().min(1).max(200).optional(),
71
+ }),
72
+ handler: async ({ appId, limit }) => client.request(`/apps/${appId}/betaAppLocalizations`, { query: { limit: limit ?? 50 } }),
73
+ },
74
+ {
75
+ name: "asc_testflight_get_app_localization",
76
+ description: "Get one TestFlight beta app localization by id.",
77
+ inputSchema: z.object({ localizationId: z.string() }),
78
+ handler: async ({ localizationId }) => client.request(`/betaAppLocalizations/${localizationId}`),
79
+ },
80
+ {
81
+ name: "asc_testflight_get_beta_review_detail",
82
+ description: "Get Beta App Review details for an app.",
83
+ inputSchema: z.object({ appId: z.string() }),
84
+ handler: async ({ appId }) => client.request(`/apps/${appId}/betaAppReviewDetail`),
85
+ },
86
+ {
87
+ name: "asc_testflight_get_beta_license_agreement",
88
+ description: "Get the TestFlight beta license agreement for an app.",
89
+ inputSchema: z.object({ appId: z.string() }),
90
+ handler: async ({ appId }) => client.request(`/apps/${appId}/betaLicenseAgreement`),
91
+ },
92
+ // NOTE: ASC does not allow GET on the feedback submission collections — only GET by id and DELETE.
93
+ // Feedback ids must be obtained from the App Store Connect UI or a webhook/notification flow.
94
+ {
95
+ name: "asc_testflight_get_feedback_screenshot",
96
+ description: "Get one beta feedback screenshot submission by id. (ASC does not support listing — id must be known from the UI.)",
97
+ inputSchema: z.object({
98
+ feedbackId: z.string(),
99
+ include: z.array(z.string()).optional(),
100
+ }),
101
+ handler: async ({ feedbackId, include }) => client.request(`/betaFeedbackScreenshotSubmissions/${feedbackId}`, { query: { include } }),
102
+ },
103
+ {
104
+ name: "asc_testflight_get_feedback_crash",
105
+ description: "Get one beta feedback crash submission by id. (ASC does not support listing — id must be known from the UI.)",
106
+ inputSchema: z.object({
107
+ feedbackId: z.string(),
108
+ include: z.array(z.string()).optional(),
109
+ }),
110
+ handler: async ({ feedbackId, include }) => client.request(`/betaFeedbackCrashSubmissions/${feedbackId}`, { query: { include } }),
111
+ },
112
+ {
113
+ name: "asc_testflight_delete_feedback_screenshot",
114
+ description: "Delete a beta feedback screenshot submission.",
115
+ inputSchema: z.object({
116
+ feedbackId: z.string(),
117
+ dryRun: z.boolean().optional(),
118
+ }),
119
+ handler: async ({ feedbackId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/betaFeedbackScreenshotSubmissions/${feedbackId}`),
120
+ },
121
+ {
122
+ name: "asc_testflight_delete_feedback_crash",
123
+ description: "Delete a beta feedback crash submission.",
124
+ inputSchema: z.object({
125
+ feedbackId: z.string(),
126
+ dryRun: z.boolean().optional(),
127
+ }),
128
+ handler: async ({ feedbackId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/betaFeedbackCrashSubmissions/${feedbackId}`),
129
+ },
130
+ // ---- WRITES: Phase 2 (beta app localizations) ----
131
+ {
132
+ name: "asc_testflight_update_app_localization",
133
+ description: "Update a single field on a TestFlight beta app localization.",
134
+ inputSchema: z.object({
135
+ localizationId: z.string(),
136
+ field: z.enum(BETA_APP_LOC_FIELDS),
137
+ value: z.string().nullable(),
138
+ dryRun: z.boolean().optional(),
139
+ }),
140
+ handler: async ({ localizationId, field, value, dryRun }) => {
141
+ const body = patchBody("betaAppLocalizations", localizationId, { [field]: value });
142
+ return maybeSend(client, dryRun, "PATCH", `/betaAppLocalizations/${localizationId}`, body);
143
+ },
144
+ },
145
+ {
146
+ name: "asc_testflight_create_app_localization",
147
+ description: "Add a new locale to TestFlight beta app metadata.",
148
+ inputSchema: z.object({
149
+ appId: z.string(),
150
+ locale: z.enum(APP_STORE_LOCALES),
151
+ attributes: z.object({
152
+ description: z.string().nullable().optional(),
153
+ feedbackEmail: z.string().nullable().optional(),
154
+ marketingUrl: z.string().nullable().optional(),
155
+ privacyPolicyUrl: z.string().nullable().optional(),
156
+ tvOsPrivacyPolicy: z.string().nullable().optional(),
157
+ }),
158
+ dryRun: z.boolean().optional(),
159
+ }),
160
+ handler: async ({ appId, locale, attributes, dryRun }) => {
161
+ const body = postBody("betaAppLocalizations", { locale, ...attributes }, { app: singleRel("apps", appId) });
162
+ return maybeSend(client, dryRun, "POST", `/betaAppLocalizations`, body);
163
+ },
164
+ },
165
+ {
166
+ name: "asc_testflight_delete_app_localization",
167
+ description: "Delete a TestFlight beta app localization.",
168
+ inputSchema: z.object({
169
+ localizationId: z.string(),
170
+ dryRun: z.boolean().optional(),
171
+ }),
172
+ handler: async ({ localizationId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/betaAppLocalizations/${localizationId}`),
173
+ },
174
+ // ---- WRITES: Phase 4 (group + tester + submission management) ----
175
+ {
176
+ name: "asc_testflight_create_group",
177
+ description: "Create a Beta Group (external by default; set isInternalGroup=true for internal).",
178
+ inputSchema: z.object({
179
+ appId: z.string(),
180
+ name: z.string(),
181
+ publicLinkEnabled: z.boolean().optional(),
182
+ publicLinkLimitEnabled: z.boolean().optional(),
183
+ publicLinkLimit: z.number().int().optional(),
184
+ isInternalGroup: z.boolean().optional(),
185
+ feedbackEnabled: z.boolean().optional(),
186
+ dryRun: z.boolean().optional(),
187
+ }),
188
+ handler: async ({ appId, name, dryRun, ...attrs }) => {
189
+ const body = postBody("betaGroups", { name, ...attrs }, { app: singleRel("apps", appId) });
190
+ return maybeSend(client, dryRun, "POST", `/betaGroups`, body);
191
+ },
192
+ },
193
+ {
194
+ name: "asc_testflight_update_group",
195
+ description: "Update Beta Group attributes (name, public link settings, feedbackEnabled).",
196
+ inputSchema: z.object({
197
+ groupId: z.string(),
198
+ attributes: z
199
+ .object({
200
+ name: z.string().optional(),
201
+ publicLinkEnabled: z.boolean().optional(),
202
+ publicLinkLimitEnabled: z.boolean().optional(),
203
+ publicLinkLimit: z.number().int().nullable().optional(),
204
+ feedbackEnabled: z.boolean().optional(),
205
+ })
206
+ .refine((a) => Object.keys(a).length > 0, "Provide at least one field"),
207
+ dryRun: z.boolean().optional(),
208
+ }),
209
+ handler: async ({ groupId, attributes, dryRun }) => {
210
+ const body = patchBody("betaGroups", groupId, attributes);
211
+ return maybeSend(client, dryRun, "PATCH", `/betaGroups/${groupId}`, body);
212
+ },
213
+ },
214
+ {
215
+ name: "asc_testflight_delete_group",
216
+ description: "Delete a Beta Group.",
217
+ inputSchema: z.object({
218
+ groupId: z.string(),
219
+ dryRun: z.boolean().optional(),
220
+ }),
221
+ handler: async ({ groupId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/betaGroups/${groupId}`),
222
+ },
223
+ {
224
+ name: "asc_testflight_regenerate_public_link",
225
+ description: "Regenerate the public TestFlight invite link for a group (invalidates the old URL).",
226
+ inputSchema: z.object({
227
+ groupId: z.string(),
228
+ dryRun: z.boolean().optional(),
229
+ }),
230
+ handler: async ({ groupId, dryRun }) => {
231
+ const body = patchBody("betaGroups", groupId, { publicLinkEnabled: true });
232
+ return maybeSend(client, dryRun, "PATCH", `/betaGroups/${groupId}`, body);
233
+ },
234
+ },
235
+ {
236
+ name: "asc_testflight_add_tester_to_group",
237
+ description: "Create a new beta tester and add them to a group.",
238
+ inputSchema: z.object({
239
+ groupId: z.string(),
240
+ email: z.string().email(),
241
+ firstName: z.string().optional(),
242
+ lastName: z.string().optional(),
243
+ dryRun: z.boolean().optional(),
244
+ }),
245
+ handler: async ({ groupId, email, firstName, lastName, dryRun }) => {
246
+ const body = postBody("betaTesters", { email, firstName, lastName }, { betaGroups: { data: [{ type: "betaGroups", id: groupId }] } });
247
+ return maybeSend(client, dryRun, "POST", `/betaTesters`, body);
248
+ },
249
+ },
250
+ {
251
+ name: "asc_testflight_add_testers_bulk",
252
+ description: "Add multiple existing testers to a group by tester id (relationships endpoint).",
253
+ inputSchema: z.object({
254
+ groupId: z.string(),
255
+ testerIds: z.array(z.string()).min(1).max(200),
256
+ dryRun: z.boolean().optional(),
257
+ }),
258
+ handler: async ({ groupId, testerIds, dryRun }) => {
259
+ const body = { data: testerIds.map((id) => ({ type: "betaTesters", id })) };
260
+ return maybeSend(client, dryRun, "POST", `/betaGroups/${groupId}/relationships/betaTesters`, body);
261
+ },
262
+ },
263
+ {
264
+ name: "asc_testflight_remove_testers_from_group",
265
+ description: "Remove testers from a group (does not delete them from the app).",
266
+ inputSchema: z.object({
267
+ groupId: z.string(),
268
+ testerIds: z.array(z.string()).min(1).max(200),
269
+ dryRun: z.boolean().optional(),
270
+ }),
271
+ handler: async ({ groupId, testerIds, dryRun }) => {
272
+ const body = { data: testerIds.map((id) => ({ type: "betaTesters", id })) };
273
+ return maybeSend(client, dryRun, "DELETE", `/betaGroups/${groupId}/relationships/betaTesters`, body);
274
+ },
275
+ },
276
+ {
277
+ name: "asc_testflight_delete_tester",
278
+ description: "Delete a beta tester entirely (removes them from all groups + app).",
279
+ inputSchema: z.object({
280
+ testerId: z.string(),
281
+ dryRun: z.boolean().optional(),
282
+ }),
283
+ handler: async ({ testerId, dryRun }) => maybeSend(client, dryRun, "DELETE", `/betaTesters/${testerId}`),
284
+ },
285
+ {
286
+ name: "asc_testflight_add_build_to_group",
287
+ description: "Add a build to a Beta Group (makes it available to that group's testers).",
288
+ inputSchema: z.object({
289
+ groupId: z.string(),
290
+ buildIds: z.array(z.string()).min(1),
291
+ dryRun: z.boolean().optional(),
292
+ }),
293
+ handler: async ({ groupId, buildIds, dryRun }) => {
294
+ const body = { data: buildIds.map((id) => ({ type: "builds", id })) };
295
+ return maybeSend(client, dryRun, "POST", `/betaGroups/${groupId}/relationships/builds`, body);
296
+ },
297
+ },
298
+ {
299
+ name: "asc_testflight_remove_build_from_group",
300
+ description: "Remove builds from a Beta Group.",
301
+ inputSchema: z.object({
302
+ groupId: z.string(),
303
+ buildIds: z.array(z.string()).min(1),
304
+ dryRun: z.boolean().optional(),
305
+ }),
306
+ handler: async ({ groupId, buildIds, dryRun }) => {
307
+ const body = { data: buildIds.map((id) => ({ type: "builds", id })) };
308
+ return maybeSend(client, dryRun, "DELETE", `/betaGroups/${groupId}/relationships/builds`, body);
309
+ },
310
+ },
311
+ {
312
+ name: "asc_testflight_submit_for_beta_review",
313
+ description: "Submit a build for Beta App Review (required before external testers can install).",
314
+ inputSchema: z.object({
315
+ buildId: z.string(),
316
+ dryRun: z.boolean().optional(),
317
+ }),
318
+ handler: async ({ buildId, dryRun }) => {
319
+ const body = postBody("betaAppReviewSubmissions", undefined, { build: singleRel("builds", buildId) });
320
+ return maybeSend(client, dryRun, "POST", `/betaAppReviewSubmissions`, body);
321
+ },
322
+ },
323
+ {
324
+ name: "asc_testflight_update_beta_review_detail",
325
+ description: "Update Beta App Review contact info / demo / notes for an app.",
326
+ inputSchema: z.object({
327
+ detailId: z.string().describe("betaAppReviewDetail resource id"),
328
+ attributes: z.object({
329
+ contactFirstName: z.string().optional(),
330
+ contactLastName: z.string().optional(),
331
+ contactPhone: z.string().optional(),
332
+ contactEmail: z.string().optional(),
333
+ demoAccountName: z.string().nullable().optional(),
334
+ demoAccountPassword: z.string().nullable().optional(),
335
+ demoAccountRequired: z.boolean().optional(),
336
+ notes: z.string().nullable().optional(),
337
+ }),
338
+ dryRun: z.boolean().optional(),
339
+ }),
340
+ handler: async ({ detailId, attributes, dryRun }) => {
341
+ const body = patchBody("betaAppReviewDetails", detailId, attributes);
342
+ return maybeSend(client, dryRun, "PATCH", `/betaAppReviewDetails/${detailId}`, body);
343
+ },
344
+ },
345
+ {
346
+ name: "asc_testflight_update_license_agreement",
347
+ description: "Update the TestFlight beta license agreement text for an app.",
348
+ inputSchema: z.object({
349
+ agreementId: z.string(),
350
+ agreementText: z.string(),
351
+ dryRun: z.boolean().optional(),
352
+ }),
353
+ handler: async ({ agreementId, agreementText, dryRun }) => {
354
+ const body = patchBody("betaLicenseAgreements", agreementId, { agreementText });
355
+ return maybeSend(client, dryRun, "PATCH", `/betaLicenseAgreements/${agreementId}`, body);
356
+ },
357
+ },
358
+ ];
359
+ }
360
+ //# sourceMappingURL=testflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testflight.js","sourceRoot":"","sources":["../../src/tools/testflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,CAAU,CAAC;AAE/H,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO;QACL,kBAAkB;QAClB;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,iDAAiD;YAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBAClC,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,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE;oBACL,aAAa,EAAE,KAAK;oBACpB,yBAAyB,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;oBACpF,KAAK,EAAE,KAAK,IAAI,EAAE;oBAClB,oBAAoB,EAAE,cAAc,CAAC,UAAU;iBAChD;aACF,CAAC;SACL;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,MAAM,CAAC,OAAO,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;SACnE;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6EAA6E;YAC1F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,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,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;gBAC7E,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;oBAC1B,KAAK,EAAE;wBACL,cAAc,EAAE,KAAK;wBACrB,eAAe,EAAE,KAAK;wBACtB,KAAK,EAAE,KAAK,IAAI,GAAG;wBACnB,qBAAqB,EAAE,cAAc,CAAC,WAAW;qBAClD;iBACF,CAAC,CAAC;YACL,CAAC;SACF;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,4BAA4B;YACzC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CACvC,MAAM,CAAC,OAAO,CAAC,gBAAgB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;SACrE;QACD;YACE,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,yCAAyC;YACtD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,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,KAAK,EAAE,EAAE,EAAE,CAClC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,uBAAuB,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC;SAC3F;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,WAAW,EAAE,iDAAiD;YAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CACpC,MAAM,CAAC,OAAO,CAAC,yBAAyB,cAAc,EAAE,CAAC;SAC5D;QACD;YACE,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,yCAAyC;YACtD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,sBAAsB,CAAC;SACnF;QACD;YACE,IAAI,EAAE,2CAA2C;YACjD,WAAW,EAAE,uDAAuD;YACpE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,uBAAuB,CAAC;SACpF;QACD,mGAAmG;QACnG,8FAA8F;QAC9F;YACE,IAAI,EAAE,wCAAwC;YAC9C,WAAW,EAAE,mHAAmH;YAChI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,OAAO,CAAC,sCAAsC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;SAC7F;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,WAAW,EAAE,8GAA8G;YAC3H,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,OAAO,CAAC,iCAAiC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;SACxF;QACD;YACE,IAAI,EAAE,2CAA2C;YACjD,WAAW,EAAE,+CAA+C;YAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CACxC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,sCAAsC,UAAU,EAAE,CAAC;SAC1F;QACD;YACE,IAAI,EAAE,sCAAsC;YAC5C,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CACxC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iCAAiC,UAAU,EAAE,CAAC;SACrF;QAED,qDAAqD;QACrD;YACE,IAAI,EAAE,wCAAwC;YAC9C,WAAW,EAAE,8DAA8D;YAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;gBAC1B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,sBAAsB,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7F,CAAC;SACF;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,WAAW,EAAE,mDAAmD;YAChE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACjC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;oBACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBAC7C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;iBACpD,CAAC;gBACF,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvD,MAAM,IAAI,GAAG,QAAQ,CACnB,sBAAsB,EACtB,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,EACzB,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAClC,CAAC;gBACF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;YAC1E,CAAC;SACF;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,WAAW,EAAE,4CAA4C;YACzD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;gBAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,yBAAyB,cAAc,EAAE,CAAC;SACjF;QAED,qEAAqE;QACrE;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,mFAAmF;YAChG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBACzC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBAC9C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBAC5C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBACvC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBACvC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,QAAQ,CACnB,YAAY,EACZ,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAClB,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAClC,CAAC;gBACF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;SACF;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6EAA6E;YAC1F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,UAAU,EAAE,CAAC;qBACV,MAAM,CAAC;oBACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC3B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;oBACzC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;oBAC9C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBACvD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;iBACxC,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,4BAA4B,CAAC;gBACzE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;gBACjD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC1D,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC;SACF;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CACrC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,OAAO,EAAE,CAAC;SAChE;QACD;YACE,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,qFAAqF;YAClG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC;SACF;QACD;YACE,IAAI,EAAE,oCAAoC;YAC1C,WAAW,EAAE,mDAAmD;YAChE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;gBACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC/B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBACjE,MAAM,IAAI,GAAG,QAAQ,CACnB,aAAa,EACb,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAC9B,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAChE,CAAC;gBACF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;SACF;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,iFAAiF;YAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;gBAChD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,OAAO,4BAA4B,EAAE,IAAI,CAAC,CAAC;YACrG,CAAC;SACF;QACD;YACE,IAAI,EAAE,0CAA0C;YAChD,WAAW,EAAE,kEAAkE;YAC/E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;gBAChD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,OAAO,4BAA4B,EAAE,IAAI,CAAC,CAAC;YACvG,CAAC;SACF;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,qEAAqE;YAClF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CACtC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,QAAQ,EAAE,CAAC;SAClE;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,WAAW,EAAE,2EAA2E;YACxF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC9E,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,OAAO,uBAAuB,EAAE,IAAI,CAAC,CAAC;YAChG,CAAC;SACF;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,WAAW,EAAE,kCAAkC;YAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC9E,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,OAAO,uBAAuB,EAAE,IAAI,CAAC,CAAC;YAClG,CAAC;SACF;QACD;YACE,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,oFAAoF;YACjG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,QAAQ,CACnB,0BAA0B,EAC1B,SAAS,EACT,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CACxC,CAAC;gBACF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;YAC9E,CAAC;SACF;QACD;YACE,IAAI,EAAE,0CAA0C;YAChD,WAAW,EAAE,gEAAgE;YAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;gBAChE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;oBACnB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACnC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBACjD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;oBACrD,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;oBAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;iBACxC,CAAC;gBACF,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,SAAS,CAAC,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACrE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;YACvF,CAAC;SACF;QACD;YACE,IAAI,EAAE,yCAAyC;YAC/C,WAAW,EAAE,+DAA+D;YAC5E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;gBACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;gBACxD,MAAM,IAAI,GAAG,SAAS,CAAC,uBAAuB,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBAChF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3F,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ZodTypeAny, z } from "zod";
2
+ export interface ToolDef<S extends ZodTypeAny = ZodTypeAny> {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: S;
6
+ handler: (input: z.infer<S>) => Promise<unknown>;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map