@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.
- package/dist/{chunk-73AP7MJR.js → chunk-ODEPI25T.js} +3 -3
- package/dist/{chunk-UHA4WKV4.js → chunk-U6ZACW6K.js} +131 -56
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/.cursor-plugin/plugin.json +1 -1
- package/dist/release-manifest.json +3 -3
- package/dist/{src-WNUW6D34.js → src-C2IZ3MAZ.js} +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.cursor-plugin/plugin.json +1 -1
|
@@ -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-
|
|
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-
|
|
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-
|
|
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(
|
|
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
|
|
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 =
|
|
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:
|
|
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 =
|
|
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
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-
|
|
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-
|
|
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.
|
|
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.
|
|
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-
|
|
4
|
-
"commitSha": "
|
|
5
|
-
"buildTime": "2026-09-23T00:
|
|
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-
|
|
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.
|
|
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.
|
|
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.
|
|
5
|
+
"version": "5.19.0-staging.131",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|