@sudu-cli/fronted-preview-mcp 1.0.0-beta.3 → 1.0.0-beta.5

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 (62) hide show
  1. package/dist/cdp/connectionManager.d.ts +57 -0
  2. package/dist/cdp/connectionManager.js +153 -0
  3. package/dist/cdp/connectionManager.js.map +1 -0
  4. package/dist/cli.js +2 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/constants.d.ts +19 -0
  7. package/dist/constants.js +26 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/detectors/frameworkDetector.js +17 -13
  10. package/dist/detectors/frameworkDetector.js.map +1 -1
  11. package/dist/handlers/autoFixLoop.d.ts +24 -0
  12. package/dist/handlers/autoFixLoop.js +81 -4
  13. package/dist/handlers/autoFixLoop.js.map +1 -1
  14. package/dist/handlers/checkPageErrors.js +11 -50
  15. package/dist/handlers/checkPageErrors.js.map +1 -1
  16. package/dist/handlers/typescriptDiagnostics.d.ts +9 -0
  17. package/dist/handlers/typescriptDiagnostics.js +4 -25
  18. package/dist/handlers/typescriptDiagnostics.js.map +1 -1
  19. package/dist/index.js +15 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/serverManager.d.ts +22 -4
  22. package/dist/serverManager.js +215 -140
  23. package/dist/serverManager.js.map +1 -1
  24. package/dist/strategies/baseStrategy.d.ts +27 -0
  25. package/dist/strategies/baseStrategy.js +23 -0
  26. package/dist/strategies/baseStrategy.js.map +1 -0
  27. package/dist/strategies/index.d.ts +9 -0
  28. package/dist/strategies/index.js +22 -0
  29. package/dist/strategies/index.js.map +1 -0
  30. package/dist/strategies/missingImport.d.ts +16 -0
  31. package/dist/strategies/missingImport.js +156 -0
  32. package/dist/strategies/missingImport.js.map +1 -0
  33. package/dist/strategies/missingProperty.d.ts +13 -0
  34. package/dist/strategies/missingProperty.js +134 -0
  35. package/dist/strategies/missingProperty.js.map +1 -0
  36. package/dist/strategies/networkError.d.ts +10 -0
  37. package/dist/strategies/networkError.js +56 -0
  38. package/dist/strategies/networkError.js.map +1 -0
  39. package/dist/strategies/nullCheckInsertion.d.ts +14 -0
  40. package/dist/strategies/nullCheckInsertion.js +138 -0
  41. package/dist/strategies/nullCheckInsertion.js.map +1 -0
  42. package/dist/strategies/typeAssignment.d.ts +13 -0
  43. package/dist/strategies/typeAssignment.js +121 -0
  44. package/dist/strategies/typeAssignment.js.map +1 -0
  45. package/dist/strategies/unusedImportRemoval.d.ts +11 -0
  46. package/dist/strategies/unusedImportRemoval.js +138 -0
  47. package/dist/strategies/unusedImportRemoval.js.map +1 -0
  48. package/dist/types.d.ts +9 -0
  49. package/dist/types.js +21 -1
  50. package/dist/types.js.map +1 -1
  51. package/dist/version.d.ts +7 -0
  52. package/dist/version.js +10 -0
  53. package/dist/version.js.map +1 -0
  54. package/package.json +1 -1
  55. package/templates/init/instructions.md +1 -11
  56. package/templates/init/opencode.json +1 -1
  57. package/dist/handlers/pickElement.d.ts +0 -10
  58. package/dist/handlers/pickElement.js +0 -413
  59. package/dist/handlers/pickElement.js.map +0 -1
  60. package/dist/handlers/takeScreenshot.d.ts +0 -17
  61. package/dist/handlers/takeScreenshot.js +0 -83
  62. package/dist/handlers/takeScreenshot.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"serverManager.js","sourceRoot":"","sources":["../src/serverManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverManager.js","sourceRoot":"","sources":["../src/serverManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,QAAQ,GAAyB,IAAI,CAAC;IAC7C,YAAY,GAAwB,IAAI,CAAC;IACzC,UAAU,GAAuC,IAAI,GAAG,EAAE,CAAC;IAC3D,YAAY,GAA0D,IAAI,CAAC;IAEnF,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChC,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,IAAY,EAAE,YAAoB,QAAQ,CAAC,oBAAoB;QACxF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;gBACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;oBAClD,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;oBACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;oBAC1B,OAAO;gBACT,CAAC;gBACD,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAClD,CAAC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,YAAoB,QAAQ,CAAC,oBAAoB;QAEjD,6DAA6D;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,SAAiB;QAEjB,oEAAoE;QACpE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;YAC9D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;oBACL,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;oBAC1B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;oBAC5B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;oBACvC,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;iBAC/D,CAAC;YACJ,CAAC;YACD,oCAAoC;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,8DAA8D;QAC9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;gBACL,GAAG,EAAE,oBAAoB,IAAI,EAAE;gBAC/B,IAAI;gBACJ,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE;YAChC,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,kCAAkC;YAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACtD,IAAI,QAAQ,EAAE,CAAC;oBACb,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,mCAAmC;QACrC,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACpD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC;YACxC,IAAI,OAAO,CAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACjC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAC5H;YACD,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,8CAA8C;YAC9C,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,cAAc,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG;YAClB,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,GAAG;YACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,OAAO;YACL,GAAG;YACH,IAAI;YACJ,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;YACnB,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,uDAAuD;QACvD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;QAEpC,IAAI,CAAC;YACH,OAAO,MAAM,eAAe,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAEpC,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;YAC3C,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAED,wCAAwC;YACxC,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC;gBACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5B,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC;4BAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACvC,OAAO,EAAE,CAAC;oBACZ,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBACnC,CAAC,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,sBAAsB,IAAI,WAAW;aAC/C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,8BAA8B,YAAY,EAAE;aACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;YAC1B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;YAC5B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;YAClD,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;SAC/D,CAAC;IACJ,CAAC;;AAGH,iCAAiC;AACjC,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,UAAkB,EAClB,IAAY;IAEZ,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,eAAe,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Project, SourceFile } from 'ts-morph';
2
+ import { DiagnosticInfo } from '../handlers/typescriptDiagnostics.js';
3
+ import { ConsoleError } from '../handlers/autoFixLoop.js';
4
+ export interface FixContext {
5
+ projectDir: string;
6
+ project: Project;
7
+ tsConfigPath: string;
8
+ }
9
+ export interface FixResult {
10
+ success: boolean;
11
+ message: string;
12
+ changes: Array<{
13
+ file: string;
14
+ description: string;
15
+ diff?: string;
16
+ }>;
17
+ }
18
+ export interface FixStrategy {
19
+ errorType: 'typescript' | 'console' | 'network';
20
+ pattern: RegExp;
21
+ canFix(error: DiagnosticInfo | ConsoleError): boolean;
22
+ fix(context: FixContext, error: DiagnosticInfo | ConsoleError): Promise<FixResult>;
23
+ }
24
+ export declare function createFixContext(projectDir: string, tsConfigPath: string): FixContext;
25
+ export declare function saveChanges(context: FixContext): void;
26
+ export declare function getSourceFile(context: FixContext, filePath: string): SourceFile | undefined;
27
+ export declare function getRelativePath(context: FixContext, filePath: string): string;
@@ -0,0 +1,23 @@
1
+ import { Project } from 'ts-morph';
2
+ export function createFixContext(projectDir, tsConfigPath) {
3
+ const project = new Project({
4
+ tsConfigFilePath: tsConfigPath,
5
+ skipAddingFilesFromTsConfig: false,
6
+ skipFileDependencyResolution: true,
7
+ skipLoadingLibFiles: true,
8
+ });
9
+ return { projectDir, project, tsConfigPath };
10
+ }
11
+ export function saveChanges(context) {
12
+ context.project.saveSync();
13
+ }
14
+ export function getSourceFile(context, filePath) {
15
+ const fullPath = filePath.startsWith('/') ? filePath : `${context.projectDir}/${filePath}`;
16
+ return context.project.getSourceFile(fullPath);
17
+ }
18
+ export function getRelativePath(context, filePath) {
19
+ const fullPath = filePath.startsWith('/') ? filePath : `${context.projectDir}/${filePath}`;
20
+ const relative = fullPath.replace(context.projectDir + '/', '');
21
+ return relative;
22
+ }
23
+ //# sourceMappingURL=baseStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseStrategy.js","sourceRoot":"","sources":["../../src/strategies/baseStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2N,MAAM,UAAU,CAAC;AAuB5P,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,YAAoB;IACvE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,YAAY;QAC9B,2BAA2B,EAAE,KAAK;QAClC,4BAA4B,EAAE,IAAI;QAClC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;IACH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAmB;IAC7C,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAmB,EAAE,QAAgB;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAmB,EAAE,QAAgB;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './baseStrategy.js';
2
+ export { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
3
+ export { missingPropertyStrategy } from './missingProperty.js';
4
+ export { typeAssignmentStrategy } from './typeAssignment.js';
5
+ export { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
6
+ export { missingImportStrategy } from './missingImport.js';
7
+ export { networkErrorStrategy } from './networkError.js';
8
+ import { FixStrategy } from './baseStrategy.js';
9
+ export declare const defaultFixStrategies: FixStrategy[];
@@ -0,0 +1,22 @@
1
+ export * from './baseStrategy.js';
2
+ export { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
3
+ export { missingPropertyStrategy } from './missingProperty.js';
4
+ export { typeAssignmentStrategy } from './typeAssignment.js';
5
+ export { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
6
+ export { missingImportStrategy } from './missingImport.js';
7
+ export { networkErrorStrategy } from './networkError.js';
8
+ import { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
9
+ import { missingPropertyStrategy } from './missingProperty.js';
10
+ import { typeAssignmentStrategy } from './typeAssignment.js';
11
+ import { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
12
+ import { missingImportStrategy } from './missingImport.js';
13
+ import { networkErrorStrategy } from './networkError.js';
14
+ export const defaultFixStrategies = [
15
+ unusedImportRemovalStrategy,
16
+ missingPropertyStrategy,
17
+ typeAssignmentStrategy,
18
+ nullCheckInsertionStrategy,
19
+ missingImportStrategy,
20
+ networkErrorStrategy,
21
+ ];
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/strategies/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,2BAA2B;IAC3B,uBAAuB;IACvB,sBAAsB;IACtB,0BAA0B;IAC1B,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FixStrategy, FixContext, FixResult } from './baseStrategy.js';
2
+ import { DiagnosticInfo } from '../handlers/typescriptDiagnostics.js';
3
+ import { ConsoleError } from '../handlers/autoFixLoop.js';
4
+ export declare class MissingImportStrategy implements FixStrategy {
5
+ errorType: "typescript";
6
+ pattern: RegExp;
7
+ canFix(error: DiagnosticInfo | ConsoleError): boolean;
8
+ fix(context: FixContext, error: DiagnosticInfo | ConsoleError): Promise<FixResult>;
9
+ private addImportFromModule;
10
+ private findAndAddImport;
11
+ private getExportedSymbols;
12
+ private getModuleSpecifier;
13
+ private getRelativeImportPath;
14
+ private generateDiff;
15
+ }
16
+ export declare const missingImportStrategy: MissingImportStrategy;
@@ -0,0 +1,156 @@
1
+ import { SyntaxKind } from 'ts-morph';
2
+ import { getSourceFile, getRelativePath, saveChanges } from './baseStrategy.js';
3
+ export class MissingImportStrategy {
4
+ errorType = 'typescript';
5
+ pattern = /(?:Cannot find name|'([^']+)' is not defined|is not defined|Module '([^']+)' has no exported member)/i;
6
+ canFix(error) {
7
+ return this.pattern.test(error.message) && error.severity === 'error';
8
+ }
9
+ async fix(context, error) {
10
+ const changes = [];
11
+ const file = error.file;
12
+ if (!file) {
13
+ return { success: false, message: 'No file path in error', changes };
14
+ }
15
+ // Extract the missing identifier name
16
+ const match = error.message.match(/(?:Cannot find name|'([^']+)' is not defined|is not defined|Module '([^']+)' has no exported member '([^']+)')/i);
17
+ if (!match) {
18
+ return { success: false, message: 'Could not parse missing identifier from error', changes };
19
+ }
20
+ const missingName = match[1] || match[3];
21
+ const moduleName = match[2];
22
+ const sourceFile = getSourceFile(context, file);
23
+ if (!sourceFile) {
24
+ return { success: false, message: `Source file not found: ${file}`, changes };
25
+ }
26
+ const originalText = sourceFile.getFullText();
27
+ try {
28
+ let importAdded = false;
29
+ if (moduleName) {
30
+ // Missing export from specific module
31
+ importAdded = await this.addImportFromModule(sourceFile, missingName, moduleName);
32
+ }
33
+ else {
34
+ // Search for the symbol in the project
35
+ importAdded = await this.findAndAddImport(context, sourceFile, missingName);
36
+ }
37
+ if (!importAdded) {
38
+ return { success: false, message: `Could not find source for '${missingName}'`, changes };
39
+ }
40
+ saveChanges(context);
41
+ const newText = sourceFile.getFullText();
42
+ const diff = this.generateDiff(originalText, newText, file);
43
+ changes.push({
44
+ file: getRelativePath(context, file),
45
+ description: `Added missing import for '${missingName}'`,
46
+ diff,
47
+ });
48
+ return {
49
+ success: true,
50
+ message: `Added missing import for '${missingName}'`,
51
+ changes,
52
+ };
53
+ }
54
+ catch (err) {
55
+ const msg = err instanceof Error ? err.message : String(err);
56
+ return { success: false, message: `Fix failed: ${msg}`, changes };
57
+ }
58
+ }
59
+ async addImportFromModule(sourceFile, name, module) {
60
+ try {
61
+ // Check if import already exists
62
+ const existingImport = sourceFile.getImportDeclarations().find(imp => imp.getModuleSpecifierValue() === module);
63
+ if (existingImport) {
64
+ // Add to existing import
65
+ const namedImports = existingImport.getNamedImports();
66
+ const alreadyImported = namedImports.some(spec => spec.getName() === name);
67
+ if (!alreadyImported) {
68
+ existingImport.addNamedImport(name);
69
+ return true;
70
+ }
71
+ return true; // Already imported
72
+ }
73
+ // Add new import declaration
74
+ sourceFile.addImportDeclaration({
75
+ moduleSpecifier: module,
76
+ namedImports: [name],
77
+ });
78
+ return true;
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ async findAndAddImport(context, sourceFile, name) {
85
+ // Search all source files in the project for an export matching the name
86
+ const allSourceFiles = context.project.getSourceFiles();
87
+ for (const sf of allSourceFiles) {
88
+ if (sf === sourceFile)
89
+ continue; // Don't import from self
90
+ const exports = this.getExportedSymbols(sf, name);
91
+ if (exports.length > 0) {
92
+ const exportInfo = exports[0];
93
+ const moduleSpecifier = this.getModuleSpecifier(sourceFile, sf);
94
+ return this.addImportFromModule(sourceFile, name, moduleSpecifier);
95
+ }
96
+ }
97
+ return false;
98
+ }
99
+ getExportedSymbols(sourceFile, name) {
100
+ const results = [];
101
+ // Check exported functions, classes, interfaces, types, variables
102
+ const exportedDeclarations = sourceFile.getExportedDeclarations();
103
+ for (const [exportName, declarations] of exportedDeclarations) {
104
+ if (exportName === name) {
105
+ const decl = declarations[0];
106
+ let isDefault = false;
107
+ if (decl.getKind() === SyntaxKind.FunctionDeclaration ||
108
+ decl.getKind() === SyntaxKind.ClassDeclaration ||
109
+ decl.getKind() === SyntaxKind.VariableDeclaration ||
110
+ decl.getKind() === SyntaxKind.InterfaceDeclaration ||
111
+ decl.getKind() === SyntaxKind.TypeAliasDeclaration) {
112
+ isDefault = decl.hasDefaultKeyword?.() ?? false;
113
+ }
114
+ results.push({ name: exportName, isDefault });
115
+ }
116
+ }
117
+ return results;
118
+ }
119
+ getModuleSpecifier(fromFile, toFile) {
120
+ const fromDir = fromFile.getDirectoryPath();
121
+ const toPath = toFile.getFilePath();
122
+ // Calculate relative path
123
+ const relative = this.getRelativeImportPath(fromDir, toPath);
124
+ return relative;
125
+ }
126
+ getRelativeImportPath(fromDir, toPath) {
127
+ const path = require('path');
128
+ let relative = path.relative(fromDir, toPath);
129
+ // Remove extension
130
+ relative = relative.replace(/\.ts$/, '').replace(/\.tsx$/, '');
131
+ // Ensure it starts with ./ or ../
132
+ if (!relative.startsWith('.')) {
133
+ relative = './' + relative;
134
+ }
135
+ return relative;
136
+ }
137
+ generateDiff(oldText, newText, fileName) {
138
+ const oldLines = oldText.split('\n');
139
+ const newLines = newText.split('\n');
140
+ let diff = `--- ${fileName}\n+++ ${fileName}\n`;
141
+ const maxLen = Math.max(oldLines.length, newLines.length);
142
+ for (let i = 0; i < maxLen; i++) {
143
+ const oldLine = oldLines[i];
144
+ const newLine = newLines[i];
145
+ if (oldLine !== newLine) {
146
+ if (oldLine !== undefined)
147
+ diff += `-${oldLine}\n`;
148
+ if (newLine !== undefined)
149
+ diff += `+${newLine}\n`;
150
+ }
151
+ }
152
+ return diff;
153
+ }
154
+ }
155
+ export const missingImportStrategy = new MissingImportStrategy();
156
+ //# sourceMappingURL=missingImport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missingImport.js","sourceRoot":"","sources":["../../src/strategies/missingImport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAsC,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIpH,MAAM,OAAO,qBAAqB;IAChC,SAAS,GAAG,YAAqB,CAAC;IAClC,OAAO,GAAG,uGAAuG,CAAC;IAElH,MAAM,CAAC,KAAoC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAK,KAAwB,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAmB,EAAE,KAAoC;QACjE,MAAM,OAAO,GAAgE,EAAE,CAAC;QAEhF,MAAM,IAAI,GAAI,KAAwB,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC;QACvE,CAAC;QAED,sCAAsC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,iHAAiH,CAAC,CAAC;QACrJ,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+CAA+C,EAAE,OAAO,EAAE,CAAC;QAC/F,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,UAAU,EAAE,CAAC;gBACf,sCAAsC;gBACtC,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC;YAC5F,CAAC;YAED,WAAW,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAE5D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;gBACpC,WAAW,EAAE,6BAA6B,WAAW,GAAG;gBACxD,IAAI;aACL,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,6BAA6B,WAAW,GAAG;gBACpD,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,UAAsB,EAAE,IAAY,EAAE,MAAc;QACpF,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,cAAc,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAC5D,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,MAAM,CAChD,CAAC;YAEF,IAAI,cAAc,EAAE,CAAC;gBACnB,yBAAyB;gBACzB,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;gBACtD,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;gBAE3E,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACpC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC,mBAAmB;YAClC,CAAC;YAED,6BAA6B;YAC7B,UAAU,CAAC,oBAAoB,CAAC;gBAC9B,eAAe,EAAE,MAAM;gBACvB,YAAY,EAAE,CAAC,IAAI,CAAC;aACrB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAmB,EAAE,UAAsB,EAAE,IAAY;QACtF,yEAAyE;QACzE,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAExD,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,UAAU;gBAAE,SAAS,CAAC,yBAAyB;YAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,UAAsB,EAAE,IAAY;QAC7D,MAAM,OAAO,GAAgD,EAAE,CAAC;QAEhE,kEAAkE;QAClE,MAAM,oBAAoB,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;QAElE,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,oBAAoB,EAAE,CAAC;YAC9D,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;gBAEtB,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB;oBACjD,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,gBAAgB;oBAC9C,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB;oBACjD,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB;oBAClD,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE,CAAC;oBACvD,SAAS,GAAI,IAAY,CAAC,iBAAiB,EAAE,EAAE,IAAI,KAAK,CAAC;gBAC3D,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kBAAkB,CAAC,QAAoB,EAAE,MAAkB;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEpC,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,qBAAqB,CAAC,OAAe,EAAE,MAAc;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE9C,mBAAmB;QACnB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE/D,kCAAkC;QAClC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,QAAgB;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,OAAO,QAAQ,SAAS,QAAQ,IAAI,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,SAAS;oBAAE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;gBACnD,IAAI,OAAO,KAAK,SAAS;oBAAE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;YACrD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { FixStrategy, FixContext, FixResult } from './baseStrategy.js';
2
+ import { DiagnosticInfo } from '../handlers/typescriptDiagnostics.js';
3
+ export declare class MissingPropertyStrategy implements FixStrategy {
4
+ errorType: "typescript";
5
+ pattern: RegExp;
6
+ canFix(error: DiagnosticInfo): boolean;
7
+ fix(context: FixContext, error: DiagnosticInfo): Promise<FixResult>;
8
+ private findTypeDeclaration;
9
+ private getProperty;
10
+ private addProperty;
11
+ private generateDiff;
12
+ }
13
+ export declare const missingPropertyStrategy: MissingPropertyStrategy;
@@ -0,0 +1,134 @@
1
+ import { SyntaxKind } from 'ts-morph';
2
+ import { getSourceFile, getRelativePath, saveChanges } from './baseStrategy.js';
3
+ export class MissingPropertyStrategy {
4
+ errorType = 'typescript';
5
+ pattern = /Property '([^']+)' does not exist on type '([^']+)'/i;
6
+ canFix(error) {
7
+ return this.pattern.test(error.message) && error.severity === 'error';
8
+ }
9
+ async fix(context, error) {
10
+ const changes = [];
11
+ if (!error.file) {
12
+ return { success: false, message: 'No file path in error', changes };
13
+ }
14
+ const match = error.message.match(this.pattern);
15
+ if (!match) {
16
+ return { success: false, message: 'Could not parse missing property error', changes };
17
+ }
18
+ const propertyName = match[1];
19
+ const typeName = match[2];
20
+ const sourceFile = getSourceFile(context, error.file);
21
+ if (!sourceFile) {
22
+ return { success: false, message: `Source file not found: ${error.file}`, changes };
23
+ }
24
+ const originalText = sourceFile.getFullText();
25
+ try {
26
+ // Find the interface or type alias with the given name
27
+ const targetType = this.findTypeDeclaration(sourceFile, typeName);
28
+ if (!targetType) {
29
+ return { success: false, message: `Type '${typeName}' not found in ${error.file}`, changes };
30
+ }
31
+ // Check if property already exists
32
+ const existingProp = this.getProperty(targetType, propertyName);
33
+ if (existingProp) {
34
+ return { success: false, message: `Property '${propertyName}' already exists on '${typeName}'`, changes };
35
+ }
36
+ // Add the missing property as optional with 'any' type (safe default)
37
+ this.addProperty(targetType, propertyName);
38
+ saveChanges(context);
39
+ const newText = sourceFile.getFullText();
40
+ const diff = this.generateDiff(originalText, newText, error.file);
41
+ changes.push({
42
+ file: getRelativePath(context, error.file),
43
+ description: `Added missing property '${propertyName}' to '${typeName}'`,
44
+ diff,
45
+ });
46
+ return {
47
+ success: true,
48
+ message: `Added missing property '${propertyName}' to type '${typeName}'`,
49
+ changes,
50
+ };
51
+ }
52
+ catch (err) {
53
+ const msg = err instanceof Error ? err.message : String(err);
54
+ return { success: false, message: `Fix failed: ${msg}`, changes };
55
+ }
56
+ }
57
+ findTypeDeclaration(sourceFile, typeName) {
58
+ // Check interfaces
59
+ const interfaces = sourceFile.getInterfaces();
60
+ for (const iface of interfaces) {
61
+ if (iface.getName() === typeName) {
62
+ return iface;
63
+ }
64
+ }
65
+ // Check type aliases
66
+ const typeAliases = sourceFile.getTypeAliases();
67
+ for (const typeAlias of typeAliases) {
68
+ if (typeAlias.getName() === typeName) {
69
+ return typeAlias;
70
+ }
71
+ }
72
+ return undefined;
73
+ }
74
+ getProperty(type, propertyName) {
75
+ if (type.getKind() === SyntaxKind.InterfaceDeclaration) {
76
+ return type.getProperty(propertyName);
77
+ }
78
+ // For type aliases, we need to check the type literal
79
+ const typeLiteral = type.getTypeNode();
80
+ if (typeLiteral && typeLiteral.getKind() === SyntaxKind.TypeLiteral) {
81
+ const members = typeLiteral.getMembers?.() || [];
82
+ for (const member of members) {
83
+ if (member.getKind() === SyntaxKind.PropertySignature) {
84
+ const prop = member;
85
+ if (prop.getName() === propertyName) {
86
+ return prop;
87
+ }
88
+ }
89
+ }
90
+ }
91
+ return undefined;
92
+ }
93
+ addProperty(type, propertyName) {
94
+ if (type.getKind() === SyntaxKind.InterfaceDeclaration) {
95
+ type.addProperty({
96
+ name: propertyName,
97
+ type: 'any',
98
+ hasQuestionToken: true, // Make it optional
99
+ });
100
+ }
101
+ else {
102
+ // For type aliases with type literal, we need to recreate the type
103
+ const typeAlias = type;
104
+ const typeLiteral = typeAlias.getTypeNode();
105
+ if (typeLiteral && typeLiteral.getKind() === SyntaxKind.TypeLiteral) {
106
+ const members = typeLiteral.getMembers?.() || [];
107
+ const memberTexts = members.map((m) => m.getText());
108
+ const newMember = ` ${propertyName}?: any;`;
109
+ // Replace the type literal with updated members
110
+ const newTypeLiteral = `{${memberTexts.length > 0 ? '\n' : ''}${memberTexts.join(';\n')}${memberTexts.length > 0 ? ';\n' : ''}${newMember}\n}`;
111
+ typeAlias.setType(newTypeLiteral);
112
+ }
113
+ }
114
+ }
115
+ generateDiff(oldText, newText, fileName) {
116
+ const oldLines = oldText.split('\n');
117
+ const newLines = newText.split('\n');
118
+ let diff = `--- ${fileName}\n+++ ${fileName}\n`;
119
+ const maxLen = Math.max(oldLines.length, newLines.length);
120
+ for (let i = 0; i < maxLen; i++) {
121
+ const oldLine = oldLines[i];
122
+ const newLine = newLines[i];
123
+ if (oldLine !== newLine) {
124
+ if (oldLine !== undefined)
125
+ diff += `-${oldLine}\n`;
126
+ if (newLine !== undefined)
127
+ diff += `+${newLine}\n`;
128
+ }
129
+ }
130
+ return diff;
131
+ }
132
+ }
133
+ export const missingPropertyStrategy = new MissingPropertyStrategy();
134
+ //# sourceMappingURL=missingProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missingProperty.js","sourceRoot":"","sources":["../../src/strategies/missingProperty.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6E,UAAU,EAAQ,MAAM,UAAU,CAAC;AACvH,OAAO,EAAsC,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGpH,MAAM,OAAO,uBAAuB;IAClC,SAAS,GAAG,YAAqB,CAAC;IAClC,OAAO,GAAG,sDAAsD,CAAC;IAEjE,MAAM,CAAC,KAAqB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAmB,EAAE,KAAqB;QAClD,MAAM,OAAO,GAAgE,EAAE,CAAC;QAEhF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC;QACvE,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,EAAE,OAAO,EAAE,CAAC;QACxF,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;QACtF,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,QAAQ,kBAAkB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;YAC/F,CAAC;YAED,mCAAmC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAChE,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,YAAY,wBAAwB,QAAQ,GAAG,EAAE,OAAO,EAAE,CAAC;YAC5G,CAAC;YAED,sEAAsE;YACtE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAE3C,WAAW,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAElE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;gBAC1C,WAAW,EAAE,2BAA2B,YAAY,SAAS,QAAQ,GAAG;gBACxE,IAAI;aACL,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,2BAA2B,YAAY,cAAc,QAAQ,GAAG;gBACzE,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,UAAsB,EAAE,QAAgB;QAClE,mBAAmB;QACnB,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAChD,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;YACpC,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,IAAiD,EAAE,YAAoB;QACzF,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACvD,OAAQ,IAA6B,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,sDAAsD;QACtD,MAAM,WAAW,GAAI,IAA6B,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YACpE,MAAM,OAAO,GAAI,WAAmB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC;YAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;oBACtD,MAAM,IAAI,GAAG,MAA2B,CAAC;oBACzC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC;wBACpC,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,IAAiD,EAAE,YAAoB;QACzF,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACtD,IAA6B,CAAC,WAAW,CAAC;gBACzC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,KAAK;gBACX,gBAAgB,EAAE,IAAI,EAAE,mBAAmB;aAC5C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,mEAAmE;YACnE,MAAM,SAAS,GAAG,IAA4B,CAAC;YAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;gBACtE,MAAM,OAAO,GAAI,WAAmB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC;gBACxD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,KAAK,YAAY,SAAS,CAAC;gBAE7C,gDAAgD;gBAChD,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC;gBAC/I,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,QAAgB;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,OAAO,QAAQ,SAAS,QAAQ,IAAI,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,SAAS;oBAAE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;gBACnD,IAAI,OAAO,KAAK,SAAS;oBAAE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;YACrD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { FixStrategy, FixResult } from './baseStrategy.js';
2
+ import { ConsoleError } from '../handlers/autoFixLoop.js';
3
+ export declare class NetworkErrorStrategy implements FixStrategy {
4
+ errorType: "network";
5
+ pattern: RegExp;
6
+ canFix(error: ConsoleError): boolean;
7
+ fix(_context: any, error: ConsoleError): Promise<FixResult>;
8
+ private analyzeNetworkError;
9
+ }
10
+ export declare const networkErrorStrategy: NetworkErrorStrategy;
@@ -0,0 +1,56 @@
1
+ export class NetworkErrorStrategy {
2
+ errorType = 'network';
3
+ pattern = /Failed to fetch|Network Error|ECONNREFUSED|ERR_CONNECTION_REFUSED|404|500|502|503|504|CORS|Cross-Origin/i;
4
+ canFix(error) {
5
+ return this.pattern.test(error.message);
6
+ }
7
+ async fix(_context, error) {
8
+ const changes = [];
9
+ // Network errors typically require backend/server fixes, not frontend code changes
10
+ // We provide diagnostic suggestions instead
11
+ const suggestions = this.analyzeNetworkError(error);
12
+ return {
13
+ success: false, // Network errors can't be auto-fixed in frontend code
14
+ message: `Network error detected: ${error.message}\n\nSuggestions:\n${suggestions.map(s => ` • ${s}`).join('\n')}`,
15
+ changes,
16
+ };
17
+ }
18
+ analyzeNetworkError(error) {
19
+ const suggestions = [];
20
+ const message = error.message.toLowerCase();
21
+ const url = error.url || '';
22
+ if (message.includes('failed to fetch') || message.includes('network error')) {
23
+ suggestions.push('Check if the backend server is running');
24
+ suggestions.push('Verify the API base URL in your frontend config');
25
+ suggestions.push('Check for CORS issues - ensure backend allows your frontend origin');
26
+ }
27
+ if (message.includes('econnrefused') || message.includes('connection refused')) {
28
+ suggestions.push('Backend server is not running or not accessible on the expected port');
29
+ suggestions.push('Check docker/proxy configuration if using containerized backend');
30
+ }
31
+ if (message.includes('404')) {
32
+ suggestions.push(`API endpoint not found: ${url}`);
33
+ suggestions.push('Verify the API route matches backend routes');
34
+ suggestions.push('Check for typos in the request path');
35
+ }
36
+ if (message.includes('500') || message.includes('502') || message.includes('503') || message.includes('504')) {
37
+ suggestions.push('Backend server error - check backend logs');
38
+ suggestions.push('May be temporary - try retrying the request');
39
+ }
40
+ if (message.includes('cors') || message.includes('cross-origin')) {
41
+ suggestions.push('CORS policy blocking request');
42
+ suggestions.push('Configure backend to allow your frontend origin (Access-Control-Allow-Origin)');
43
+ suggestions.push('For development, consider using a proxy (Vite proxy, Next.js rewrites)');
44
+ }
45
+ if (url.includes('localhost') || url.includes('127.0.0.1')) {
46
+ suggestions.push('Using localhost - ensure backend runs on the same machine/port');
47
+ }
48
+ if (suggestions.length === 0) {
49
+ suggestions.push('Check browser Network tab for detailed request/response');
50
+ suggestions.push('Verify API endpoint and request parameters');
51
+ }
52
+ return suggestions;
53
+ }
54
+ }
55
+ export const networkErrorStrategy = new NetworkErrorStrategy();
56
+ //# sourceMappingURL=networkError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkError.js","sourceRoot":"","sources":["../../src/strategies/networkError.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { FixStrategy, FixContext, FixResult } from './baseStrategy.js';
2
+ import { ConsoleError } from '../handlers/autoFixLoop.js';
3
+ export declare class NullCheckInsertionStrategy implements FixStrategy {
4
+ errorType: "console";
5
+ pattern: RegExp;
6
+ canFix(error: ConsoleError): boolean;
7
+ fix(context: FixContext, error: ConsoleError): Promise<FixResult>;
8
+ private extractFilePathFromUrl;
9
+ private findPropertyAccessAtLine;
10
+ private addOptionalChaining;
11
+ private wrapWithNullCheck;
12
+ private generateDiff;
13
+ }
14
+ export declare const nullCheckInsertionStrategy: NullCheckInsertionStrategy;