@superblocksteam/mcp-server 2.0.162 → 2.0.163-next.1

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 (59) hide show
  1. package/README.md +17 -2
  2. package/dist/setup/setup-config.js +1 -1
  3. package/dist/setup/setup-config.js.map +1 -1
  4. package/dist/target/resolve-base-url-target.d.ts +1 -0
  5. package/dist/target/resolve-base-url-target.d.ts.map +1 -1
  6. package/dist/target/resolve-base-url-target.js +1 -0
  7. package/dist/target/resolve-base-url-target.js.map +1 -1
  8. package/dist/tools/app-databases.d.ts +390 -0
  9. package/dist/tools/app-databases.d.ts.map +1 -0
  10. package/dist/tools/app-databases.js +405 -0
  11. package/dist/tools/app-databases.js.map +1 -0
  12. package/dist/tools/delete-integration.d.ts.map +1 -1
  13. package/dist/tools/delete-integration.js +1 -1
  14. package/dist/tools/delete-integration.js.map +1 -1
  15. package/dist/tools/get-app-database-pool-provisioning-run.d.ts +3 -0
  16. package/dist/tools/get-app-database-pool-provisioning-run.d.ts.map +1 -0
  17. package/dist/tools/get-app-database-pool-provisioning-run.js +45 -0
  18. package/dist/tools/get-app-database-pool-provisioning-run.js.map +1 -0
  19. package/dist/tools/get-app-databases-overview.d.ts +3 -0
  20. package/dist/tools/get-app-databases-overview.d.ts.map +1 -0
  21. package/dist/tools/get-app-databases-overview.js +58 -0
  22. package/dist/tools/get-app-databases-overview.js.map +1 -0
  23. package/dist/tools/get-application-database-compatibility.d.ts +3 -0
  24. package/dist/tools/get-application-database-compatibility.d.ts.map +1 -0
  25. package/dist/tools/get-application-database-compatibility.js +50 -0
  26. package/dist/tools/get-application-database-compatibility.js.map +1 -0
  27. package/dist/tools/get-application-summary.d.ts.map +1 -1
  28. package/dist/tools/get-application-summary.js +14 -1
  29. package/dist/tools/get-application-summary.js.map +1 -1
  30. package/dist/tools/index.d.ts.map +1 -1
  31. package/dist/tools/index.js +12 -2
  32. package/dist/tools/index.js.map +1 -1
  33. package/dist/tools/list-app-database-pools.d.ts +3 -0
  34. package/dist/tools/list-app-database-pools.d.ts.map +1 -0
  35. package/dist/tools/list-app-database-pools.js +44 -0
  36. package/dist/tools/list-app-database-pools.js.map +1 -0
  37. package/dist/tools/list-app-databases.d.ts +3 -0
  38. package/dist/tools/list-app-databases.d.ts.map +1 -0
  39. package/dist/tools/list-app-databases.js +101 -0
  40. package/dist/tools/list-app-databases.js.map +1 -0
  41. package/dist/tools/list-applications.d.ts.map +1 -1
  42. package/dist/tools/list-applications.js +45 -13
  43. package/dist/tools/list-applications.js.map +1 -1
  44. package/dist/tools/list-cve-exceptions.d.ts +3 -0
  45. package/dist/tools/list-cve-exceptions.d.ts.map +1 -0
  46. package/dist/tools/list-cve-exceptions.js +42 -0
  47. package/dist/tools/list-cve-exceptions.js.map +1 -0
  48. package/dist/tools/list-integrations.d.ts.map +1 -1
  49. package/dist/tools/list-integrations.js +6 -1
  50. package/dist/tools/list-integrations.js.map +1 -1
  51. package/dist/tools/schemas.d.ts +13 -1
  52. package/dist/tools/schemas.d.ts.map +1 -1
  53. package/dist/tools/schemas.js +73 -15
  54. package/dist/tools/schemas.js.map +1 -1
  55. package/package.json +6 -6
  56. package/dist/tools/update-integration.d.ts +0 -3
  57. package/dist/tools/update-integration.d.ts.map +0 -1
  58. package/dist/tools/update-integration.js +0 -40
  59. package/dist/tools/update-integration.js.map +0 -1
