common-qa-mcp 0.2.0 → 0.4.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 (110) hide show
  1. package/README.md +6 -0
  2. package/dist/adapters/factory.d.ts +17 -7
  3. package/dist/adapters/factory.d.ts.map +1 -1
  4. package/dist/adapters/factory.js +44 -7
  5. package/dist/adapters/factory.js.map +1 -1
  6. package/dist/adapters/http.d.ts +50 -0
  7. package/dist/adapters/http.d.ts.map +1 -0
  8. package/dist/adapters/http.js +108 -0
  9. package/dist/adapters/http.js.map +1 -0
  10. package/dist/adapters/remoteMcp/adapter.d.ts +16 -2
  11. package/dist/adapters/remoteMcp/adapter.d.ts.map +1 -1
  12. package/dist/adapters/remoteMcp/adapter.js +34 -5
  13. package/dist/adapters/remoteMcp/adapter.js.map +1 -1
  14. package/dist/adapters/simplifyqa/adapter.d.ts +437 -0
  15. package/dist/adapters/simplifyqa/adapter.d.ts.map +1 -0
  16. package/dist/adapters/simplifyqa/adapter.js +3097 -0
  17. package/dist/adapters/simplifyqa/adapter.js.map +1 -0
  18. package/dist/adapters/simplifyqa/mapper.d.ts +95 -0
  19. package/dist/adapters/simplifyqa/mapper.d.ts.map +1 -0
  20. package/dist/adapters/simplifyqa/mapper.js +858 -0
  21. package/dist/adapters/simplifyqa/mapper.js.map +1 -0
  22. package/dist/adapters/types.d.ts +168 -5
  23. package/dist/adapters/types.d.ts.map +1 -1
  24. package/dist/adapters/walnut/adapter.d.ts +235 -0
  25. package/dist/adapters/walnut/adapter.d.ts.map +1 -0
  26. package/dist/adapters/walnut/adapter.js +1114 -0
  27. package/dist/adapters/walnut/adapter.js.map +1 -0
  28. package/dist/adapters/walnut/mapper.d.ts +30 -9
  29. package/dist/adapters/walnut/mapper.d.ts.map +1 -1
  30. package/dist/adapters/walnut/mapper.js +149 -24
  31. package/dist/adapters/walnut/mapper.js.map +1 -1
  32. package/dist/config.d.ts +38 -14
  33. package/dist/config.d.ts.map +1 -1
  34. package/dist/config.js +73 -19
  35. package/dist/config.js.map +1 -1
  36. package/dist/connection.d.ts +3 -2
  37. package/dist/connection.d.ts.map +1 -1
  38. package/dist/connection.js +44 -15
  39. package/dist/connection.js.map +1 -1
  40. package/dist/domain/types.d.ts +680 -5
  41. package/dist/domain/types.d.ts.map +1 -1
  42. package/dist/drafts/store.d.ts +4 -1
  43. package/dist/drafts/store.d.ts.map +1 -1
  44. package/dist/drafts/store.js +7 -2
  45. package/dist/drafts/store.js.map +1 -1
  46. package/dist/initAgents.d.ts.map +1 -1
  47. package/dist/initAgents.js +48 -18
  48. package/dist/initAgents.js.map +1 -1
  49. package/dist/requestConnection.d.ts +5 -3
  50. package/dist/requestConnection.d.ts.map +1 -1
  51. package/dist/requestConnection.js +11 -5
  52. package/dist/requestConnection.js.map +1 -1
  53. package/dist/server.d.ts.map +1 -1
  54. package/dist/server.js +47 -1
  55. package/dist/server.js.map +1 -1
  56. package/dist/tools/backlog.tools.d.ts +13 -0
  57. package/dist/tools/backlog.tools.d.ts.map +1 -0
  58. package/dist/tools/backlog.tools.js +399 -0
  59. package/dist/tools/backlog.tools.js.map +1 -0
  60. package/dist/tools/connection.tools.js +5 -5
  61. package/dist/tools/connection.tools.js.map +1 -1
  62. package/dist/tools/defects.tools.d.ts +7 -0
  63. package/dist/tools/defects.tools.d.ts.map +1 -0
  64. package/dist/tools/defects.tools.js +82 -0
  65. package/dist/tools/defects.tools.js.map +1 -0
  66. package/dist/tools/discovery.tools.d.ts.map +1 -1
  67. package/dist/tools/discovery.tools.js +951 -43
  68. package/dist/tools/discovery.tools.js.map +1 -1
  69. package/dist/tools/formulas.tools.d.ts +7 -0
  70. package/dist/tools/formulas.tools.d.ts.map +1 -0
  71. package/dist/tools/formulas.tools.js +56 -0
  72. package/dist/tools/formulas.tools.js.map +1 -0
  73. package/dist/tools/heal.tools.d.ts +17 -0
  74. package/dist/tools/heal.tools.d.ts.map +1 -0
  75. package/dist/tools/heal.tools.js +76 -0
  76. package/dist/tools/heal.tools.js.map +1 -0
  77. package/dist/tools/markdown.d.ts +3 -3
  78. package/dist/tools/markdown.d.ts.map +1 -1
  79. package/dist/tools/markdown.js +89 -18
  80. package/dist/tools/markdown.js.map +1 -1
  81. package/dist/tools/objects.tools.d.ts +7 -0
  82. package/dist/tools/objects.tools.d.ts.map +1 -0
  83. package/dist/tools/objects.tools.js +201 -0
  84. package/dist/tools/objects.tools.js.map +1 -0
  85. package/dist/tools/recording.tools.d.ts.map +1 -1
  86. package/dist/tools/recording.tools.js +92 -12
  87. package/dist/tools/recording.tools.js.map +1 -1
  88. package/dist/tools/run.tools.d.ts.map +1 -1
  89. package/dist/tools/run.tools.js +464 -39
  90. package/dist/tools/run.tools.js.map +1 -1
  91. package/dist/tools/schemas.d.ts +21 -4
  92. package/dist/tools/schemas.d.ts.map +1 -1
  93. package/dist/tools/schemas.js +14 -1
  94. package/dist/tools/schemas.js.map +1 -1
  95. package/dist/tools/storySync.tools.d.ts +66 -0
  96. package/dist/tools/storySync.tools.d.ts.map +1 -0
  97. package/dist/tools/storySync.tools.js +213 -0
  98. package/dist/tools/storySync.tools.js.map +1 -0
  99. package/dist/tools/tasks.tools.d.ts +7 -0
  100. package/dist/tools/tasks.tools.d.ts.map +1 -0
  101. package/dist/tools/tasks.tools.js +75 -0
  102. package/dist/tools/tasks.tools.js.map +1 -0
  103. package/dist/tools/testcase.tools.d.ts.map +1 -1
  104. package/dist/tools/testcase.tools.js +162 -101
  105. package/dist/tools/testcase.tools.js.map +1 -1
  106. package/dist/tools/testdata.tools.d.ts +7 -0
  107. package/dist/tools/testdata.tools.d.ts.map +1 -0
  108. package/dist/tools/testdata.tools.js +249 -0
  109. package/dist/tools/testdata.tools.js.map +1 -0
  110. package/package.json +3 -3
