@wa008/ui-audit-mcp 2.0.0 → 2.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.
@@ -1,5 +1,5 @@
1
1
  import { ChecklistItem } from "../types.js";
2
- /** System-wide UI quality audit dimensions */
2
+ /** System-wide UI quality audit dimensions — strict scoring */
3
3
  export declare const DIMENSIONS: ChecklistItem[];
4
4
  export declare const REQUIRED_DIMS: string[];
5
5
  export declare const PASSING_SCORE = 8;
@@ -1 +1 @@
1
- {"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,8CAA8C;AAC9C,eAAO,MAAM,UAAU,EAAE,aAAa,EAyErC,CAAC;AAEF,eAAO,MAAM,aAAa,UAA4B,CAAC;AACvD,eAAO,MAAM,aAAa,IAAI,CAAC"}
1
+ {"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,aAAa,EA+GrC,CAAC;AAEF,eAAO,MAAM,aAAa,UAA4B,CAAC;AACvD,eAAO,MAAM,aAAa,IAAI,CAAC"}
@@ -1,68 +1,104 @@
1
- /** System-wide UI quality audit dimensions */
1
+ /** System-wide UI quality audit dimensions — strict scoring */
2
2
  export const DIMENSIONS = [
3
3
  {
4
4
  id: "overlap",
5
5
  name: "Element Overlap & Safe Areas",
6
- description: "Focus ONLY on whether UI elements physically cover or obscure each other. " +
7
- "Examine the following in order:\n" +
8
- "1. STATUS BAR: Does any app content (header, button, text) intrude into the system status bar area (time, battery, signal icons)? Even 1px overlap is a critical failure.\n" +
9
- "2. NOTCH / DYNAMIC ISLAND: Is any content hidden behind the notch or Dynamic Island?\n" +
10
- "3. HOME INDICATOR: Does any bottom content overlap with the home indicator bar?\n" +
11
- "4. INTER-ELEMENT OVERLAP: Do any buttons, text fields, images, or cards overlap each other within the app content area?\n" +
12
- "5. MODAL / POPUP: If a modal or popup is present, does it unintentionally cover critical information behind it?\n" +
13
- "NOTE: Do NOT evaluate spacing aesthetics (that is layout), color choices (that is style), or text readability (that is info_clarity).",
14
- scoringGuide: "0-3: Critical overlap detected elements cover system UI or each other, causing functional obstruction.\n" +
15
- "4-6: Minor overlap exists but does not block core functionality.\n" +
16
- "7-8: No overlap detected, but margins against safe areas are uncomfortably tight (< 4pt).\n" +
17
- "9-10: Perfect all elements are fully within safe areas with comfortable margins, zero overlap.",
6
+ description: "You are a strict QA inspector. Your job is to find overlap problems, not to praise the UI.\n" +
7
+ "Assume there ARE problems until you have carefully verified every region.\n\n" +
8
+ "CHECK EACH REGION METHODICALLY report what you see in each:\n" +
9
+ "1. TOP-RIGHT CORNER: Is there ANY element (button, icon, badge) that sits within or touches the status bar zone or Dynamic Island area? " +
10
+ "Look very carefully at the vertical position of the topmost UI element on the right side. " +
11
+ "If its top edge is within ~54pt of the screen top on a notch/Dynamic Island device, it is overlapping. This is a CRITICAL failure.\n" +
12
+ "2. TOP-LEFT CORNER: Same check any element intruding into the status bar time/signal area?\n" +
13
+ "3. STATUS BAR ZONE: Does ANY app content (text, header background, button) extend behind the system time, battery, or signal indicators? Even partial intrusion = failure.\n" +
14
+ "4. BOTTOM SAFE AREA: Does any content overlap with the home indicator bar?\n" +
15
+ "5. INTER-ELEMENT: Do any two app elements (buttons, text, images, cards) visually overlap each other?\n" +
16
+ "6. MODAL/POPUP: If present, does it unintentionally cover critical content?\n\n" +
17
+ "SCORING ATTITUDE: If you are unsure whether something overlaps, score LOW. " +
18
+ "The purpose of this audit is to catch problems, not to give the benefit of the doubt.\n" +
19
+ "NOTE: Do NOT evaluate spacing aesthetics (layout), colors (style), or text meaning (info_clarity).",
20
+ scoringGuide: "0-2: Any element overlaps status bar, Dynamic Island, notch, or home indicator. Or two elements clearly cover each other.\n" +
21
+ "3-4: An element is dangerously close to a safe area boundary (<8pt margin) — likely overlapping on some devices.\n" +
22
+ "5-6: All elements are within safe areas but margins are tight (<12pt). Risk of overlap on larger text sizes or different devices.\n" +
23
+ "7-8: All elements are clearly within safe areas with comfortable margins (>=16pt). No inter-element overlap detected.\n" +
24
+ "9-10: Perfect — generous safe area margins on all sides, zero overlap risk. ONLY give 9-10 if you are absolutely certain after checking every corner.",
18
25
  },
19
26
  {
20
27
  id: "layout",
21
28
  name: "Layout & Spatial Balance",
22
- description: "Focus ONLY on how the screen space is utilized and whether elements are spatially well-arranged. " +
23
- "Examine the following in order:\n" +
24
- "1. LETTERBOXING: Does the app appear to run inside a smaller box with large black/empty bars at the top and bottom? This is a critical failure (score 0).\n" +
25
- "2. SCREEN FILL: Does the content naturally fill the available screen area without feeling cramped or empty?\n" +
26
- "3. WHITESPACE BALANCE: Is the whitespace distributed evenly? Are there large, unexplained empty gaps on one side while the other side is dense?\n" +
27
- "4. ALIGNMENT: Are related elements (labels, inputs, buttons) aligned to a consistent vertical or horizontal axis? Look for jagged left edges or uneven column widths.\n" +
28
- "5. SPACING CONSISTENCY: Are the gaps between similar elements (e.g., list items, card margins) uniform?\n" +
29
- "NOTE: Do NOT evaluate whether elements cover each other (that is overlap), color or font choices (that is style), or text meaning (that is info_clarity).",
30
- scoringGuide: "0-3: Letterboxing detected, or layout is severely broken (elements piled up, massive empty areas).\n" +
31
- "4-6: Layout is functional but has noticeable imbalance uneven spacing, misaligned elements, or wasted space.\n" +
32
- "7-8: Generally well-structured, but minor spacing or alignment imperfections exist.\n" +
33
- "9-10: Perfectbalanced whitespace, consistent spacing, strong alignment, content fills screen naturally.",
29
+ description: "You are a strict QA inspector for layout quality. Your job is to find spatial problems.\n" +
30
+ "Assume the layout has issues until you verify otherwise.\n\n" +
31
+ "CHECK EACH ASPECT:\n" +
32
+ "1. LETTERBOXING: Does the app appear to run inside a smaller box with black/empty bars? This is score 0, no exceptions.\n" +
33
+ "2. SCREEN UTILIZATION: Is there a large empty area that serves no purpose? Is content crammed into only half the screen while the rest is wasted?\n" +
34
+ "3. ALIGNMENT: Pick any two similar elements (e.g., two cards, two labels). Are their left edges aligned? Are the gaps between them equal? Misalignment = deduction.\n" +
35
+ "4. SPACING: Are gaps between elements consistent? Measure visually: if card A-to-B gap looks different from card B-to-C gap, that is a problem.\n" +
36
+ "5. RESPONSIVE FIT: Does the layout feel designed for this screen size, or does it look like it was designed for a different device?\n\n" +
37
+ "SCORING ATTITUDE: Do not be generous. A 'basically fine' layout is a 6, not an 8.\n" +
38
+ "NOTE: Do NOT evaluate overlap (that is overlap), colors (that is style), or text meaning (that is info_clarity).",
39
+ scoringGuide: "0-2: Letterboxing detected, or layout is severely broken (elements piled up, massive empty areas, content off-screen).\n" +
40
+ "3-4: Major layout issues clearly uneven spacing, significant misalignment, or large wasted areas.\n" +
41
+ "5-6: Layout is functional but has noticeable imperfections — some uneven spacing or minor alignment issues. This is the 'OK but not great' range.\n" +
42
+ "7-8: Well-structured layout with only very minor imperfections that require careful inspection to notice.\n" +
43
+ "9-10: Flawless — pixel-perfect alignment, perfectly consistent spacing, optimal screen utilization. Extremely rare.",
34
44
  },
35
45
  {
36
46
  id: "info_clarity",
37
47
  name: "Information Clarity & Readability",
38
- description: "Focus ONLY on whether a user can quickly understand what this screen communicates and what action to take. " +
39
- "Examine the following in order:\n" +
40
- "1. PRIMARY CTA: Is there a clear primary call-to-action? Can the user instantly identify what to do next?\n" +
41
- "2. INFORMATION HIERARCHY: Are headings visually dominant over body text? Is the most important information the most prominent?\n" +
42
- "3. TEXT TRUNCATION: Is any text cut off with '...' or overflowing its container, losing meaningful content?\n" +
43
- "4. LABEL AMBIGUITY: Are button labels, icon meanings, or tab names confusing or misleading? Would a first-time user understand what each element does?\n" +
44
- "5. CONTRAST & READABILITY: Is text legible against its background? Are there low-contrast text areas that are hard to read?\n" +
45
- "NOTE: Do NOT evaluate spacing or alignment (that is layout), element overlap (that is overlap), or color harmony (that is style).",
46
- scoringGuide: "0-3: Key information is impossible to find, CTA is absent or hidden, or labels are severely misleading.\n" +
47
- "4-6: Information is present but requires effort to parse — weak hierarchy, some ambiguous labels, or minor truncation.\n" +
48
- "7-8: Generally clear with good hierarchy, but 1-2 minor issues (e.g., one slightly ambiguous icon).\n" +
49
- "9-10: Perfect immediate clarity, strong hierarchy, unambiguous labels, fully legible text, obvious CTA.",
48
+ description: "You are a strict QA inspector for information clarity. Your job is to find confusing elements.\n" +
49
+ "Imagine you are a FIRST-TIME user of this app who has never seen it before.\n\n" +
50
+ "CHECK EACH ASPECT:\n" +
51
+ "1. FIRST IMPRESSION: Within 2 seconds of looking at this screen, can you tell what it does and what the main action is? If not, that is a problem.\n" +
52
+ "2. BUTTON LABELS: Read every button/link text. Would a first-time user understand what each does? 'Submit' is clearer than a bare icon.\n" +
53
+ "3. HIERARCHY: Is the most important element (title, CTA) visually the most prominent? Or is secondary info competing for attention?\n" +
54
+ "4. TEXT TRUNCATION: Is any text cut off with '...' or overflowing? Even one truncated label = deduction.\n" +
55
+ "5. CONTRAST: Is all text easily readable against its background? Check small/light text especially.\n" +
56
+ "6. ICON MEANING: Are there any icons without labels that could be ambiguous?\n\n" +
57
+ "SCORING ATTITUDE: If any single element is confusing, cap the score at 7. " +
58
+ "Multiple unclear elements = score 5 or below.\n" +
59
+ "NOTE: Do NOT evaluate spacing (layout), overlap (overlap), or color harmony (style).",
60
+ scoringGuide: "0-2: Screen purpose is unclear, CTA is missing/hidden, or labels are severely misleading.\n" +
61
+ "3-4: Core purpose is guessable but requires effort. Multiple ambiguous labels or icons.\n" +
62
+ "5-6: Generally understandable but has 1-2 confusing elements (ambiguous icon, truncated text, weak hierarchy).\n" +
63
+ "7-8: Clear and well-organized with only one very minor issue. First-time user would understand immediately.\n" +
64
+ "9-10: Crystal clear — perfect hierarchy, unambiguous labels, no truncation, excellent contrast. Every element self-explanatory.",
50
65
  },
51
66
  {
52
67
  id: "style",
53
68
  name: "Visual Style & Consistency",
54
- description: "Focus ONLY on the visual aesthetics and design consistency of this single screen. " +
55
- "Examine the following in order:\n" +
56
- "1. COLOR PALETTE: Are the colors harmonious? Do primary, secondary, and accent colors feel intentional and cohesive, or do they clash?\n" +
57
- "2. TYPOGRAPHY: Are font sizes, weights, and families consistent across the screen? Do headings, body text, and captions follow a clear typographic scale?\n" +
58
- "3. COMPONENT CONSISTENCY: Do similar components (buttons, cards, input fields) share the same visual treatment (corner radius, shadow, border style)?\n" +
59
- "4. ICONOGRAPHY: Do icons share a consistent style (outline vs filled, stroke width, size)?\n" +
60
- "5. OVERALL POLISH: Does the screen feel professionally designed, or does it look like a rough prototype with placeholder styling?\n" +
61
- "NOTE: Do NOT evaluate information meaning (that is info_clarity), spatial arrangement (that is layout), or element occlusion (that is overlap).",
62
- scoringGuide: "0-3: No coherent visual styleclashing colors, mixed icon styles, inconsistent component design.\n" +
63
- "4-6: A basic style exists but with noticeable inconsistencies (e.g., two different button styles, uneven font weights).\n" +
64
- "7-8: Mostly consistent and polished, with only minor deviations.\n" +
65
- "9-10: Perfect unified color scheme, consistent typography, cohesive component design, professional polish.",
69
+ description: "You are a strict QA inspector for visual design consistency. Your job is to find inconsistencies.\n" +
70
+ "Compare every element against every other element of the same type.\n\n" +
71
+ "CHECK EACH ASPECT:\n" +
72
+ "1. COLOR PALETTE: Count the number of distinct colors used. Do they feel intentional and harmonious, or random?\n" +
73
+ "2. TYPOGRAPHY: Are there more than 2 font sizes that don't follow a clear scale? Mixed font weights without reason?\n" +
74
+ "3. COMPONENT STYLING: Compare all buttons same corner radius? Same padding? Compare all cards — same shadow, border, background?\n" +
75
+ "4. ICONOGRAPHY: Are all icons the same style (outline vs filled, same stroke width)? Mixed styles = deduction.\n" +
76
+ "5. POLISH: Does it look professionally designed or like a prototype? Placeholder content (e.g., 'Lorem ipsum', stock icons) = major deduction.\n\n" +
77
+ "SCORING ATTITUDE: Consistency is binary per element if two buttons look different, they are inconsistent, period.\n" +
78
+ "NOTE: Do NOT evaluate text meaning (info_clarity), spatial layout (layout), or overlap (overlap).",
79
+ scoringGuide: "0-2: No design system — clashing colors, random fonts, inconsistent components everywhere.\n" +
80
+ "3-4: Some design intent visible but multiple clear inconsistencies (different button styles, mixed icon sets).\n" +
81
+ "5-6: Basic consistency exists but with noticeable deviations. 'Mostly OK' = 6 at best.\n" +
82
+ "7-8: Strong consistency with only 1 minor deviation requiring careful inspection.\n" +
83
+ "9-10: Pixel-perfect design system adherence. Every element cohesive. Extremely rare.",
84
+ },
85
+ {
86
+ id: "action_result",
87
+ name: "Action Result Verification",
88
+ description: "You are a strict QA inspector verifying whether the action actually worked.\n" +
89
+ "The step's expectedOutcome describes what SHOULD have happened. Compare the screenshot against it.\n\n" +
90
+ "CHECK EACH ASPECT:\n" +
91
+ "1. SCREEN TRANSITION: If the action was a navigation tap, did the correct destination screen appear? Wrong screen = score 0.\n" +
92
+ "2. STATE CHANGE: If the action should toggle/add/remove something, is that change visually confirmed in the screenshot?\n" +
93
+ "3. ERROR PRESENCE: Are there any error dialogs, crash screens, or infinite loading spinners? These indicate failure.\n" +
94
+ "4. NO RESPONSE: Does the screen look identical to before the action? If so, the action likely missed or failed.\n\n" +
95
+ "SCORING ATTITUDE: If the expectedOutcome is not clearly achieved, score LOW. Partial success is still a problem.\n" +
96
+ "If this step is a pure observation (no expectedOutcome), score 10.",
97
+ scoringGuide: "0-2: Action clearly failed — wrong screen, error dialog, crash, or no UI response at all.\n" +
98
+ "3-4: Action had some effect but the result does not match expectedOutcome (e.g., navigated to wrong tab).\n" +
99
+ "5-6: Action partially achieved the goal but with unexpected side effects or missing expected elements.\n" +
100
+ "7-8: Action succeeded — the expected screen/state is present but with minor discrepancies.\n" +
101
+ "9-10: Action fully succeeded — screenshot exactly matches expectedOutcome. Or no expectedOutcome (pure observation).",
66
102
  },
67
103
  ];
