@scalar/cli 2.1.0 → 2.5.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 (88) hide show
  1. package/README.md +28 -24
  2. package/chunks/{action-CYP4VDK3.js → action-37EV4UHW.js} +12 -35
  3. package/chunks/{action-MENXFJH3.js → action-4XI7XJR4.js} +9 -9
  4. package/chunks/{action-H5OHT2GV.js → action-5IU77OII.js} +7 -3
  5. package/chunks/{action-STIEAXOE.js → action-B3KKREWQ.js} +16 -5
  6. package/chunks/{action-BYZUBXVB.js → action-CH24QGTE.js} +8 -4
  7. package/chunks/action-F3UX5E3M.js +522 -0
  8. package/chunks/{action-GB6DM53B.js → action-FDB7NEOK.js} +21 -10
  9. package/chunks/action-FIXBOJEW.js +244 -0
  10. package/chunks/{action-DFKHSDFV.js → action-G26LSVZ7.js} +7 -3
  11. package/chunks/{action-Q5UJ32D6.js → action-H3RTILLM.js} +1 -1
  12. package/chunks/{action-GEBRPNRT.js → action-HGBBV353.js} +15 -16
  13. package/chunks/{action-5R5FDF6S.js → action-IUE4IOWO.js} +67 -22
  14. package/chunks/{action-TPBKPHNS.js → action-JZLZ7ZAD.js} +22 -22
  15. package/chunks/action-LA6KVAXQ.js +374 -0
  16. package/chunks/{action-PVDDRIM6.js → action-M7RQKBSB.js} +65 -26
  17. package/chunks/{action-F4Y6Q2VB.js → action-MSLBC2SO.js} +21 -21
  18. package/chunks/{action-BNEGJBUH.js → action-NVSZT2ZD.js} +8 -9
  19. package/chunks/{action-ANU5HGC4.js → action-OGQSTRMX.js} +17 -14
  20. package/chunks/{action-CLSD7O2R.js → action-PAGJ5PWC.js} +10 -10
  21. package/chunks/action-QE2ZQQX7.js +250 -0
  22. package/chunks/{action-HD2T6BFJ.js → action-QPUSPD5M.js} +10 -10
  23. package/chunks/{action-45OGQB2M.js → action-R7IMFHQ5.js} +17 -8
  24. package/chunks/{action-UDZUUJSI.js → action-SH4UUXPL.js} +18 -7
  25. package/chunks/action-SNLCIBQC.js +84 -0
  26. package/chunks/{action-C5VB4ITT.js → action-SQG3JAII.js} +36 -18
  27. package/chunks/action-UZQJNYK4.js +18 -0
  28. package/chunks/{action-HNKM3Q65.js → action-VC4DCVST.js} +17 -14
  29. package/chunks/{action-BMFXENMX.js → action-VTVFY2MP.js} +39 -34
  30. package/chunks/{action-TZ5KGAQT.js → action-WFWYGY7O.js} +17 -14
  31. package/chunks/{action-W5BATF4Q.js → action-XMNX5ZYT.js} +24 -24
  32. package/chunks/{agent-XGLOHXNA.js → agent-HCQRMHQ5.js} +25 -5
  33. package/chunks/asyncapi-QM76O55R.js +105 -0
  34. package/chunks/{build.action-LKOILPA6.js → build.action-P7FCIMYU.js} +22 -22
  35. package/chunks/{chunk-23I5PKZZ.js → chunk-24WAOKGG.js} +32 -5
  36. package/chunks/chunk-3L6DLIXJ.js +25530 -0
  37. package/chunks/chunk-3ZJYGGAA.js +30 -0
  38. package/chunks/{chunk-ZTVWAKNJ.js → chunk-4NHMAG6F.js} +1 -1
  39. package/chunks/{chunk-IX7LJ3AD.js → chunk-4ORL4MST.js} +2 -3
  40. package/chunks/{chunk-OAXFCOJV.js → chunk-4ZDQXWBT.js} +2 -1
  41. package/chunks/{chunk-ASMHW5AY.js → chunk-6ZMT63IV.js} +1 -1
  42. package/chunks/{chunk-P2VH7DOC.js → chunk-7AGLC7WV.js} +6 -6
  43. package/chunks/{chunk-SXYALPYK.js → chunk-AO3F5XWR.js} +498 -60
  44. package/chunks/{chunk-B6QZJWCQ.js → chunk-B2MHTD3R.js} +4 -6
  45. package/chunks/{chunk-4QS7SJTG.js → chunk-CISTON3A.js} +51 -36
  46. package/chunks/chunk-COBPBRQF.js +25 -0
  47. package/chunks/{chunk-2BSG2QHO.js → chunk-F467BYYR.js} +133 -20
  48. package/chunks/{chunk-TLFMATXR.js → chunk-GSGZHE26.js} +33 -25
  49. package/chunks/{chunk-UPUTMFD4.js → chunk-HCPN3KNF.js} +185 -13
  50. package/chunks/{chunk-P646T2WH.js → chunk-HPL3ZZ2P.js} +131 -13
  51. package/chunks/{chunk-H2WRMLYY.js → chunk-IKT5F47M.js} +3571 -7
  52. package/chunks/{chunk-AHWWJ3MD.js → chunk-K4DTP5TV.js} +1 -1
  53. package/chunks/{chunk-TQ5XC2E3.js → chunk-LFU5ZUAP.js} +77 -11
  54. package/chunks/{chunk-5BISXQX4.js → chunk-M37TP6U2.js} +11 -13
  55. package/chunks/chunk-OQKDBLOZ.js +741 -0
  56. package/chunks/chunk-P7H7GY5A.js +14 -0
  57. package/chunks/{chunk-47Y4L5IT.js → chunk-PBXZN65A.js} +1031 -481
  58. package/chunks/{chunk-HQKBZOYU.js → chunk-PT5TI77I.js} +3 -3
  59. package/chunks/chunk-Q7DOQHZN.js +404 -0
  60. package/chunks/{chunk-X4QLDBB5.js → chunk-T5HJUAWB.js} +24 -3
  61. package/chunks/{chunk-NUXPNUSS.js → chunk-UGGNHILG.js} +1 -1
  62. package/chunks/{chunk-4DGQIAJX.js → chunk-VNYE4R7N.js} +154 -14
  63. package/chunks/{chunk-KWOL7A6J.js → chunk-X5T526CE.js} +2 -2
  64. package/chunks/chunk-XCSR4RIT.js +210 -0
  65. package/chunks/{chunk-SHSHFGA7.js → chunk-Z2KMGFE6.js} +4 -6
  66. package/chunks/{create.action-FFQLBSJH.js → create.action-HDD2WUON.js} +22 -22
  67. package/chunks/{delete.action-STHQHP4F.js → delete.action-7GOZY7ID.js} +22 -22
  68. package/chunks/{delete.action-QNN3LC2F.js → delete.action-VE66JFDS.js} +22 -22
  69. package/chunks/{get.action-OTKYOP3Z.js → get.action-2745EB4N.js} +15 -16
  70. package/chunks/{list.action-KDM5RHEH.js → list.action-3VTXQJRA.js} +19 -19
  71. package/chunks/{list.action-6I5EZAVB.js → list.action-4QDCZLSZ.js} +22 -22
  72. package/chunks/{publish.action-PODTVRXS.js → publish.action-ULQLZKWU.js} +44 -36
  73. package/chunks/{update.action-KMD4ZM75.js → update.action-6QEFP7NA.js} +22 -22
  74. package/chunks/{update.action-4F6STTEQ.js → update.action-OROQSP2S.js} +22 -22
  75. package/docs.html +104 -103
  76. package/index.js +84 -68
  77. package/package.json +16 -12
  78. package/chunks/action-CCW66QJN.js +0 -72
  79. package/chunks/action-CQ56FVES.js +0 -65
  80. package/chunks/action-JOSVV6YA.js +0 -71
  81. package/chunks/action-P7LN6FGY.js +0 -13
  82. package/chunks/action-R6ZZO26F.js +0 -299
  83. package/chunks/action-TWFJNQ2R.js +0 -95
  84. package/chunks/chunk-5BPPGTUU.js +0 -463
  85. package/chunks/chunk-DOVIWNKQ.js +0 -108
  86. package/chunks/chunk-ISGLWBXZ.js +0 -4265
  87. package/chunks/chunk-T7MDADON.js +0 -17
  88. package/chunks/chunk-VTYTPSXO.js +0 -161
