xibecode 1.0.2 → 1.0.6

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 (288) hide show
  1. package/dist/commands/chat.d.ts +0 -1
  2. package/dist/commands/chat.d.ts.map +1 -1
  3. package/dist/commands/chat.js +10 -7
  4. package/dist/commands/chat.js.map +1 -1
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +5 -3
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/diagnostics.js +1 -1
  9. package/dist/commands/diagnostics.js.map +1 -1
  10. package/dist/commands/mcp.js +1 -1
  11. package/dist/commands/mcp.js.map +1 -1
  12. package/dist/commands/resume.js +1 -1
  13. package/dist/commands/resume.js.map +1 -1
  14. package/dist/commands/run-pr.d.ts.map +1 -1
  15. package/dist/commands/run-pr.js +13 -10
  16. package/dist/commands/run-pr.js.map +1 -1
  17. package/dist/commands/run.d.ts.map +1 -1
  18. package/dist/commands/run.js +17 -14
  19. package/dist/commands/run.js.map +1 -1
  20. package/dist/commands/skills.d.ts.map +1 -1
  21. package/dist/commands/skills.js +3 -2
  22. package/dist/commands/skills.js.map +1 -1
  23. package/dist/components/AssistantMarkdown.js +1 -1
  24. package/dist/components/AssistantMarkdown.js.map +1 -1
  25. package/dist/index.js +2 -39
  26. package/dist/index.js.map +1 -1
  27. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  28. package/dist/ui/claude-style-chat.js +15 -11
  29. package/dist/ui/claude-style-chat.js.map +1 -1
  30. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  31. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  32. package/dist/utils/built-in-skills-dir.js +11 -0
  33. package/dist/utils/built-in-skills-dir.js.map +1 -0
  34. package/dist/utils/config.d.ts +2 -119
  35. package/dist/utils/config.d.ts.map +1 -1
  36. package/dist/utils/config.js +3 -88
  37. package/dist/utils/config.js.map +1 -1
  38. package/package.json +11 -26
  39. package/dist/commands/punycode.d.ts +0 -5
  40. package/dist/commands/punycode.d.ts.map +0 -1
  41. package/dist/commands/punycode.js +0 -48
  42. package/dist/commands/punycode.js.map +0 -1
  43. package/dist/commands/tui.d.ts +0 -9
  44. package/dist/commands/tui.d.ts.map +0 -1
  45. package/dist/commands/tui.js +0 -83
  46. package/dist/commands/tui.js.map +0 -1
  47. package/dist/core/agent-tool-policies.d.ts +0 -5
  48. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  49. package/dist/core/agent-tool-policies.js +0 -18
  50. package/dist/core/agent-tool-policies.js.map +0 -1
  51. package/dist/core/agent.d.ts +0 -181
  52. package/dist/core/agent.d.ts.map +0 -1
  53. package/dist/core/agent.js +0 -1777
  54. package/dist/core/agent.js.map +0 -1
  55. package/dist/core/background-agent.d.ts +0 -23
  56. package/dist/core/background-agent.d.ts.map +0 -1
  57. package/dist/core/background-agent.js +0 -175
  58. package/dist/core/background-agent.js.map +0 -1
  59. package/dist/core/code-graph.d.ts +0 -18
  60. package/dist/core/code-graph.d.ts.map +0 -1
  61. package/dist/core/code-graph.js +0 -105
  62. package/dist/core/code-graph.js.map +0 -1
  63. package/dist/core/conflict-solver.d.ts +0 -26
  64. package/dist/core/conflict-solver.d.ts.map +0 -1
  65. package/dist/core/conflict-solver.js +0 -108
  66. package/dist/core/conflict-solver.js.map +0 -1
  67. package/dist/core/context-compactor.d.ts +0 -10
  68. package/dist/core/context-compactor.d.ts.map +0 -1
  69. package/dist/core/context-compactor.js +0 -158
  70. package/dist/core/context-compactor.js.map +0 -1
  71. package/dist/core/context-pruner.d.ts +0 -19
  72. package/dist/core/context-pruner.d.ts.map +0 -1
  73. package/dist/core/context-pruner.js +0 -103
  74. package/dist/core/context-pruner.js.map +0 -1
  75. package/dist/core/context.d.ts +0 -82
  76. package/dist/core/context.d.ts.map +0 -1
  77. package/dist/core/context.js +0 -273
  78. package/dist/core/context.js.map +0 -1
  79. package/dist/core/conversation-recovery.d.ts +0 -9
  80. package/dist/core/conversation-recovery.d.ts.map +0 -1
  81. package/dist/core/conversation-recovery.js +0 -15
  82. package/dist/core/conversation-recovery.js.map +0 -1
  83. package/dist/core/debug-workflow.d.ts +0 -9
  84. package/dist/core/debug-workflow.d.ts.map +0 -1
  85. package/dist/core/debug-workflow.js +0 -19
  86. package/dist/core/debug-workflow.js.map +0 -1
  87. package/dist/core/docs-scraper.d.ts +0 -40
  88. package/dist/core/docs-scraper.d.ts.map +0 -1
  89. package/dist/core/docs-scraper.js +0 -386
  90. package/dist/core/docs-scraper.js.map +0 -1
  91. package/dist/core/editor.d.ts +0 -87
  92. package/dist/core/editor.d.ts.map +0 -1
  93. package/dist/core/editor.js +0 -377
  94. package/dist/core/editor.js.map +0 -1
  95. package/dist/core/export.d.ts +0 -11
  96. package/dist/core/export.d.ts.map +0 -1
  97. package/dist/core/export.js +0 -54
  98. package/dist/core/export.js.map +0 -1
  99. package/dist/core/history-manager.d.ts +0 -75
  100. package/dist/core/history-manager.d.ts.map +0 -1
  101. package/dist/core/history-manager.js +0 -146
  102. package/dist/core/history-manager.js.map +0 -1
  103. package/dist/core/marketplace-client.d.ts +0 -52
  104. package/dist/core/marketplace-client.d.ts.map +0 -1
  105. package/dist/core/marketplace-client.js +0 -71
  106. package/dist/core/marketplace-client.js.map +0 -1
  107. package/dist/core/mcp/mcp-config.d.ts +0 -10
  108. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  109. package/dist/core/mcp/mcp-config.js +0 -70
  110. package/dist/core/mcp/mcp-config.js.map +0 -1
  111. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  112. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  113. package/dist/core/mcp/mcp-policy.js +0 -56
  114. package/dist/core/mcp/mcp-policy.js.map +0 -1
  115. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  116. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  117. package/dist/core/mcp/oauth-flow.js +0 -230
  118. package/dist/core/mcp/oauth-flow.js.map +0 -1
  119. package/dist/core/mcp/oauth-store.d.ts +0 -13
  120. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  121. package/dist/core/mcp/oauth-store.js +0 -68
  122. package/dist/core/mcp/oauth-store.js.map +0 -1
  123. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  124. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  125. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  126. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  127. package/dist/core/mcp-client.d.ts +0 -99
  128. package/dist/core/mcp-client.d.ts.map +0 -1
  129. package/dist/core/mcp-client.js +0 -315
  130. package/dist/core/mcp-client.js.map +0 -1
  131. package/dist/core/memory-promotions.d.ts +0 -15
  132. package/dist/core/memory-promotions.d.ts.map +0 -1
  133. package/dist/core/memory-promotions.js +0 -38
  134. package/dist/core/memory-promotions.js.map +0 -1
  135. package/dist/core/memory.d.ts +0 -32
  136. package/dist/core/memory.d.ts.map +0 -1
  137. package/dist/core/memory.js +0 -121
  138. package/dist/core/memory.js.map +0 -1
  139. package/dist/core/modes.d.ts +0 -432
  140. package/dist/core/modes.d.ts.map +0 -1
  141. package/dist/core/modes.js +0 -1088
  142. package/dist/core/modes.js.map +0 -1
  143. package/dist/core/pattern-miner.d.ts +0 -43
  144. package/dist/core/pattern-miner.d.ts.map +0 -1
  145. package/dist/core/pattern-miner.js +0 -123
  146. package/dist/core/pattern-miner.js.map +0 -1
  147. package/dist/core/permission-store.d.ts +0 -15
  148. package/dist/core/permission-store.d.ts.map +0 -1
  149. package/dist/core/permission-store.js +0 -30
  150. package/dist/core/permission-store.js.map +0 -1
  151. package/dist/core/permissions.d.ts +0 -33
  152. package/dist/core/permissions.d.ts.map +0 -1
  153. package/dist/core/permissions.js +0 -141
  154. package/dist/core/permissions.js.map +0 -1
  155. package/dist/core/plan-artifacts.d.ts +0 -10
  156. package/dist/core/plan-artifacts.d.ts.map +0 -1
  157. package/dist/core/plan-artifacts.js +0 -60
  158. package/dist/core/plan-artifacts.js.map +0 -1
  159. package/dist/core/plan-session.d.ts +0 -25
  160. package/dist/core/plan-session.d.ts.map +0 -1
  161. package/dist/core/plan-session.js +0 -99
  162. package/dist/core/plan-session.js.map +0 -1
  163. package/dist/core/planMode.d.ts +0 -51
  164. package/dist/core/planMode.d.ts.map +0 -1
  165. package/dist/core/planMode.js +0 -245
  166. package/dist/core/planMode.js.map +0 -1
  167. package/dist/core/plugins.d.ts +0 -96
  168. package/dist/core/plugins.d.ts.map +0 -1
  169. package/dist/core/plugins.js +0 -202
  170. package/dist/core/plugins.js.map +0 -1
  171. package/dist/core/session-bridge.d.ts +0 -128
  172. package/dist/core/session-bridge.d.ts.map +0 -1
  173. package/dist/core/session-bridge.js +0 -328
  174. package/dist/core/session-bridge.js.map +0 -1
  175. package/dist/core/session-manager.d.ts +0 -80
  176. package/dist/core/session-manager.d.ts.map +0 -1
  177. package/dist/core/session-manager.js +0 -166
  178. package/dist/core/session-manager.js.map +0 -1
  179. package/dist/core/session-memory.d.ts +0 -45
  180. package/dist/core/session-memory.d.ts.map +0 -1
  181. package/dist/core/session-memory.js +0 -103
  182. package/dist/core/session-memory.js.map +0 -1
  183. package/dist/core/skill-selection.d.ts +0 -36
  184. package/dist/core/skill-selection.d.ts.map +0 -1
  185. package/dist/core/skill-selection.js +0 -172
  186. package/dist/core/skill-selection.js.map +0 -1
  187. package/dist/core/skills-sh-client.d.ts +0 -19
  188. package/dist/core/skills-sh-client.d.ts.map +0 -1
  189. package/dist/core/skills-sh-client.js +0 -75
  190. package/dist/core/skills-sh-client.js.map +0 -1
  191. package/dist/core/skills.d.ts +0 -97
  192. package/dist/core/skills.d.ts.map +0 -1
  193. package/dist/core/skills.js +0 -339
  194. package/dist/core/skills.js.map +0 -1
  195. package/dist/core/swarm.d.ts +0 -34
  196. package/dist/core/swarm.d.ts.map +0 -1
  197. package/dist/core/swarm.js +0 -111
  198. package/dist/core/swarm.js.map +0 -1
  199. package/dist/core/task-status.d.ts +0 -13
  200. package/dist/core/task-status.d.ts.map +0 -1
  201. package/dist/core/task-status.js +0 -17
  202. package/dist/core/task-status.js.map +0 -1
  203. package/dist/core/tool-orchestrator.d.ts +0 -30
  204. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  205. package/dist/core/tool-orchestrator.js +0 -89
  206. package/dist/core/tool-orchestrator.js.map +0 -1
  207. package/dist/core/tools.d.ts +0 -462
  208. package/dist/core/tools.d.ts.map +0 -1
  209. package/dist/core/tools.js +0 -2916
  210. package/dist/core/tools.js.map +0 -1
  211. package/dist/core/transcript-cleanup.d.ts +0 -8
  212. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  213. package/dist/core/transcript-cleanup.js +0 -52
  214. package/dist/core/transcript-cleanup.js.map +0 -1
  215. package/dist/core/visual-feedback.d.ts +0 -20
  216. package/dist/core/visual-feedback.d.ts.map +0 -1
  217. package/dist/core/visual-feedback.js +0 -117
  218. package/dist/core/visual-feedback.js.map +0 -1
  219. package/dist/tools/browser.d.ts +0 -120
  220. package/dist/tools/browser.d.ts.map +0 -1
  221. package/dist/tools/browser.js +0 -439
  222. package/dist/tools/browser.js.map +0 -1
  223. package/dist/tools/test-generator.d.ts +0 -157
  224. package/dist/tools/test-generator.d.ts.map +0 -1
  225. package/dist/tools/test-generator.js +0 -893
  226. package/dist/tools/test-generator.js.map +0 -1
  227. package/dist/tui/InkApp.d.ts +0 -21
  228. package/dist/tui/InkApp.d.ts.map +0 -1
  229. package/dist/tui/InkApp.js +0 -146
  230. package/dist/tui/InkApp.js.map +0 -1
  231. package/dist/tui/MarkdownMessage.d.ts +0 -16
  232. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  233. package/dist/tui/MarkdownMessage.js +0 -63
  234. package/dist/tui/MarkdownMessage.js.map +0 -1
  235. package/dist/tui/blessed-chat.d.ts +0 -9
  236. package/dist/tui/blessed-chat.d.ts.map +0 -1
  237. package/dist/tui/blessed-chat.js +0 -887
  238. package/dist/tui/blessed-chat.js.map +0 -1
  239. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  240. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  241. package/dist/tui/markdown-to-blessed.js +0 -26
  242. package/dist/tui/markdown-to-blessed.js.map +0 -1
  243. package/dist/ui/ink/App.d.ts +0 -25
  244. package/dist/ui/ink/App.d.ts.map +0 -1
  245. package/dist/ui/ink/App.js +0 -372
  246. package/dist/ui/ink/App.js.map +0 -1
  247. package/dist/utils/at-references.d.ts +0 -14
  248. package/dist/utils/at-references.d.ts.map +0 -1
  249. package/dist/utils/at-references.js +0 -47
  250. package/dist/utils/at-references.js.map +0 -1
  251. package/dist/utils/auto-memory.d.ts +0 -24
  252. package/dist/utils/auto-memory.d.ts.map +0 -1
  253. package/dist/utils/auto-memory.js +0 -153
  254. package/dist/utils/auto-memory.js.map +0 -1
  255. package/dist/utils/git.d.ts +0 -89
  256. package/dist/utils/git.d.ts.map +0 -1
  257. package/dist/utils/git.js +0 -444
  258. package/dist/utils/git.js.map +0 -1
  259. package/dist/utils/mcp-servers-file.d.ts +0 -46
  260. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  261. package/dist/utils/mcp-servers-file.js +0 -212
  262. package/dist/utils/mcp-servers-file.js.map +0 -1
  263. package/dist/utils/safety.d.ts +0 -60
  264. package/dist/utils/safety.d.ts.map +0 -1
  265. package/dist/utils/safety.js +0 -254
  266. package/dist/utils/safety.js.map +0 -1
  267. package/dist/utils/smithery.d.ts +0 -25
  268. package/dist/utils/smithery.d.ts.map +0 -1
  269. package/dist/utils/smithery.js +0 -50
  270. package/dist/utils/smithery.js.map +0 -1
  271. package/dist/utils/testRunner.d.ts +0 -44
  272. package/dist/utils/testRunner.d.ts.map +0 -1
  273. package/dist/utils/testRunner.js +0 -270
  274. package/dist/utils/testRunner.js.map +0 -1
  275. package/dist/webui/server.d.ts +0 -99
  276. package/dist/webui/server.d.ts.map +0 -1
  277. package/dist/webui/server.js +0 -2619
  278. package/dist/webui/server.js.map +0 -1
  279. package/webui-dist/assets/index-CSla6Lzy.css +0 -32
  280. package/webui-dist/assets/index-G_Z4gzPy.js +0 -457
  281. package/webui-dist/assets/index-G_Z4gzPy.js.map +0 -1
  282. package/webui-dist/assets/xterm-Da5jL1MD.js +0 -10
  283. package/webui-dist/assets/xterm-Da5jL1MD.js.map +0 -1
  284. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js +0 -2
  285. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js.map +0 -1
  286. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js +0 -2
  287. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js.map +0 -1
  288. package/webui-dist/index.html +0 -15
