@muggleai/works 5.14.0 → 5.15.0-staging.105

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, getDisclosureCopy, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require } from './chunk-H5UDFKG3.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, getDisclosureCopy, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require } from './chunk-J6VC26BI.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';
@@ -753,7 +753,7 @@ async function resolveGsScreenshotUrls(report, opts) {
753
753
  if (gsUrls.length === 0) {
754
754
  return report;
755
755
  }
756
- const mcps = await import('./src-KNYT7EHP.js');
756
+ const mcps = await import('./src-HWRBSSUF.js');
757
757
  const credentials = await mcps.getCallerCredentialsAsync();
758
758
  if (!credentials.bearerToken && !credentials.apiKey) {
759
759
  stderrWrite(
@@ -806,7 +806,7 @@ var withSentinel = (s) => s ? `${REPORT_SECTION_SENTINEL}
806
806
  ${s}` : s;
807
807
  async function resolveDashboardBaseUrl(stderrWrite) {
808
808
  try {
809
- const mcps = await import('./src-KNYT7EHP.js');
809
+ const mcps = await import('./src-HWRBSSUF.js');
810
810
  return `${mcps.resolveActiveProfile().uiBaseUrl}/dashboard/projects`;
811
811
  } catch (err) {
812
812
  stderrWrite(
@@ -4324,6 +4324,9 @@ var TestCaseDeleteInputSchema = z.object({
4324
4324
  var TestCaseAncestorsGetInputSchema = z.object({
4325
4325
  testCaseId: IdSchema.describe("Test case ID (UUID) to resolve the test-plan-graph ancestor chain for")
4326
4326
  });
4327
+ var TestPlanGraphRebuildInputSchema = z.object({
4328
+ projectId: IdSchema.describe("Project ID (UUID) whose test-plan graph should be rebuilt")
4329
+ });
4327
4330
  var TestCaseListByUseCaseInputSchema = z.object({
4328
4331
  useCaseId: IdSchema.describe("Use case ID (UUID) to list test cases for")
4329
4332
  });
@@ -5249,6 +5252,18 @@ var testCaseTools = [
5249
5252
  };
5250
5253
  }
5251
5254
  },
5255
+ {
5256
+ name: "muggle-remote-test-plan-graph-rebuild",
5257
+ description: "Queue a full rebuild of a project's test-plan dependency graph: every node is dropped and the dependency analysis runs again across the whole project. Needed because the incremental analysis only ever adds nodes for test cases that have none \u2014 a case already stored as a root stays a root even once a prerequisite for it exists, so a rebuild is the only way to re-derive those edges. Reach for this when muggle-remote-test-case-ancestors-get reports `orphan: true` across a project, which means nothing is ordering prerequisites and bulk replays are running cases that destroy each other's fixtures. Returns { projectId, workflowRuntimeId }: it resolves when the rebuild is QUEUED, not when it has finished, and it returns no graph \u2014 re-fetch the graph, or call muggle-remote-test-case-ancestors-get again, to observe the result.",
5258
+ inputSchema: TestPlanGraphRebuildInputSchema,
5259
+ mapToUpstream: (input) => {
5260
+ const toolInput = input;
5261
+ return {
5262
+ method: "POST",
5263
+ path: `${MUGGLE_TEST_PREFIX}/projects/${toolInput.projectId}/test-plan-graph/rebuild`
5264
+ };
5265
+ }
5266
+ },
5252
5267
  {
5253
5268
  name: "muggle-remote-test-case-list-by-use-case",
5254
5269
  description: "List test cases for a specific use case.",
@@ -7703,6 +7718,7 @@ __export(e2e_exports2, {
7703
7718
  TestCaseListByUseCaseInputSchema: () => TestCaseListByUseCaseInputSchema,
7704
7719
  TestCaseListInputSchema: () => TestCaseListInputSchema,
7705
7720
  TestCaseUpdateInputSchema: () => TestCaseUpdateInputSchema,
7721
+ TestPlanGraphRebuildInputSchema: () => TestPlanGraphRebuildInputSchema,
7706
7722
  TestScriptDeleteInputSchema: () => TestScriptDeleteInputSchema,
7707
7723
  TestScriptGetInputSchema: () => TestScriptGetInputSchema,
7708
7724
  TestScriptListInputSchema: () => TestScriptListInputSchema,
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { runCli } from './chunk-2YXBHSCP.js';
3
- import './chunk-H5UDFKG3.js';
2
+ import { runCli } from './chunk-GMNAD3B6.js';
3
+ import './chunk-J6VC26BI.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-2YXBHSCP.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-H5UDFKG3.js';
1
+ export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-GMNAD3B6.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-J6VC26BI.js';
@@ -12,6 +12,7 @@ Run once the target `testCaseId` is chosen and the local URL + services are conf
12
12
 
13
13
  1. **Resolve the chain.** `muggle-remote-test-case-ancestors-get` with the target `testCaseId`. Response: `{ testCaseId, ancestors, orphan }`.
14
14
  - `orphan: true` **or** empty `ancestors` → no prerequisites. Skip the rest; continue to Step 5.
15
+ One orphan is ordinary. **Every** case in a project reading `orphan: true` is not — it means the graph was never built, so nothing orders prerequisites and a bulk replay runs cases that destroy each other's fixtures (one empties a household another needs). Queue `muggle-remote-test-plan-graph-rebuild` for the project, then re-read the chain. It only queues the work, so the graph is not ready the moment it returns.
15
16
  - Otherwise `ancestors` is ordered **immediate-parent → root**. Reverse it to **root-first** so prerequisites are satisfied bottom-up.
16
17
 
17
18
  2. **For each ancestor, root-first:**
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "release": "5.13.1",
3
- "buildId": "run-103-1",
4
- "commitSha": "0ca6cf7623407bc11836f39529640129081de7d0",
5
- "buildTime": "2026-09-05T06:15:43Z",
3
+ "buildId": "run-105-1",
4
+ "commitSha": "a9e7e8cbb77fd8f9bb3f6c93f55a7b1509705c84",
5
+ "buildTime": "2026-09-08T23:57:01Z",
6
6
  "serviceName": "muggle-ai-works-mcp"
7
7
  }
@@ -1 +1 @@
1
- export { DEFAULT_PREFERENCES, ElectronAppReleaseStream, 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, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, calculateFileChecksum, 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, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, mcp_exports as mcp, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, reconcileProjectPreferences, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveElectronAppPathOrNull, resolvePreferences, resolveRuntimeTarget, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences } from './chunk-H5UDFKG3.js';
1
+ export { DEFAULT_PREFERENCES, ElectronAppReleaseStream, 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, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, calculateFileChecksum, 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, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, mcp_exports as mcp, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, reconcileProjectPreferences, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveElectronAppPathOrNull, resolvePreferences, resolveRuntimeTarget, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences } from './chunk-J6VC26BI.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.14.0",
4
+ "version": "5.15.0-staging.105",
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",
@@ -53,7 +53,7 @@
53
53
  "muggleConfig": {
54
54
  "electronAppVersion": "1.10.3",
55
55
  "downloadBaseUrl": "https://github.com/multiplex-ai/muggle-ai-works/releases/download",
56
- "runtimeTargetDefault": "production",
56
+ "runtimeTargetDefault": "staging",
57
57
  "checksumsByStream": {
58
58
  "production": {
59
59
  "win32-x64": "58e2238b1609ceff65b836b4b724b1c4c341d737a15debaa8a71af21b70bc436",
@@ -12,6 +12,7 @@ Run once the target `testCaseId` is chosen and the local URL + services are conf
12
12
 
13
13
  1. **Resolve the chain.** `muggle-remote-test-case-ancestors-get` with the target `testCaseId`. Response: `{ testCaseId, ancestors, orphan }`.
14
14
  - `orphan: true` **or** empty `ancestors` → no prerequisites. Skip the rest; continue to Step 5.
15
+ One orphan is ordinary. **Every** case in a project reading `orphan: true` is not — it means the graph was never built, so nothing orders prerequisites and a bulk replay runs cases that destroy each other's fixtures (one empties a household another needs). Queue `muggle-remote-test-plan-graph-rebuild` for the project, then re-read the chain. It only queues the work, so the graph is not ready the moment it returns.
15
16
  - Otherwise `ancestors` is ordered **immediate-parent → root**. Reverse it to **root-first** so prerequisites are satisfied bottom-up.
16
17
 
17
18
  2. **For each ancestor, root-first:**