@muggleai/works 5.19.0-staging.130 → 5.19.0-staging.131

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.
@@ -1,4 +1,4 @@
1
- import { __export, getLogger, getConfig, createChildLogger, buildElectronAppReleaseAssetUrl, getActiveRuntimeTarget, getAuthService, hasApiKey, getElectronAppVersion, getElectronAppDir, getPlatformKey, reconcileProjectPreferences, getDataDir, PREFERENCES_FILE_NAME, isFirstRun, writePreferences, DEFAULT_PREFERENCES, isElectronAppInstalled, getElectronAppChecksums, getChecksumForPlatform, getElectronAppSignedFromVersion, getReleaseSignerIdentityUri, verifyFileChecksum, calculateFileChecksum, initTelemetry, Surface, ServiceName, track, EventName, getQaTools, getLocalQaTools, performLogout, assertDeviceCodeClientProvisioned, performLogin, toolRequiresAuth, getCallerCredentials, hasShownDisclosure, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require, getDisclosureCopy, buildOnboardingPlan, applyOnboardingAnswers, needsOnboarding, OnboardingBlanketChoice, PreferenceKey } from './chunk-UHA4WKV4.js';
1
+ import { __export, getLogger, getConfig, createChildLogger, buildElectronAppReleaseAssetUrl, getActiveRuntimeTarget, getAuthService, hasApiKey, getElectronAppVersion, getElectronAppDir, getPlatformKey, reconcileProjectPreferences, getDataDir, PREFERENCES_FILE_NAME, isFirstRun, writePreferences, DEFAULT_PREFERENCES, isElectronAppInstalled, getElectronAppChecksums, getChecksumForPlatform, getElectronAppSignedFromVersion, getReleaseSignerIdentityUri, verifyFileChecksum, calculateFileChecksum, initTelemetry, Surface, ServiceName, track, EventName, getQaTools, getLocalQaTools, performLogout, assertDeviceCodeClientProvisioned, performLogin, toolRequiresAuth, getCallerCredentials, hasShownDisclosure, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require, getDisclosureCopy, buildOnboardingPlan, applyOnboardingAnswers, needsOnboarding, OnboardingBlanketChoice, PreferenceKey } from './chunk-U6ZACW6K.js';
2
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
3
  import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema } from '@modelcontextprotocol/sdk/types.js';
4
4
  import { v4 } from 'uuid';
