@sparkleideas/browser 3.0.0-alpha.7 → 3.0.0-alpha.9

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 (67) hide show
  1. package/.agentic-flow/intelligence.json +17 -0
  2. package/agents/architect.yaml +1 -1
  3. package/agents/coder.yaml +1 -1
  4. package/agents/reviewer.yaml +1 -1
  5. package/agents/security-architect.yaml +1 -1
  6. package/agents/tester.yaml +1 -1
  7. package/dist/agent/index.d.ts +25 -0
  8. package/dist/agent/index.d.ts.map +1 -0
  9. package/dist/agent/index.js +33 -0
  10. package/dist/agent/index.js.map +1 -0
  11. package/dist/application/browser-service.d.ts +228 -0
  12. package/dist/application/browser-service.d.ts.map +1 -0
  13. package/dist/application/browser-service.js +470 -0
  14. package/dist/application/browser-service.js.map +1 -0
  15. package/dist/domain/types.d.ts +428 -0
  16. package/dist/domain/types.d.ts.map +1 -0
  17. package/dist/domain/types.js +95 -0
  18. package/dist/domain/types.js.map +1 -0
  19. package/dist/index.d.ts +131 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +84 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/infrastructure/agent-browser-adapter.d.ts +134 -0
  24. package/dist/infrastructure/agent-browser-adapter.d.ts.map +1 -0
  25. package/dist/infrastructure/agent-browser-adapter.js +551 -0
  26. package/dist/infrastructure/agent-browser-adapter.js.map +1 -0
  27. package/dist/infrastructure/hooks-integration.d.ts +109 -0
  28. package/dist/infrastructure/hooks-integration.d.ts.map +1 -0
  29. package/dist/infrastructure/hooks-integration.js +111 -0
  30. package/dist/infrastructure/hooks-integration.js.map +1 -0
  31. package/dist/infrastructure/memory-integration.d.ts +149 -0
  32. package/dist/infrastructure/memory-integration.d.ts.map +1 -0
  33. package/dist/infrastructure/memory-integration.js +335 -0
  34. package/dist/infrastructure/memory-integration.js.map +1 -0
  35. package/dist/infrastructure/reasoningbank-adapter.d.ts +90 -0
  36. package/dist/infrastructure/reasoningbank-adapter.d.ts.map +1 -0
  37. package/dist/infrastructure/reasoningbank-adapter.js +224 -0
  38. package/dist/infrastructure/reasoningbank-adapter.js.map +1 -0
  39. package/dist/infrastructure/security-integration.d.ts +80 -0
  40. package/dist/infrastructure/security-integration.d.ts.map +1 -0
  41. package/dist/infrastructure/security-integration.js +404 -0
  42. package/dist/infrastructure/security-integration.js.map +1 -0
  43. package/dist/infrastructure/workflow-templates.d.ts +95 -0
  44. package/dist/infrastructure/workflow-templates.d.ts.map +1 -0
  45. package/dist/infrastructure/workflow-templates.js +366 -0
  46. package/dist/infrastructure/workflow-templates.js.map +1 -0
  47. package/dist/mcp-tools/browser-tools.d.ts +18 -0
  48. package/dist/mcp-tools/browser-tools.d.ts.map +1 -0
  49. package/dist/mcp-tools/browser-tools.js +1163 -0
  50. package/dist/mcp-tools/browser-tools.js.map +1 -0
  51. package/dist/mcp-tools/index.d.ts +6 -0
  52. package/dist/mcp-tools/index.d.ts.map +1 -0
  53. package/dist/mcp-tools/index.js +6 -0
  54. package/dist/mcp-tools/index.js.map +1 -0
  55. package/dist/skill/index.d.ts +15 -0
  56. package/dist/skill/index.d.ts.map +1 -0
  57. package/dist/skill/index.js +23 -0
  58. package/dist/skill/index.js.map +1 -0
  59. package/package.json +3 -4
  60. package/src/application/browser-service.ts +1 -1
  61. package/src/domain/types.ts +1 -1
  62. package/src/index.ts +2 -2
  63. package/src/infrastructure/hooks-integration.ts +1 -1
  64. package/src/infrastructure/memory-integration.ts +2 -2
  65. package/src/infrastructure/reasoningbank-adapter.ts +1 -1
  66. package/src/mcp-tools/browser-tools.ts +1 -1
  67. package/src/skill/index.ts +1 -1
