@muggleai/works 5.8.1 → 5.10.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.
Files changed (83) hide show
  1. package/README.md +8 -0
  2. package/dist/{chunk-5PYK7DWB.js → chunk-7NC2DJTK.js} +10 -4
  3. package/dist/{chunk-LVUJ4E62.js → chunk-OCLMXAVJ.js} +245 -167
  4. package/dist/cli.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  7. package/dist/plugin/.cursor-plugin/plugin.json +1 -1
  8. package/dist/plugin/README.md +19 -13
  9. package/dist/plugin/agents/test-prepare-runner.md +1 -0
  10. package/dist/plugin/hooks/hooks.json +6 -0
  11. package/dist/plugin/scripts/ensure-electron-app.sh +62 -47
  12. package/dist/plugin/scripts/guardrail-watch-gate.sh +40 -0
  13. package/dist/plugin/scripts/guardrails.mjs +88 -5
  14. package/dist/plugin/scripts/pr-watch-guards.sh +17 -0
  15. package/dist/plugin/skills/_shared/resolve-e2e-validation-context.md +1 -0
  16. package/dist/plugin/skills/muggle/SKILL.md +1 -1
  17. package/dist/plugin/skills/muggle-pr-followup/arm-watcher.md +5 -3
  18. package/dist/plugin/skills/muggle-pr-followup/blocked-tick.md +2 -2
  19. package/dist/plugin/skills/muggle-pr-followup/cancel-cron.md +5 -3
  20. package/dist/plugin/skills/muggle-pr-followup/contract.md +8 -2
  21. package/dist/plugin/skills/muggle-pr-followup/evals/evals.json +30 -3
  22. package/dist/plugin/skills/muggle-pr-followup/finalize.md +1 -1
  23. package/dist/plugin/skills/muggle-pr-followup/state-schemas.md +3 -1
  24. package/dist/plugin/skills/muggle-preferences/SKILL.md +1 -1
  25. package/dist/plugin/skills/muggle-preferences/evals/evals.json +45 -0
  26. package/dist/plugin/skills/muggle-preferences/ops/change-one.md +1 -1
  27. package/dist/plugin/skills/muggle-preferences/ops/configure.md +4 -5
  28. package/dist/plugin/skills/muggle-preferences/ops/list.md +1 -1
  29. package/dist/plugin/skills/muggle-preferences/ops/set.md +3 -4
  30. package/dist/plugin/skills/muggle-preferences/preference-gates/README.md +3 -3
  31. package/dist/plugin/skills/muggle-preferences/preference-gates/autoSelectLocalHost.md +2 -2
  32. package/dist/plugin/skills/muggle-preferences/preference-gates/autoSelectProject.md +1 -1
  33. package/dist/plugin/skills/muggle-test/SKILL.md +1 -1
  34. package/dist/plugin/skills/muggle-test/execute-local.md +2 -0
  35. package/dist/plugin/skills/muggle-test-feature-local/SKILL.md +3 -1
  36. package/dist/plugin/skills/muggle-test-import/SKILL.md +1 -1
  37. package/dist/plugin/skills/muggle-test-prepare/SKILL.md +10 -4
  38. package/dist/plugin/skills/muggle-test-prepare/steps/check-running.md +1 -1
  39. package/dist/plugin/skills/muggle-test-prepare/steps/e2e-instructions.md +100 -0
  40. package/dist/plugin/skills/muggle-test-prepare/steps/readiness-report.md +9 -4
  41. package/dist/plugin/skills/muggle-test-prepare/steps/reuse-plan.md +5 -4
  42. package/dist/plugin/skills/muggle-test-regenerate-missing/SKILL.md +1 -1
  43. package/dist/release-manifest.json +4 -4
  44. package/dist/src-AWUORQZZ.js +1 -0
  45. package/package.json +6 -6
  46. package/plugin/.claude-plugin/plugin.json +1 -1
  47. package/plugin/.cursor-plugin/plugin.json +1 -1
  48. package/plugin/README.md +19 -13
  49. package/plugin/agents/test-prepare-runner.md +1 -0
  50. package/plugin/hooks/hooks.json +6 -0
  51. package/plugin/scripts/ensure-electron-app.sh +62 -47
  52. package/plugin/scripts/guardrail-watch-gate.sh +40 -0
  53. package/plugin/scripts/guardrails.mjs +88 -5
  54. package/plugin/scripts/pr-watch-guards.sh +17 -0
  55. package/plugin/skills/_shared/resolve-e2e-validation-context.md +1 -0
  56. package/plugin/skills/muggle/SKILL.md +1 -1
  57. package/plugin/skills/muggle-pr-followup/arm-watcher.md +5 -3
  58. package/plugin/skills/muggle-pr-followup/blocked-tick.md +2 -2
  59. package/plugin/skills/muggle-pr-followup/cancel-cron.md +5 -3
  60. package/plugin/skills/muggle-pr-followup/contract.md +8 -2
  61. package/plugin/skills/muggle-pr-followup/evals/evals.json +30 -3
  62. package/plugin/skills/muggle-pr-followup/finalize.md +1 -1
  63. package/plugin/skills/muggle-pr-followup/state-schemas.md +3 -1
  64. package/plugin/skills/muggle-preferences/SKILL.md +1 -1
  65. package/plugin/skills/muggle-preferences/evals/evals.json +45 -0
  66. package/plugin/skills/muggle-preferences/ops/change-one.md +1 -1
  67. package/plugin/skills/muggle-preferences/ops/configure.md +4 -5
  68. package/plugin/skills/muggle-preferences/ops/list.md +1 -1
  69. package/plugin/skills/muggle-preferences/ops/set.md +3 -4
  70. package/plugin/skills/muggle-preferences/preference-gates/README.md +3 -3
  71. package/plugin/skills/muggle-preferences/preference-gates/autoSelectLocalHost.md +2 -2
  72. package/plugin/skills/muggle-preferences/preference-gates/autoSelectProject.md +1 -1
  73. package/plugin/skills/muggle-test/SKILL.md +1 -1
  74. package/plugin/skills/muggle-test/execute-local.md +2 -0
  75. package/plugin/skills/muggle-test-feature-local/SKILL.md +3 -1
  76. package/plugin/skills/muggle-test-import/SKILL.md +1 -1
  77. package/plugin/skills/muggle-test-prepare/SKILL.md +10 -4
  78. package/plugin/skills/muggle-test-prepare/steps/check-running.md +1 -1
  79. package/plugin/skills/muggle-test-prepare/steps/e2e-instructions.md +100 -0
  80. package/plugin/skills/muggle-test-prepare/steps/readiness-report.md +9 -4
  81. package/plugin/skills/muggle-test-prepare/steps/reuse-plan.md +5 -4
  82. package/plugin/skills/muggle-test-regenerate-missing/SKILL.md +1 -1
  83. package/dist/src-FDK2KQSZ.js +0 -1