@@ -0,0 +1,201 @@
1
+ import { z } from 'zod';
2
+ import { ok, err } from '../mcpResult.js';
3
+ import { zLocator } from './schemas.js';
4
+ const NOT_CONNECTED = 'Not connected to a product. Use qa_connect({ url, token, projectId }) first — listing, reading and ' +
5
+ 'deleting objects needs a live backend connection.';
6
+ function describeError(e) {
7
+ return e instanceof Error ? e.message : String(e);
8
+ }
9
+ /** Page size used both for a caller's default single page and for each internal-pagination round trip. */
10
+ const OBJECT_LIST_PAGE_SIZE = 100;
11
+ /** Hard stop on internal pagination (object_list with no limit/offset) so a runaway project can never
12
+ * turn one tool call into an unbounded number of requests or an unbounded response. */
13
+ const OBJECT_LIST_SAFETY_CAP = 2000;
14
+ /** Markdown table cells: escape pipes and flatten newlines (mirrors discovery.tools.ts / markdown.ts). */
15
+ function escCell(v) {
16
+ return String(v ?? '').replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
17
+ }
18
+ export function registerObjectTools(server, deps) {
19
+ server.registerTool('object_create', {
20
+ title: 'Create a new object in the Object Repository',
21
+ description: 'Create a new object (a locator-bound UI element) in the shared Object Repository. `objectType` ' +
22
+ '(e.g. "WEB", "ANDROID") is REQUIRED and STRUCTURAL — it selects the object template and cannot ' +
23
+ 'be changed after creation (see object_update). `locators` is the set of captured selector ' +
24
+ 'strategies for this element. Requires a live connection (qa_connect).',
25
+ inputSchema: {
26
+ name: z.string().min(1).describe('Display name for the object (the UI\'s "Name" column).'),
27
+ objectType: z.string().describe('Object type / technology, e.g. "WEB", "ANDROID", "IOS", "DESKTOP". Required, and fixed once created.'),
28
+ locators: z.array(zLocator).optional().describe('Captured locator strategies for this element.'),
29
+ },
30
+ annotations: { readOnlyHint: false },
31
+ }, async ({ name, objectType, locators }) => {
32
+ const adapter = deps.getAdapter();
33
+ if (!adapter)
34
+ return err(NOT_CONNECTED);
35
+ try {
36
+ const obj = await adapter.createObject({ name, objectType, locators: locators ?? [] });
37
+ const link = obj.id ? ` \`${obj.id}\`` : '';
38
+ return ok(`Created object${link} — "${obj.name}" (${obj.objectType ?? objectType}, ${obj.locators.length} locator${obj.locators.length === 1 ? '' : 's'}).`, { object: obj });
39
+ }
40
+ catch (e) {
41
+ return err(describeError(e));
42
+ }
43
+ });
44
+ server.registerTool('object_list', {
45
+ title: 'List / search objects in the shared Object Repository',
46
+ description: 'List or search objects (recorded, locator-bound UI elements) in the connected product\'s ' +
47
+ 'shared Object Repository. Requires a live connection (qa_connect). Returns a summary — id, ' +
48
+ 'name, object type and locator count — never full locator bags (use object_get for one in ' +
49
+ 'full). Omit `limit`/`offset` to fetch the ENTIRE project object list (paged internally, up to ' +
50
+ `${OBJECT_LIST_SAFETY_CAP}); pass either one to control a single page yourself instead.`,
51
+ inputSchema: {
52
+ query: z.string().optional().describe('Free-text search over the object name / description.'),
53
+ pageName: z.string().optional().describe('Filter by captured page / screen name.'),
54
+ limit: z.number().int().positive().optional().describe('Return exactly one page of this size, starting at `offset`, instead of fetching everything.'),
55
+ offset: z.number().int().nonnegative().optional().describe('Result offset for a single manual page (implies a one-page fetch; default page size 100 if `limit` is omitted).'),
56
+ },
57
+ annotations: { readOnlyHint: true },
58
+ }, async ({ query, pageName, limit, offset }) => {
59
+ const adapter = deps.getAdapter();
60
+ if (!adapter)
61
+ return err(NOT_CONNECTED);
62
+ try {
63
+ const manualPaging = limit !== undefined || offset !== undefined;
64
+ let rows;
65
+ let truncated = false;
66
+ if (manualPaging) {
67
+ // Caller wants exactly one page — respect it as-is.
68
+ rows = await adapter.searchObjects({
69
+ ...(query !== undefined ? { query } : {}),
70
+ ...(pageName !== undefined ? { pageName } : {}),
71
+ limit: limit ?? OBJECT_LIST_PAGE_SIZE,
72
+ ...(offset !== undefined ? { offset } : {}),
73
+ });
74
+ }
75
+ else {
76
+ // No paging args — fetch the WHOLE project list by paging internally until a short page
77
+ // comes back (end of results) or the safety cap is hit.
78
+ rows = [];
79
+ let off = 0;
80
+ for (;;) {
81
+ const page = await adapter.searchObjects({
82
+ ...(query !== undefined ? { query } : {}),
83
+ ...(pageName !== undefined ? { pageName } : {}),
84
+ limit: OBJECT_LIST_PAGE_SIZE,
85
+ offset: off,
86
+ });
87
+ rows.push(...page);
88
+ if (page.length < OBJECT_LIST_PAGE_SIZE)
89
+ break;
90
+ if (rows.length >= OBJECT_LIST_SAFETY_CAP) {
91
+ truncated = true;
92
+ break;
93
+ }
94
+ off += OBJECT_LIST_PAGE_SIZE;
95
+ }
96
+ }
97
+ if (!rows.length)
98
+ return ok('No objects found.', { objects: [] });
99
+ // Summary only — full locator bags (structuredContent's biggest cost) blow past the MCP result
100
+ // size cap on any real-sized repository. object_get reads one object in full.
101
+ const summaries = rows.map((o) => ({ id: o.id, name: o.name, objectType: o.objectType, locatorCount: o.locators.length }));
102
+ const moreHint = manualPaging
103
+ ? (rows.length === (limit ?? OBJECT_LIST_PAGE_SIZE) ? ' (more may exist — pass offset to page)' : '')
104
+ : (truncated ? ` (stopped at the ${OBJECT_LIST_SAFETY_CAP}-object safety cap — refine with \`query\`)` : '');
105
+ const text = `${rows.length} object${rows.length === 1 ? '' : 's'}${moreHint}:\n\n` +
106
+ '| id | name | type | locators |\n|---|---|---|---|\n' +
107
+ summaries
108
+ .map((o) => `| ${escCell(o.id)} | ${escCell(o.name)} | ${escCell(o.objectType ?? '-')} | ${o.locatorCount} |`)
109
+ .join('\n');
110
+ return ok(text, { objects: summaries });
111
+ }
112
+ catch (e) {
113
+ return err(describeError(e));
114
+ }
115
+ });
116
+ server.registerTool('object_get', {
117
+ title: 'Read one object (with all its locators)',
118
+ description: 'Read a single object from the shared Object Repository — its name, type, and FULL locator ' +
119
+ 'bag (every captured strategy, e.g. playwright primary + xpath fallbacks). Requires a live ' +
120
+ 'connection (qa_connect).',
121
+ inputSchema: {
122
+ id: z.string().describe('The object id to read.'),
123
+ },
124
+ annotations: { readOnlyHint: true },
125
+ }, async ({ id }) => {
126
+ const adapter = deps.getAdapter();
127
+ if (!adapter)
128
+ return err(NOT_CONNECTED);
129
+ if (!adapter.getObject)
130
+ return err('This product does not expose object read-by-id.');
131
+ try {
132
+ const obj = await adapter.getObject(id);
133
+ const header = `**${obj.name}**${obj.id ? ` · ${obj.id}` : ''}${obj.objectType ? ` · ${obj.objectType}` : ''}`;
134
+ const body = obj.locators.length
135
+ ? '\n\n| strategy | value |\n|---|---|\n' +
136
+ obj.locators.map((l) => `| ${escCell(l.name)}${l.unique ? ' (unique)' : ''} | ${escCell(l.value)} |`).join('\n')
137
+ : '\n\n_No locators captured._';
138
+ return ok(`${header}${body}`, { object: obj });
139
+ }
140
+ catch (e) {
141
+ return err(describeError(e));
142
+ }
143
+ });
144
+ server.registerTool('object_update', {
145
+ title: 'Update an object (e.g. fix a stale locator value)',
146
+ description: 'Update an object in the shared Object Repository — rename it, and/or fix locator values ' +
147
+ 'directly (e.g. a stale `data-test` attribute). `locators` UPSERTS by strategy name: an entry ' +
148
+ 'matching an EXISTING locator name updates its value/unique in place, everything else on the ' +
149
+ 'object is untouched, and a name with no existing match is added as a NEW locator — you do not ' +
150
+ "need to resupply the full locator set. The object's TYPE (technology) and TEMPLATE ID are NOT " +
151
+ 'editable here — they are structural (they determine which attribute set is even valid) and ' +
152
+ 'stay whatever they already are; changing either means creating a new object, not updating this ' +
153
+ 'one. Requires a live connection (qa_connect).',
154
+ inputSchema: {
155
+ id: z.string().describe('The object id to update.'),
156
+ name: z.string().optional().describe('New display name for the object.'),
157
+ locators: z.array(zLocator).optional().describe('Locators to upsert by name, e.g. [{ name: "data-test", value: "123456" }] to fix one ' +
158
+ 'attribute — every other locator on the object is left as-is.'),
159
+ },
160
+ annotations: { readOnlyHint: false },
161
+ }, async ({ id, name, locators }) => {
162
+ const adapter = deps.getAdapter();
163
+ if (!adapter)
164
+ return err(NOT_CONNECTED);
165
+ if (!adapter.updateObject)
166
+ return err('This product does not support updating objects directly.');
167
+ try {
168
+ const obj = await adapter.updateObject(id, {
169
+ ...(name !== undefined ? { name } : {}),
170
+ ...(locators !== undefined ? { locators } : {}),
171
+ });
172
+ return ok(`Updated object ${obj.id ?? id} — "${obj.name}" (${obj.locators.length} locator${obj.locators.length === 1 ? '' : 's'}).`, { object: obj });
173
+ }
174
+ catch (e) {
175
+ return err(describeError(e));
176
+ }
177
+ });
178
+ server.registerTool('object_delete', {
179
+ title: 'Delete an object from the Object Repository',
180
+ description: 'Delete an object from the shared Object Repository. DEPENDENCY-CHECKED first: if the object ' +
181
+ 'is still referenced by any test case, function, or workflow, the delete is REFUSED — it ' +
182
+ 'reports what still uses it instead of silently breaking those. Only a dependency-free object ' +
183
+ 'is actually deleted. Requires a live connection (qa_connect).',
184
+ inputSchema: {
185
+ id: z.string().describe('The object id to delete.'),
186
+ },
187
+ annotations: { readOnlyHint: false, destructiveHint: true },
188
+ }, async ({ id }) => {
189
+ const adapter = deps.getAdapter();
190
+ if (!adapter)
191
+ return err(NOT_CONNECTED);
192
+ try {
193
+ await adapter.deleteObject(id);
194
+ return ok(`Deleted object ${id}.`);
195
+ }
196
+ catch (e) {
197
+ return err(describeError(e));
198
+ }
199
+ });
200
+ }
201
+ //# sourceMappingURL=objects.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.tools.js","sourceRoot":"","sources":["../../src/tools/objects.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recording.tools.d.ts","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgJrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B;;8FAE0F;IAC1F,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B;2DACuD;IACvD,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA+F9F"}
1
+ {"version":3,"file":"recording.tools.d.ts","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAoNrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B;;8FAE0F;IAC1F,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B;2DACuD;IACvD,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAgH9F"}
@@ -41,7 +41,36 @@ const TECHNOLOGY_SUBAGENTS = new Set(['web', 'android', 'mainframe', 'db']);
41
41
  * Keep this in lockstep with the recorders in TECHNOLOGY_SUBAGENTS that are non-blocking. `android`