@@ -0,0 +1,366 @@
1
+ /**
2
+ * @sparkleideas/browser - Workflow Templates
3
+ * Pre-built workflow templates for common browser automation tasks
4
+ */
5
+ // ============================================================================
6
+ // Built-in Workflow Templates
7
+ // ============================================================================
8
+ export const WORKFLOW_TEMPLATES = [
9
+ // ============ Authentication ============
10
+ {
11
+ id: 'login-basic',
12
+ name: 'Basic Login',
13
+ description: 'Standard username/password login flow',
14
+ category: 'authentication',
15
+ tags: ['login', 'auth', 'form'],
16
+ estimatedDuration: 5000,
17
+ variables: [
18
+ { name: 'url', type: 'string', required: true, description: 'Login page URL' },
19
+ { name: 'usernameSelector', type: 'selector', required: false, default: '#username, #email, [name="email"], [type="email"]', description: 'Username/email field selector' },
20
+ { name: 'passwordSelector', type: 'selector', required: false, default: '#password, [name="password"], [type="password"]', description: 'Password field selector' },
21
+ { name: 'submitSelector', type: 'selector', required: false, default: '[type="submit"], button[type="submit"], #login-btn', description: 'Submit button selector' },
22
+ { name: 'username', type: 'string', required: true, description: 'Username or email', sensitive: false },
23
+ { name: 'password', type: 'string', required: true, description: 'Password', sensitive: true },
24
+ { name: 'successIndicator', type: 'selector', required: false, default: '.dashboard, .home, #welcome', description: 'Element that indicates successful login' },
25
+ ],
26
+ steps: [
27
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000 },
28
+ { id: 'snapshot-login', action: 'snapshot', onError: 'continue' },
29
+ { id: 'enter-username', action: 'fill', target: '\${usernameSelector}', value: '\${username}', onError: 'abort' },
30
+ { id: 'enter-password', action: 'fill', target: '\${passwordSelector}', value: '\${password}', onError: 'abort' },
31
+ { id: 'submit', action: 'click', target: '\${submitSelector}', waitAfter: 2000, onError: 'retry', maxRetries: 2 },
32
+ { id: 'verify-success', action: 'wait', target: '\${successIndicator}', onError: 'abort' },
33
+ { id: 'snapshot-dashboard', action: 'snapshot', optional: true },
34
+ ],
35
+ },
36
+ {
37
+ id: 'login-oauth',
38
+ name: 'OAuth/SSO Login',
39
+ description: 'Login via OAuth provider (Google, GitHub, etc.)',
40
+ category: 'authentication',
41
+ tags: ['login', 'oauth', 'sso', 'google', 'github'],
42
+ estimatedDuration: 8000,
43
+ variables: [
44
+ { name: 'url', type: 'string', required: true, description: 'App login page URL' },
45
+ { name: 'providerButton', type: 'selector', required: true, description: 'OAuth provider button selector (e.g., "Continue with Google")' },
46
+ { name: 'email', type: 'string', required: true, description: 'OAuth account email' },
47
+ { name: 'password', type: 'string', required: true, description: 'OAuth account password', sensitive: true },
48
+ { name: 'successUrl', type: 'string', required: false, description: 'URL pattern after successful login' },
49
+ ],
50
+ steps: [
51
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000 },
52
+ { id: 'click-oauth', action: 'click', target: '\${providerButton}', waitAfter: 2000 },
53
+ { id: 'enter-email', action: 'fill', target: '[type="email"], #identifierId', value: '\${email}' },
54
+ { id: 'next-email', action: 'click', target: '#identifierNext, [type="submit"]', waitAfter: 1500 },
55
+ { id: 'enter-password', action: 'fill', target: '[type="password"], [name="password"]', value: '\${password}' },
56
+ { id: 'submit', action: 'click', target: '#passwordNext, [type="submit"]', waitAfter: 3000 },
57
+ { id: 'wait-redirect', action: 'wait', target: '\${successUrl}', onError: 'continue' },
58
+ ],
59
+ },
60
+ {
61
+ id: 'logout',
62
+ name: 'Logout',
63
+ description: 'Standard logout flow',
64
+ category: 'authentication',
65
+ tags: ['logout', 'auth', 'session'],
66
+ estimatedDuration: 3000,
67
+ variables: [
68
+ { name: 'menuSelector', type: 'selector', required: false, default: '.user-menu, #user-dropdown, .avatar', description: 'User menu selector (if needed)' },
69
+ { name: 'logoutSelector', type: 'selector', required: true, description: 'Logout button/link selector' },
70
+ { name: 'confirmSelector', type: 'selector', required: false, description: 'Confirmation button if needed' },
71
+ ],
72
+ steps: [
73
+ { id: 'open-menu', action: 'click', target: '\${menuSelector}', optional: true, waitAfter: 500 },
74
+ { id: 'click-logout', action: 'click', target: '\${logoutSelector}', waitAfter: 1000 },
75
+ { id: 'confirm', action: 'click', target: '\${confirmSelector}', optional: true, waitAfter: 1000 },
76
+ { id: 'verify', action: 'wait', target: '/login, /signin, .login-form', onError: 'continue' },
77
+ ],
78
+ },
79
+ // ============ Data Extraction ============
80
+ {
81
+ id: 'scrape-table',
82
+ name: 'Scrape Table Data',
83
+ description: 'Extract data from HTML tables',
84
+ category: 'data-extraction',
85
+ tags: ['scrape', 'table', 'data', 'extract'],
86
+ estimatedDuration: 3000,
87
+ variables: [
88
+ { name: 'url', type: 'string', required: true, description: 'Page URL containing the table' },
89
+ { name: 'tableSelector', type: 'selector', required: false, default: 'table', description: 'Table selector' },
90
+ { name: 'includeHeaders', type: 'boolean', required: false, default: true, description: 'Include table headers' },
91
+ ],
92
+ steps: [
93
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000 },
94
+ { id: 'wait-table', action: 'wait', target: '\${tableSelector}' },
95
+ { id: 'extract-data', action: 'eval', value: `
96
+ (() => {
97
+ const table = document.querySelector('\${tableSelector}');
98
+ if (!table) return { error: 'Table not found' };
99
+
100
+ const rows = Array.from(table.querySelectorAll('tr'));
101
+ const data = rows.map(row => {
102
+ const cells = Array.from(row.querySelectorAll('td, th'));
103
+ return cells.map(cell => cell.textContent.trim());
104
+ });
105
+
106
+ return { headers: data[0], rows: data.slice(1), totalRows: data.length - 1 };
107
+ })()
108
+ ` },
109
+ ],
110
+ },
111
+ {
112
+ id: 'scrape-list',
113
+ name: 'Scrape List Items',
114
+ description: 'Extract items from lists or repeated elements',
115
+ category: 'data-extraction',
116
+ tags: ['scrape', 'list', 'data', 'extract'],
117
+ estimatedDuration: 3000,
118
+ variables: [
119
+ { name: 'url', type: 'string', required: true, description: 'Page URL' },
120
+ { name: 'itemSelector', type: 'selector', required: true, description: 'Selector for each item' },
121
+ { name: 'fields', type: 'string', required: true, description: 'JSON object mapping field names to sub-selectors' },
122
+ ],
123
+ steps: [
124
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000 },
125
+ { id: 'wait-items', action: 'wait', target: '\${itemSelector}' },
126
+ { id: 'extract-items', action: 'eval', value: `
127
+ (() => {
128
+ const items = document.querySelectorAll('\${itemSelector}');
129
+ const fields = JSON.parse('\${fields}');
130
+
131
+ return Array.from(items).map(item => {
132
+ const result = {};
133
+ for (const [name, selector] of Object.entries(fields)) {
134
+ const el = item.querySelector(selector);
135
+ result[name] = el ? el.textContent.trim() : null;
136
+ }
137
+ return result;
138
+ });
139
+ })()
140
+ ` },
141
+ ],
142
+ },
143
+ // ============ Form Submission ============
144
+ {
145
+ id: 'contact-form',
146
+ name: 'Contact Form Submission',
147
+ description: 'Fill and submit a contact form',
148
+ category: 'form-submission',
149
+ tags: ['form', 'contact', 'submit'],
150
+ estimatedDuration: 5000,
151
+ variables: [
152
+ { name: 'url', type: 'string', required: true, description: 'Contact page URL' },
153
+ { name: 'name', type: 'string', required: true, description: 'Your name' },
154
+ { name: 'email', type: 'string', required: true, description: 'Your email' },
155
+ { name: 'message', type: 'string', required: true, description: 'Message content' },
156
+ { name: 'submitSelector', type: 'selector', required: false, default: '[type="submit"], button[type="submit"]', description: 'Submit button' },
157
+ ],
158
+ steps: [
159
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000 },
160
+ { id: 'fill-name', action: 'fill', target: '#name, [name="name"], [placeholder*="name" i]', value: '\${name}' },
161
+ { id: 'fill-email', action: 'fill', target: '#email, [name="email"], [type="email"]', value: '\${email}' },
162
+ { id: 'fill-message', action: 'fill', target: '#message, [name="message"], textarea', value: '\${message}' },
163
+ { id: 'submit', action: 'click', target: '\${submitSelector}', waitAfter: 2000 },
164
+ { id: 'screenshot', action: 'screenshot', optional: true },
165
+ ],
166
+ },
167
+ // ============ Testing ============
168
+ {
169
+ id: 'visual-regression',
170
+ name: 'Visual Regression Test',
171
+ description: 'Take screenshots for visual comparison',
172
+ category: 'testing',
173
+ tags: ['test', 'visual', 'screenshot', 'regression'],
174
+ estimatedDuration: 5000,
175
+ variables: [
176
+ { name: 'urls', type: 'string', required: true, description: 'Comma-separated list of URLs to test' },
177
+ { name: 'viewport', type: 'string', required: false, default: '1280x720', description: 'Viewport size (WxH)' },
178
+ ],
179
+ steps: [
180
+ { id: 'set-viewport', action: 'eval', value: `
181
+ (() => {
182
+ const [w, h] = '\${viewport}'.split('x').map(Number);
183
+ return { width: w, height: h };
184
+ })()
185
+ ` },
186
+ { id: 'test-urls', action: 'eval', value: `'\${urls}'.split(',').map(u => u.trim())` },
187
+ ],
188
+ },
189
+ {
190
+ id: 'smoke-test',
191
+ name: 'Smoke Test',
192
+ description: 'Basic smoke test to verify page loads correctly',
193
+ category: 'testing',
194
+ tags: ['test', 'smoke', 'health'],
195
+ estimatedDuration: 3000,
196
+ variables: [
197
+ { name: 'url', type: 'string', required: true, description: 'URL to test' },
198
+ { name: 'expectedTitle', type: 'string', required: false, description: 'Expected page title (partial match)' },
199
+ { name: 'requiredElements', type: 'string', required: false, description: 'Comma-separated selectors that must exist' },
200
+ ],
201
+ steps: [
202
+ { id: 'navigate', action: 'open', target: '\${url}', waitAfter: 1000, onError: 'abort' },
203
+ { id: 'check-title', action: 'get', target: 'title', condition: '\${expectedTitle}' },
204
+ { id: 'check-elements', action: 'eval', value: `
205
+ (() => {
206
+ const selectors = '\${requiredElements}'.split(',').map(s => s.trim()).filter(Boolean);
207
+ const results = selectors.map(sel => ({
208
+ selector: sel,
209
+ found: document.querySelector(sel) !== null
210
+ }));
211
+ const allFound = results.every(r => r.found);
212
+ return { results, allFound };
213
+ })()
214
+ `, optional: true },
215
+ { id: 'screenshot', action: 'screenshot' },
216
+ ],
217
+ },
218
+ // ============ Monitoring ============
219
+ {
220
+ id: 'uptime-check',
221
+ name: 'Uptime Check',
222
+ description: 'Check if a page is accessible and loads within timeout',
223
+ category: 'monitoring',
224
+ tags: ['monitor', 'uptime', 'health', 'availability'],
225
+ estimatedDuration: 10000,
226
+ variables: [
227
+ { name: 'url', type: 'string', required: true, description: 'URL to check' },
228
+ { name: 'timeout', type: 'number', required: false, default: 10000, description: 'Timeout in ms' },
229
+ { name: 'expectedStatus', type: 'number', required: false, default: 200, description: 'Expected HTTP status' },
230
+ ],
231
+ steps: [
232
+ { id: 'navigate', action: 'open', target: '\${url}', onError: 'abort' },
233
+ { id: 'measure', action: 'eval', value: `
234
+ (() => {
235
+ const timing = performance.timing;
236
+ return {
237
+ dns: timing.domainLookupEnd - timing.domainLookupStart,
238
+ connection: timing.connectEnd - timing.connectStart,
239
+ ttfb: timing.responseStart - timing.requestStart,
240
+ domLoad: timing.domContentLoadedEventEnd - timing.navigationStart,
241
+ fullLoad: timing.loadEventEnd - timing.navigationStart
242
+ };
243
+ })()
244
+ ` },
245
+ { id: 'screenshot', action: 'screenshot', optional: true },
246
+ ],
247
+ },
248
+ ];
249
+ // ============================================================================
250
+ // Workflow Manager
251
+ // ============================================================================
252
+ export class WorkflowManager {
253
+ templates = new Map();
254
+ executions = new Map();
255
+ constructor() {
256
+ // Load built-in templates
257
+ for (const template of WORKFLOW_TEMPLATES) {
258
+ this.templates.set(template.id, template);
259
+ }
260
+ }
261
+ /**
262
+ * Get all available templates
263
+ */
264
+ listTemplates(category) {
265
+ const templates = Array.from(this.templates.values());
266
+ if (category) {
267
+ return templates.filter((t) => t.category === category);
268
+ }
269
+ return templates;
270
+ }
271
+ /**
272
+ * Get a specific template
273
+ */
274
+ getTemplate(id) {
275
+ return this.templates.get(id);
276
+ }
277
+ /**
278
+ * Register a custom template
279
+ */
280
+ registerTemplate(template) {
281
+ this.templates.set(template.id, template);
282
+ }
283
+ /**
284
+ * Search templates by tags
285
+ */
286
+ searchTemplates(query) {
287
+ const terms = query.toLowerCase().split(/\s+/);
288
+ return Array.from(this.templates.values()).filter((t) => {
289
+ const searchText = `${t.name} ${t.description} ${t.tags.join(' ')}`.toLowerCase();
290
+ return terms.every((term) => searchText.includes(term));
291
+ });
292
+ }
293
+ /**
294
+ * Validate variables for a template
295
+ */
296
+ validateVariables(templateId, variables) {
297
+ const template = this.templates.get(templateId);
298
+ if (!template) {
299
+ return { valid: false, errors: [`Template '${templateId}' not found`] };
300
+ }
301
+ const errors = [];
302
+ for (const varDef of template.variables) {
303
+ const value = variables[varDef.name];
304
+ if (varDef.required && (value === undefined || value === null || value === '')) {
305
+ errors.push(`Required variable '${varDef.name}' is missing`);
306
+ continue;
307
+ }
308
+ if (value !== undefined && value !== null) {
309
+ switch (varDef.type) {
310
+ case 'number':
311
+ if (typeof value !== 'number' && isNaN(Number(value))) {
312
+ errors.push(`Variable '${varDef.name}' must be a number`);
313
+ }
314
+ break;
315
+ case 'boolean':
316
+ if (typeof value !== 'boolean' && !['true', 'false'].includes(String(value))) {
317
+ errors.push(`Variable '${varDef.name}' must be a boolean`);
318
+ }
319
+ break;
320
+ }
321
+ }
322
+ }
323
+ return { valid: errors.length === 0, errors };
324
+ }
325
+ /**
326
+ * Interpolate variables in step values
327
+ */
328
+ interpolateStep(step, variables) {
329
+ const interpolate = (value) => {
330
+ if (!value)
331
+ return value;
332
+ return value.replace(/\$\{(\w+)\}/g, (_, name) => {
333
+ const val = variables[name];
334
+ return val !== undefined ? String(val) : `\${${name}}`;
335
+ });
336
+ };
337
+ return {
338
+ ...step,
339
+ target: interpolate(step.target),
340
+ value: interpolate(step.value),
341
+ };
342
+ }
343
+ /**
344
+ * Get execution status
345
+ */
346
+ getExecution(executionId) {
347
+ return this.executions.get(executionId);
348
+ }
349
+ }
350
+ // ============================================================================
351
+ // Factory
352
+ // ============================================================================
353
+ let defaultManager = null;
354
+ export function getWorkflowManager() {
355
+ if (!defaultManager) {
356
+ defaultManager = new WorkflowManager();
357
+ }
358
+ return defaultManager;
359
+ }
360
+ export function listWorkflows(category) {
361
+ return getWorkflowManager().listTemplates(category);
362
+ }
363
+ export function getWorkflow(id) {
364
+ return getWorkflowManager().getTemplate(id);
365
+ }
366
+ //# sourceMappingURL=workflow-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-templates.js","sourceRoot":"","sources":["../../src/infrastructure/workflow-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @sparkleideas/browser - MCP Tools
3
+ * 50+ browser automation tools for claude-flow MCP server
4
+ */
5
+ export interface MCPTool {
6
+ name: string;
7
+ description: string;
8
+ category: string;
9
+ inputSchema: {
10
+ type: 'object';
11
+ properties: Record<string, unknown>;
12
+ required?: string[];
13
+ };
14
+ handler: (input: Record<string, unknown>) => Promise<unknown>;
15
+ }
16
+ export declare const browserTools: MCPTool[];
17
+ export default browserTools;
18
+ //# sourceMappingURL=browser-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-tools.d.ts","sourceRoot":"","sources":["../../src/mcp-tools/browser-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/D;AA4oCD,eAAO,MAAM,YAAY,EAAE,OAAO,EAcjC,CAAC;AAEF,eAAe,YAAY,CAAC"}