package/README.md CHANGED
@@ -42,10 +42,18 @@ This installs:
42
42
  - `/muggle:muggle-do` — autonomous dev pipeline (requirements to PR)
43
43
  - `/muggle:muggle-test` — change-driven E2E acceptance testing (local or remote, with PR posting)
44
44
  - `/muggle:muggle-test-feature-local` — local quick E2E acceptance testing
45
+ - `/muggle:muggle-test-prepare` — verify and start the dev servers a test run needs
46
+ - `/muggle:muggle-test-import` — import existing Playwright/Cypress specs, PRDs, or feature files
45
47
  - `/muggle:muggle-test-regenerate-missing` — bulk-regenerate test scripts for every test case that has no active script
48
+ - `/muggle:muggle-browser-task` — perform a real action on a website from plain English
49
+ - `/muggle:muggle-pr-visual-walkthrough` — post screenshots and a pass/fail summary to a PR
50
+ - `/muggle:muggle-pr-followup` — watch a PR's review thread and address incoming feedback
51
+ - `/muggle:muggle-feedback` — flag a generated action script or step as wrong
52
+ - `/muggle:muggle-preferences` — view, set, or reset Muggle Test preferences
46
53
  - `/muggle:muggle-status` — health check for muggle-works plugins (Electron app, MCP server, and auth)
47
54
  - `/muggle:muggle-repair` — diagnose and fix broken installation