@@ -0,0 +1,405 @@
1
+ /**
2
+ * Shared wire schemas and projections for the App Databases admin tools.
3
+ *
4
+ * The schemas mirror the server's `AdminConfig` and `PhysicalPoolSummary`
5
+ * responses (`packages/server/src/service/databaseLifecycle/adminConfig.ts`
6
+ * and `@superblocksteam/shared` database-lifecycle types). Only the fields the
7
+ * tools read are declared; zod strips the rest, so an added server field is
8
+ * ignored rather than breaking a projection, while a missing or malformed one
9
+ * fails with a message that names the API and the offending path instead of a
10
+ * TypeError from deep inside a `.map()`.
11
+ *
12
+ * Projections rename to snake_case for MCP clients and drop provider
13
+ * diagnostics, which are verbose Terraform output that the admin page shows
14
+ * on demand and that would otherwise dominate a tool result.
15
+ */
16
+ import { z } from "zod";
17
+ import { callServerApi, ServerApiError } from "./server-api.js";
18
+ export const APP_DATABASES_ADMIN_CONFIG_PATH = "/api/v1/database-lifecycle/admin/config";
19
+ export const APP_DATABASES_PHYSICAL_POOLS_PATH = "/api/v1/database-lifecycle/admin/physical-pools";
20
+ export const APP_DATABASES_POOL_PROVISIONING_PATH = "/api/v1/database-lifecycle/admin/physical-pool-provisioning";
21
+ export const APP_DATABASES_APPLICATIONS_PATH = "/api/v1/database-lifecycle/applications";
22
+ // These are synchronous reads of org-scoped tables. Anything slower than this
23
+ // is a wedged route, not a big estate, and the agent is better off with a
24
+ // clear timeout than a call that never returns.
25
+ export const APP_DATABASES_READ_TIMEOUT_MS = 30_000;
26
+ export const APP_DATABASES_DISABLED_MESSAGE = "App databases are not enabled for this organization.";
27
+ export function classifyAppDatabasesFailure(error) {
28
+ if (error instanceof ServerApiError) {
29
+ if (error.status === 400 &&
30
+ error.message.trim() === APP_DATABASES_DISABLED_MESSAGE) {
31
+ return { availability: "disabled", error: null };
32
+ }
33
+ if (error.status === 404) {
34
+ return { availability: "unsupported", error: null };
35
+ }
36
+ }
37
+ return {
38
+ availability: "error",
39
+ error: error instanceof Error ? error.message : String(error),
40
+ };
41
+ }
42
+ // Mirrors `AppDatabaseCompatibility` from @superblocksteam/shared. The
43
+ // verdict alone is what a summary wants; the full report adds the per-tag
44
+ // breakdown.
45
+ export const appDatabaseCompatibilitySchema = z.object({
46
+ hasAppDatabase: z.boolean(),
47
+ needsAttention: z.boolean(),
48
+ overallState: z.string(),
49
+ });
50
+ export const appDatabaseCompatibilityReportSchema = appDatabaseCompatibilitySchema.extend({
51
+ tags: z.array(z.object({
52
+ availableModes: z.array(z.string()),
53
+ missingOperations: z.array(z.string()),
54
+ profileKey: z.string(),
55
+ requiredOperations: z.array(z.string()),
56
+ supportState: z.string(),
57
+ })),
58
+ });
59
+ /**
60
+ * The server rolls `needsAttention` up from data tag support alone and leaves
61
+ * it to callers to check `hasAppDatabase`, which is what the UI banner does.
62
+ * An app without a database has nothing to fix, whatever its tags support, so
63
+ * `needs_attention` is quiet for it; otherwise every app on a data tag without
64
+ * App Database capacity would read as needing attention.
65
+ *
66
+ * `overall_state` is kept as reported. It says whether the app's data tags can
67
+ * serve an App Database at all, which is what the server's create gate checks,
68
+ * so for an app without one it answers "could a database be added here?".
69
+ */
70
+ export function projectAppDatabaseCompatibility(compatibility) {
71
+ return {
72
+ has_database: compatibility.hasAppDatabase,
73
+ overall_state: compatibility.overallState,
74
+ needs_attention: compatibility.hasAppDatabase && compatibility.needsAttention,
75
+ };
76
+ }
77
+ export function projectAppDatabaseCompatibilityReport(report) {
78
+ return {
79
+ ...projectAppDatabaseCompatibility(report),
80
+ // For an app without a database this says which tags could serve one,
81
+ // which is what an agent needs before adding one.
82
+ data_tags: report.tags.map((tag) => ({
83
+ data_tag: tag.profileKey,
84
+ support_state: tag.supportState,
85
+ available_modes: tag.availableModes,
86
+ required_operations: tag.requiredOperations,
87
+ missing_operations: tag.missingOperations,
88
+ })),
89
+ };
90
+ }
91
+ /**
92
+ * Compatibility verdict for one application, or the reason none could be had.
93
+ * Never throws: the caller already has the application and should keep it.
94
+ */
95
+ export async function fetchAppDatabaseStatus(options) {
96
+ try {
97
+ const compatibility = await callServerApi({
98
+ baseUrl: options.baseUrl,
99
+ token: options.token,
100
+ method: "GET",
101
+ path: `${APP_DATABASES_APPLICATIONS_PATH}/${options.applicationId}/compatibility`,
102
+ timeoutMs: APP_DATABASES_READ_TIMEOUT_MS,
103
+ });
104
+ return {
105
+ availability: "available",
106
+ error: null,
107
+ status: projectAppDatabaseCompatibility(parseServerResponse(appDatabaseCompatibilitySchema, compatibility, "App Databases compatibility API")),
108
+ };
109
+ }
110
+ catch (error) {
111
+ return { ...classifyAppDatabasesFailure(error), status: null };
112
+ }
113
+ }
114
+ // The server caps one summary request at this many application IDs.
115
+ const APP_DATABASE_SUMMARY_MAX_APPLICATIONS = 200;
116
+ // How many summary requests may be in flight at once. Each one holds a server
117
+ // transaction while it authorizes its IDs, so a large organization must not
118
+ // turn one tool call into dozens of simultaneous transactions.
119
+ export const APP_DATABASE_PRESENCE_MAX_CONCURRENT_BATCHES = 4;
120
+ const applicationDatabaseSummarySchema = z.object({
121
+ applications: z.record(z.string(), z.object({ hasDatabase: z.boolean() })),
122
+ });
123
+ /**
124
+ * Which of the given applications currently hold an App Database, or the
125
+ * reason that could not be answered. Never throws: the caller already has the
126
+ * application list and should keep it.
127
+ *
128
+ * The summary route is a presence check over bindings, so asking for the
129
+ * whole set of IDs in a batch costs the same as one; it is how the homepage
130
+ * decorates its own list. Batches beyond the server's cap overlap, but only a
131
+ * few at a time: each one is a server transaction, and the has_app_database
132
+ * filter sends every application in the organization.
133
+ */
134
+ export async function fetchAppDatabasePresence(options) {
135
+ const ids = [...new Set(options.applicationIds)];
136
+ if (ids.length === 0)
137
+ return { availability: "not_checked", error: null };
138
+ const batches = [];
139
+ for (let start = 0; start < ids.length; start += APP_DATABASE_SUMMARY_MAX_APPLICATIONS) {
140
+ batches.push(ids.slice(start, start + APP_DATABASE_SUMMARY_MAX_APPLICATIONS));
141
+ }
142
+ try {
143
+ const byApplicationId = new Map();
144
+ for (let start = 0; start < batches.length; start += APP_DATABASE_PRESENCE_MAX_CONCURRENT_BATCHES) {
145
+ const window = batches.slice(start, start + APP_DATABASE_PRESENCE_MAX_CONCURRENT_BATCHES);
146
+ const responses = await Promise.all(window.map((batch) => callServerApi({
147
+ baseUrl: options.baseUrl,
148
+ token: options.token,
149
+ method: "GET",
150
+ path: `${APP_DATABASES_APPLICATIONS_PATH}/summary`,
151
+ query: { applicationId: batch },
152
+ timeoutMs: APP_DATABASES_READ_TIMEOUT_MS,
153
+ })));
154
+ responses.forEach((raw, index) => {
155
+ const summary = parseServerResponse(applicationDatabaseSummarySchema, raw, "App Databases summary API");
156
+ for (const id of window[index] ?? []) {
157
+ byApplicationId.set(id, summary.applications[id]?.hasDatabase ?? false);
158
+ }
159
+ });
160
+ }
161
+ return { availability: "available", byApplicationId, error: null };
162
+ }
163
+ catch (error) {
164
+ return classifyAppDatabasesFailure(error);
165
+ }
166
+ }
167
+ export function parseServerResponse(schema, data, api) {
168
+ const result = schema.safeParse(data);
169
+ if (!result.success) {
170
+ const detail = result.error.issues
171
+ .slice(0, 3)
172
+ .map((issue) => issue.path.length > 0
173
+ ? `${issue.path.map(String).join(".")}: ${issue.message}`
174
+ : issue.message)
175
+ .join("; ");
176
+ throw new Error(`Unexpected response from ${api}: ${detail}`);
177
+ }
178
+ return result.data;
179
+ }
180
+ const nullableString = z.string().nullable();
181
+ const adminConfigBindingSchema = z.object({
182
+ id: z.string(),
183
+ applicationId: z.string(),
184
+ applicationCreator: z.object({ email: z.string() }).nullable(),
185
+ applicationName: nullableString,
186
+ connection: z.object({
187
+ authMode: nullableString,
188
+ database: nullableString,
189
+ host: nullableString,
190
+ port: z.number().nullable(),
191
+ region: nullableString,
192
+ }),
193
+ createdAt: z.string(),
194
+ engine: nullableString,
195
+ integrationId: nullableString,
196
+ profile: nullableString,
197
+ logicalName: z.string(),
198
+ instanceId: nullableString,
199
+ lifecycleState: z.string(),
200
+ migrationState: z.string(),
201
+ migrationsRequired: z.boolean(),
202
+ lastError: z
203
+ .object({
204
+ code: z.string(),
205
+ message: z.string(),
206
+ operation: nullableString,
207
+ })
208
+ .nullable(),
209
+ lastRequestOperation: nullableString,
210
+ lastActivityAt: z.string(),
211
+ lastMigrationAt: nullableString,
212
+ provisionedAt: nullableString,
213
+ retiredAt: nullableString,
214
+ retireInFlight: z.boolean(),
215
+ orphaned: z.boolean(),
216
+ });
217
+ const adminConfigProfileSchema = z.object({
218
+ profile: z.string(),
219
+ isUnserved: z.boolean(),
220
+ isContested: z.boolean(),
221
+ requestedEngines: z.array(z.string()),
222
+ summary: z.object({
223
+ apps: z.number(),
224
+ failed: z.number(),
225
+ instances: z.number(),
226
+ }),
227
+ });
228
+ const adminConfigInstanceSchema = z.object({
229
+ agentName: nullableString,
230
+ id: z.string(),
231
+ profiles: z.array(z.string()),
232
+ host: z.string(),
233
+ port: z.number().nullable(),
234
+ engine: nullableString,
235
+ capacity: z.object({ used: z.number(), max: z.number().nullable() }),
236
+ lifecycleSummary: z.object({
237
+ ready: z.number(),
238
+ failed: z.number(),
239
+ inFlight: z.number(),
240
+ }),
241
+ region: nullableString,
242
+ status: nullableString,
243
+ awsConsoleUrl: z.string().optional(),
244
+ createdAt: z.string().optional(),
245
+ updatedAt: z.string().optional(),
246
+ });
247
+ const provisionablePoolSchema = z.object({
248
+ agentName: z.string(),
249
+ dataTags: z.array(z.string()),
250
+ engine: z.string(),
251
+ });
252
+ const adminConfigPhysicalPoolSchema = provisionablePoolSchema.extend({
253
+ instanceIds: z.array(z.string()),
254
+ provisioningId: z.string().optional(),
255
+ status: z.string(),
256
+ });
257
+ export const adminConfigSchema = z.object({
258
+ provisionableDataTags: z.array(z.string()),
259
+ provisionablePools: z.array(provisionablePoolSchema),
260
+ physicalPools: z.array(adminConfigPhysicalPoolSchema),
261
+ profiles: z.array(adminConfigProfileSchema),
262
+ instances: z.array(adminConfigInstanceSchema),
263
+ bindings: z.array(adminConfigBindingSchema),
264
+ limit: z.number(),
265
+ offset: z.number(),
266
+ total: z.number(),
267
+ });
268
+ export function projectAppDatabase(binding) {
269
+ return {
270
+ id: binding.id,
271
+ application: {
272
+ id: binding.applicationId,
273
+ name: binding.applicationName,
274
+ creator_email: binding.applicationCreator?.email ?? null,
275
+ orphaned: binding.orphaned,
276
+ },
277
+ data_tag: binding.profile,
278
+ engine: binding.engine,
279
+ logical_name: binding.logicalName,
280
+ lifecycle_state: binding.lifecycleState,
281
+ migration_state: binding.migrationState,
282
+ migrations_required: binding.migrationsRequired,
283
+ instance_id: binding.instanceId,
284
+ integration_id: binding.integrationId,
285
+ connection: {
286
+ auth_mode: binding.connection.authMode,
287
+ database: binding.connection.database,
288
+ host: binding.connection.host,
289
+ port: binding.connection.port,
290
+ region: binding.connection.region,
291
+ },
292
+ last_error: binding.lastError
293
+ ? {
294
+ code: binding.lastError.code,
295
+ message: binding.lastError.message,
296
+ operation: binding.lastError.operation,
297
+ }
298
+ : null,
299
+ last_request_operation: binding.lastRequestOperation,
300
+ created_at: binding.createdAt,
301
+ provisioned_at: binding.provisionedAt,
302
+ last_migration_at: binding.lastMigrationAt,
303
+ last_activity_at: binding.lastActivityAt,
304
+ retired_at: binding.retiredAt,
305
+ retire_in_flight: binding.retireInFlight,
306
+ };
307
+ }
308
+ export function projectDataTag(profile) {
309
+ return {
310
+ data_tag: profile.profile,
311
+ applications: profile.summary.apps,
312
+ failed_databases: profile.summary.failed,
313
+ instances: profile.summary.instances,
314
+ requested_engines: profile.requestedEngines,
315
+ is_unserved: profile.isUnserved,
316
+ is_contested: profile.isContested,
317
+ };
318
+ }
319
+ export function projectInstance(instance) {
320
+ return {
321
+ id: instance.id,
322
+ agent_name: instance.agentName,
323
+ engine: instance.engine,
324
+ host: instance.host,
325
+ port: instance.port,
326
+ region: instance.region,
327
+ status: instance.status,
328
+ data_tags: instance.profiles,
329
+ capacity: { used: instance.capacity.used, max: instance.capacity.max },
330
+ databases: {
331
+ ready: instance.lifecycleSummary.ready,
332
+ failed: instance.lifecycleSummary.failed,
333
+ in_flight: instance.lifecycleSummary.inFlight,
334
+ },
335
+ aws_console_url: instance.awsConsoleUrl ?? null,
336
+ created_at: instance.createdAt ?? null,
337
+ updated_at: instance.updatedAt ?? null,
338
+ };
339
+ }
340
+ export function projectProvisionablePool(pool) {
341
+ return {
342
+ agent_name: pool.agentName,
343
+ engine: pool.engine,
344
+ data_tags: pool.dataTags,
345
+ };
346
+ }
347
+ export function projectPhysicalPool(pool) {
348
+ return {
349
+ ...projectProvisionablePool(pool),
350
+ instance_ids: pool.instanceIds,
351
+ provisioning_id: pool.provisioningId ?? null,
352
+ status: pool.status,
353
+ };
354
+ }
355
+ // Mirrors `PhysicalPoolProvisioningState` from @superblocksteam/shared.
356
+ export const physicalPoolProvisioningStateSchema = z.object({
357
+ completedAt: z.string().optional(),
358
+ error: z.object({ code: z.string(), message: z.string() }).optional(),
359
+ physicalDatabaseInstanceId: z.string().optional(),
360
+ provisioningId: z.string().optional(),
361
+ startedAt: z.string().optional(),
362
+ startedBy: z.object({ displayName: z.string() }).optional(),
363
+ status: z.string(),
364
+ });
365
+ export const physicalPoolSummariesSchema = z.array(z.object({
366
+ agentName: z.string(),
367
+ engine: z.string(),
368
+ instances: z.array(z.object({
369
+ capacityMax: z.number(),
370
+ capacityUsed: z.number(),
371
+ endpoint: z.string(),
372
+ id: z.string(),
373
+ region: z.string(),
374
+ status: z.string(),
375
+ })),
376
+ provisioning: physicalPoolProvisioningStateSchema,
377
+ }));
378
+ export function projectPoolProvisioningRun(run) {
379
+ return {
380
+ status: run.status,
381
+ provisioning_id: run.provisioningId ?? null,
382
+ physical_database_instance_id: run.physicalDatabaseInstanceId ?? null,
383
+ started_at: run.startedAt ?? null,
384
+ started_by: run.startedBy?.displayName ?? null,
385
+ completed_at: run.completedAt ?? null,
386
+ error: run.error
387
+ ? { code: run.error.code, message: run.error.message }
388
+ : null,
389
+ };
390
+ }
391
+ export function projectPhysicalPoolSummary(pool) {
392
+ return {
393
+ agent_name: pool.agentName,
394
+ engine: pool.engine,
395
+ instances: pool.instances.map((instance) => ({
396
+ id: instance.id,
397
+ endpoint: instance.endpoint,
398
+ region: instance.region,
399
+ status: instance.status,
400
+ capacity: { used: instance.capacityUsed, max: instance.capacityMax },
401
+ })),
402
+ provisioning: projectPoolProvisioningRun(pool.provisioning),
403
+ };
404
+ }
405
+ //# sourceMappingURL=app-databases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-databases.js","sourceRoot":"","sources":["../../src/tools/app-databases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,yCAAyC,CAAC;AAC5C,MAAM,CAAC,MAAM,iCAAiC,GAC5C,iDAAiD,CAAC;AACpD,MAAM,CAAC,MAAM,oCAAoC,GAC/C,6DAA6D,CAAC;AAChE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,yCAAyC,CAAC;AAE5C,8EAA8E;AAC9E,0EAA0E;AAC1E,gDAAgD;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAwBpD,MAAM,CAAC,MAAM,8BAA8B,GACzC,sDAAsD,CAAC;AAQzD,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IACE,KAAK,CAAC,MAAM,KAAK,GAAG;YACpB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,8BAA8B,EACvD,CAAC;YACD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY,EAAE,OAAO;QACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC9D,CAAC;AACJ,CAAC;AAYD,uEAAuE;AACvE,0EAA0E;AAC1E,aAAa;AACb,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oCAAoC,GAC/C,8BAA8B,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACnC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC,CACH;CACF,CAAC,CAAC;AAQL;;;;;;;;;;GAUG;AACH,MAAM,UAAU,+BAA+B,CAC7C,aAA6D;IAE7D,OAAO;QACL,YAAY,EAAE,aAAa,CAAC,cAAc;QAC1C,aAAa,EAAE,aAAa,CAAC,YAAY;QACzC,eAAe,EACb,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,MAA4D;IAE5D,OAAO;QACL,GAAG,+BAA+B,CAAC,MAAM,CAAC;QAC1C,sEAAsE;QACtE,kDAAkD;QAClD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAC,UAAU;YACxB,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,eAAe,EAAE,GAAG,CAAC,cAAc;YACnC,mBAAmB,EAAE,GAAG,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,GAAG,CAAC,iBAAiB;SAC1C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAI5C;IAIC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,+BAA+B,IAAI,OAAO,CAAC,aAAa,gBAAgB;YACjF,SAAS,EAAE,6BAA6B;SACzC,CAAC,CAAC;QACH,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,+BAA+B,CACrC,mBAAmB,CACjB,8BAA8B,EAC9B,aAAa,EACb,iCAAiC,CAClC,CACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,2BAA2B,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAElD,8EAA8E;AAC9E,4EAA4E;AAC5E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,CAAC;AAE9D,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;CAC3E,CAAC,CAAC;AAWH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAI9C;IACC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAE1E,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,GAAG,CAAC,MAAM,EAClB,KAAK,IAAI,qCAAqC,EAC9C,CAAC;QACD,OAAO,CAAC,IAAI,CACV,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,qCAAqC,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;QACnD,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,OAAO,CAAC,MAAM,EACtB,KAAK,IAAI,4CAA4C,EACrD,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAC1B,KAAK,EACL,KAAK,GAAG,4CAA4C,CACrD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,aAAa,CAAC;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,GAAG,+BAA+B,UAAU;gBAClD,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;gBAC/B,SAAS,EAAE,6BAA6B;aACzC,CAAC,CACH,CACF,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,mBAAmB,CACjC,gCAAgC,EAChC,GAAG,EACH,2BAA2B,CAC5B,CAAC;gBACF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBACrC,eAAe,CAAC,GAAG,CACjB,EAAE,EACF,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,WAAW,IAAI,KAAK,CAC/C,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAoB,EACpB,IAAa,EACb,GAAW;IAEX,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE;YACzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAClB;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE7C,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9D,eAAe,EAAE,cAAc;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,cAAc;KACvB,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,cAAc;IACtB,aAAa,EAAE,cAAc;IAC7B,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,cAAc;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC/B,SAAS,EAAE,CAAC;SACT,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,SAAS,EAAE,cAAc;KAC1B,CAAC;SACD,QAAQ,EAAE;IACb,oBAAoB,EAAE,cAAc;IACpC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,eAAe,EAAE,cAAc;IAC/B,aAAa,EAAE,cAAc;IAC7B,SAAS,EAAE,cAAc;IACzB,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,cAAc;IACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpE,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB,CAAC;IACF,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACnE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACpD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAwC;IACzE,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,WAAW,EAAE;YACX,EAAE,EAAE,OAAO,CAAC,aAAa;YACzB,IAAI,EAAE,OAAO,CAAC,eAAe;YAC7B,aAAa,EAAE,OAAO,CAAC,kBAAkB,EAAE,KAAK,IAAI,IAAI;YACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,WAAW;QACjC,eAAe,EAAE,OAAO,CAAC,cAAc;QACvC,eAAe,EAAE,OAAO,CAAC,cAAc;QACvC,mBAAmB,EAAE,OAAO,CAAC,kBAAkB;QAC/C,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,cAAc,EAAE,OAAO,CAAC,aAAa;QACrC,UAAU,EAAE;YACV,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;YACtC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;YACrC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;YAC7B,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;YAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;SAClC;QACD,UAAU,EAAE,OAAO,CAAC,SAAS;YAC3B,CAAC,CAAC;gBACE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;gBAC5B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS;aACvC;YACH,CAAC,CAAC,IAAI;QACR,sBAAsB,EAAE,OAAO,CAAC,oBAAoB;QACpD,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,cAAc,EAAE,OAAO,CAAC,aAAa;QACrC,iBAAiB,EAAE,OAAO,CAAC,eAAe;QAC1C,gBAAgB,EAAE,OAAO,CAAC,cAAc;QACxC,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,gBAAgB,EAAE,OAAO,CAAC,cAAc;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAwC;IACrE,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,OAAO;QACzB,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAClC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;QAC3C,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,YAAY,EAAE,OAAO,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA0C;IACxE,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,QAAQ;QAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;QACtE,SAAS,EAAE;YACT,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,KAAK;YACtC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;YACxC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ;SAC9C;QACD,eAAe,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;QAC/C,UAAU,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;QACtC,UAAU,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAA+C;IAE/C,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAA0C;IAE1C,OAAO;QACL,GAAG,wBAAwB,CAAC,IAAI,CAAC;QACjC,YAAY,EAAE,IAAI,CAAC,WAAW;QAC9B,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrE,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAChD,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,KAAK,CAChB,CAAC,CAAC,MAAM,CAAC;QACP,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CACH;IACD,YAAY,EAAE,mCAAmC;CAClD,CAAC,CACH,CAAC;AAIF,MAAM,UAAU,0BAA0B,CAAC,GAAkC;IAC3E,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,eAAe,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC3C,6BAA6B,EAAE,GAAG,CAAC,0BAA0B,IAAI,IAAI;QACrE,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;QACjC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI;QAC9C,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QACrC,KAAK,EAAE,GAAG,CAAC,KAAK;YACd,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;YACtD,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAyB;IAClE,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE;SACrE,CAAC,CAAC;QACH,YAAY,EAAE,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete-integration.d.ts","sourceRoot":"","sources":["../../src/tools/delete-integration.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD,eAAO,MAAM,iBAAiB,EAAE,cA0B/B,CAAC"}
1
+ {"version":3,"file":"delete-integration.d.ts","sourceRoot":"","sources":["../../src/tools/delete-integration.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD,eAAO,MAAM,iBAAiB,EAAE,cA2B/B,CAAC"}
@@ -13,7 +13,7 @@ const deleteIntegrationInputSchema = z
13
13
  export const deleteIntegration = {
14
14
  name: "delete_integration",
15
15
  title: "Delete Integration",
16
- description: "Delete an integration by ID.",
16
+ description: "Delete an integration by ID. Integrations that back an App Database (managed_by = database_lifecycle in list_integrations) cannot be deleted here; retire the App Database instead.",
17
17
  inputSchema: schemas.deleteIntegrationToolInputSchema,
18
18
  annotations: {
19
19
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"delete-integration.js","sourceRoot":"","sources":["../../src/tools/delete-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,4BAA4B,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,OAAO,CAAC,gCAAgC;IACrD,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtE,OAAO;YACL,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"delete-integration.js","sourceRoot":"","sources":["../../src/tools/delete-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,4BAA4B,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,qLAAqL;IACvL,WAAW,EAAE,OAAO,CAAC,gCAAgC;IACrD,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtE,OAAO;YACL,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "./registry.js";
2
+ export declare const getAppDatabasePoolProvisioningRun: ToolDefinition;
3
+ //# sourceMappingURL=get-app-database-pool-provisioning-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-database-pool-provisioning-run.d.ts","sourceRoot":"","sources":["../../src/tools/get-app-database-pool-provisioning-run.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,iCAAiC,EAAE,cAuC/C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
4
+ import { APP_DATABASES_POOL_PROVISIONING_PATH, APP_DATABASES_READ_TIMEOUT_MS, parseServerResponse, physicalPoolProvisioningStateSchema, projectPoolProvisioningRun, } from "./app-databases.js";
5
+ import * as schemas from "./schemas.js";
6
+ import { callServerApi } from "./server-api.js";
7
+ import { parseToolInput } from "./validation.js";
8
+ const getAppDatabasePoolProvisioningRunInputSchema = z
9
+ .object({
10
+ base_url: z.url(),
11
+ provisioning_id: z.uuid(),
12
+ })
13
+ .strict();
14
+ export const getAppDatabasePoolProvisioningRun = {
15
+ name: "get_app_database_pool_provisioning_run",
16
+ title: "Get App Database Pool Provisioning Run",
17
+ description: "Get one App Database pool provisioning run by the provisioning_id reported by list_app_database_pools or get_app_databases_overview: its status (provisioning, active, or failed), who started it and when, the physical instance it registered once active, and the error if it failed. Requires the app_databases:manage permission (Admin or Owner by default) and App Databases to be enabled for the organization.",
18
+ inputSchema: schemas.getAppDatabasePoolProvisioningRunToolInputSchema,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ destructiveHint: false,
22
+ idempotentHint: true,
23
+ openWorldHint: true,
24
+ },
25
+ audience: "customer",
26
+ async handler(args) {
27
+ const input = parseToolInput(getAppDatabasePoolProvisioningRunInputSchema, args);
28
+ const baseUrl = normalizeBaseUrl(input.base_url);
29
+ const auth = await resolveAuthForOrigin(baseUrl);
30
+ const run = parseServerResponse(physicalPoolProvisioningStateSchema, await callServerApi({
31
+ baseUrl,
32
+ token: auth.token,
33
+ method: "GET",
34
+ path: `${APP_DATABASES_POOL_PROVISIONING_PATH}/${input.provisioning_id}`,
35
+ timeoutMs: APP_DATABASES_READ_TIMEOUT_MS,
36
+ }), "App Databases pool provisioning API");
37
+ return {
38
+ run: projectPoolProvisioningRun(run),
39
+ auth_source: auth.source,
40
+ base_url: baseUrl,
41
+ environment: detectEnvironment(baseUrl),
42
+ };
43
+ },
44
+ };
45
+ //# sourceMappingURL=get-app-database-pool-provisioning-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-database-pool-provisioning-run.js","sourceRoot":"","sources":["../../src/tools/get-app-database-pool-provisioning-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,mBAAmB,EACnB,mCAAmC,EACnC,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,4CAA4C,GAAG,CAAC;KACnD,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE;IACjB,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE;CAC1B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iCAAiC,GAAmB;IAC/D,IAAI,EAAE,wCAAwC;IAC9C,KAAK,EAAE,wCAAwC;IAC/C,WAAW,EACT,yZAAyZ;IAC3Z,WAAW,EAAE,OAAO,CAAC,gDAAgD;IACrE,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAC1B,4CAA4C,EAC5C,IAAI,CACL,CAAC;QACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAC7B,mCAAmC,EACnC,MAAM,aAAa,CAAC;YAClB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,oCAAoC,IAAI,KAAK,CAAC,eAAe,EAAE;YACxE,SAAS,EAAE,6BAA6B;SACzC,CAAC,EACF,qCAAqC,CACtC,CAAC;QAEF,OAAO;YACL,GAAG,EAAE,0BAA0B,CAAC,GAAG,CAAC;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "./registry.js";
2
+ export declare const getAppDatabasesOverview: ToolDefinition;
3
+ //# sourceMappingURL=get-app-databases-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-databases-overview.d.ts","sourceRoot":"","sources":["../../src/tools/get-app-databases-overview.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD,eAAO,MAAM,uBAAuB,EAAE,cAoDrC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
4
+ import { APP_DATABASES_ADMIN_CONFIG_PATH, APP_DATABASES_READ_TIMEOUT_MS, adminConfigSchema, parseServerResponse, projectDataTag, projectInstance, projectPhysicalPool, projectProvisionablePool, } from "./app-databases.js";
5
+ import * as schemas from "./schemas.js";
6
+ import { callServerApi } from "./server-api.js";
7
+ import { parseToolInput } from "./validation.js";
8
+ const getAppDatabasesOverviewInputSchema = z
9
+ .object({
10
+ base_url: z.url(),
11
+ })
12
+ .strict();
13
+ export const getAppDatabasesOverview = {
14
+ name: "get_app_databases_overview",
15
+ title: "Get App Databases Overview",
16
+ description: "Org-wide App Databases summary: the total number of database records (database_record_count, which includes retired databases; use list_app_databases to enumerate live ones), per data tag how many applications and instances it has and whether a lifecycle agent serves it, every physical database instance with its capacity and per-state database counts, the physical pools each agent advertises, and which pools and data tags can be provisioned right now. Use list_app_databases for the individual databases. Requires the app_databases:manage permission (Admin or Owner by default) and App Databases to be enabled for the organization.",
17
+ inputSchema: schemas.getAppDatabasesOverviewToolInputSchema,
18
+ annotations: {
19
+ readOnlyHint: true,
20
+ destructiveHint: false,
21
+ idempotentHint: true,
22
+ openWorldHint: true,
23
+ },
24
+ audience: "customer",
25
+ async handler(args) {
26
+ const input = parseToolInput(getAppDatabasesOverviewInputSchema, args);
27
+ const baseUrl = normalizeBaseUrl(input.base_url);
28
+ const auth = await resolveAuthForOrigin(baseUrl);
29
+ // The rollups cover the whole organization whatever the page size, so
30
+ // fetch the smallest page and leave the rows to list_app_databases.
31
+ const config = parseServerResponse(adminConfigSchema, await callServerApi({
32
+ baseUrl,
33
+ token: auth.token,
34
+ method: "GET",
35
+ path: APP_DATABASES_ADMIN_CONFIG_PATH,
36
+ query: { limit: 1, offset: 0 },
37
+ timeoutMs: APP_DATABASES_READ_TIMEOUT_MS,
38
+ }), "App Databases admin API");
39
+ return {
40
+ // The server's total is every binding record it holds. Retired
41
+ // databases keep their record (it is what carries `retired_at`), so this
42
+ // counts them too and is not the number of live databases. The server
43
+ // only resolves retirement per returned page, so a live count would need
44
+ // a server-side change; until then list_app_databases is the way to
45
+ // enumerate live rows.
46
+ database_record_count: config.total,
47
+ data_tags: config.profiles.map(projectDataTag),
48
+ instances: config.instances.map(projectInstance),
49
+ physical_pools: config.physicalPools.map(projectPhysicalPool),
50
+ provisionable_pools: config.provisionablePools.map(projectProvisionablePool),
51
+ provisionable_data_tags: config.provisionableDataTags,
52
+ auth_source: auth.source,
53
+ base_url: baseUrl,
54
+ environment: detectEnvironment(baseUrl),
55
+ };
56
+ },
57
+ };
58
+ //# sourceMappingURL=get-app-databases-overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-databases-overview.js","sourceRoot":"","sources":["../../src/tools/get-app-databases-overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,kCAAkC,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE;CAClB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,IAAI,EAAE,4BAA4B;IAClC,KAAK,EAAE,4BAA4B;IACnC,WAAW,EACT,6nBAA6nB;IAC/nB,WAAW,EAAE,OAAO,CAAC,sCAAsC;IAC3D,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,MAAM,GAAG,mBAAmB,CAChC,iBAAiB,EACjB,MAAM,aAAa,CAAC;YAClB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,+BAA+B;YACrC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YAC9B,SAAS,EAAE,6BAA6B;SACzC,CAAC,EACF,yBAAyB,CAC1B,CAAC;QAEF,OAAO;YACL,+DAA+D;YAC/D,yEAAyE;YACzE,sEAAsE;YACtE,yEAAyE;YACzE,oEAAoE;YACpE,uBAAuB;YACvB,qBAAqB,EAAE,MAAM,CAAC,KAAK;YACnC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;YAC9C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;YAChD,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC7D,mBAAmB,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAChD,wBAAwB,CACzB;YACD,uBAAuB,EAAE,MAAM,CAAC,qBAAqB;YACrD,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "./registry.js";
2
+ export declare const getApplicationDatabaseCompatibility: ToolDefinition;
3
+ //# sourceMappingURL=get-application-database-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-application-database-compatibility.d.ts","sourceRoot":"","sources":["../../src/tools/get-application-database-compatibility.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAUpD,eAAO,MAAM,mCAAmC,EAAE,cA+CjD,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { resolveAppTarget, } from "../target/resolve-app-target.js";
4
+ import { APP_DATABASES_APPLICATIONS_PATH, APP_DATABASES_READ_TIMEOUT_MS, appDatabaseCompatibilityReportSchema, parseServerResponse, projectAppDatabaseCompatibilityReport, } from "./app-databases.js";
5
+ import * as schemas from "./schemas.js";
6
+ import { callServerApi } from "./server-api.js";
7
+ import { parseToolInput } from "./validation.js";
8
+ const getApplicationDatabaseCompatibilityInputSchema = z.union([
9
+ z.object({ app_url: z.url() }).strict(),
10
+ z.object({ application_id: z.uuid(), base_url: z.url() }).strict(),
11
+ ]);
12
+ export const getApplicationDatabaseCompatibility = {
13
+ name: "get_application_database_compatibility",
14
+ title: "Get Application Database Compatibility",
15
+ description: "Report whether one application's App Database can be served on every data tag the application can run under: whether it declares an App Database at all (has_database), the overall state (overall_state: compatible, temporarily_unavailable, or incompatible), whether someone has to change the application (needs_attention), and per data tag (data_tags) which lifecycle operations no connected agent supports. For an application without an App Database, needs_attention is always false (there is nothing to fix) and overall_state says whether a database could be added: the server refuses to create one unless it is compatible, and data_tags show which tags fall short. The verdict fields match the app_database block of get_application_summary. Use it to explain why publishing or editing an application is blocked on its database. Readable by anyone who can view the application. Supports either app_url or application_id plus base_url.",
16
+ inputSchema: schemas.getApplicationDatabaseCompatibilityToolInputSchema,
17
+ annotations: {
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: true,
22
+ },
23
+ audience: "customer",
24
+ async handler(args) {
25
+ const input = parseToolInput(getApplicationDatabaseCompatibilityInputSchema, args);
26
+ const targetInput = "app_url" in input
27
+ ? { app_url: input.app_url }
28
+ : { application_id: input.application_id, base_url: input.base_url };
29
+ const target = resolveAppTarget(targetInput);
30
+ const auth = await resolveAuthForOrigin(target.baseUrl);
31
+ const report = parseServerResponse(appDatabaseCompatibilityReportSchema, await callServerApi({
32
+ baseUrl: target.baseUrl,
33
+ token: auth.token,
34
+ method: "GET",
35
+ path: `${APP_DATABASES_APPLICATIONS_PATH}/${target.applicationId}/compatibility`,
36
+ timeoutMs: APP_DATABASES_READ_TIMEOUT_MS,
37
+ }), "App Databases compatibility API");
38
+ return {
39
+ application_id: target.applicationId,
40
+ // Same verdict fields as get_application_summary's app_database block,
41
+ // plus the per-tag breakdown.
42
+ ...projectAppDatabaseCompatibilityReport(report),
43
+ auth_source: auth.source,
44
+ base_url: target.baseUrl,
45
+ environment: target.environment,
46
+ resolved_from: target.resolvedFrom,
47
+ };
48
+ },
49
+ };
50
+ //# sourceMappingURL=get-application-database-compatibility.js.map