@@ -1,13 +1,15 @@
1
1
  import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
2
  import {
3
3
  RegistryResourceTypes,
4
- baseRegistrySchema
5
- } from "./chunk-VTYTPSXO.js";
4
+ baseRegistrySchema,
5
+ contentShaSchema
6
+ } from "./chunk-Q7DOQHZN.js";
6
7
  import {
7
8
  brandedUid,
8
9
  docVersionSchema,
9
10
  emailSchema,
10
11
  entitySchema,
12
+ external_exports,
11
13
  mintUid,
12
14
  nanoid,
13
15
  nanoidSchema,
@@ -17,10 +19,7 @@ import {
17
19
  slugSchema,
18
20
  timestampSchema,
19
21
  unixTimestamp
20
- } from "./chunk-ISGLWBXZ.js";
21
- import {
22
- external_exports
23
- } from "./chunk-H2WRMLYY.js";
22
+ } from "./chunk-IKT5F47M.js";
24
23
 
25
24
  // ../../packages/entities/dist/access-group/schema.js
26
25
  var emailDomainRegex = /^([A-Za-z0-9]+(-[A-Za-z0-9]+)*\.)+[A-Za-z]{2,}$/i;
@@ -120,7 +119,13 @@ var microsoftProfileSchema = external_exports.object({
120
119
  */
121
120
  xms_edov: external_exports.union([external_exports.boolean(), external_exports.string()]).optional()
122
121
  }).meta({ id: "microsoft-profile" });