42
42
  * and `db` are absent because they are still declared scaffolds with no delegated loop to poll.
43
43
  */
44
- const DELEGATED_STATUS_TOOLS = new Set(['web_status', 'mainframe_status']);
44
+ const DELEGATED_STATUS_TOOLS = new Set(['web_status', 'mainframe_status', 'android_status']);
45
+ /**
46
+ * Read-only ENVIRONMENT-DISCOVERY tools a sub-agent exposes so the client can answer "what can I
47
+ * record against?" before it records. Proxied verbatim (no draft bridge — they return no test case).
48
+ *
49
+ * `android_devices` is the first, and it is not optional convenience: `android({ packageName })`
50
+ * requires an exact package id (`in.redbus.android`), which is derivable from nothing — not from the
51
+ * app's display name, and not from the user, who does not know it either. Without this tool in the
52
+ * filter the model has a required argument it cannot obtain, which is how the mainframe `appPath`
53
+ * failure started. Web and mainframe need no equivalent: a browser takes a URL the user already has,
54
+ * and an emulator session file is a path they can point at.
55
+ */
56
+ const DISCOVERY_TOOLS = new Set(['android_devices']);
57
+ /**
58
+ * Control tools for an IN-FLIGHT delegated recording: pause it, carry on, or abandon it. Proxied
59
+ * VERBATIM — no draft bridge, deliberately. A pause returns the steps so far for REVIEW, not a
60
+ * saveable draft; re-homing a partial into Common's DraftStore would invite saving a half-finished
61
+ * recording, which the "never auto-save" rule exists to prevent. The real draft still arrives the
62
+ * usual way, at `*_status` "done".
63
+ *
64
+ * Without these on the client surface a recording can be STARTED but never stopped: the only escape
65
+ * from one that has gone wrong is restarting the agent, which drops every other session with it.
66
+ *
67
+ * Additive, like every set above it — an agent that does not advertise these simply never matches.
68
+ */
69
+ const RECORDING_CONTROL_TOOLS = new Set([
70
+ 'android_recording_stop', 'android_recording_resume', 'android_recording_discard',
71
+ 'web_recording_stop', 'web_recording_resume', 'web_recording_discard',
72
+ 'mainframe_recording_stop', 'mainframe_recording_resume', 'mainframe_recording_discard',
73
+ ]);
45
74
  /** Permissive input: accept any object; the product MCP is the strict validator. */