@@ -754,7 +754,7 @@ async function resolveGsScreenshotUrls(report, opts) {
754
754
  if (gsUrls.length === 0) {
755
755
  return report;
756
756
  }
757
- const mcps = await import('./src-WNUW6D34.js');
757
+ const mcps = await import('./src-C2IZ3MAZ.js');
758
758
  const credentials = await mcps.getCallerCredentialsAsync();
759
759
  if (!credentials.bearerToken && !credentials.apiKey) {
760
760
  stderrWrite(
@@ -807,7 +807,7 @@ var withSentinel = (s) => s ? `${REPORT_SECTION_SENTINEL}
807
807
  ${s}` : s;
808
808
  async function resolveDashboardBaseUrl(stderrWrite) {
809
809
  try {
810
- const mcps = await import('./src-WNUW6D34.js');
810
+ const mcps = await import('./src-C2IZ3MAZ.js');
811
811
  return mcps.resolveActiveProfile().dashboardBaseUrl;
812
812
  } catch (err) {
813
813
  stderrWrite(
@@ -3907,23 +3907,10 @@ __export(e2e_exports, {
3907
3907
  executeQaTool: () => executeQaTool,
3908
3908
  getQaToolByName: () => getQaToolByName
3909
3909
  });
3910
-
3911
- var ENV_CONNECTION_STRING = "APPLICATIONINSIGHTS_CONNECTION_STRING";
3912
- var ENV_VITE_CONNECTION_STRING = "VITE_APPLICATIONINSIGHTS_CONNECTION_STRING";
3913
- var ENV_TELEMETRY_DISABLED = "MUGGLE_TELEMETRY_DISABLED";
3914
-
3915
- var DATA_DIR_NAME2 = ".muggle-ai";
3916
3910
  var INSTALL_ID_FILENAME = "install-id.json";
3917
- var PREFS_FILENAME = "preferences.json";
3918
- var OAUTH_SESSION_FILENAME = "oauth-session.json";
3919
- var RELEASE_MANIFEST_FILENAME = "release-manifest.json";
3920
- function getDataDir3() {
3921
- return path11.join(os4.homedir(), DATA_DIR_NAME2);
3922
- }
3923
-
3924
3911
  var cachedInstallId;
3925
3912
  function installIdFilePath() {
3926
- return join(getDataDir3(), INSTALL_ID_FILENAME);
3913
+ return join(getDataDir(), INSTALL_ID_FILENAME);
3927
3914
  }
3928
3915
  function generateAndPersist(filePath) {
3929
3916
  const installId = randomUUID();
@@ -3936,8 +3923,7 @@ function isValid(value) {
3936
3923
  return typeof value === "object" && value !== null && typeof value.installId === "string" && value.installId.length > 0;
3937
3924
  }
3938
3925
  function getInstallId() {
3939
- if (cachedInstallId !== void 0)
3940
- return cachedInstallId;
3926
+ if (cachedInstallId !== void 0) return cachedInstallId;
3941
3927
  const filePath = installIdFilePath();
3942
3928
  if (!existsSync(filePath)) {
3943
3929
  cachedInstallId = generateAndPersist(filePath);
@@ -3958,6 +3944,113 @@ function getInstallId() {
3958
3944
  }
3959
3945
  }
3960
3946
 
3947
+ // packages/mcps/src/shared/register.ts
3948
+ var CONFLICT_STATUS = 409;
3949
+ var THROTTLED_STATUS = 429;
3950
+ async function registerAccount(email, userProvidedPassword) {
3951
+ const logger6 = getLogger();
3952
+ const config = getConfig();
3953
+ const registerUrl = `${config.e2e.promptServiceBaseUrl}/v1/public/auth/register`;
3954
+ try {
3955
+ const response = await axios.post(
3956
+ registerUrl,
3957
+ {
3958
+ email,
3959
+ password: userProvidedPassword,
3960
+ installId: getInstallId()
3961
+ },
3962
+ { headers: { "Content-Type": "application/json" } }
3963
+ );
3964
+ const created = response.data;
3965
+ saveApiKey({ apiKey: created.apiKey, apiKeyId: created.userId });
3966
+ logger6.info("[Register] Account created and credential stored", {
3967
+ userId: created.userId,
3968
+ plan: created.plan
3969
+ });
3970
+ return {
3971
+ outcome: "created" /* Created */,
3972
+ userId: created.userId,
3973
+ email: created.email,
3974
+ plan: created.plan,
3975
+ emailVerified: created.emailVerified,
3976
+ tokensGranted: created.tokensGranted,
3977
+ tokensOnVerification: created.tokensOnVerification,
3978
+ credentialStored: true,
3979
+ message: `Account created on the ${created.plan} plan and the API key stored \u2014 remote tools will use it automatically. ${created.tokensGranted.toLocaleString()} tokens are available now. Verifying ${created.email} upgrades the account to the Starter package \u2014 free and permanent \u2014 and raises that to ${created.tokensOnVerification.toLocaleString()}.`
3980
+ };
3981
+ } catch (error) {
3982
+ const status = axios.isAxiosError(error) ? error.response?.status : void 0;
3983
+ if (status === CONFLICT_STATUS) {
3984
+ return {
3985
+ outcome: "already-registered" /* AlreadyRegistered */,
3986
+ message: "An account already exists for this email. Use muggle-remote-auth-login to sign in instead."
3987
+ };
3988
+ }
3989
+ if (status === THROTTLED_STATUS) {
3990
+ const retryAfterSeconds = axios.isAxiosError(error) ? error.response?.data?.retryAfterSeconds : void 0;
3991
+ return {
3992
+ outcome: "throttled" /* Throttled */,
3993
+ retryAfterSeconds,
3994
+ message: retryAfterSeconds ? `Too many registrations from this machine. Try again in ${retryAfterSeconds} seconds.` : "Too many registrations from this machine. Try again later."
3995
+ };
3996
+ }
3997
+ logger6.error("[Register] Registration failed", {
3998
+ error: error instanceof Error ? error.message : String(error)
3999
+ });
4000
+ throw error;
4001
+ }
4002
+ }
4003
+
4004
+ var ENV_CONNECTION_STRING = "APPLICATIONINSIGHTS_CONNECTION_STRING";
4005
+ var ENV_VITE_CONNECTION_STRING = "VITE_APPLICATIONINSIGHTS_CONNECTION_STRING";
4006
+ var ENV_TELEMETRY_DISABLED = "MUGGLE_TELEMETRY_DISABLED";
4007
+
4008
+ var DATA_DIR_NAME2 = ".muggle-ai";
4009
+ var INSTALL_ID_FILENAME2 = "install-id.json";
4010
+ var PREFS_FILENAME = "preferences.json";
4011
+ var OAUTH_SESSION_FILENAME = "oauth-session.json";
4012
+ var RELEASE_MANIFEST_FILENAME = "release-manifest.json";
4013
+ function getDataDir3() {
4014
+ return path11.join(os4.homedir(), DATA_DIR_NAME2);
4015
+ }
4016
+
4017
+ var cachedInstallId2;
4018
+ function installIdFilePath2() {
4019
+ return join(getDataDir3(), INSTALL_ID_FILENAME2);
4020
+ }
4021
+ function generateAndPersist2(filePath) {
4022
+ const installId = randomUUID();
4023
+ const contents = { installId };
4024
+ mkdirSync(dirname(filePath), { recursive: true });
4025
+ writeFileSync(filePath, JSON.stringify(contents, null, 2) + "\n", "utf8");
4026
+ return installId;
4027
+ }
4028
+ function isValid2(value) {
4029
+ return typeof value === "object" && value !== null && typeof value.installId === "string" && value.installId.length > 0;
4030
+ }
4031
+ function getInstallId2() {
4032
+ if (cachedInstallId2 !== void 0)
4033
+ return cachedInstallId2;
4034
+ const filePath = installIdFilePath2();
4035
+ if (!existsSync(filePath)) {
4036
+ cachedInstallId2 = generateAndPersist2(filePath);
4037
+ return cachedInstallId2;
4038
+ }
4039
+ try {
4040
+ const raw = readFileSync(filePath, "utf8");
4041
+ const parsed = JSON.parse(raw);
4042
+ if (isValid2(parsed)) {
4043
+ cachedInstallId2 = parsed.installId;
4044
+ return cachedInstallId2;
4045
+ }
4046
+ cachedInstallId2 = generateAndPersist2(filePath);
4047
+ return cachedInstallId2;
4048
+ } catch {
4049
+ cachedInstallId2 = generateAndPersist2(filePath);
4050
+ return cachedInstallId2;
4051
+ }
4052
+ }
4053
+
3961
4054
  var DEV_MANIFEST2 = {
3962
4055
  release: "dev",
3963
4056
  buildId: "dev",
@@ -3974,7 +4067,7 @@ var MANIFEST_PATH2 = (() => {
3974
4067
  }
3975
4068
  })();
3976
4069
  var cachedManifest2;
3977
- function isValid2(value) {
4070
+ function isValid3(value) {
3978
4071
  if (typeof value !== "object" || value === null)
3979
4072
  return false;
3980
4073
  const m = value;
@@ -3987,7 +4080,7 @@ function readReleaseManifest2() {
3987
4080
  try {
3988
4081
  const raw = readFileSync(path17, "utf8");
3989
4082
  const parsed = JSON.parse(raw);
3990
- cachedManifest2 = isValid2(parsed) ? parsed : DEV_MANIFEST2;
4083
+ cachedManifest2 = isValid3(parsed) ? parsed : DEV_MANIFEST2;
3991
4084
  return cachedManifest2;
3992
4085
  } catch (err) {
3993
4086
  const code = err.code;
@@ -4032,7 +4125,7 @@ function buildCommonProperties(serviceName, surface) {
4032
4125
  buildId: manifest.buildId,
4033
4126
  commitSha: manifest.commitSha,
4034
4127
  buildTime: manifest.buildTime,
4035
- installId: getInstallId(),
4128
+ installId: getInstallId2(),
4036
4129
  nodeVersion: process.version,
4037
4130
  platform: process.platform
4038
4131
  };
@@ -4673,6 +4766,10 @@ var AuthLoginInputSchema = z.object({
4673
4766
  timeoutMs: z.number().int().positive().min(1e3).max(9e5).optional().describe("Maximum time to wait for login completion in milliseconds. Default: 120000"),
4674
4767
  forceNewSession: z.boolean().optional().describe("Force a fresh login by clearing any existing Auth0 browser session before redirecting to the device activation page. Use this to switch accounts. Default: false")
4675
4768
  });
4769
+ var AuthRegisterInputSchema = z.object({
4770
+ email: z.string().email().describe("Email address to register the new Muggle AI account under"),
4771
+ password: z.string().min(8).describe("Password for the new account, at least 8 characters. Sent once and not stored locally.")
4772
+ });
4676
4773
  var AuthPollInputSchema = z.object({
4677
4774
  deviceCode: z.string().optional().describe("Device code from the login response. Optional if a login was recently started.")
4678
4775
  });
@@ -4720,42 +4817,6 @@ function detectMcpHost(env = process.env) {
4720
4817
  }
4721
4818
  return "unknown";
4722
4819
  }
4723
- var INSTALL_ID_FILENAME2 = "install-id.json";
4724
- var cachedInstallId2;
4725
- function installIdFilePath2() {
4726
- return join(getDataDir(), INSTALL_ID_FILENAME2);
4727
- }
4728
- function generateAndPersist2(filePath) {
4729
- const installId = randomUUID();
4730
- const contents = { installId };
4731
- mkdirSync(dirname(filePath), { recursive: true });
4732
- writeFileSync(filePath, JSON.stringify(contents, null, 2) + "\n", "utf8");
4733
- return installId;
4734
- }
4735
- function isValid3(value) {
4736
- return typeof value === "object" && value !== null && typeof value.installId === "string" && value.installId.length > 0;
4737
- }
4738
- function getInstallId2() {
4739
- if (cachedInstallId2 !== void 0) return cachedInstallId2;
4740
- const filePath = installIdFilePath2();
4741
- if (!existsSync(filePath)) {
4742
- cachedInstallId2 = generateAndPersist2(filePath);
4743
- return cachedInstallId2;
4744
- }
4745
- try {
4746
- const raw = readFileSync(filePath, "utf8");
4747
- const parsed = JSON.parse(raw);
4748
- if (isValid3(parsed)) {
4749
- cachedInstallId2 = parsed.installId;
4750
- return cachedInstallId2;
4751
- }
4752
- cachedInstallId2 = generateAndPersist2(filePath);
4753
- return cachedInstallId2;
4754
- } catch {
4755
- cachedInstallId2 = generateAndPersist2(filePath);
4756
- return cachedInstallId2;
4757
- }
4758
- }
4759
4820
 
4760
4821
  // packages/mcps/src/mcp/e2e/upstream-client.ts
4761
4822
  var MUTATING_METHODS = ["POST", "PUT", "PATCH", "DELETE"];
@@ -4806,7 +4867,7 @@ var PromptServiceClient = class {
4806
4867
  */
4807
4868
  buildHeaders(credentials, correlationId) {
4808
4869
  const manifest = readReleaseManifest();
4809
- const installId = getInstallId2();
4870
+ const installId = getInstallId();
4810
4871
  const host = detectMcpHost();
4811
4872
  const headers = {
4812
4873
  "X-Correlation-Id": correlationId,
@@ -6526,6 +6587,19 @@ var userFeedbackTools = [
6526
6587
  }
6527
6588
  ];
6528
6589
  var authTools = [
6590
+ {
6591
+ name: "muggle-remote-auth-register",
6592
+ description: "Create a new Muggle AI account from an email and password and start using E2E features on the free plan immediately \u2014 no browser, no human step. Verifying the address on that account upgrades it to the Starter package for free and permanently, raising the monthly token allowance tenfold; the account keeps working unverified, with less. Use this when there is no account yet; use muggle-remote-auth-login when one already exists. The API key it returns is stored automatically, so remote tools work straight afterwards.",
6593
+ inputSchema: AuthRegisterInputSchema,
6594
+ requiresAuth: false,
6595
+ mapToUpstream: () => {
6596
+ throw new Error("LOCAL_HANDLER_ONLY");
6597
+ },
6598
+ localHandler: async (input) => {
6599
+ const authRegisterInput = input;
6600
+ return registerAccount(authRegisterInput.email, authRegisterInput.password);
6601
+ }
6602
+ },
6529
6603
  {
6530
6604
  name: "muggle-remote-auth-status",
6531
6605
  description: "Check current authentication status. Shows if you're logged in and when your session expires.",
@@ -7811,6 +7885,7 @@ __export(e2e_exports2, {
7811
7885
  ApiKeyRevokeInputSchema: () => ApiKeyRevokeInputSchema,
7812
7886
  AuthLoginInputSchema: () => AuthLoginInputSchema,
7813
7887
  AuthPollInputSchema: () => AuthPollInputSchema,
7888
+ AuthRegisterInputSchema: () => AuthRegisterInputSchema,
7814
7889
  BulkPreviewJobCancelInputSchema: () => BulkPreviewJobCancelInputSchema,
7815
7890
  BulkPreviewJobGetInputSchema: () => BulkPreviewJobGetInputSchema,
7816
7891
  BulkPreviewJobKindSchema: () => BulkPreviewJobKindSchema,
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { runCli } from './chunk-73AP7MJR.js';
3
- import './chunk-UHA4WKV4.js';
2
+ import { runCli } from './chunk-ODEPI25T.js';
3
+ import './chunk-U6ZACW6K.js';
4
4
 
5
5
  // src/cli/main.ts
6
6
  runCli().catch((error) => {
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-73AP7MJR.js';
2
- export { createChildLogger, e2e_exports as e2e, getConfig, getLocalQaTools, getLogger, getQaTools, local_exports as localQa, mcp_exports as mcp, e2e_exports as qa, src_exports as shared } from './chunk-UHA4WKV4.js';
1
+ export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-ODEPI25T.js';
2
+ export { createChildLogger, e2e_exports as e2e, getConfig, getLocalQaTools, getLogger, getQaTools, local_exports as localQa, mcp_exports as mcp, e2e_exports as qa, src_exports as shared } from './chunk-U6ZACW6K.js';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "muggle",
3
3
  "description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
4
- "version": "5.19.0-staging.130",
4
+ "version": "5.19.0-staging.131",
5
5
  "author": {
6
6
  "name": "Muggle AI",
7
7
  "email": "support@muggle-ai.com"
@@ -2,7 +2,7 @@
2
2
  "name": "muggle",
3
3
  "displayName": "Muggle AI",
4
4
  "description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
5
- "version": "5.19.0-staging.130",
5
+ "version": "5.19.0-staging.131",
6
6
  "author": {
7
7
  "name": "Muggle AI",
8
8
  "email": "support@muggle-ai.com"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "release": "5.18.0",
3
- "buildId": "run-130-1",
4
- "commitSha": "aa21e8426fff7b630fa3492cf73d333e966d875f",
5
- "buildTime": "2026-09-23T00:02:09Z",
3
+ "buildId": "run-131-1",
4
+ "commitSha": "2a9c35dcbe2ea26e25e420774ef737accd505c5d",
5
+ "buildTime": "2026-09-23T00:34:07Z",
6
6
  "serviceName": "muggle-ai-works-mcp"
7
7
  }
@@ -1 +1 @@
1
- export { DEFAULT_PREFERENCES, ElectronAppReleaseStream, ONBOARDING_BLANKET_OPTIONS, ONBOARDING_CHOICE_GROUPS, ONBOARDING_MAX_OFFERS, ONBOARDING_PRIMER_BULLETS, ONBOARDING_PRIMER_HEADLINE, ONBOARDING_TOGGLE_GROUPS, ONBOARDING_TOGGLE_PROMPT, ONBOARDING_UNSELECTED_TOGGLE_VALUE, OnboardingBlanketChoice, OnboardingGroupKind, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, ProjectPreferencesReconcileOutcome, RuntimeTarget, WATCHER_LIFETIME_SECONDS, WATCHER_LIFETIME_UNBOUNDED_SECONDS, applyOnboardingAnswers, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, buildOnboardingPlan, calculateFileChecksum, completeOnboarding, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getActiveElectronAppReleaseStream, getActiveRuntimeTarget, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppReleaseTagPrefix, getElectronAppSignedFromVersion, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getOnboardingToggleKeys, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, markOnboardingCompleted, mcp_exports as mcp, needsOnboarding, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readPreferencesMetadata, reconcileProjectPreferences, recordOnboardingSkip, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveBlanketPreferences, resolveElectronAppPathOrNull, resolveOnboardingAnswers, resolvePreferences, resolveRuntimeTarget, resolveTogglePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences, writePreferencesWithMetadata } from './chunk-UHA4WKV4.js';
1
+ export { DEFAULT_PREFERENCES, ElectronAppReleaseStream, ONBOARDING_BLANKET_OPTIONS, ONBOARDING_CHOICE_GROUPS, ONBOARDING_MAX_OFFERS, ONBOARDING_PRIMER_BULLETS, ONBOARDING_PRIMER_HEADLINE, ONBOARDING_TOGGLE_GROUPS, ONBOARDING_TOGGLE_PROMPT, ONBOARDING_UNSELECTED_TOGGLE_VALUE, OnboardingBlanketChoice, OnboardingGroupKind, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, ProjectPreferencesReconcileOutcome, RuntimeTarget, WATCHER_LIFETIME_SECONDS, WATCHER_LIFETIME_UNBOUNDED_SECONDS, applyOnboardingAnswers, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, buildOnboardingPlan, calculateFileChecksum, completeOnboarding, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getActiveElectronAppReleaseStream, getActiveRuntimeTarget, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppReleaseTagPrefix, getElectronAppSignedFromVersion, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getOnboardingToggleKeys, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, markOnboardingCompleted, mcp_exports as mcp, needsOnboarding, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readPreferencesMetadata, reconcileProjectPreferences, recordOnboardingSkip, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveBlanketPreferences, resolveElectronAppPathOrNull, resolveOnboardingAnswers, resolvePreferences, resolveRuntimeTarget, resolveTogglePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences, writePreferencesWithMetadata } from './chunk-U6ZACW6K.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@muggleai/works",
3
3
  "mcpName": "io.github.multiplex-ai/muggle",
4
- "version": "5.19.0-staging.130",
4
+ "version": "5.19.0-staging.131",
5
5
  "description": "Ship quality products with AI-powered E2E acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "muggle",
3
3
  "description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
4
- "version": "5.19.0-staging.130",
4
+ "version": "5.19.0-staging.131",
5
5
  "author": {
6
6
  "name": "Muggle AI",
7
7
  "email": "support@muggle-ai.com"
@@ -2,7 +2,7 @@
2
2
  "name": "muggle",
3
3
  "displayName": "Muggle AI",
4
4
  "description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
5
- "version": "5.19.0-staging.130",
5
+ "version": "5.19.0-staging.131",
6
6
  "author": {
7
7
  "name": "Muggle AI",
8
8
  "email": "support@muggle-ai.com"