123
- var hostingOauthResourceSchema = external_exports.enum([...RegistryResourceTypes, "sync-project", "project", "publish"]).meta({ id: "hosting-oauth-resource" });
122
+ var hostingOauthResourceSchema = external_exports.enum([
123
+ ...RegistryResourceTypes,
124
+ "sync-project",
125
+ "project",
126
+ "publish",
127
+ "namespace"
128
+ ]).meta({ id: "hosting-oauth-resource" });
124
129
  var hostingOauthStateSchema = external_exports.object({
125
130
  uid: nanoidSchema,
126
131
  resource: external_exports.object({
@@ -162,7 +167,15 @@ var samlStateSchema = external_exports.object({
162
167
  // Expiry
163
168
  expiresAt: external_exports.number()
164
169
  }).meta({ id: "saml-state" });
165
- var ssoResourceSchema = external_exports.enum([...RegistryResourceTypes, "sync-project", "project", "publish", "mcp"]).meta({ id: "sso-resource" });
170
+ var ssoResourceSchema = external_exports.enum([
171
+ ...RegistryResourceTypes,
172
+ "sync-project",
173
+ "project",
174
+ "publish",
175
+ "mcp",
176
+ /** A team's registry namespace page, rather than one record on it. */
177
+ "namespace"
178
+ ]).meta({ id: "sso-resource" });
166
179
  var relayStateSchema = external_exports.object({
167
180
  /** Uniquely identifies a relay state */
168
181
  uid: nanoidSchema.default(nanoid).meta({ default: "nanoid()" }),
@@ -190,11 +203,9 @@ var relayStateSchema = external_exports.object({
190
203
  var AuthDomains;
191
204
  (function(AuthDomains2) {
192
205
  AuthDomains2["Cli"] = "cli";
193
- AuthDomains2["Docs"] = "docs";
194
206
  AuthDomains2["Client"] = "client";
195
207
  AuthDomains2["Local"] = "local";
196
208
  AuthDomains2["Dashboard"] = "dashboard";
197
- AuthDomains2["Editor"] = "editor";
198
209
  AuthDomains2["Agent"] = "agent";
199
210
  AuthDomains2["Mcp"] = "mcp";
200
211
  })(AuthDomains || (AuthDomains = {}));
@@ -256,7 +267,19 @@ var loginPortalSchema = external_exports.object({
256
267
  // ../../packages/entities/dist/managed-schema/schema.js
257
268
  var managedSchemaVersion = entitySchema.extend({
258
269
  /** Version identifier (e.g. 0.0.1) for schema */
259
- version: docVersionSchema.default("0.0.1")
270
+ version: docVersionSchema.default("0.0.1"),
271
+ /**
272
+ * SHA-256 hex digest of the YAML content the version serves, from its
273
+ * chain head. Integrity metadata for the YAML serialization, never a
274
+ * storage key.
275
+ */
276
+ yamlSha: contentShaSchema.optional(),
277
+ /**
278
+ * SHA-256 hex digest of the JSON content the version serves, from its
279
+ * chain head. This is the blob key for both formats, matching the API
280
+ * document entity.
281
+ */
282
+ jsonSha: contentShaSchema.optional()
260
283
  }).meta({ id: "managed-schema-version" });
261
284
  var managedSchemaFormat = external_exports.enum(["json", "yaml"]).meta({ id: "managed-schema-format" });
262
285
  var managedSchema = baseRegistrySchema.extend({
@@ -264,12 +287,68 @@ var managedSchema = baseRegistrySchema.extend({
264
287
  uid: brandedUid().default(mintUid).meta({ default: "nanoid()" }),
265
288
  /** The current version served to consumers by default */
266
289
  version: docVersionSchema.default("0.0.1"),
267
- /** All schema versions */
268
- versions: managedSchemaVersion.array(),
269
290
  /** Default schema format for edit/view */
270
291
  format: managedSchemaFormat.default("json")
271
292
  }).meta({ id: "managed-schema" });
272
293
 
294
+ // ../../packages/entities/dist/repository/repository.js
295
+ var linkedRepositoryRemoteSchema = external_exports.discriminatedUnion("provider", [
296
+ external_exports.object({
297
+ provider: external_exports.literal("github"),
298
+ installationId: external_exports.number().int(),
299
+ /** GitHub's numeric repository id; stable across renames. */
300
+ id: external_exports.number().int(),
301
+ /** The `owner/repo` full name. */
302
+ name: external_exports.string().min(2),
303
+ defaultBranch: external_exports.string().default("main")
304
+ }),
305
+ external_exports.object({
306
+ provider: external_exports.literal("bitbucket"),
307
+ workspaceUuid: external_exports.string(),
308
+ workspaceSlug: external_exports.string(),
309
+ repoUuid: external_exports.string(),
310
+ repoSlug: external_exports.string(),
311
+ /** The `workspace/repo` full name. */
312
+ name: external_exports.string().min(2),
313
+ defaultBranch: external_exports.string().default("main")
314
+ })
315
+ ]).meta({ id: "linked-repository-remote" });
316
+ var linkedRepositorySchema = entitySchema.extend({
317
+ /** Own uid, branded so it cannot be confused with another entity's uid */
318
+ uid: brandedUid().default(mintUid).meta({ default: "nanoid()" }),
319
+ remote: linkedRepositoryRemoteSchema,
320
+ /**
321
+ * The single internal mirror. Null until provisioning succeeds — the link
322
+ * itself must not fail because Forgejo was briefly unreachable, so the
323
+ * mirror is re-ensured on demand rather than required up front.
324
+ */
325
+ forgejo: external_exports.object({
326
+ owner: external_exports.string(),
327
+ repo: external_exports.string(),
328
+ branch: external_exports.string().default("main")
329
+ }).nullable().default(null),
330
+ /** Email of the user who linked the repository. */
331
+ linkedBy: external_exports.string()
332
+ }).meta({ id: "linked-repository" });
333
+
334
+ // ../../packages/entities/dist/repository/webhook-event-claim.js
335
+ var webhookEventClaimRecordSchema = entitySchema.extend({
336
+ /** `<teamUid>:<projectUid>:<eventKey>`, unique across the collection. */
337
+ claimKey: external_exports.string(),
338
+ /**
339
+ * The delivery that holds the claim. A delivery whose work failed removes
340
+ * its own claim by this, so it cannot take away a claim another delivery
341
+ * has since taken over.
342
+ */
343
+ delivery: external_exports.string(),
344
+ /**
345
+ * When the claim lapses and this record may be collected, as a Date because
346
+ * MongoDB TTL indexes only act on BSON dates and silently ignore numeric
347
+ * fields.
348
+ */
349
+ expiresAt: external_exports.date()
350
+ }).meta({ id: "webhook-event-claim-record" });
351
+
273
352
  // ../../packages/entities/dist/waitlist/index.js
274
353
  var WaitlistProducts;
275
354
  (function(WaitlistProducts2) {
@@ -293,6 +372,95 @@ var waitlistRecordSchema = external_exports.object({
293
372
  })
294
373
  }).meta({ id: "waitlist-record" });
295
374
 
375
+ // ../../packages/entities/dist/webhook/schema.js
376
+ var webhookEventSchema = external_exports.enum(["sdk.build.completed"]).meta({ id: "webhook-event" });
377
+ var webhookDisabledReasonSchema = external_exports.enum(["consecutive-failures"]).meta({ id: "webhook-disabled-reason" });
378
+ var webhookSubscriptionSchema = entitySchema.extend({
379
+ uid: brandedUid().default(mintUid).meta({ default: "nanoid()" }),
380
+ teamUid: nanoidSchema,
381
+ /** Event delivered to this endpoint. */
382
+ event: webhookEventSchema.default("sdk.build.completed"),
383
+ /** Where deliveries are POSTed. Validated against the SSRF guard on write. */
384
+ url: external_exports.url(),
385
+ /** Whether deliveries are attempted. Cleared by the auto-disable path. */
386
+ enabled: external_exports.boolean().default(true),
387
+ /** Optional label describing the endpoint. */
388
+ description: external_exports.string().max(200).default(""),
389
+ /**
390
+ * Terminal failures since the last success. Reset to zero on any 2xx, and
391
+ * compared against {@link WEBHOOK_FAILURE_DISABLE_THRESHOLD}.
392
+ */
393
+ consecutiveFailures: external_exports.number().int().min(0).default(0),
394
+ /**
395
+ * Set when the platform disabled this itself, so the dashboard can explain
396
+ * why an endpoint stopped rather than showing a bare "off" toggle.
397
+ *
398
+ * Nullable as well as optional: mongobase round-trips an unset optional as
399
+ * null, and a strict parse would drop the whole document on read.
400
+ */
401
+ disabledReason: webhookDisabledReasonSchema.nullable().optional(),
402
+ /** When the platform disabled it, in unix seconds. Nullable, as above. */
403
+ disabledAt: external_exports.number().nullable().optional()
404
+ }).meta({ id: "webhook-subscription" });
405
+ var WEBHOOK_SECRET_KEY_VERSION = 1;
406
+ var WEBHOOK_SECRET_GRACE_PERIOD_SECONDS = 24 * 60 * 60;
407
+ var webhookSecretSchema = entitySchema.extend({
408
+ uid: brandedUid(),
409
+ teamUid: nanoidSchema,
410
+ /** AES-256-GCM ciphertext of the secret, hex encoded. */
411
+ ciphertext: external_exports.string(),
412
+ /** Initialisation vector for {@link ciphertext}, hex encoded. */
413
+ iv: external_exports.string(),
414
+ /**
415
+ * GCM authentication tag, hex encoded. Covers the ciphertext and the
416
+ * subscription the record belongs to, so tampering or moving a record
417
+ * between endpoints fails the decrypt.
418
+ */
419
+ tag: external_exports.string(),
420
+ /** {@link WEBHOOK_SECRET_KEY_VERSION} in force when this was written. */
421
+ keyVersion: external_exports.number().int().default(WEBHOOK_SECRET_KEY_VERSION),
422
+ /**
423
+ * The secret this one replaced, kept signing until `expiresAt` so a
424
+ * routine roll does not drop deliveries while the customer updates their
425
+ * receiver. At most one — rolling again inside the window replaces it.
426
+ *
427
+ * Nullable as well as optional: mongobase round-trips an unset optional as
428
+ * null, and a strict parse would drop the whole document on read.
429
+ */
430
+ previous: external_exports.object({
431
+ ciphertext: external_exports.string(),
432
+ iv: external_exports.string(),
433
+ tag: external_exports.string(),
434
+ keyVersion: external_exports.number().int(),
435
+ /** Unix seconds after which this secret stops signing deliveries. */
436
+ expiresAt: external_exports.number()
437
+ }).nullable().optional()
438
+ }).meta({ id: "webhook-secret" });
439
+ var webhookDeliveryStatusSchema = external_exports.enum(["pending", "succeeded", "failed"]).meta({ id: "webhook-delivery-status" });
440
+ var webhookDeliverySchema = entitySchema.extend({
441
+ uid: brandedUid().default(mintUid).meta({ default: "nanoid()" }),
442
+ teamUid: nanoidSchema,
443
+ subscriptionUid: brandedUid(),
444
+ event: webhookEventSchema,
445
+ /**
446
+ * What made this delivery unique for its subscription — the build uid for a
447
+ * build event. Pub/Sub is at-least-once, so a redelivered source message
448
+ * must land on the same delivery document rather than POSTing twice.
449
+ */
450
+ dedupeKey: external_exports.string(),
451
+ /** The exact JSON body that is sent. */
452
+ payload: external_exports.string(),
453
+ /** Attempts made so far, across Cloud Tasks retries. */
454
+ attempts: external_exports.number().int().min(0).default(0),
455
+ status: webhookDeliveryStatusSchema.default("pending"),
456
+ /** Unix seconds of the most recent attempt. Nullable for the round-trip reason above. */
457
+ lastAttemptAt: external_exports.number().nullable().optional(),
458
+ /** HTTP status the endpoint returned, when it returned one at all. */
459
+ responseStatus: external_exports.number().nullable().optional(),
460
+ /** Why the last attempt failed, in terms a customer can act on. */
461
+ errorMessage: external_exports.string().nullable().optional()
462
+ }).meta({ id: "webhook-delivery" });
463
+
296
464
  // ../../packages/entities/dist/workspace/hotkeys/constants.js
297
465
  var HOTKEY_EVENT_NAMES = [
298
466
  "closeModal",
@@ -457,9 +625,13 @@ export {
457
625
  identityProviders,
458
626
  identityProviderRecordSchema,
459
627
  loginPortalSchema,
628
+ managedSchemaVersion,
460
629
  managedSchema,
630
+ linkedRepositorySchema,
461
631
  WaitlistProducts,
462
632
  WaitlistSources,
633
+ webhookSubscriptionSchema,
634
+ webhookDeliverySchema,
463
635
  workspaceVersionSchema,
464
636
  workspaceSchema
465
637
  };
@@ -1,4 +1,10 @@
1
1
  import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ billingPlanSchema
4
+ } from "./chunk-VNYE4R7N.js";
5
+ import {
6
+ sharedProjectSchema
7
+ } from "./chunk-OQKDBLOZ.js";
2
8
  import {
3
9
  SCALAR_AGENT_KEY_HEADER,
4
10
  agentDocsProjectSchema,
@@ -15,18 +21,12 @@ import {
15
21
  mcpServerToolModes,
16
22
  mcpServerVersionSchema,
17
23
  monthlyUsageSchema
18
- } from "./chunk-TLFMATXR.js";
19
- import {
20
- billingPlanSchema
21
- } from "./chunk-4DGQIAJX.js";
24
+ } from "./chunk-GSGZHE26.js";
22
25
  import {
26
+ external_exports,
23
27
  nanoidSchema,
24
- sharedProjectSchema,
25
28
  slugSchema
26
- } from "./chunk-ISGLWBXZ.js";
27
- import {
28
- external_exports
29
- } from "./chunk-H2WRMLYY.js";
29
+ } from "./chunk-IKT5F47M.js";
30
30
 
31
31
  // ../../packages/entities/dist/api/agent/shared.js
32
32
  var agentApiErrorSchema = external_exports.object({
@@ -240,6 +240,83 @@ var analyticsRoutes = {
240
240
  }
241
241
  };
242
242
 
243
+ // ../../packages/entities/dist/api/agent/dashboard.js
244
+ var DASHBOARD_EDITOR_TOOL_NAMES = /* @__PURE__ */ new Set([
245
+ "read_file",
246
+ "list_files",
247
+ "glob",
248
+ "grep",
249
+ "write_file",
250
+ "edit_file",
251
+ "get_current_file",
252
+ "validate_openapi",
253
+ "summarize_openapi",
254
+ "validate_config"
255
+ ]);
256
+ var DASHBOARD_SDK_TOOL_NAMES = /* @__PURE__ */ new Set([
257
+ "get_sdk_config",
258
+ "set_sdk_config"
259
+ ]);
260
+ var DASHBOARD_SDK_CONTEXT_KEY = "sdk-studio";
261
+ var DASHBOARD_EDITOR_CONTEXT_KEY = "docs-editor";
262
+ var DASHBOARD_CHAT_CONTEXT_MAX_CHARS = 12e4;
263
+ var DASHBOARD_CHAT_MAX_MESSAGES = 400;
264
+ var dashboardChatSettingsSchema = external_exports.object({
265
+ mode: external_exports.enum(["fast", "medium", "max"]).default("medium")
266
+ });
267
+ var dashboardChatBodySchema = external_exports.object({
268
+ id: external_exports.string(),
269
+ /**
270
+ * Only what the browser composed or the model answered. A `system`
271
+ * message is the server's alone, so one a client stamps is refused at
272
+ * the door rather than joined to the real system prompt.
273
+ */
274
+ messages: external_exports.array(external_exports.object({ role: external_exports.enum(["user", "assistant"]) }).loose()).max(DASHBOARD_CHAT_MAX_MESSAGES),
275
+ /**
276
+ * `{ [pluginId]: slice }` — opaque here. Each server tool pack validates
277
+ * its own key and ignores the rest, so a client ahead of the server can
278
+ * send a slice nothing reads yet.
279
+ */
280
+ context: external_exports.record(external_exports.string(), external_exports.unknown()).default({}),
281
+ settings: dashboardChatSettingsSchema.default({ mode: "medium" }),
282
+ /**
283
+ * Wire names the browser can execute this turn. The server offers a
284
+ * client-executed tool only when it is named here, so a call the browser
285
+ * cannot answer never reaches the model.
286
+ */
287
+ clientTools: external_exports.array(external_exports.string().max(64)).max(64).default([])
288
+ }).superRefine((body, ctx) => {
289
+ if (JSON.stringify(body.context).length > DASHBOARD_CHAT_CONTEXT_MAX_CHARS) {
290
+ ctx.addIssue({ code: "custom", message: "context too large" });
291
+ }
292
+ if (body.clientTools.some((name) => DASHBOARD_SDK_TOOL_NAMES.has(name)) && !body.context[DASHBOARD_SDK_CONTEXT_KEY]) {
293
+ ctx.addIssue({
294
+ code: "custom",
295
+ message: "sdk tools require the sdk-studio context slice"
296
+ });
297
+ }
298
+ if (body.clientTools.some((name) => DASHBOARD_EDITOR_TOOL_NAMES.has(name)) && !body.context[DASHBOARD_EDITOR_CONTEXT_KEY]) {
299
+ ctx.addIssue({
300
+ code: "custom",
301
+ message: "editor tools require docs-editor context"
302
+ });
303
+ }
304
+ });
305
+ var dashboardRoutes = {
306
+ chat: {
307
+ method: "POST",
308
+ path: () => "/dashboard/chat",
309
+ body: dashboardChatBodySchema,
310
+ responses: {
311
+ 400: agentApiErrorSchema,
312
+ 402: agentApiErrorSchema,
313
+ 403: agentApiErrorSchema
314
+ },
315
+ responseMediaType: "text/event-stream",
316
+ summary: "Chat with the dashboard assistant"
317
+ }
318
+ };
319
+
243
320
  // ../../packages/entities/dist/api/agent/docs.js
244
321
  var docsProjectAgentInfoSchema = external_exports.object({
245
322
  id: external_exports.string(),
@@ -249,6 +326,19 @@ var docsProjectAgentInfoSchema = external_exports.object({
249
326
  mcpServerSlug: external_exports.string().nullable(),
250
327
  mcpInstallationSlug: external_exports.string().nullable()
251
328
  });
329
+ var docsChatContextSchema = external_exports.object({
330
+ /** The Vue-router path of the current page, without the hash. */
331
+ path: external_exports.string().max(2048),
332
+ /** The `route.meta.page` type (e.g. `page`, `openapi-single`), for phrasing. */
333
+ kind: external_exports.string().max(64).optional(),
334
+ /** The OpenAPI/AsyncAPI document the page belongs to, when it is a reference. */
335
+ documentUid: external_exports.string().max(256).optional(),
336
+ /**
337
+ * Full navigation id of the entity in view. Lets the server rebuild the
338
+ * anchored `to` for a single-page reference operation and match it.
339
+ */
340
+ navId: external_exports.string().max(2048).optional()
341
+ });
252
342
  var docsRoutes = {
253
343
  getProject: {
254
344
  method: "GET",
@@ -289,7 +379,13 @@ var docsRoutes = {
289
379
  chat: {
290
380
  method: "POST",
291
381
  path: () => "/docs/chat",
292
- body: external_exports.object({ id: external_exports.string(), messages: external_exports.any().array() }),
382
+ body: external_exports.object({
383
+ id: external_exports.string(),
384
+ messages: external_exports.any().array(),
385
+ // What the visitor is currently viewing, so the agent can answer about it.
386
+ // Optional so a docs bundle that sends no context keeps working unchanged.
387
+ context: docsChatContextSchema.optional()
388
+ }),
293
389
  responses: { 400: agentApiErrorSchema, 403: agentApiErrorSchema },
294
390
  responseMediaType: "text/event-stream",
295
391
  summary: "Chat with the docs agent"
@@ -568,6 +664,8 @@ var mcpOperationToolDetailSchema = external_exports.object({
568
664
  curatedToolEnabled: external_exports.boolean(),
569
665
  name: external_exports.string().nullable(),
570
666
  description: external_exports.string().nullable(),
667
+ deprecated: external_exports.boolean(),
668
+ deprecationMessage: external_exports.string().nullable(),
571
669
  openApiOperationId: external_exports.string().nullable(),
572
670
  operationSummary: external_exports.string().nullable()
573
671
  });
@@ -650,6 +748,7 @@ var mcpServerRoutes = {
650
748
  body: external_exports.object({
651
749
  name: external_exports.string().min(1).max(100),
652
750
  slug: slugSchema,
751
+ autoAddOperations: external_exports.boolean(),
653
752
  operations: external_exports.array(external_exports.uuid()),
654
753
  docsPages: external_exports.array(external_exports.uuid()),
655
754
  bumpStrategy: bumpStrategySchema,
@@ -727,12 +826,16 @@ var mcpServerRoutes = {
727
826
  params: external_exports.object({ id: external_exports.uuid(), operationToolId: external_exports.uuid() }),
728
827
  body: external_exports.object({
729
828
  name: external_exports.string().nullable().optional(),
730
- description: external_exports.string().nullable().optional()
829
+ description: external_exports.string().nullable().optional(),
830
+ deprecated: external_exports.boolean().optional(),
831
+ deprecationMessage: external_exports.string().nullable().optional()
731
832
  }),
732
833
  response: external_exports.object({
733
834
  operationToolId: external_exports.string(),
734
835
  name: external_exports.string().nullable().optional(),
735
- description: external_exports.string().nullable().optional()
836
+ description: external_exports.string().nullable().optional(),
837
+ deprecated: external_exports.boolean().optional(),
838
+ deprecationMessage: external_exports.string().nullable().optional()
736
839
  }),
737
840
  responses: { 400: agentApiErrorSchema, 403: agentApiErrorSchema },
738
841
  summary: "Set custom name and description on an operation tool"
@@ -950,6 +1053,8 @@ var mcpVersionToolsSchema = external_exports.object({
950
1053
  curatedToolEnabled: external_exports.boolean(),
951
1054
  name: external_exports.string().nullable(),
952
1055
  description: external_exports.string().nullable(),
1056
+ deprecated: external_exports.boolean(),
1057
+ deprecationMessage: external_exports.string().nullable(),
953
1058
  path: external_exports.string(),
954
1059
  method: external_exports.string(),
955
1060
  versionId: external_exports.string(),
@@ -1035,7 +1140,9 @@ var mcpVersionRoutes = {
1035
1140
  executeRequestToolEnabled: external_exports.boolean().optional(),
1036
1141
  curatedToolEnabled: external_exports.boolean().optional(),
1037
1142
  name: external_exports.string().nullable().optional(),
1038
- description: external_exports.string().nullable().optional()
1143
+ description: external_exports.string().nullable().optional(),
1144
+ deprecated: external_exports.boolean().optional(),
1145
+ deprecationMessage: external_exports.string().nullable().optional()
1039
1146
  })).optional(),
1040
1147
  docsPageTools: external_exports.array(external_exports.object({
1041
1148
  docsPageId: external_exports.uuid(),
@@ -1545,6 +1652,7 @@ var agentApi = {
1545
1652
  },
1546
1653
  registry: registryRoutes,
1547
1654
  docs: docsRoutes,
1655
+ dashboard: dashboardRoutes,
1548
1656
  editor: editorRoutes,
1549
1657
  openapi: openapiRoutes,
1550
1658
  analytics: analyticsRoutes,
@@ -1580,7 +1688,17 @@ export {
1580
1688
  mcpErrorEntrySchema,
1581
1689
  mcpErrorsResultSchema,
1582
1690
  analyticsRoutes,
1691
+ DASHBOARD_EDITOR_TOOL_NAMES,
1692
+ DASHBOARD_SDK_TOOL_NAMES,
1693
+ DASHBOARD_SDK_CONTEXT_KEY,
1694
+ DASHBOARD_EDITOR_CONTEXT_KEY,
1695
+ DASHBOARD_CHAT_CONTEXT_MAX_CHARS,
1696
+ DASHBOARD_CHAT_MAX_MESSAGES,
1697
+ dashboardChatSettingsSchema,
1698
+ dashboardChatBodySchema,
1699
+ dashboardRoutes,
1583
1700
  docsProjectAgentInfoSchema,
1701
+ docsChatContextSchema,
1584
1702
  docsRoutes,
1585
1703
  editorChatBodySchema,
1586
1704
  pullRequestDescriptionBodySchema,