68
104
  export const REQUIRED_DIMS = DIMENSIONS.map(d => d.id);
@@ -1 +1 @@
1
- {"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAoB;IACvC;QACI,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACP,4EAA4E;YAC5E,mCAAmC;YACnC,6KAA6K;YAC7K,wFAAwF;YACxF,mFAAmF;YACnF,2HAA2H;YAC3H,mHAAmH;YACnH,uIAAuI;QAC3I,YAAY,EACR,4GAA4G;YAC5G,oEAAoE;YACpE,6FAA6F;YAC7F,kGAAkG;KACzG;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACP,mGAAmG;YACnG,mCAAmC;YACnC,6JAA6J;YAC7J,+GAA+G;YAC/G,mJAAmJ;YACnJ,yKAAyK;YACzK,2GAA2G;YAC3G,2JAA2J;QAC/J,YAAY,EACR,sGAAsG;YACtG,kHAAkH;YAClH,uFAAuF;YACvF,4GAA4G;KACnH;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,mCAAmC;QACzC,WAAW,EACP,6GAA6G;YAC7G,mCAAmC;YACnC,6GAA6G;YAC7G,kIAAkI;YAClI,+GAA+G;YAC/G,0JAA0J;YAC1J,+HAA+H;YAC/H,mIAAmI;QACvI,YAAY,EACR,2GAA2G;YAC3G,0HAA0H;YAC1H,uGAAuG;YACvG,2GAA2G;KAClH;IACD;QACI,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACP,oFAAoF;YACpF,mCAAmC;YACnC,0IAA0I;YAC1I,6JAA6J;YAC7J,yJAAyJ;YACzJ,8FAA8F;YAC9F,qIAAqI;YACrI,iJAAiJ;QACrJ,YAAY,EACR,sGAAsG;YACtG,2HAA2H;YAC3H,oEAAoE;YACpE,8GAA8G;KACrH;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAoB;IACvC;QACI,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACP,8FAA8F;YAC9F,+EAA+E;YAC/E,iEAAiE;YACjE,0IAA0I;YAC1I,4FAA4F;YAC5F,sIAAsI;YACtI,gGAAgG;YAChG,8KAA8K;YAC9K,8EAA8E;YAC9E,yGAAyG;YACzG,iFAAiF;YACjF,6EAA6E;YAC7E,yFAAyF;YACzF,oGAAoG;QACxG,YAAY,EACR,6HAA6H;YAC7H,oHAAoH;YACpH,qIAAqI;YACrI,yHAAyH;YACzH,uJAAuJ;KAC9J;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACP,2FAA2F;YAC3F,8DAA8D;YAC9D,sBAAsB;YACtB,2HAA2H;YAC3H,qJAAqJ;YACrJ,uKAAuK;YACvK,mJAAmJ;YACnJ,yIAAyI;YACzI,qFAAqF;YACrF,kHAAkH;QACtH,YAAY,EACR,0HAA0H;YAC1H,uGAAuG;YACvG,qJAAqJ;YACrJ,6GAA6G;YAC7G,qHAAqH;KAC5H;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,mCAAmC;QACzC,WAAW,EACP,kGAAkG;YAClG,iFAAiF;YACjF,sBAAsB;YACtB,sJAAsJ;YACtJ,2IAA2I;YAC3I,uIAAuI;YACvI,4GAA4G;YAC5G,uGAAuG;YACvG,kFAAkF;YAClF,4EAA4E;YAC5E,iDAAiD;YACjD,sFAAsF;QAC1F,YAAY,EACR,6FAA6F;YAC7F,2FAA2F;YAC3F,kHAAkH;YAClH,+GAA+G;YAC/G,iIAAiI;KACxI;IACD;QACI,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACP,qGAAqG;YACrG,yEAAyE;YACzE,sBAAsB;YACtB,mHAAmH;YACnH,uHAAuH;YACvH,sIAAsI;YACtI,kHAAkH;YAClH,oJAAoJ;YACpJ,uHAAuH;YACvH,mGAAmG;QACvG,YAAY,EACR,8FAA8F;YAC9F,kHAAkH;YAClH,0FAA0F;YAC1F,qFAAqF;YACrF,sFAAsF;KAC7F;IACD;QACI,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACP,+EAA+E;YAC/E,wGAAwG;YACxG,sBAAsB;YACtB,gIAAgI;YAChI,2HAA2H;YAC3H,wHAAwH;YACxH,qHAAqH;YACrH,oHAAoH;YACpH,oEAAoE;QACxE,YAAY,EACR,6FAA6F;YAC7F,6GAA6G;YAC7G,0GAA0G;YAC1G,8FAA8F;YAC9F,sHAAsH;KAC7H;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Evaluation workflow for each step:
10
10
  * 1. Perform an action (tap / swipe / take_screenshot) — this auto-takes a screenshot and registers a step.
11
- * 2. For each required dimension (overlap, layout, info_clarity, style):
11
+ * 2. For each required dimension (overlap, layout, info_clarity, style, action_result):
12
12
  * a. Call get_evaluation_criteria(dimension) to read the scoring rubric.
13
13
  * b. Visually inspect the screenshot.
14
14
  * c. Call submit_dimension_score to record your score.
package/dist/src/index.js CHANGED
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Evaluation workflow for each step:
10
10
  * 1. Perform an action (tap / swipe / take_screenshot) — this auto-takes a screenshot and registers a step.
11
- * 2. For each required dimension (overlap, layout, info_clarity, style):
11
+ * 2. For each required dimension (overlap, layout, info_clarity, style, action_result):
12
12
  * a. Call get_evaluation_criteria(dimension) to read the scoring rubric.
13
13
  * b. Visually inspect the screenshot.
14
14
  * c. Call submit_dimension_score to record your score.
@@ -38,9 +38,9 @@ server.tool("swipe", "Swipe on screen (ratio 0-1). Automatically captures a scre
38
38
  // ─── Evaluation tools ──────────────────────────────────────
39
39
  server.tool("get_evaluation_criteria", "Get UI evaluation dimensions and scoring rubrics. " +
40
40
  "Call without arguments to list all dimension IDs. Pass a dimension ID (e.g. 'overlap') to get its detailed prompt and scoring guide. " +
41
- "Required dimensions for every step: overlap, layout, info_clarity, style.", getEvaluationCriteriaSchema.shape, async (args) => getEvaluationCriteria(args));
41
+ "Required dimensions for every step: overlap, layout, info_clarity, style, action_result.", getEvaluationCriteriaSchema.shape, async (args) => getEvaluationCriteria(args));
42
42
  server.tool("submit_dimension_score", "Submit a score (0-10) and reason for one UI dimension on a specific step. " +
43
- "Every step requires scores for all four dimensions: overlap, layout, info_clarity, style. " +
43
+ "Every step requires scores for all 5 dimensions: overlap, layout, info_clarity, style, action_result. " +
44
44
  "After submitting, continue with the remaining dimensions, then call get_audit_status to confirm completion.", submitDimensionScoreSchema.shape, async (args) => submitDimensionScore(args));
45
45
  server.tool("get_audit_status", "Get the current dashboard or test case report. " +
46
46
  "Use this to see which dimensions are missing (Pending) or to get the final markdown report if all steps are fully evaluated.", getAuditStatusSchema.shape, async (args) => getAuditStatus(args));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ export declare function readAllLogs(): AuditLog[];
5
5
  export declare function recordStep(caseName: string, stepIndex: number, description: string, actionType: "tap" | "swipe" | "screenshot", screenshotPath: string, coordinates?: {
6
6
  x: number;
7
7
  y: number;
8
- }): void;
8
+ }, expectedOutcome?: string): void;
9
9
  export declare function recordScore(caseName: string, stepIndex: number, dimension: string, score: number, reason: string): void;
