@bugbug-io/sdk 14.0.8 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -429,6 +429,7 @@ import {
429
429
  BugBugError,
430
430
  AuthenticationError,
431
431
  AuthorizationError,
432
+ SubscriptionError,
432
433
  ValidationError,
433
434
  NotFoundError,
434
435
  RateLimitError,
@@ -442,6 +443,8 @@ try {
442
443
  } catch (error) {
443
444
  if (error instanceof AuthenticationError) {
444
445
  console.error('Invalid API token');
446
+ } else if (error instanceof SubscriptionError) {
447
+ console.error(error.upgradeUrl ? `Upgrade at ${error.upgradeUrl}` : error.message);
445
448
  } else if (error instanceof RateLimitError) {
446
449
  console.error(`Rate limited. Retry after ${error.retryAfter}ms`);
447
450
  } else if (error instanceof TimeoutError) {
@@ -8,6 +8,7 @@
8
8
  export declare const SDK_ERROR_CODES: {
9
9
  readonly AUTHENTICATION_ERROR: "AUTHENTICATION_ERROR";
10
10
  readonly AUTHORIZATION_ERROR: "AUTHORIZATION_ERROR";
11
+ readonly SUBSCRIPTION_ERROR: "SUBSCRIPTION_ERROR";
11
12
  readonly VALIDATION_ERROR: "VALIDATION_ERROR";
12
13
  readonly CONFIGURATION_ERROR: "CONFIGURATION_ERROR";
13
14
  readonly MISSING_PROJECT_ID_ERROR: "MISSING_PROJECT_ID_ERROR";
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error-codes.d.ts","sourceRoot":"","sources":["../../src/constants/sdk-error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;CAelB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
1
+ {"version":3,"file":"sdk-error-codes.d.ts","sourceRoot":"","sources":["../../src/constants/sdk-error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAgBlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
package/dist/index.d.ts CHANGED
@@ -75,7 +75,7 @@ export type { AuthAuthorizeParams, AuthAuthorizeResponse, AuthIdentity, AuthToke
75
75
  export { BUGBUG_CLI_OAUTH_CLIENT_ID, BUGBUG_MCP_OAUTH_CLIENT_ID, BUGBUG_OAUTH_CODE_CHALLENGE_METHOD, } from './modules/auth/auth.types';
76
76
  export { createOAuthCodeChallenge, createOAuthCodeVerifier, createOAuthState, } from './modules/auth/auth.utils';
77
77
  export { ASSERTION_STEP_TYPES, VISUAL_REGRESSION_STEP_TYPES, isAssertionStepType, isVisualRegressionStepType, } from './modules/steps/steps.utils';
78
- export { BugBugError, AuthenticationError, AuthorizationError, ValidationError, ConfigurationError, MissingProjectIdError, NotFoundError, RateLimitError, TimeoutError, NetworkError, CancellationError, InternalServerError, ServiceUnavailableError, UnexpectedResponseError, HttpError, isBugBugError, isAuthenticationError, isAuthorizationError, isValidationError, isConfigurationError, isMissingProjectIdError, isNotFoundError, isRateLimitError, isTimeoutError, isNetworkError, isCancellationError, isInternalServerError, isServiceUnavailableError, isUnexpectedResponseError, isHttpError, } from './types/errors';
78
+ export { BugBugError, AuthenticationError, AuthorizationError, SubscriptionError, ValidationError, ConfigurationError, MissingProjectIdError, NotFoundError, RateLimitError, TimeoutError, NetworkError, CancellationError, InternalServerError, ServiceUnavailableError, UnexpectedResponseError, HttpError, isBugBugError, isAuthenticationError, isAuthorizationError, isSubscriptionError, isValidationError, isConfigurationError, isMissingProjectIdError, isNotFoundError, isRateLimitError, isTimeoutError, isNetworkError, isCancellationError, isInternalServerError, isServiceUnavailableError, isUnexpectedResponseError, isHttpError, } from './types/errors';
79
79
  export type { RequestOrigin } from './types/errors';
80
80
  export { SDK_ERROR_CODES } from './constants/sdk-error-codes';
81
81
  export type { SdkErrorCode } from './constants/sdk-error-codes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAE5D;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,YAAY,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,YAAY,EACV,eAAe,EACf,4BAA4B,GAC7B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EACV,OAAO,EACP,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EACL,oCAAoC,EACpC,2CAA2C,GAC5C,MAAM,uDAAuD,CAAC;AAC/D,YAAY,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AAC9G,YAAY,EACV,8BAA8B,EAC9B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,KAAK,EACL,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,KAAK,EACL,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,IAAI,EACJ,iBAAiB,EACjB,OAAO,EACP,0BAA0B,EAC1B,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,mCAAmC,EACnC,kCAAkC,EAClC,8BAA8B,EAC9B,uCAAuC,EACvC,mCAAmC,EACnC,0CAA0C,EAC1C,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,cAAc,EACd,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -8006,6 +8006,7 @@ var isUuid = (value) => UUID_REGEX.test(value);
8006
8006
  var SDK_ERROR_CODES = {
8007
8007
  AUTHENTICATION_ERROR: "AUTHENTICATION_ERROR",
8008
8008
  AUTHORIZATION_ERROR: "AUTHORIZATION_ERROR",
8009
+ SUBSCRIPTION_ERROR: "SUBSCRIPTION_ERROR",
8009
8010
  VALIDATION_ERROR: "VALIDATION_ERROR",
8010
8011
  CONFIGURATION_ERROR: "CONFIGURATION_ERROR",
8011
8012
  MISSING_PROJECT_ID_ERROR: "MISSING_PROJECT_ID_ERROR",
@@ -8026,6 +8027,7 @@ var STATUS_CLIENT_CANCELLED = 499;
8026
8027
  // src/types/errors.ts
8027
8028
  var HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;
8028
8029
  var HTTP_STATUS_SERVICE_UNAVAILABLE = 503;
8030
+ var HTTP_STATUS_PAYMENT_REQUIRED = 402;
8029
8031
  var BugBugError = class _BugBugError extends Error {
8030
8032
  code;
8031
8033
  statusCode;
@@ -8081,6 +8083,20 @@ var AuthorizationError = class extends BugBugError {
8081
8083
  this.name = "AuthorizationError";
8082
8084
  }
8083
8085
  };
8086
+ var SubscriptionError = class extends BugBugError {
8087
+ constructor(message = "This operation is not available on your current plan. Upgrade your plan to continue.", response, request, upgradeUrl) {
8088
+ super(
8089
+ SDK_ERROR_CODES.SUBSCRIPTION_ERROR,
8090
+ message,
8091
+ response?.status ?? HTTP_STATUS_PAYMENT_REQUIRED,
8092
+ response,
8093
+ void 0,
8094
+ request
8095
+ );
8096
+ this.upgradeUrl = upgradeUrl;
8097
+ this.name = "SubscriptionError";
8098
+ }
8099
+ };
8084
8100
  var ValidationError = class extends BugBugError {
8085
8101
  fields;
8086
8102
  constructor(message, response, fields, request) {
@@ -8232,6 +8248,9 @@ function isAuthenticationError(error) {
8232
8248
  function isAuthorizationError(error) {
8233
8249
  return error instanceof AuthorizationError;
8234
8250
  }
8251
+ function isSubscriptionError(error) {
8252
+ return error instanceof SubscriptionError;
8253
+ }
8235
8254
  function isValidationError(error) {
8236
8255
  return error instanceof ValidationError;
8237
8256
  }
@@ -9577,7 +9596,7 @@ var buildUserAgent = (clientType, version) => `BugBug ${clientType.toUpperCase()
9577
9596
  // ../core/package.json
9578
9597
  var package_default = {
9579
9598
  name: "@bugbug-io/core",
9580
- version: "14.0.8",
9599
+ version: "14.2.0",
9581
9600
  private: true,
9582
9601
  type: "module",
9583
9602
  main: "dist/index.js",
@@ -10058,6 +10077,17 @@ function extractFieldErrors(body) {
10058
10077
  walk(body, "");
10059
10078
  return Object.keys(out).length > 0 ? out : void 0;
10060
10079
  }
10080
+ function extractSubscriptionUpgradeUrl(body) {
10081
+ const errorDetails = Array.isArray(body) ? body : [body];
10082
+ for (const errorDetail of errorDetails) {
10083
+ if (!errorDetail || typeof errorDetail !== "object") continue;
10084
+ const { params } = errorDetail;
10085
+ if (!params || typeof params !== "object") continue;
10086
+ const { upgradeUrl } = params;
10087
+ if (typeof upgradeUrl === "string") return upgradeUrl;
10088
+ }
10089
+ return void 0;
10090
+ }
10061
10091
  function formatApiErrorValue(value, path = "") {
10062
10092
  if (typeof value === "string") return value;
10063
10093
  if (typeof value === "number" || typeof value === "boolean") return String(value);
@@ -10282,6 +10312,7 @@ var BugBugApiClient = class {
10282
10312
  const errorMessage = formatApiErrorMessage(error);
10283
10313
  const errorBody = parseErrorBody(error);
10284
10314
  const fields = extractFieldErrors(errorBody);
10315
+ const subscriptionUpgradeUrl = extractSubscriptionUpgradeUrl(errorBody);
10285
10316
  switch (status) {
10286
10317
  case 401:
10287
10318
  throw new AuthenticationError(
@@ -10289,6 +10320,13 @@ var BugBugApiClient = class {
10289
10320
  response,
10290
10321
  request
10291
10322
  );
10323
+ case 402:
10324
+ throw new SubscriptionError(
10325
+ errorMessage || "This operation is not available on your current plan. Upgrade your plan to continue.",
10326
+ response,
10327
+ request,
10328
+ subscriptionUpgradeUrl
10329
+ );
10292
10330
  case 403:
10293
10331
  throw new AuthorizationError(
10294
10332
  errorMessage || "Access denied. Check your permissions.",
@@ -14971,6 +15009,7 @@ var StepTypeSchema = external_exports.enum([
14971
15009
  "hover",
14972
15010
  "ifCondition",
14973
15011
  "mouseDown",
15012
+ "mouseMove",
14974
15013
  "mouseUp",
14975
15014
  "newTab",
14976
15015
  "pageVisualRegression",
@@ -14982,7 +15021,7 @@ var StepTypeSchema = external_exports.enum([
14982
15021
  "switchContext",
14983
15022
  "type",
14984
15023
  "uploadFile"
14985
- ]).describe("Available step types: answerPrompt, assert, change, clear, click, dblClick, rightClick, closeTab, dragAndDrop, elementVisualRegression, execute, goto, goBack, goForward, hover, ifCondition, mouseDown, mouseUp, newTab, pageVisualRegression, pasteFromClipboard, reloadPage, scroll, select, setLocalVariable, switchContext, type, uploadFile.");
15024
+ ]).describe("Available step types: answerPrompt, assert, change, clear, click, dblClick, rightClick, closeTab, dragAndDrop, elementVisualRegression, execute, goto, goBack, goForward, hover, ifCondition, mouseDown, mouseMove, mouseUp, newTab, pageVisualRegression, pasteFromClipboard, reloadPage, scroll, select, setLocalVariable, switchContext, type, uploadFile.");
14986
15025
  var AssertionTypeSchema = external_exports.enum([
14987
15026
  "contain",
14988
15027
  "equal",
@@ -15253,6 +15292,17 @@ var MouseDownStepSchema = StepBaseSchema.extend({
15253
15292
  interactionPosition: InteractionPositionSchema.describe("Mouse-down position relative to the target element."),
15254
15293
  selectorsPresets: external_exports.array(SelectorsPresetSchema).describe("Target selectors used to locate the element.")
15255
15294
  });
15295
+ var MouseMoveStepSchema = StepBaseSchema.extend({
15296
+ type: external_exports.literal("mouseMove").describe("Move the mouse to an element or viewport coordinate."),
15297
+ isTargetDocument: external_exports.boolean().optional().describe("Whether to move relative to the viewport instead of a target element."),
15298
+ interactionPosition: InteractionPositionSchema.optional().describe("Position relative to the target element when isTargetDocument is false."),
15299
+ clientX: external_exports.number().nonnegative().nullable().optional().describe("X coordinate. Required by the API when isTargetDocument is true."),
15300
+ clientY: external_exports.number().nonnegative().nullable().optional().describe("Y coordinate. Required by the API when isTargetDocument is true."),
15301
+ mouseMoveSteps: external_exports.number().int().positive().nullable().optional().describe("Optional number of intermediate mouse-move events."),
15302
+ mouseButtons: external_exports.array(external_exports.enum(["left", "right", "middle", "back"])).optional().describe("Mouse buttons held while moving."),
15303
+ modifierKeys: external_exports.array(external_exports.enum(["ctrl", "shift", "alt", "meta"])).optional().describe("Keyboard modifier keys held while moving."),
15304
+ selectorsPresets: external_exports.array(SelectorsPresetSchema).optional().describe("Target selectors when moving relative to an element.")
15305
+ });
15256
15306
  var MouseUpStepSchema = StepBaseSchema.extend({
15257
15307
  type: external_exports.literal("mouseUp").describe("Release the mouse button on the targeted element."),
15258
15308
  interactionPosition: InteractionPositionSchema.describe("Mouse-up position relative to the target element."),
@@ -15344,6 +15394,7 @@ var allStepsSchemas = [
15344
15394
  HoverStepSchema,
15345
15395
  IfConditionStepSchema,
15346
15396
  MouseDownStepSchema,
15397
+ MouseMoveStepSchema,
15347
15398
  MouseUpStepSchema,
15348
15399
  NewTabStepSchema,
15349
15400
  PageVisualRegressionStepSchema,
@@ -15557,6 +15608,7 @@ export {
15557
15608
  StepTypeSchema,
15558
15609
  StepUpdateSchema,
15559
15610
  StepsModule,
15611
+ SubscriptionError,
15560
15612
  SuitesModule,
15561
15613
  TestsModule,
15562
15614
  TimeoutError,
@@ -15590,8 +15642,10 @@ export {
15590
15642
  isRateLimitError,
15591
15643
  isRunningStatus,
15592
15644
  isServiceUnavailableError,
15645
+ isSubscriptionError,
15593
15646
  isTimeoutError,
15594
15647
  isUnexpectedResponseError,
15595
15648
  isValidationError,
15596
15649
  isVisualRegressionStepType
15597
15650
  };
15651
+ //# sourceMappingURL=index.js.map