@@ -1,439 +0,0 @@
1
- import { chromium } from 'playwright';
2
- import * as fs from 'fs/promises';
3
- import * as path from 'path';
4
- /**
5
- * Default viewports for responsive testing
6
- */
7
- export const DEFAULT_VIEWPORTS = [
8
- { name: 'mobile', width: 375, height: 667 },
9
- { name: 'tablet', width: 768, height: 1024 },
10
- { name: 'desktop', width: 1280, height: 800 },
11
- { name: 'desktop-large', width: 1920, height: 1080 },
12
- ];
13
- /**
14
- * BrowserManager - Playwright-based browser automation for XibeCode
15
- *
16
- * Provides tools for:
17
- * - Screenshot capture
18
- * - Console log collection
19
- * - Visual regression testing
20
- * - Performance metrics (Core Web Vitals)
21
- * - Accessibility auditing
22
- * - Responsive testing
23
- * - Network monitoring
24
- */
25
- export class BrowserManager {
26
- browser = null;
27
- context = null;
28
- async getBrowser() {
29
- if (!this.browser) {
30
- this.browser = await chromium.launch({
31
- headless: true,
32
- args: ['--no-sandbox', '--disable-setuid-sandbox'],
33
- });
34
- this.context = await this.browser.newContext();
35
- }
36
- if (!this.context) {
37
- this.context = await this.browser.newContext();
38
- }
39
- return this.context;
40
- }
41
- async close() {
42
- if (this.context) {
43
- await this.context.close();
44
- this.context = null;
45
- }
46
- if (this.browser) {
47
- await this.browser.close();
48
- this.browser = null;
49
- }
50
- }
51
- /**
52
- * Take a screenshot of a webpage
53
- */
54
- async takeScreenshot(url, outputPath, fullPage = true) {
55
- const context = await this.getBrowser();
56
- const page = await context.newPage();
57
- try {
58
- await page.setViewportSize({ width: 1280, height: 800 });
59
- await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
60
- await page.screenshot({ path: outputPath, fullPage });
61
- return `Screenshot saved to ${outputPath}`;
62
- }
63
- catch (error) {
64
- throw new Error(`Failed to take screenshot: ${error.message}`);
65
- }
66
- finally {
67
- await page.close();
68
- }
69
- }
70
- /**
71
- * Get console logs from a webpage
72
- */
73
- async getConsoleLogs(url, timeout = 5000) {
74
- const context = await this.getBrowser();
75
- const page = await context.newPage();
76
- const logs = [];
77
- page.on('console', (msg) => logs.push(`[${msg.type()}] ${msg.text()}`));
78
- page.on('pageerror', (err) => logs.push(`[error] ${err.message}`));
79
- try {
80
- await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
81
- await page.waitForTimeout(timeout);
82
- return logs;
83
- }
84
- catch (error) {
85
- return [`Error loading page: ${error.message}`];
86
- }
87
- finally {
88
- await page.close();
89
- }
90
- }
91
- /**
92
- * Run a visual regression test by comparing screenshots
93
- */
94
- async runVisualTest(url, baselinePath, outputDir = '.playwright-baselines') {
95
- const context = await this.getBrowser();
96
- const page = await context.newPage();
97
- try {
98
- await page.setViewportSize({ width: 1280, height: 800 });
99
- await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
100
- // Ensure output directory exists
101
- await fs.mkdir(outputDir, { recursive: true });
102
- const screenshotPath = path.join(outputDir, 'current.png');
103
- await page.screenshot({ path: screenshotPath, fullPage: true });
104
- // Check if baseline exists
105
- let baselineExists = false;
106
- try {
107
- await fs.access(baselinePath);
108
- baselineExists = true;
109
- }
110
- catch {
111
- // Baseline doesn't exist, create it
112
- await fs.copyFile(screenshotPath, baselinePath);
113
- return {
114
- match: true,
115
- diffPercentage: 0,
116
- baselineExists: false,
117
- screenshotPath,
118
- };
119
- }
120
- // Simple pixel comparison (for basic visual testing)
121
- const currentBuffer = await fs.readFile(screenshotPath);
122
- const baselineBuffer = await fs.readFile(baselinePath);
123
- const match = currentBuffer.equals(baselineBuffer);
124
- return {
125
- match,
126
- diffPercentage: match ? 0 : 100, // Simplified - would need pixelmatch for accurate diff
127
- baselineExists: true,
128
- screenshotPath,
129
- };
130
- }
131
- catch (error) {
132
- throw new Error(`Visual test failed: ${error.message}`);
133
- }
134
- finally {
135
- await page.close();
136
- }
137
- }
138
- /**
139
- * Check basic accessibility issues on a page
140
- */
141
- async checkAccessibility(url) {
142
- const context = await this.getBrowser();
143
- const page = await context.newPage();
144
- const issues = [];
145
- try {
146
- await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
147
- // Check for common accessibility issues
148
- const checks = await page.evaluate(() => {
149
- const issues = [];
150
- // Check images without alt text
151
- document.querySelectorAll('img').forEach((img, i) => {
152
- if (!img.alt && !img.getAttribute('aria-label')) {
153
- issues.push({
154
- type: 'error',
155
- message: 'Image missing alt text',
156
- selector: `img:nth-of-type(${i + 1})`,
157
- context: img.src?.substring(0, 50),
158
- });
159
- }
160
- });
161
- // Check form inputs without labels
162
- document.querySelectorAll('input, select, textarea').forEach((input, i) => {
163
- const id = input.id;
164
- const hasLabel = id && document.querySelector(`label[for="${id}"]`);
165
- const hasAriaLabel = input.getAttribute('aria-label') || input.getAttribute('aria-labelledby');
166
- if (!hasLabel && !hasAriaLabel) {
167
- issues.push({
168
- type: 'error',
169
- message: 'Form input missing label',
170
- selector: `${input.tagName.toLowerCase()}:nth-of-type(${i + 1})`,
171
- context: input.getAttribute('name') || input.getAttribute('placeholder') || undefined,
172
- });
173
- }
174
- });
175
- // Check for empty links
176
- document.querySelectorAll('a').forEach((link, i) => {
177
- const hasText = link.textContent?.trim();
178
- const hasAriaLabel = link.getAttribute('aria-label');
179
- const hasTitle = link.getAttribute('title');
180
- if (!hasText && !hasAriaLabel && !hasTitle) {
181
- issues.push({
182
- type: 'warning',
183
- message: 'Link has no accessible text',
184
- selector: `a:nth-of-type(${i + 1})`,
185
- context: link.href?.substring(0, 50),
186
- });
187
- }
188
- });
189
- // Check for missing document language
190
- if (!document.documentElement.lang) {
191
- issues.push({
192
- type: 'warning',
193
- message: 'Document missing lang attribute',
194
- selector: 'html',
195
- });
196
- }
197
- // Check for missing page title
198
- if (!document.title) {
199
- issues.push({
200
- type: 'error',
201
- message: 'Page missing title',
202
- selector: 'head',
203
- });
204
- }
205
- // Check heading hierarchy
206
- const headings = Array.from(document.querySelectorAll('h1, h2, h3, h4, h5, h6'));
207
- let lastLevel = 0;
208
- headings.forEach((heading, i) => {
209
- const level = parseInt(heading.tagName[1]);
210
- if (level > lastLevel + 1 && lastLevel !== 0) {
211
- issues.push({
212
- type: 'warning',
213
- message: `Heading level skipped from h${lastLevel} to h${level}`,
214
- selector: `${heading.tagName.toLowerCase()}:nth-of-type(${i + 1})`,
215
- context: heading.textContent?.substring(0, 30),
216
- });
217
- }
218
- lastLevel = level;
219
- });
220
- // Check for sufficient color contrast (basic check)
221
- const buttons = document.querySelectorAll('button, [role="button"]');
222
- buttons.forEach((button, i) => {
223
- const styles = window.getComputedStyle(button);
224
- if (styles.backgroundColor === 'transparent' && !button.querySelector('img, svg')) {
225
- issues.push({
226
- type: 'notice',
227
- message: 'Button may have contrast issues',
228
- selector: `button:nth-of-type(${i + 1})`,
229
- context: button.textContent?.substring(0, 30),
230
- });
231
- }
232
- });
233
- return issues;
234
- });
235
- return checks.map(c => ({
236
- type: c.type,
237
- message: c.message,
238
- selector: c.selector,
239
- context: c.context,
240
- }));
241
- }
242
- catch (error) {
243
- throw new Error(`Accessibility check failed: ${error.message}`);
244
- }
245
- finally {
246
- await page.close();
247
- }
248
- }
249
- /**
250
- * Measure Core Web Vitals and performance metrics
251
- */
252
- async measurePerformance(url) {
253
- const context = await this.getBrowser();
254
- const page = await context.newPage();
255
- try {
256
- const startTime = Date.now();
257
- // Navigate and measure timing
258
- await page.goto(url, { waitUntil: 'load', timeout: 30000 });
259
- const loadTime = Date.now() - startTime;
260
- // Get performance metrics from browser
261
- const metrics = await page.evaluate(() => {
262
- const perf = performance;
263
- const navigation = perf.getEntriesByType('navigation')[0];
264
- const paint = perf.getEntriesByType('paint');
265
- // Get First Contentful Paint
266
- const fcp = paint.find(p => p.name === 'first-contentful-paint');
267
- // Get Largest Contentful Paint (if available)
268
- let lcp = null;
269
- try {
270
- const lcpEntries = perf.getEntriesByType('largest-contentful-paint');
271
- if (lcpEntries.length > 0) {
272
- lcp = lcpEntries[lcpEntries.length - 1].startTime;
273
- }
274
- }
275
- catch {
276
- // LCP not available
277
- }
278
- // Get Cumulative Layout Shift (if available)
279
- let cls = null;
280
- try {
281
- const layoutShiftEntries = perf.getEntriesByType('layout-shift');
282
- cls = layoutShiftEntries
283
- .filter(entry => !entry.hadRecentInput)
284
- .reduce((sum, entry) => sum + entry.value, 0);
285
- }
286
- catch {
287
- // CLS not available
288
- }
289
- return {
290
- domContentLoaded: navigation?.domContentLoadedEventEnd - navigation?.startTime || 0,
291
- firstContentfulPaint: fcp?.startTime || null,
292
- largestContentfulPaint: lcp,
293
- cumulativeLayoutShift: cls,
294
- timeToInteractive: navigation?.domInteractive - navigation?.startTime || null,
295
- };
296
- });
297
- return {
298
- url,
299
- loadTime,
300
- domContentLoaded: metrics.domContentLoaded,
301
- firstContentfulPaint: metrics.firstContentfulPaint,
302
- largestContentfulPaint: metrics.largestContentfulPaint,
303
- cumulativeLayoutShift: metrics.cumulativeLayoutShift,
304
- timeToInteractive: metrics.timeToInteractive,
305
- };
306
- }
307
- catch (error) {
308
- throw new Error(`Performance measurement failed: ${error.message}`);
309
- }
310
- finally {
311
- await page.close();
312
- }
313
- }
314
- /**
315
- * Test a page across multiple viewport sizes
316
- */
317
- async testResponsive(url, outputDir, viewports = DEFAULT_VIEWPORTS) {
318
- const context = await this.getBrowser();
319
- const results = [];
320
- // Ensure output directory exists
321
- await fs.mkdir(outputDir, { recursive: true });
322
- for (const viewport of viewports) {
323
- const page = await context.newPage();
324
- const errors = [];
325
- page.on('pageerror', (err) => errors.push(err.message));
326
- page.on('console', (msg) => {
327
- if (msg.type() === 'error') {
328
- errors.push(msg.text());
329
- }
330
- });
331
- try {
332
- await page.setViewportSize({ width: viewport.width, height: viewport.height });
333
- const startTime = Date.now();
334
- await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
335
- const loadTime = Date.now() - startTime;
336
- const screenshotPath = path.join(outputDir, `${viewport.name}-${viewport.width}x${viewport.height}.png`);
337
- await page.screenshot({ path: screenshotPath, fullPage: true });
338
- results.push({
339
- viewport,
340
- screenshotPath,
341
- loadTime,
342
- errors,
343
- });
344
- }
345
- catch (error) {
346
- results.push({
347
- viewport,
348
- screenshotPath: '',
349
- loadTime: 0,
350
- errors: [error.message],
351
- });
352
- }
353
- finally {
354
- await page.close();
355
- }
356
- }
357
- return results;
358
- }
359
- /**
360
- * Capture all network requests made during page load
361
- */
362
- async captureNetworkRequests(url) {
363
- const context = await this.getBrowser();
364
- const page = await context.newPage();
365
- const requests = [];
366
- const requestTimings = new Map();
367
- page.on('request', (request) => {
368
- requestTimings.set(request.url(), Date.now());
369
- });
370
- page.on('response', (response) => {
371
- const request = response.request();
372
- const startTime = requestTimings.get(request.url());
373
- const duration = startTime ? Date.now() - startTime : null;
374
- requests.push({
375
- url: request.url(),
376
- method: request.method(),
377
- status: response.status(),
378
- resourceType: request.resourceType(),
379
- duration,
380
- });
381
- });
382
- page.on('requestfailed', (request) => {
383
- const startTime = requestTimings.get(request.url());
384
- const duration = startTime ? Date.now() - startTime : null;
385
- requests.push({
386
- url: request.url(),
387
- method: request.method(),
388
- status: null,
389
- resourceType: request.resourceType(),
390
- duration,
391
- });
392
- });
393
- try {
394
- await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
395
- return requests;
396
- }
397
- catch (error) {
398
- // Return what we captured even on error
399
- return requests;
400
- }
401
- finally {
402
- await page.close();
403
- }
404
- }
405
- /**
406
- * Run a Playwright test file
407
- */
408
- async runPlaywrightTest(testPath, options) {
409
- const { exec } = await import('child_process');
410
- const { promisify } = await import('util');
411
- const execAsync = promisify(exec);
412
- const args = ['npx', 'playwright', 'test', testPath];
413
- if (options?.headed) {
414
- args.push('--headed');
415
- }
416
- if (options?.browser) {
417
- args.push('--project=' + options.browser);
418
- }
419
- if (options?.timeout) {
420
- args.push('--timeout=' + options.timeout);
421
- }
422
- try {
423
- const { stdout, stderr } = await execAsync(args.join(' '), {
424
- timeout: options?.timeout || 120000,
425
- });
426
- return {
427
- success: true,
428
- output: stdout + (stderr ? '\n' + stderr : ''),
429
- };
430
- }
431
- catch (error) {
432
- return {
433
- success: false,
434
- output: error.stdout + (error.stderr ? '\n' + error.stderr : ''),
435
- };
436
- }
437
- }
438
- }
439
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"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"}
@@ -1,157 +0,0 @@
1
- /**
2
- * AI Test Generator
3
- *
4
- * Automatically generates test cases for functions, classes, and modules.
5
- * Supports multiple testing frameworks: Vitest, Jest, Mocha, pytest, Go test.
6
- *
7
- * @module tools/test-generator
8
- * @since 0.4.0
9
- */
10
- export interface TestCase {
11
- name: string;
12
- description: string;
13
- type: 'unit' | 'integration' | 'edge' | 'boundary' | 'error';
14
- input?: any;
15
- expectedOutput?: any;
16
- assertion?: string;
17
- }
18
- export interface FunctionAnalysis {
19
- name: string;
20
- params: Array<{
21
- name: string;
22
- type?: string;
23
- optional?: boolean;
24
- }>;
25
- returnType?: string;
26
- isAsync: boolean;
27
- isExported: boolean;
28
- complexity: 'low' | 'medium' | 'high';
29
- dependencies: string[];
30
- sideEffects: string[];
31
- }
32
- export interface ClassAnalysis {
33
- name: string;
34
- methods: FunctionAnalysis[];
35
- properties: Array<{
36
- name: string;
37
- type?: string;
38
- visibility: 'public' | 'private' | 'protected';
39
- }>;
40
- constructorMethod?: FunctionAnalysis;
41
- isExported: boolean;
42
- }
43
- export interface ModuleAnalysis {
44
- filePath: string;
45
- language: 'typescript' | 'javascript' | 'python' | 'go';
46
- functions: FunctionAnalysis[];
47
- classes: ClassAnalysis[];
48
- exports: string[];
49
- imports: Array<{
50
- module: string;
51
- imports: string[];
52
- }>;
53
- }
54
- export interface GeneratedTest {
55
- testFilePath: string;
56
- framework: string;
57
- content: string;
58
- testCases: TestCase[];
59
- coverage: {
60
- functions: number;
61
- branches: number;
62
- lines: number;
63
- };
64
- }
65
- export interface TestGeneratorConfig {
66
- framework?: 'vitest' | 'jest' | 'mocha' | 'pytest' | 'go';
67
- outputDir?: string;
68
- includeEdgeCases?: boolean;
69
- includeMocks?: boolean;
70
- includeTypeChecks?: boolean;
71
- maxTestsPerFunction?: number;
72
- style?: 'describe-it' | 'test' | 'flat';
73
- }
74
- /**
75
- * AI-powered test generator that analyzes code and generates comprehensive test suites
76
- */
77
- export declare class TestGenerator {
78
- private workingDir;
79
- private testDetector;
80
- constructor(workingDir?: string);
81
- /**
82
- * Analyze a source file to extract testable components
83
- */
84
- analyzeFile(filePath: string): Promise<ModuleAnalysis>;
85
- /**
86
- * Analyze JavaScript/TypeScript code
87
- */
88
- private analyzeJSTS;
89
- /**
90
- * Analyze Python code
91
- */
92
- private analyzePython;
93
- /**
94
- * Analyze Go code
95
- */
96
- private analyzeGo;
97
- /**
98
- * Generate test cases for analyzed code
99
- */
100
- generateTests(analysis: ModuleAnalysis, config?: TestGeneratorConfig): Promise<GeneratedTest>;
101
- /**
102
- * Generate test cases for a function
103
- */
104
- private generateFunctionTests;
105
- /**
106
- * Generate test cases for a class
107
- */
108
- private generateClassTests;
109
- /**
110
- * Generate test file content based on framework
111
- */
112
- private generateTestFileContent;
113
- /**
114
- * Generate Vitest test content
115
- */
116
- private generateVitestContent;
117
- /**
118
- * Generate Jest test content
119
- */
120
- private generateJestContent;
121
- /**
122
- * Generate Mocha test content
123
- */
124
- private generateMochaContent;
125
- /**
126
- * Generate pytest test content
127
- */
128
- private generatePytestContent;
129
- /**
130
- * Generate Go test content
131
- */
132
- private generateGoTestContent;
133
- private parseJSTSParams;
134
- private parsePythonParams;
135
- private parseGoParams;
136
- private extractClassBody;
137
- private estimateComplexity;
138
- private detectDependencies;
139
- private detectSideEffects;
140
- private detectFramework;
141
- private getRelativeImportPath;
142
- private groupTestCases;
143
- private generateDefaultArgs;
144
- private generateInvalidArgs;
145
- private generateTypeAssertion;
146
- private generateEdgeCases;
147
- private convertToPytestAssertion;
148
- }
149
- /**
150
- * Write generated tests to file
151
- */
152
- export declare function writeTestFile(generatedTest: GeneratedTest): Promise<void>;
153
- /**
154
- * Quick function to generate and optionally write tests
155
- */
156
- export declare function generateTestsForFile(filePath: string, config?: TestGeneratorConfig, writeToFile?: boolean): Promise<GeneratedTest>;
157
- //# sourceMappingURL=test-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-generator.d.ts","sourceRoot":"","sources":["../../src/tools/test-generator.ts"],"names":[],"mappings":"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"}