10
10
  //# sourceMappingURL=audit-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AAmBnE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAMzD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAG5C;AAED,wBAAgB,WAAW,IAAI,QAAQ,EAAE,CAexC;AAED,wBAAgB,UAAU,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,EAC1C,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,IAAI,CAsBN;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,IAAI,CAiBN"}
1
+ {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AAmBnE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAMzD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAG5C;AAED,wBAAgB,WAAW,IAAI,QAAQ,EAAE,CAexC;AAED,wBAAgB,UAAU,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,EAC1C,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,eAAe,CAAC,EAAE,MAAM,GACzB,IAAI,CAuBN;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,IAAI,CAiBN"}
@@ -46,7 +46,7 @@ export function readAllLogs() {
46
46
  }
47
47
  return logs;
48
48
  }
49
- export function recordStep(caseName, stepIndex, description, actionType, screenshotPath, coordinates) {
49
+ export function recordStep(caseName, stepIndex, description, actionType, screenshotPath, coordinates, expectedOutcome) {
50
50
  let log = readLog(caseName);
51
51
  if (!log) {
52
52
  log = {
@@ -61,6 +61,7 @@ export function recordStep(caseName, stepIndex, description, actionType, screens
61
61
  actionType,
62
62
  screenshotPath,
63
63
  coordinates,
64
+ expectedOutcome,
64
65
  timestamp: new Date().toISOString(),
65
66
  evaluations: existingStep ? existingStep.evaluations : {},
66
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-audit-status.d.ts","sourceRoot":"","sources":["../../../src/tools/get-audit-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAoEH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;GAwD/E"}
1
+ {"version":3,"file":"get-audit-status.d.ts","sourceRoot":"","sources":["../../../src/tools/get-audit-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAuEH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;GAwD/E"}
@@ -47,6 +47,9 @@ function renderStepDetails(log) {
47
47
  for (const step of steps) {
48
48
  md += `### Step ${step.stepIndex}: ${step.description}\n`;
49
49
  md += `- **操作**: ${step.actionType} ${step.coordinates ? `(x: ${step.coordinates.x}, y: ${step.coordinates.y})` : ""}\n`;
50
+ if (step.expectedOutcome) {
51
+ md += `- **预期结果**: ${step.expectedOutcome}\n`;
52
+ }
50
53
  for (const dim of REQUIRED_DIMS) {
51
54
  const ev = step.evaluations ? step.evaluations[dim] : undefined;
52
55
  if (ev) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-audit-status.js","sourceRoot":"","sources":["../../../src/tools/get-audit-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-audit-status.js","sourceRoot":"","sources":["../../../src/tools/get-audit-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;CACvI,CAAC,CAAC;AAEH,2CAA2C;AAC3C,SAAS,wBAAwB,CAAC,GAAa,EAAE,YAAwD;IACrG,IAAI,EAAE,GAAG,gBAAgB,GAAG,CAAC,QAAQ,IAAI,CAAC;IAC1C,EAAE,IAAI,sBAAsB,CAAC;IAE7B,kBAAkB;IAClB,EAAE,IAAI,sCAAsC,CAAC;IAC7C,EAAE,IAAI,oCAAoC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAC9B,EAAE,IAAI,UAAU,IAAI,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACxE,CAAC;IACD,EAAE,IAAI,IAAI,CAAC;IAEX,eAAe;IACf,EAAE,IAAI,eAAe,CAAC;IACtB,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE7B,OAAO,EAAE,CAAC;AACd,CAAC;AAED,yCAAyC;AACzC,SAAS,sBAAsB,CAAC,GAAa,EAAE,GAAW,EAAE,MAAe,EAAE,WAAkB;IAC3F,IAAI,EAAE,GAAG,gBAAgB,GAAG,CAAC,QAAQ,IAAI,CAAC;IAC1C,EAAE,IAAI,qBAAqB,CAAC;IAE5B,EAAE,IAAI,cAAc,CAAC;IACrB,EAAE,IAAI,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,EAAE,IAAI,aAAa,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC;IAE9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,EAAE,IAAI,eAAe,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,EAAE,IAAI,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC;QAC5E,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,EAAE,IAAI,iBAAiB,CAAC;IAC5B,CAAC;IACD,EAAE,IAAI,IAAI,CAAC;IAEX,EAAE,IAAI,cAAc,CAAC;IACrB,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE7B,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAa;IACpC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,EAAE,IAAI,YAAY,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC;QAC1D,EAAE,IAAI,aAAa,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACzH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,EAAE,IAAI,eAAe,IAAI,CAAC,eAAe,IAAI,CAAC;QAClD,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,EAAE,EAAE,CAAC;gBACL,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5D,EAAE,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC,KAAK,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,EAAE,IAAI,OAAO,GAAG,eAAe,CAAC;YACpC,CAAC;QACL,CAAC;QACD,EAAE,IAAI,IAAI,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA2C;IAC5E,IAAI,IAAI,GAAe,EAAE,CAAC;IAC1B,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,WAAW,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gFAAgF,EAAE,CAAC;SAC/H,CAAC;IACN,CAAC;IAED,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,WAAW,GAAU,EAAE,CAAC;QAC5B,IAAI,YAAY,GAA+C,EAAE,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,WAAW,GAAG,KAAK,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7D,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC;gBACvB,UAAU,IAAI,CAAC,CAAC;gBAChB,IAAI,EAAE,CAAC,KAAK,GAAG,aAAa,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7F,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,cAAc,IAAI,wBAAwB,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;YACxC,cAAc,IAAI,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;QACxF,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;KACpE,CAAC;AACN,CAAC"}
@@ -20,7 +20,7 @@ export async function submitDimensionScore(input) {
20
20
  const remaining = REQUIRED_DIMS.filter(d => !evaluated.includes(d));
21
21
  let hint;
22
22
  if (remaining.length === 0) {
23
- hint = `All 4 dimensions for Step ${input.stepIndex} are complete. You may call get_audit_status to review progress or proceed to the next action.`;
23
+ hint = `All 5 dimensions for Step ${input.stepIndex} are complete. You may call get_audit_status to review progress or proceed to the next action.`;
24
24
  }
25
25
  else {
26
26
  hint = `${remaining.length} dimension(s) still needed for Step ${input.stepIndex}: ${remaining.join(", ")}. Please evaluate them before moving to the next action.`;
@@ -7,10 +7,12 @@ export declare const swipeSchema: z.ZodObject<{
7
7
  caseName: z.ZodString;
8
8
  stepIndex: z.ZodNumber;
9
9
  description: z.ZodString;
10
+ expectedOutcome: z.ZodString;
10
11
  }, "strip", z.ZodTypeAny, {
11
12
  caseName: string;
12
13
  stepIndex: number;
13
14
  description: string;
15
+ expectedOutcome: string;
14
16
  startX: number;
15
17
  startY: number;
16
18
  endX: number;
@@ -19,6 +21,7 @@ export declare const swipeSchema: z.ZodObject<{
19
21
  caseName: string;
20
22
  stepIndex: number;
21
23
  description: string;
24
+ expectedOutcome: string;
22
25
  startX: number;
23
26
  startY: number;
24
27
  endX: number;
@@ -1 +1 @@
1
- {"version":3,"file":"swipe.d.ts","sourceRoot":"","sources":["../../../src/tools/swipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AAEH,wBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;;;;;;;;GAwC7D"}
1
+ {"version":3,"file":"swipe.d.ts","sourceRoot":"","sources":["../../../src/tools/swipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;EAStB,CAAC;AAEH,wBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;;;;;;;;GA0C7D"}
@@ -9,6 +9,7 @@ export const swipeSchema = z.object({
9
9
  caseName: z.string().describe("Name of the test case"),
10
10
  stepIndex: z.number().int().positive().describe("Current step index (e.g. 1, 2)"),
11
11
  description: z.string().describe("Description of the action being performed"),
12
+ expectedOutcome: z.string().describe("What should happen after this swipe (e.g. 'List should scroll down to show more items')"),
12
13
  });
13
14
  export async function swipe(input) {
14
15
  const result = await device.swipe(input.startX, input.startY, input.endX, input.endY);
@@ -20,7 +21,7 @@ export async function swipe(input) {
20
21
  // Wait for UI to settle before taking screenshot
21
22
  await new Promise(resolve => setTimeout(resolve, 2000));
22
23
  const screenshot = await device.takeScreenshot();
23
- recordStep(input.caseName, input.stepIndex, input.description, "swipe", screenshot.filePath, { x: input.startX, y: input.startY });
24
+ recordStep(input.caseName, input.stepIndex, input.description, "swipe", screenshot.filePath, { x: input.startX, y: input.startY }, input.expectedOutcome);
24
25
  return {
25
26
  content: [
26
27
  {
@@ -31,9 +32,10 @@ export async function swipe(input) {
31
32
  {
32
33
  type: "text",
33
34
  text: JSON.stringify({
34
- message: `Step ${input.stepIndex} recorded. Please now evaluate this screenshot across all 4 dimensions (overlap, layout, info_clarity, style) using get_evaluation_criteria and submit_dimension_score before proceeding.`,
35
+ message: `Step ${input.stepIndex} recorded. Expected: "${input.expectedOutcome}". Please now evaluate this screenshot across all 5 dimensions (overlap, layout, info_clarity, style, action_result) using submit_dimension_score before proceeding.`,
35
36
  caseName: input.caseName,
36
37
  stepIndex: input.stepIndex,
38
+ expectedOutcome: input.expectedOutcome,
37
39
  screenWidth: screenshot.width,
38
40
  screenHeight: screenshot.height,
39
41
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"swipe.js","sourceRoot":"","sources":["../../../src/tools/swipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAkC;IAC1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SACjF,CAAC;IACN,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IACjD,UAAU,CACN,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,OAAO,EACP,UAAU,CAAC,QAAQ,EACnB,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CACvC,CAAC;IAEF,OAAO;QACH,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,QAAQ,EAAE,WAAoB;aACjC;YACD;gBACI,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,QAAQ,KAAK,CAAC,SAAS,2LAA2L;oBAC3N,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,UAAU,CAAC,KAAK;oBAC7B,YAAY,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAC;aACL;SACJ;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"swipe.js","sourceRoot":"","sources":["../../../src/tools/swipe.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,17 @@ export declare const takeScreenshotSchema: z.ZodObject<{
3
3
  caseName: z.ZodString;
4
4
  stepIndex: z.ZodNumber;
5
5
  description: z.ZodString;
6
+ expectedOutcome: z.ZodOptional<z.ZodString>;
6
7
  }, "strip", z.ZodTypeAny, {
7
8
  caseName: string;
8
9
  stepIndex: number;
9
10
  description: string;
11
+ expectedOutcome?: string | undefined;
10
12
  }, {
11
13
  caseName: string;
12
14
  stepIndex: number;
13
15
  description: string;
16
+ expectedOutcome?: string | undefined;
14
17
  }>;
15
18
  export declare function takeScreenshot(input: z.infer<typeof takeScreenshotSchema>): Promise<{
16
19
  content: ({
@@ -1 +1 @@
1
- {"version":3,"file":"take-screenshot.d.ts","sourceRoot":"","sources":["../../../src/tools/take-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;;;;;;GA8B/E"}
1
+ {"version":3,"file":"take-screenshot.d.ts","sourceRoot":"","sources":["../../../src/tools/take-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;;;;;;GAiC/E"}
@@ -5,10 +5,11 @@ export const takeScreenshotSchema = z.object({
5
5
  caseName: z.string().describe("Name of the test case"),
6
6
  stepIndex: z.number().int().positive().describe("Current step index (e.g. 1, 2)"),
7
7
  description: z.string().describe("Description of the observed state"),
8
+ expectedOutcome: z.string().optional().describe("Optional: what you expect to see on screen. Omit for pure observation steps."),
8
9
  });
9
10
  export async function takeScreenshot(input) {
10
11
  const screenshot = await device.takeScreenshot();
11
- recordStep(input.caseName, input.stepIndex, input.description, "screenshot", screenshot.filePath);
12
+ recordStep(input.caseName, input.stepIndex, input.description, "screenshot", screenshot.filePath, undefined, input.expectedOutcome);
12
13
  return {
13
14
  content: [
14
15
  {
@@ -19,9 +20,10 @@ export async function takeScreenshot(input) {
19
20
  {
20
21
  type: "text",
21
22
  text: JSON.stringify({
22
- message: `Step ${input.stepIndex} recorded. Please now evaluate this screenshot across all 4 dimensions (overlap, layout, info_clarity, style) using get_evaluation_criteria and submit_dimension_score before proceeding.`,
23
+ message: `Step ${input.stepIndex} recorded. Please now evaluate this screenshot across all 5 dimensions (overlap, layout, info_clarity, style, action_result) using submit_dimension_score before proceeding.`,
23
24
  caseName: input.caseName,
24
25
  stepIndex: input.stepIndex,
26
+ expectedOutcome: input.expectedOutcome ?? "(pure observation)",
25
27
  screenWidth: screenshot.width,
26
28
  screenHeight: screenshot.height,
27
29
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"take-screenshot.js","sourceRoot":"","sources":["../../../src/tools/take-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA2C;IAC5E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAEjD,UAAU,CACN,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,YAAY,EACZ,UAAU,CAAC,QAAQ,CACtB,CAAC;IAEF,OAAO;QACH,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,QAAQ,EAAE,WAAoB;aACjC;YACD;gBACI,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,QAAQ,KAAK,CAAC,SAAS,2LAA2L;oBAC3N,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,UAAU,CAAC,KAAK;oBAC7B,YAAY,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAC;aACL;SACJ;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"take-screenshot.js","sourceRoot":"","sources":["../../../src/tools/take-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACrE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;CAClI,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA2C;IAC5E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAEjD,UAAU,CACN,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,SAAS,EACT,KAAK,CAAC,eAAe,CACxB,CAAC;IAEF,OAAO;QACH,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,QAAQ,EAAE,WAAoB;aACjC;YACD;gBACI,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,QAAQ,KAAK,CAAC,SAAS,8KAA8K;oBAC9M,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,oBAAoB;oBAC9D,WAAW,EAAE,UAAU,CAAC,KAAK;oBAC7B,YAAY,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAC;aACL;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -5,16 +5,19 @@ export declare const tapSchema: z.ZodObject<{
5
5
  caseName: z.ZodString;
6
6
  stepIndex: z.ZodNumber;
7
7
  description: z.ZodString;
8
+ expectedOutcome: z.ZodString;
8
9
  }, "strip", z.ZodTypeAny, {
9
10
  caseName: string;
10
11
  stepIndex: number;
11
12
  description: string;
13
+ expectedOutcome: string;
12
14
  x: number;
13
15
  y: number;
14
16
  }, {
15
17
  caseName: string;
16
18
  stepIndex: number;
17
19
  description: string;
20
+ expectedOutcome: string;
18
21
  x: number;
19
22
  y: number;
20
23
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../../src/tools/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;EAMpB,CAAC;AAEH,wBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC;;;;;;;;;;;;GAwCzD"}
1
+ {"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../../src/tools/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;EAOpB,CAAC;AAEH,wBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC;;;;;;;;;;;;GA0CzD"}
@@ -7,6 +7,7 @@ export const tapSchema = z.object({
7
7
  caseName: z.string().describe("Name of the test case"),
8
8
  stepIndex: z.number().int().positive().describe("Current step index (e.g. 1, 2)"),
9
9
  description: z.string().describe("Description of the action being performed"),
10
+ expectedOutcome: z.string().describe("What should happen after this tap (e.g. 'Should navigate to login screen')"),
10
11
  });
11
12
  export async function tap(input) {
12
13
  const result = await device.tap(input.x, input.y);
@@ -18,7 +19,7 @@ export async function tap(input) {
18
19
  // Wait for UI to settle before taking screenshot
19
20
  await new Promise(resolve => setTimeout(resolve, 1500));
20
21
  const screenshot = await device.takeScreenshot();
21
- recordStep(input.caseName, input.stepIndex, input.description, "tap", screenshot.filePath, { x: input.x, y: input.y });
22
+ recordStep(input.caseName, input.stepIndex, input.description, "tap", screenshot.filePath, { x: input.x, y: input.y }, input.expectedOutcome);
22
23
  return {
23
24
  content: [
24
25
  {
@@ -29,9 +30,10 @@ export async function tap(input) {
29
30
  {
30
31
  type: "text",
31
32
  text: JSON.stringify({
32
- message: `Step ${input.stepIndex} recorded. Please now evaluate this screenshot across all 4 dimensions (overlap, layout, info_clarity, style) using get_evaluation_criteria and submit_dimension_score before proceeding.`,
33
+ message: `Step ${input.stepIndex} recorded. Expected: "${input.expectedOutcome}". Please now evaluate this screenshot across all 5 dimensions (overlap, layout, info_clarity, style, action_result) using submit_dimension_score before proceeding.`,
33
34
  caseName: input.caseName,
34
35
  stepIndex: input.stepIndex,
36
+ expectedOutcome: input.expectedOutcome,
35
37
  screenWidth: screenshot.width,
36
38
  screenHeight: screenshot.height,
37
39
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../../src/tools/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACvF,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACrF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,KAAgC;IACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SAC/E,CAAC;IACN,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IACjD,UAAU,CACN,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,EACL,UAAU,CAAC,QAAQ,EACnB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAC7B,CAAC;IAEF,OAAO;QACH,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,QAAQ,EAAE,WAAoB;aACjC;YACD;gBACI,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,QAAQ,KAAK,CAAC,SAAS,2LAA2L;oBAC3N,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,UAAU,CAAC,KAAK;oBAC7B,YAAY,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAC;aACL;SACJ;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../../src/tools/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACvF,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACrF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC7E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;CACrH,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,KAAgC;IACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SAC/E,CAAC;IACN,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IACjD,UAAU,CACN,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,EACL,UAAU,CAAC,QAAQ,EACnB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAC1B,KAAK,CAAC,eAAe,CACxB,CAAC;IAEF,OAAO;QACH,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,QAAQ,EAAE,WAAoB;aACjC;YACD;gBACI,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,QAAQ,KAAK,CAAC,SAAS,yBAAyB,KAAK,CAAC,eAAe,sKAAsK;oBACpP,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,WAAW,EAAE,UAAU,CAAC,KAAK;oBAC7B,YAAY,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAC;aACL;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -19,6 +19,7 @@ export interface StepRecord {
19
19
  x: number;
20
20
  y: number;
21
21
  };
22
+ expectedOutcome?: string;
22
23
  screenshotPath: string;
23
24
  timestamp: string;
24
25
  evaluations: Record<string, DimensionScore>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,CAAC;IAC3C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,CAAC;IAC3C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wa008/ui-audit-mcp",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "MCP server for iOS app UI evaluation and testing, powered by idb + xcrun simctl",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",