@apilift/cli 1.5.11 → 1.5.12

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.
@@ -27953,7 +27953,16 @@ function parseUrl(value) {
27953
27953
  function loopback(host) {
27954
27954
  return host === "localhost" || host === "127.0.0.1" || host === "[::1]";
27955
27955
  }
27956
- var import__, resourceKinds, resourceKindSchema, segmentSchema, appSlugSchema, actionNameSchema, generatedNameSchema, inputNameSchema, pointerSchema, categorySlugs, categorySchema, title, description, requiredDescription, originSchema, httpUrlSchema, requestUrlSchema, ajv, jsonSchema, valueSchema, requestSchema, responseSchema, proofPointer, proofComparison, proofKey, proofSelection, proofSchema, appDefinitionSchema, entityDefinitionSchema, generatedSchema, executableActionSchema, unavailableActionSchema, actionDefinitionSchema, locatorSchema, observeSchema, injectSchema, credentialSchema, probeSchema, transportDefinitionSchema, browserContextDefinitionSchema, definitionSchemas;
27956
+ function bodyIssues(v2, ctx) {
27957
+ if (v2.form !== void 0 && v2.body !== void 0)
27958
+ ctx.addIssue({ code: "custom", message: "form and JSON body are mutually exclusive" });
27959
+ if ((v2.form !== void 0 || v2.body !== void 0) && ["GET", "HEAD"].includes(v2.method))
27960
+ ctx.addIssue({ code: "custom", message: "GET/HEAD cannot have a request body" });
27961
+ for (const [name, value] of Object.entries(v2.headers ?? {}))
27962
+ if (name.toLowerCase() === "content-type" && (v2.form !== void 0 || v2.body !== void 0) && value !== (v2.form !== void 0 ? "application/x-www-form-urlencoded" : "application/json"))
27963
+ ctx.addIssue({ code: "custom", message: "Content-Type conflicts with declared body encoding" });
27964
+ }
27965
+ var import__, resourceKinds, resourceKindSchema, segmentSchema, appSlugSchema, actionNameSchema, generatedNameSchema, inputNameSchema, pointerSchema, categorySlugs, categorySchema, title, description, requiredDescription, originSchema, httpUrlSchema, requestUrlSchema, ajv, jsonSchema, valueSchema, htmlFieldSchema, htmlExtractionSchema, continuationSchema, responseSchema, baseRequestSchema, readPreparationSchema, requestSchema, proofPointer, proofComparison, proofKey, proofSelection, proofSchema, appDefinitionSchema, entityDefinitionSchema, generatedSchema, executableActionSchema, unavailableActionSchema, actionDefinitionSchema, locatorSchema, observeSchema, injectSchema, credentialSchema, probeSchema, transportDefinitionSchema, browserContextDefinitionSchema, definitionSchemas;
27957
27966
  var init_schema = __esm({
27958
27967
  "../../packages/core/dist/definitions/schema.js"() {
27959
27968
  "use strict";
@@ -28000,17 +28009,37 @@ var init_schema = __esm({
28000
28009
  }
28001
28010
  }, "Expected a valid JSON Schema draft 2020-12 document");
28002
28011
  valueSchema = external_exports.lazy(() => external_exports.union([external_exports.null(), external_exports.boolean(), external_exports.number(), external_exports.string(), external_exports.array(valueSchema), external_exports.record(external_exports.string(), valueSchema)]));
28003
- requestSchema = external_exports.strictObject({
28012
+ htmlFieldSchema = external_exports.lazy(() => external_exports.strictObject({ selector: external_exports.string().min(1).max(2e3).optional(), read: external_exports.enum(["text", "attribute", "value", "checked", "json"]).optional(), attribute: external_exports.string().min(1).optional(), type: external_exports.enum(["string", "number", "integer", "boolean"]).optional(), optional: external_exports.boolean().optional(), many: external_exports.boolean().optional(), fields: external_exports.record(external_exports.string(), htmlFieldSchema).optional() }).superRefine((v2, ctx) => {
28013
+ if (v2.read === "attribute" && !v2.attribute)
28014
+ ctx.addIssue({ code: "custom", message: "Attribute extraction requires attribute" });
28015
+ if (v2.fields && (v2.read || v2.type || v2.attribute))
28016
+ ctx.addIssue({ code: "custom", message: "Nested fields exclude scalar extraction" });
28017
+ }));
28018
+ htmlExtractionSchema = external_exports.strictObject({ marker: external_exports.string().min(1).max(2e3), fields: external_exports.record(external_exports.string(), htmlFieldSchema).refine((v2) => Object.keys(v2).length > 0), errors: external_exports.string().min(1).max(2e3).optional() });
28019
+ continuationSchema = external_exports.strictObject({ statuses: external_exports.array(external_exports.number().int().min(200).max(599)).min(1).max(20), format: external_exports.enum(["json", "html"]), path: pointerSchema.optional(), selector: external_exports.string().min(1).optional(), attribute: external_exports.string().min(1).optional() }).superRefine((v2, ctx) => {
28020
+ if (v2.format === "json" ? v2.path === void 0 || !!v2.selector || !!v2.attribute : !v2.selector || !v2.attribute || v2.path !== void 0)
28021
+ ctx.addIssue({ code: "custom", message: "JSON continuation needs path; HTML continuation needs selector and attribute" });
28022
+ });
28023
+ responseSchema = external_exports.strictObject({ format: external_exports.enum(["json", "html"]).optional(), html: htmlExtractionSchema.optional(), continue: external_exports.array(continuationSchema).min(1).max(5).optional(), schema: jsonSchema.optional(), path: pointerSchema.optional(), fields: external_exports.record(external_exports.string(), pointerSchema).optional(), generated: generatedNameSchema.optional() }).superRefine((v2, ctx) => {
28024
+ if (v2.generated && (v2.path !== void 0 || v2.fields !== void 0 || v2.html))
28025
+ ctx.addIssue({ code: "custom", message: "generated excludes path and fields" });
28026
+ if (v2.format === "html" !== !!v2.html)
28027
+ ctx.addIssue({ code: "custom", message: "HTML responses require format: html and html extraction with a page marker" });
28028
+ });
28029
+ baseRequestSchema = external_exports.strictObject({
28004
28030
  method: external_exports.enum(["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]),
28005
28031
  url: requestUrlSchema,
28006
28032
  headers: external_exports.record(external_exports.string(), valueSchema).optional(),
28007
28033
  query: external_exports.record(external_exports.string(), external_exports.union([valueSchema, external_exports.array(valueSchema)])).optional(),
28008
- body: valueSchema.optional()
28009
- });
28010
- responseSchema = external_exports.strictObject({ schema: jsonSchema.optional(), path: pointerSchema.optional(), fields: external_exports.record(external_exports.string(), pointerSchema).optional(), generated: generatedNameSchema.optional() }).superRefine((v2, ctx) => {
28011
- if (v2.generated && (v2.path !== void 0 || v2.fields !== void 0))
28012
- ctx.addIssue({ code: "custom", message: "generated excludes path and fields" });
28034
+ body: valueSchema.optional(),
28035
+ form: external_exports.record(external_exports.string(), valueSchema).optional()
28013
28036
  });
28037
+ readPreparationSchema = external_exports.strictObject({ request: baseRequestSchema.superRefine((v2, ctx) => {
28038
+ bodyIssues(v2, ctx);
28039
+ if (v2.method !== "GET")
28040
+ ctx.addIssue({ code: "custom", message: "Preparation and identity checks must use GET" });
28041
+ }), response: responseSchema });
28042
+ requestSchema = baseRequestSchema.extend({ prepare: readPreparationSchema.optional() }).superRefine(bodyIssues);
28014
28043
  proofPointer = external_exports.string().refine((value) => {
28015
28044
  let valid = true;
28016
28045
  const resolved = value.replace(/\{(input|result|generated)\.([^{}]*)\}/gu, (token, kind, ref, offset) => {
@@ -28026,7 +28055,7 @@ var init_schema = __esm({
28026
28055
  if (!!v2.where === !!v2.key)
28027
28056
  ctx.addIssue({ code: "custom", message: "Select by exactly one of where or key" });
28028
28057
  });
28029
- proofSchema = external_exports.strictObject({ request: requestSchema, effect: external_exports.literal("read").optional(), select: proofSelection.optional(), equals: external_exports.array(proofComparison).min(1).optional(), response: external_exports.strictObject({ path: proofPointer.optional(), schema: jsonSchema }).optional(), absent: external_exports.literal(true).optional() }).superRefine((v2, ctx) => {
28058
+ proofSchema = external_exports.strictObject({ request: requestSchema, effect: external_exports.literal("read").optional(), select: proofSelection.optional(), equals: external_exports.array(proofComparison).min(1).optional(), response: responseSchema.optional(), absent: external_exports.literal(true).optional() }).superRefine((v2, ctx) => {
28030
28059
  if (!!v2.equals === !!v2.absent)
28031
28060
  ctx.addIssue({ code: "custom", message: "Exactly one of equals and absent is required" });
28032
28061
  if (v2.select && v2.absent && !v2.select.complete)
@@ -28072,17 +28101,17 @@ var init_schema = __esm({
28072
28101
  ctx.addIssue({ code: "custom", path: [key], message: `${key} required for ${v2.in}` });
28073
28102
  });
28074
28103
  observeSchema = external_exports.strictObject({ kind: external_exports.literal("observe"), request: external_exports.strictObject({ method: external_exports.string(), urlPattern: external_exports.string() }), extract: external_exports.strictObject({ in: external_exports.enum(["request-header", "response-header", "response-body"]), name: external_exports.string().optional(), path: pointerSchema.optional() }), trigger: external_exports.union([external_exports.strictObject({ kind: external_exports.literal("navigate"), url: httpUrlSchema }), external_exports.strictObject({ kind: external_exports.literal("selector"), selector: external_exports.string() })]).optional(), cache: external_exports.literal("browser-session") });
28075
- injectSchema = external_exports.strictObject({ from: external_exports.union([locatorSchema, observeSchema]), to: external_exports.union([external_exports.strictObject({ in: external_exports.literal("header"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("query"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("body"), path: pointerSchema })]) });
28104
+ injectSchema = external_exports.strictObject({ from: external_exports.union([locatorSchema, observeSchema]), to: external_exports.union([external_exports.strictObject({ in: external_exports.literal("header"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("query"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("body"), path: pointerSchema }), external_exports.strictObject({ in: external_exports.literal("form"), name: external_exports.string().min(1) })]) });
28076
28105
  credentialSchema = external_exports.strictObject({ name: generatedNameSchema, header: external_exports.string().regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/), prefix: external_exports.string().max(80).refine((v2) => !/[\r\n]/.test(v2)).optional() });
28077
- probeSchema = external_exports.strictObject({ effect: external_exports.literal("read").optional(), request: requestSchema, response: external_exports.strictObject({ schema: jsonSchema.optional(), path: pointerSchema.optional() }), inputs: jsonSchema.optional() });
28078
- transportDefinitionSchema = external_exports.strictObject({ title, description: requiredDescription, mode: external_exports.enum(["direct", "browser"]), baseUrl: requestUrlSchema.optional(), allowedOrigins: external_exports.array(originSchema).min(1).max(100), browserContext: segmentSchema.optional(), credentials: external_exports.array(credentialSchema).max(16).optional(), inject: external_exports.array(injectSchema).optional(), probes: external_exports.record(external_exports.string(), probeSchema) }).superRefine((v2, ctx) => {
28106
+ probeSchema = external_exports.strictObject({ effect: external_exports.literal("read").optional(), request: requestSchema, response: responseSchema, inputs: jsonSchema.optional() });
28107
+ transportDefinitionSchema = external_exports.strictObject({ title, description: requiredDescription, mode: external_exports.enum(["direct", "browser"]), baseUrl: requestUrlSchema.optional(), allowedOrigins: external_exports.array(originSchema).min(1).max(100), browserContext: segmentSchema.optional(), credentials: external_exports.array(credentialSchema).max(16).optional(), inject: external_exports.array(injectSchema).optional(), identity: readPreparationSchema.extend({ paths: external_exports.array(pointerSchema).min(1).max(8) }).optional(), probes: external_exports.record(external_exports.string(), probeSchema) }).superRefine((v2, ctx) => {
28079
28108
  if (new Set(v2.allowedOrigins).size !== v2.allowedOrigins.length)
28080
28109
  ctx.addIssue({ code: "custom", path: ["allowedOrigins"], message: "Origins must be distinct" });
28081
28110
  if (v2.mode === "direct" && !v2.baseUrl)
28082
28111
  ctx.addIssue({ code: "custom", path: ["baseUrl"], message: "Direct transport requires baseUrl" });
28083
28112
  if (v2.mode === "browser" && !v2.browserContext)
28084
28113
  ctx.addIssue({ code: "custom", path: ["browserContext"], message: "Browser transport requires browserContext" });
28085
- if (v2.mode === "direct" && (v2.browserContext || v2.inject))
28114
+ if (v2.mode === "direct" && (v2.browserContext || v2.inject || v2.identity))
28086
28115
  ctx.addIssue({ code: "custom", message: "browserContext and inject require browser mode" });
28087
28116
  if (v2.baseUrl && !v2.allowedOrigins.includes(parseUrl(v2.baseUrl)?.origin ?? ""))
28088
28117
  ctx.addIssue({ code: "custom", path: ["baseUrl"], message: "Base URL origin must be allowed" });
@@ -28371,7 +28400,7 @@ function createCliApi(baseUrl, fetcher = fetch, token, sessionId) {
28371
28400
  const transport = async (input2, init) => {
28372
28401
  const method = init?.method ?? "GET";
28373
28402
  const headers = new Headers(init?.headers);
28374
- headers.set("Apilift-Capabilities", "distributed-rollouts-v1,discovery-proof-v2,dynamic-bindings-v1,collection-proof-v3");
28403
+ headers.set("Apilift-Capabilities", "distributed-rollouts-v1,discovery-proof-v2,dynamic-bindings-v1,collection-proof-v3,web-responses-v1");
28375
28404
  headers.set("Apilift-Client", `cli/${cliVersion}`);
28376
28405
  if (token) headers.set("Authorization", `Bearer ${token}`);
28377
28406
  if (sessionId) headers.set("Apilift-Session", sessionId);
@@ -29446,17 +29446,46 @@ var jsonSchema = external_exports.custom((value) => {
29446
29446
  }
29447
29447
  }, "Expected a valid JSON Schema draft 2020-12 document");
29448
29448
  var valueSchema = external_exports.lazy(() => external_exports.union([external_exports.null(), external_exports.boolean(), external_exports.number(), external_exports.string(), external_exports.array(valueSchema), external_exports.record(external_exports.string(), valueSchema)]));
29449
- var requestSchema = external_exports.strictObject({
29449
+ var htmlFieldSchema = external_exports.lazy(() => external_exports.strictObject({ selector: external_exports.string().min(1).max(2e3).optional(), read: external_exports.enum(["text", "attribute", "value", "checked", "json"]).optional(), attribute: external_exports.string().min(1).optional(), type: external_exports.enum(["string", "number", "integer", "boolean"]).optional(), optional: external_exports.boolean().optional(), many: external_exports.boolean().optional(), fields: external_exports.record(external_exports.string(), htmlFieldSchema).optional() }).superRefine((v, ctx) => {
29450
+ if (v.read === "attribute" && !v.attribute)
29451
+ ctx.addIssue({ code: "custom", message: "Attribute extraction requires attribute" });
29452
+ if (v.fields && (v.read || v.type || v.attribute))
29453
+ ctx.addIssue({ code: "custom", message: "Nested fields exclude scalar extraction" });
29454
+ }));
29455
+ var htmlExtractionSchema = external_exports.strictObject({ marker: external_exports.string().min(1).max(2e3), fields: external_exports.record(external_exports.string(), htmlFieldSchema).refine((v) => Object.keys(v).length > 0), errors: external_exports.string().min(1).max(2e3).optional() });
29456
+ var continuationSchema = external_exports.strictObject({ statuses: external_exports.array(external_exports.number().int().min(200).max(599)).min(1).max(20), format: external_exports.enum(["json", "html"]), path: pointerSchema.optional(), selector: external_exports.string().min(1).optional(), attribute: external_exports.string().min(1).optional() }).superRefine((v, ctx) => {
29457
+ if (v.format === "json" ? v.path === void 0 || !!v.selector || !!v.attribute : !v.selector || !v.attribute || v.path !== void 0)
29458
+ ctx.addIssue({ code: "custom", message: "JSON continuation needs path; HTML continuation needs selector and attribute" });
29459
+ });
29460
+ var responseSchema = external_exports.strictObject({ format: external_exports.enum(["json", "html"]).optional(), html: htmlExtractionSchema.optional(), continue: external_exports.array(continuationSchema).min(1).max(5).optional(), schema: jsonSchema.optional(), path: pointerSchema.optional(), fields: external_exports.record(external_exports.string(), pointerSchema).optional(), generated: generatedNameSchema.optional() }).superRefine((v, ctx) => {
29461
+ if (v.generated && (v.path !== void 0 || v.fields !== void 0 || v.html))
29462
+ ctx.addIssue({ code: "custom", message: "generated excludes path and fields" });
29463
+ if (v.format === "html" !== !!v.html)
29464
+ ctx.addIssue({ code: "custom", message: "HTML responses require format: html and html extraction with a page marker" });
29465
+ });
29466
+ var baseRequestSchema = external_exports.strictObject({
29450
29467
  method: external_exports.enum(["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]),
29451
29468
  url: requestUrlSchema,
29452
29469
  headers: external_exports.record(external_exports.string(), valueSchema).optional(),
29453
29470
  query: external_exports.record(external_exports.string(), external_exports.union([valueSchema, external_exports.array(valueSchema)])).optional(),
29454
- body: valueSchema.optional()
29455
- });
29456
- var responseSchema = external_exports.strictObject({ schema: jsonSchema.optional(), path: pointerSchema.optional(), fields: external_exports.record(external_exports.string(), pointerSchema).optional(), generated: generatedNameSchema.optional() }).superRefine((v, ctx) => {
29457
- if (v.generated && (v.path !== void 0 || v.fields !== void 0))
29458
- ctx.addIssue({ code: "custom", message: "generated excludes path and fields" });
29459
- });
29471
+ body: valueSchema.optional(),
29472
+ form: external_exports.record(external_exports.string(), valueSchema).optional()
29473
+ });
29474
+ function bodyIssues(v, ctx) {
29475
+ if (v.form !== void 0 && v.body !== void 0)
29476
+ ctx.addIssue({ code: "custom", message: "form and JSON body are mutually exclusive" });
29477
+ if ((v.form !== void 0 || v.body !== void 0) && ["GET", "HEAD"].includes(v.method))
29478
+ ctx.addIssue({ code: "custom", message: "GET/HEAD cannot have a request body" });
29479
+ for (const [name, value] of Object.entries(v.headers ?? {}))
29480
+ if (name.toLowerCase() === "content-type" && (v.form !== void 0 || v.body !== void 0) && value !== (v.form !== void 0 ? "application/x-www-form-urlencoded" : "application/json"))
29481
+ ctx.addIssue({ code: "custom", message: "Content-Type conflicts with declared body encoding" });
29482
+ }
29483
+ var readPreparationSchema = external_exports.strictObject({ request: baseRequestSchema.superRefine((v, ctx) => {
29484
+ bodyIssues(v, ctx);
29485
+ if (v.method !== "GET")
29486
+ ctx.addIssue({ code: "custom", message: "Preparation and identity checks must use GET" });
29487
+ }), response: responseSchema });
29488
+ var requestSchema = baseRequestSchema.extend({ prepare: readPreparationSchema.optional() }).superRefine(bodyIssues);
29460
29489
  var proofPointer = external_exports.string().refine((value) => {
29461
29490
  let valid2 = true;
29462
29491
  const resolved = value.replace(/\{(input|result|generated)\.([^{}]*)\}/gu, (token, kind, ref, offset) => {
@@ -29472,7 +29501,7 @@ var proofSelection = external_exports.strictObject({ path: proofPointer, where:
29472
29501
  if (!!v.where === !!v.key)
29473
29502
  ctx.addIssue({ code: "custom", message: "Select by exactly one of where or key" });
29474
29503
  });
29475
- var proofSchema = external_exports.strictObject({ request: requestSchema, effect: external_exports.literal("read").optional(), select: proofSelection.optional(), equals: external_exports.array(proofComparison).min(1).optional(), response: external_exports.strictObject({ path: proofPointer.optional(), schema: jsonSchema }).optional(), absent: external_exports.literal(true).optional() }).superRefine((v, ctx) => {
29504
+ var proofSchema = external_exports.strictObject({ request: requestSchema, effect: external_exports.literal("read").optional(), select: proofSelection.optional(), equals: external_exports.array(proofComparison).min(1).optional(), response: responseSchema.optional(), absent: external_exports.literal(true).optional() }).superRefine((v, ctx) => {
29476
29505
  if (!!v.equals === !!v.absent)
29477
29506
  ctx.addIssue({ code: "custom", message: "Exactly one of equals and absent is required" });
29478
29507
  if (v.select && v.absent && !v.select.complete)
@@ -29518,17 +29547,17 @@ var locatorSchema = external_exports.strictObject({ kind: external_exports.liter
29518
29547
  ctx.addIssue({ code: "custom", path: [key], message: `${key} required for ${v.in}` });
29519
29548
  });
29520
29549
  var observeSchema = external_exports.strictObject({ kind: external_exports.literal("observe"), request: external_exports.strictObject({ method: external_exports.string(), urlPattern: external_exports.string() }), extract: external_exports.strictObject({ in: external_exports.enum(["request-header", "response-header", "response-body"]), name: external_exports.string().optional(), path: pointerSchema.optional() }), trigger: external_exports.union([external_exports.strictObject({ kind: external_exports.literal("navigate"), url: httpUrlSchema }), external_exports.strictObject({ kind: external_exports.literal("selector"), selector: external_exports.string() })]).optional(), cache: external_exports.literal("browser-session") });
29521
- var injectSchema = external_exports.strictObject({ from: external_exports.union([locatorSchema, observeSchema]), to: external_exports.union([external_exports.strictObject({ in: external_exports.literal("header"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("query"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("body"), path: pointerSchema })]) });
29550
+ var injectSchema = external_exports.strictObject({ from: external_exports.union([locatorSchema, observeSchema]), to: external_exports.union([external_exports.strictObject({ in: external_exports.literal("header"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("query"), name: external_exports.string() }), external_exports.strictObject({ in: external_exports.literal("body"), path: pointerSchema }), external_exports.strictObject({ in: external_exports.literal("form"), name: external_exports.string().min(1) })]) });
29522
29551
  var credentialSchema = external_exports.strictObject({ name: generatedNameSchema, header: external_exports.string().regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/), prefix: external_exports.string().max(80).refine((v) => !/[\r\n]/.test(v)).optional() });
29523
- var probeSchema = external_exports.strictObject({ effect: external_exports.literal("read").optional(), request: requestSchema, response: external_exports.strictObject({ schema: jsonSchema.optional(), path: pointerSchema.optional() }), inputs: jsonSchema.optional() });
29524
- var transportDefinitionSchema = external_exports.strictObject({ title, description: requiredDescription, mode: external_exports.enum(["direct", "browser"]), baseUrl: requestUrlSchema.optional(), allowedOrigins: external_exports.array(originSchema).min(1).max(100), browserContext: segmentSchema.optional(), credentials: external_exports.array(credentialSchema).max(16).optional(), inject: external_exports.array(injectSchema).optional(), probes: external_exports.record(external_exports.string(), probeSchema) }).superRefine((v, ctx) => {
29552
+ var probeSchema = external_exports.strictObject({ effect: external_exports.literal("read").optional(), request: requestSchema, response: responseSchema, inputs: jsonSchema.optional() });
29553
+ var transportDefinitionSchema = external_exports.strictObject({ title, description: requiredDescription, mode: external_exports.enum(["direct", "browser"]), baseUrl: requestUrlSchema.optional(), allowedOrigins: external_exports.array(originSchema).min(1).max(100), browserContext: segmentSchema.optional(), credentials: external_exports.array(credentialSchema).max(16).optional(), inject: external_exports.array(injectSchema).optional(), identity: readPreparationSchema.extend({ paths: external_exports.array(pointerSchema).min(1).max(8) }).optional(), probes: external_exports.record(external_exports.string(), probeSchema) }).superRefine((v, ctx) => {
29525
29554
  if (new Set(v.allowedOrigins).size !== v.allowedOrigins.length)
29526
29555
  ctx.addIssue({ code: "custom", path: ["allowedOrigins"], message: "Origins must be distinct" });
29527
29556
  if (v.mode === "direct" && !v.baseUrl)
29528
29557
  ctx.addIssue({ code: "custom", path: ["baseUrl"], message: "Direct transport requires baseUrl" });
29529
29558
  if (v.mode === "browser" && !v.browserContext)
29530
29559
  ctx.addIssue({ code: "custom", path: ["browserContext"], message: "Browser transport requires browserContext" });
29531
- if (v.mode === "direct" && (v.browserContext || v.inject))
29560
+ if (v.mode === "direct" && (v.browserContext || v.inject || v.identity))
29532
29561
  ctx.addIssue({ code: "custom", message: "browserContext and inject require browser mode" });
29533
29562
  if (v.baseUrl && !v.allowedOrigins.includes(parseUrl(v.baseUrl)?.origin ?? ""))
29534
29563
  ctx.addIssue({ code: "custom", path: ["baseUrl"], message: "Base URL origin must be allowed" });
@@ -29597,6 +29626,8 @@ function inspectRequest(request2, inputs, generated, proof, base2, issues) {
29597
29626
  const [key, ref] = entries[0] ?? [];
29598
29627
  if (key === "$input" && typeof ref === "string" && inputs.has(ref))
29599
29628
  return;
29629
+ if (key === "$prepared" && typeof ref === "string" && request2.prepare && pointerSchema.safeParse(ref).success)
29630
+ return;
29600
29631
  if (key === "$generated" && typeof ref === "string" && generated.has(ref))
29601
29632
  return;
29602
29633
  if (proof && key === "$result" && typeof ref === "string" && pointerSchema.safeParse(ref).success)
@@ -29620,6 +29651,9 @@ function inspectRequest(request2, inputs, generated, proof, base2, issues) {
29620
29651
  }
29621
29652
  walk(request2.query, `${base2}/query`);
29622
29653
  walk(request2.body, `${base2}/body`);
29654
+ walk(request2.form, `${base2}/form`);
29655
+ if (request2.prepare)
29656
+ inspectRequest(request2.prepare.request, inputs, generated, proof, `${base2}/prepare/request`, issues);
29623
29657
  }
29624
29658
  function validateDefinition(kind, name, value) {
29625
29659
  const issues = [];
@@ -29674,6 +29708,8 @@ function validateDefinition(kind, name, value) {
29674
29708
  const props = probe.inputs && typeof probe.inputs === "object" && probe.inputs.properties && typeof probe.inputs.properties === "object" ? Object.keys(probe.inputs.properties) : [];
29675
29709
  inspectRequest(probe.request, new Set(props), /* @__PURE__ */ new Set(), false, `/probes/${origin}/request`, issues);
29676
29710
  }
29711
+ if (definition2.identity)
29712
+ inspectRequest(definition2.identity.request, /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set(), false, "/identity/request", issues);
29677
29713
  for (const [i, rule] of (definition2.inject ?? []).entries())
29678
29714
  if (rule.to.in === "header" && rule.to.name.toLowerCase() === "cookie")
29679
29715
  issues.push({ path: `/inject/${i}/to/name`, message: "Cookie header cannot be injected" });
@@ -29850,7 +29886,7 @@ function createCliApi(baseUrl, fetcher = fetch, token, sessionId) {
29850
29886
  const transport = async (input2, init) => {
29851
29887
  const method = init?.method ?? "GET";
29852
29888
  const headers = new Headers(init?.headers);
29853
- headers.set("Apilift-Capabilities", "distributed-rollouts-v1,discovery-proof-v2,dynamic-bindings-v1,collection-proof-v3");
29889
+ headers.set("Apilift-Capabilities", "distributed-rollouts-v1,discovery-proof-v2,dynamic-bindings-v1,collection-proof-v3,web-responses-v1");
29854
29890
  headers.set("Apilift-Client", `cli/${cliVersion}`);
29855
29891
  if (token) headers.set("Authorization", `Bearer ${token}`);
29856
29892
  if (sessionId) headers.set("Apilift-Session", sessionId);