46
75
  const PASSTHROUGH_INPUT = z.record(z.string(), z.unknown());
47
76
  /**
@@ -65,7 +94,7 @@ const DELEGATED_RECORDERS = {
65
94
  startNote: 'NON-BLOCKING: this STARTS the delegated web recording on the agent and returns a sessionId ' +
66
95
  'immediately — a browser opens and records in the background. Then poll web_status({ sessionId }) ' +
67
96
  'until status is "done"; web_status re-homes the draft HERE and returns a Common draftId that ' +
68
- 'tc_save can persist. Call web ONCE — do not retry it.',
97
+ 'tc_save can persist. POLL EVERY ~15-20 SECONDS, never minutes: the recording takes MINUTES end to end, but that is its DURATION, not the poll interval, and waiting minutes between polls leaves a finished draft sitting uncollected. Call web ONCE — do not retry it.',
69
98
  doneLabel: 'Web recording complete.',
70
99
  },
71
100
  mainframe: {
@@ -84,10 +113,37 @@ const DELEGATED_RECORDERS = {
84
113
  startNote: 'NON-BLOCKING: this STARTS the delegated mainframe recording on the agent and returns a sessionId ' +
85
114
  'immediately — the emulator opens and records in the background. Then poll ' +
86
115
  'mainframe_status({ sessionId }) until status is "done"; mainframe_status re-homes the draft HERE ' +
87
- 'and returns a Common draftId that tc_save can persist. Call mainframe ONCE — do not retry it: ' +
116
+ 'and returns a Common draftId that tc_save can persist. POLL EVERY ~15-20 SECONDS, never minutes: the recording takes MINUTES end to end, but that is its DURATION, not the poll interval, and waiting minutes between polls leaves a finished draft sitting uncollected. Call mainframe ONCE — do not ' +
117
+ 'retry it: ' +
88
118
  'the HLLAPI session admits one attachment, so mainframe recordings cannot overlap.',
89
119
  doneLabel: 'Mainframe recording complete.',
90
120
  },
121
+ android: {
122
+ statusTool: 'android_status',
123
+ extraInput: {
124
+ packageName: z.string().describe('The app under test, e.g. "com.example.app". Launched before recording and becomes the ' +
125
+ '"Launch App ${app_package}" step 1, so the test case replays from cold.'),
126
+ deviceId: z.string().optional().describe('udid of the target device from `adb devices` (e.g. "emulator-5554", "R58M12ABCDE"). OMIT when ' +
127
+ 'exactly one device is connected — it is auto-selected and reported back. With SEVERAL ' +
128
+ 'connected the call is refused and the udids are listed: ASK THE USER which device to record ' +
129
+ 'on. Never pick one yourself — recording on the wrong device does not fail, it silently ' +
130
+ 'produces a test case against the wrong handset.'),
131
+ activityName: z.string().optional().describe('Optional launch activity. OMIT IT — the agent reads the app\'s launcher activity off the device ' +
132
+ 'and records it, so the saved test case launches explicitly rather than relying on a default. ' +
133
+ 'Pass one only to launch a specific non-default entry point.'),
134
+ action: z.enum(['start', 'reset']).optional().describe('"start" (default) launches the app as-is; "reset" clears its data first, for a clean-state flow.'),
135
+ },
136
+ taskDescribe: 'The GOAL in natural language, e.g. "Sign in as admin/admin123, search for \'Acme\' and open the ' +
137
+ 'first result." Include the real values the app needs — they are parameterized at assembly time.',
138
+ startNote: 'NON-BLOCKING: this STARTS the delegated android recording on the agent and returns a sessionId ' +
139
+ 'immediately — the device attaches over ADB and records in the background. Then poll ' +
140
+ 'android_status({ sessionId }) until status is "done"; android_status re-homes the draft HERE and ' +
141
+ 'returns a Common draftId that tc_save can persist. POLL EVERY ~15-20 SECONDS, never minutes: the recording takes MINUTES end to end, but that is its DURATION, not the poll interval, and waiting minutes between polls leaves a finished draft sitting uncollected. Call android ONCE — do not retry ' +
142
+ 'it: the ' +
143
+ 'device is claimed for the recording, so a second call on the same udid is refused. Recordings ' +
144
+ 'on DIFFERENT devices can run at the same time.',
145
+ doneLabel: 'Android recording complete.',
146
+ },
91
147
  };
92
148
  /**
93
149
  * Convert a product tool's JSON-Schema (object schema) into a Zod raw shape, so the PROXIED tool
@@ -147,9 +203,17 @@ export function registerRecordingPassthrough(server, deps) {
147
203
  // Common connection can report "connected" (config present) BEFORE the product MCP's OWN connection
148
204
  // is primed, so a single call races it, returns nothing, and the web/android/... tools never appear
149
205
  // for the whole session (observed after a client reload). The first attempt also nudges the prime.
150
- // Poll until we get a non-empty list, or give up after ~30s.
206
+ // Poll until the downstream advertises tools. This is NOT a one-shot 30s window: the agent
207
+ // (Electron :4050) is frequently started AFTER this MCP server, and a one-shot discovery that
208
+ // misses that window left web/mainframe/... unregistered for the WHOLE session until the user
209
+ // restarted common-mcp (the classic startup race). Instead we retry with backoff (500ms → 10s cap)
210
+ // for a generous window, so the recording surface SELF-HEALS whenever the agent primes. The
211
+ // registration below emits `tools/list_changed`, so a late discovery still reaches the client with
212
+ // no reconnect. Bounded (not eternal) so a truly-absent agent eventually stops polling.
151
213
  let tools = [];
152
- const deadline = Date.now() + 30000;
214
+ const deadline = Date.now() + 10 * 60000; // ~10 min — covers "agent started shortly after common-mcp"
215
+ let delay = 500;
216
+ let announcedWait = false;
153
217
  while (Date.now() < deadline) {
154
218
  try {
155
219
  const a = deps.getAdapter();
@@ -160,12 +224,19 @@ export function registerRecordingPassthrough(server, deps) {
160
224
  }
161
225
  }
162
226
  catch { /* downstream not primed yet — retry */ }