48
55
  - `/muggle:muggle-upgrade` — update to the latest version
56
+ - short aliases for every command above — `/m`, `/mdo`, `/mtest`, `/mtestlocal`, `/mtestprep`, `/mimport`, `/mregen`, `/mbt`, `/mpr`, `/mprfollowup`, `/mfeedback`, `/mprefs`, `/mstatus`, `/mrepair`, `/mupgrade`
49
57
  - MCP server with 70+ tools (auto-started)
50
58
  - Electron browser test runner provisioning (via session hook)
51
59
 
@@ -1,4 +1,4 @@
1
- import { __export, getLogger, getConfig, createChildLogger, buildElectronAppReleaseAssetUrl, getAuthService, hasApiKey, getElectronAppVersion, getElectronAppDir, getPlatformKey, isFirstRun, writePreferences, DEFAULT_PREFERENCES, getDataDir, PREFERENCES_FILE_NAME, isElectronAppInstalled, getElectronAppChecksums, getChecksumForPlatform, verifyFileChecksum, calculateFileChecksum, initTelemetry, Surface, ServiceName, track, EventName, getQaTools, getLocalQaTools, performLogout, performLogin, toolRequiresAuth, getCallerCredentials, hasShownDisclosure, getDisclosureCopy, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require } from './chunk-LVUJ4E62.js';
1
+ import { __export, getLogger, getConfig, createChildLogger, buildElectronAppReleaseAssetUrl, getAuthService, hasApiKey, getElectronAppVersion, getElectronAppDir, getPlatformKey, reconcileProjectPreferences, getDataDir, PREFERENCES_FILE_NAME, isFirstRun, writePreferences, DEFAULT_PREFERENCES, isElectronAppInstalled, getElectronAppChecksums, getChecksumForPlatform, verifyFileChecksum, calculateFileChecksum, initTelemetry, Surface, ServiceName, track, EventName, getQaTools, getLocalQaTools, performLogout, performLogin, toolRequiresAuth, getCallerCredentials, hasShownDisclosure, getDisclosureCopy, markDisclosureShown, getBundledElectronAppVersion, getElectronAppVersionSource, getCredentialsFilePath, buildElectronAppChecksumsUrl, __require } from './chunk-OCLMXAVJ.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';
@@ -751,7 +751,7 @@ async function resolveGsScreenshotUrls(report, opts) {
751
751
  if (gsUrls.length === 0) {
752
752
  return report;
753
753
  }
754
- const mcps = await import('./src-FDK2KQSZ.js');
754
+ const mcps = await import('./src-AWUORQZZ.js');
755
755
  const credentials = await mcps.getCallerCredentialsAsync();
756
756
  if (!credentials.bearerToken && !credentials.apiKey) {
757
757
  stderrWrite(
@@ -1883,10 +1883,16 @@ async function setupCommand(options) {
1883
1883
  const versionDir = getElectronAppDir(version);
1884
1884
  const platformKey = getPlatformKey();
1885
1885
  upsertCursorMcpConfig();
1886
+ const projectPreferencesReconcile = reconcileProjectPreferences(process.cwd());
1887
+ if (projectPreferencesReconcile.outcome === "copiedToGlobal" /* CopiedToGlobal */) {
1888
+ console.log(
1889
+ `Preferences are now user-level. Copied ${projectPreferencesReconcile.projectFilePath} to ${path.join(getDataDir(), PREFERENCES_FILE_NAME)}.`
1890
+ );
1891
+ }
1886
1892
  if (isFirstRun()) {
1887
- writePreferences(DEFAULT_PREFERENCES, "global");
1893
+ writePreferences(DEFAULT_PREFERENCES);
1888
1894
  console.log(`Default preferences written to ${path.join(getDataDir(), PREFERENCES_FILE_NAME)}`);
1889
- console.log("All preferences default to 'ask'. You can customize them anytime by editing the file or telling the agent to change a preference.");
1895
+ console.log("You can customize them anytime by editing the file or telling the agent to change a preference.");
1890
1896
  }
1891
1897
  if (!options.force && isElectronAppInstalled()) {
1892
1898
  console.log(`Electron app v${version} is already installed at ${versionDir}`);