163
- await new Promise((r) => setTimeout(r, 500));
227
+ await new Promise((r) => setTimeout(r, delay));
228
+ // Surface the wait once, so a genuinely-down agent is diagnosable (not silently spinning).
229
+ if (!announcedWait && delay >= 10000) {
230
+ announcedWait = true;
231
+ log('recording passthrough: still waiting for the product agent to advertise its tools (will keep retrying)…');
232
+ }
233
+ delay = Math.min(Math.round(delay * 1.5), 10000);
164
234
  }
165
235
  if (!tools.length) {
166
- log('recording passthrough: no agent tools discovered (product MCP not ready within 30s)');
236
+ log('recording passthrough: no agent tools discovered within ~10min — the product agent never advertised any this session. Start the agent, then reconnect the MCP.');
167
237
  return;
168
238
  }
239
+ log(`recording passthrough: discovered ${tools.length} agent tool(s); registering the recording surface (emits tools/list_changed).`);
169
240
  // SimplifyQA-only behavior below (granular-verb proxying + real-schema preservation). Walnut keeps
170
241
  // its EXACT prior surface, so this cannot affect Walnut. Evaluated once the connection is live.
171
242
  const simplifyqa = deps.isSimplifyqa();
@@ -189,7 +260,9 @@ export function registerRecordingPassthrough(server, deps) {
189
260
  // Walnut's single tool is exactly `web` (no underscore) and its internals use browser_/…
190
261
  const isSubAgent = TECHNOLOGY_SUBAGENTS.has(t.name)
191
262
  || t.name === 'qa_technology_status'
192
- || DELEGATED_STATUS_TOOLS.has(t.name);
263
+ || DELEGATED_STATUS_TOOLS.has(t.name)
264
+ || DISCOVERY_TOOLS.has(t.name)
265
+ || RECORDING_CONTROL_TOOLS.has(t.name);
193
266
  const isRecorderVerb = simplifyqa; // SimplifyQA: every remaining (non-provider-op) tool — agent-driven
194
267
  if (!isSubAgent && !isRecorderVerb)
195
268
  continue;
@@ -312,7 +385,8 @@ function registerDelegatedStatus(server, deps, t, cfg) {
312
385
  const starter = t.name.replace(/_status$/, '');
313
386
  server.registerTool(t.name, {
314
387
  description: `${t.description ?? t.name}\n\n(Poll a recording started by ${starter}(). While it reports ` +
315
- `"recording", poll again. On "done" this re-homes the assembled draft into Common's store and ` +
388
+ `"recording", call it again after ~15-20 SECONDS — never minutes, since the recording's MINUTES-long ` +
389
+ `DURATION is not a poll interval. On "done" this re-homes the assembled draft into Common's store and ` +
316
390
  `returns a Common draftId — review the steps, then tc_save({ draftId }) to persist.)`,
317
391
  inputSchema: { sessionId: z.string().describe(`The sessionId returned by ${starter}().`) },
318
392
  annotations: { readOnlyHint: true },
@@ -332,12 +406,18 @@ function registerDelegatedStatus(server, deps, t, cfg) {
332
406
  const sc = res.structuredContent;
333
407
  if (sc?.status !== 'done' || !sc.tc)
334
408
  return res; // still recording → forward as-is
335
- const draftId = deps.drafts.create(sc.tc);
409
+ // Tag the draft with its recording sessionId (the one polled with, or echoed back) so tc_save can
410
+ // close this recording's live-steps window on the agent once it's saved through the MCP path.
411
+ const recSessionId = (typeof args.sessionId === 'string' ? args.sessionId : undefined)
412
+ ?? sc.sessionId;
413
+ const draftId = deps.drafts.create(sc.tc, recSessionId);
336
414
  const stored = deps.drafts.get(draftId).tc;
337
415
  const stepCount = Array.isArray(stored.steps) ? stored.steps.length : (sc.stepCount ?? 0);
338
416
  return ok(`${sc.summary ?? cfg.doneLabel}\n\nRegistered as draft ${draftId} ` +
339
- `(${stepCount} step${stepCount === 1 ? '' : 's'}). Persist it with ` +
340
- `tc_save({ draftId: "${draftId}" }) — that saves it to the product and opens it in the product UI.`, { status: 'done', draftId, tc: stored, stepCount, ...(sc.summary ? { summary: sc.summary } : {}) });
417
+ `(${stepCount} step${stepCount === 1 ? '' : 's'}). This is an UNSAVED draft — SHOW these steps ` +
418
+ `to the user and ASK whether to save. Do NOT save automatically: finishing a recording is NOT a ` +
419
+ `save instruction. Call tc_save({ draftId: "${draftId}" }) ONLY after the user EXPLICITLY says to ` +
420
+ `save (e.g. "save it"). The user may also save it themselves in the product UI.`, { status: 'done', draftId, tc: stored, stepCount, ...(sc.summary ? { summary: sc.summary } : {}) });
341
421
  });
342
422
  }
343
423
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"recording.tools.js","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recording.tools.js","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAI1C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC;;;;;;;;;;;;;;;GAeG;AAEH,2FAA2F;AAC3F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB;IAC5E,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU;CAC/F,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B;IACjF,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB;IACrE,0BAA0B,EAAE,4BAA4B,EAAE,6BAA6B;CACxF,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,mBAAmB,GAAG;IAC1B,GAAG,EAAE;QACH,UAAU,EAAE,YAAY;QACxB,uFAAuF;QACvF,UAAU,EAAE;YACV,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjC,6FAA6F;gBAC3F,mEAAmE,CACtE;YACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F;gBACzF,6FAA6F;gBAC7F,4BAA4B,CAC/B;SACF;QACD,YAAY,EACV,0FAA0F;YAC1F,iEAAiE;QACnE,SAAS,EACP,6FAA6F;YAC7F,mGAAmG;YACnG,+FAA+F;YAC/F,yQAAyQ;QAC3Q,SAAS,EAAE,yBAAyB;KACrC;IACD,SAAS,EAAE;QACT,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F;gBACzF,6FAA6F;gBAC7F,8FAA8F;gBAC9F,2FAA2F;gBAC3F,2FAA2F;gBAC3F,wBAAwB,CAC3B;YACD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzC,uFAAuF,CACxF;SACF;QACD,YAAY,EACV,2FAA2F;YAC3F,mFAAmF;QACrF,SAAS,EACP,mGAAmG;YACnG,4EAA4E;YAC5E,mGAAmG;YACnG,wSAAwS;YACxS,YAAY;YACZ,mFAAmF;QACrF,SAAS,EAAE,+BAA+B;KAC3C;IACD,OAAO,EAAE;QACP,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE;YACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC9B,wFAAwF;gBACtF,yEAAyE,CAC5E;YACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,gGAAgG;gBAC9F,wFAAwF;gBACxF,8FAA8F;gBAC9F,yFAAyF;gBACzF,iDAAiD,CACpD;YACD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,kGAAkG;gBAChG,+FAA+F;gBAC/F,6DAA6D,CAChE;YACD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpD,kGAAkG,CACnG;SACF;QACD,YAAY,EACV,kGAAkG;YAClG,iGAAiG;QACnG,SAAS,EACP,iGAAiG;YACjG,sFAAsF;YACtF,mGAAmG;YACnG,wSAAwS;YACxS,UAAU;YACV,gGAAgG;YAChG,gDAAgD;QAClD,SAAS,EAAE,6BAA6B;KACzC;CACO,CAAC;AAEX;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,CAAC,GAAG,MAAsE,CAAC;IACjF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAqC,CAAC,EAAE,CAAC;QACjF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAA8C,CAAC;QACnG,IAAI,KAAmB,CAAC;QACxB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC1C,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC1C,KAAK,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM;YAChD,KAAK,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM;YAC3C,KAAK,OAAO;gBAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,MAAM;YACjE,OAAO,CAAC,CAAQ,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAcD,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAwB;IACtF,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,4CAA4C;QACtG,kGAAkG;QAClG,oGAAoG;QACpG,oGAAoG;QACpG,mGAAmG;QACnG,2FAA2F;QAC3F,8FAA8F;QAC9F,8FAA8F;QAC9F,mGAAmG;QACnG,4FAA4F;QAC5F,mGAAmG;QACnG,wFAAwF;QACxF,IAAI,KAAK,GAAyF,EAAE,CAAC;QACrG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAM,CAAC,CAAC,4DAA4D;QACvG,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;oBACtB,KAAK,GAAG,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,MAAM;wBAAE,MAAM;gBAC1B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;YACnD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C,2FAA2F;YAC3F,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,KAAM,EAAE,CAAC;gBACtC,aAAa,GAAG,IAAI,CAAC;gBACrB,GAAG,CAAC,yGAAyG,CAAC,CAAC;YACjH,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,KAAM,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,GAAG,CAAC,gKAAgK,CAAC,CAAC;YACtK,OAAO;QACT,CAAC;QACD,GAAG,CAAC,qCAAqC,KAAK,CAAC,MAAM,+EAA+E,CAAC,CAAC;QACtI,mGAAmG;QACnG,gGAAgG;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,sCAAsC;YACtC,mGAAmG;YACnG,iGAAiG;YACjG,8FAA8F;YAC9F,4FAA4F;YAC5F,wFAAwF;YACxF,mGAAmG;YACnG,+FAA+F;YAC/F,iGAAiG;YACjG,oGAAoG;YACpG,qGAAqG;YACrG,mGAAmG;YACnG,mGAAmG;YACnG,8FAA8F;YAC9F,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAC9C,CAAC,CAAC,IAAI,KAAK,sBAAsB;mBACjC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAClC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAC3B,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAG,oEAAoE;YACzG,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC7C,IAAI,CAAC;gBACH,uFAAuF;gBACvF,uFAAuF;gBACvF,uFAAuF;gBACvF,0FAA0F;gBAC1F,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAwC,CAAC,CAAC;gBACpF,IAAI,WAAW,EAAE,CAAC;oBAChB,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBACxD,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5F,IAAI,WAAW,EAAE,CAAC;oBAChB,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBACtD,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBAED,6FAA6F;gBAC7F,+FAA+F;gBAC/F,4FAA4F;gBAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnE,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;oBACE,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,iGAAiG;oBACxI,WAAW,EAAE,KAAK,IAAI,iBAAiB;iBACxC,EACD,KAAK,EAAE,OAAgC,EAAE,EAAE,EAAE;oBAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;wBAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;oBAClH,IAAI,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAmB,CAAC;oBAC3D,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,8EAA8E;YAChF,CAAC;QACH,CAAC;QACD,GAAG,CAAC,kCAAkC,OAAO,gBAAgB,CAAC,CAAC;IACjE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAMD;;;;;;;;;;GAUG;AACH,SAAS,yBAAyB,CAChC,MAAiB,EACjB,IAAwB,EACxB,CAAY,EACZ,GAAgB;IAEhB,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,SAAS,GAAG;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;YAClD,GAAG,GAAG,CAAC,UAAU;YACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAChD,4FAA4F;gBAC1F,uFAAuF;gBACvF,2FAA2F;gBAC3F,kBAAkB,CACrB;YACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,4FAA4F;gBAC1F,+DAA+D,CAClE;SACF;KACF;IACD,mGAAmG;IACnG,iGAAiG;IACjG,kGAAkG;IAClG,KAAK,EAAE,IAA6B,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAY,EAAE,CACtC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,SAAgD,CAAC;QACrD,IAAI,OAA8C,CAAC;QACnD,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,8FAA8F;QAC9F,4FAA4F;QAC5F,MAAM,SAAS,GAA4B,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM;YAAE,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QACnD,iGAAiG;QACjG,4FAA4F;QAC5F,8EAA8E;QAC9E,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAmB,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,MAAiB,EACjB,IAAwB,EACxB,CAAY,EACZ,GAAgB;IAEhB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EACT,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,oCAAoC,OAAO,uBAAuB;YAC5F,sGAAsG;YACtG,uGAAuG;YACvG,qFAAqF;QACvF,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,OAAO,KAAK,CAAC,EAAE;QAC1F,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClH,IAAI,GAAmB,CAAC;QACxB,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAG,IAAgC,CAAC,SAAS,EAAE,CAAC,CAAmB,CAAC;QAChH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,CAAC,qCAAqC;QAClE,MAAM,EAAE,GAAG,GAAG,CAAC,iBAC2F,CAAC;QAC3G,IAAI,EAAE,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,CAAC,kCAAkC;QACnF,kGAAkG;QAClG,8FAA8F;QAC9F,MAAM,YAAY,GAChB,CAAC,OAAQ,IAAgC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAE,IAA+B,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;eACvH,EAAE,CAAC,SAAS,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAC1F,OAAO,EAAE,CACP,GAAG,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,2BAA2B,OAAO,GAAG;YACjE,IAAI,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iDAAiD;YAChG,iGAAiG;YACjG,8CAA8C,OAAO,8CAA8C;YACnG,gFAAgF,EAClF,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACnG,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,OAAwB,EAAE,KAAe;IACxE,MAAM,IAAI,GAA0C,EAAE,CAAC;IACvD,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,KAAK;gBAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,uDAAuD,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gGAAgG;AAChG,KAAK,UAAU,uBAAuB,CAAC,IAAwB,EAAE,SAAiB;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,cAAc;gBAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.tools.d.ts","sourceRoot":"","sources":["../../src/tools/run.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;CAC1C,CAAC;AA0BF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CA8O5E"}
1
+ {"version":3,"file":"run.tools.d.ts","sourceRoot":"","sources":["../../src/tools/run.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;CAC1C,CAAC;AAkGF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CA4nB5E"}