@trishchuk/codex-mcp-tool 1.0.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +10 -11
  2. package/dist/constants.d.ts +55 -2
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +74 -31
  5. package/dist/constants.js.map +1 -1
  6. package/dist/index.js +28 -26
  7. package/dist/index.js.map +1 -1
  8. package/dist/tools/apply-diff.tool.d.ts +3 -0
  9. package/dist/tools/apply-diff.tool.d.ts.map +1 -0
  10. package/dist/tools/apply-diff.tool.js +52 -0
  11. package/dist/tools/apply-diff.tool.js.map +1 -0
  12. package/dist/tools/ask-codex.tool.d.ts.map +1 -1
  13. package/dist/tools/ask-codex.tool.js +158 -33
  14. package/dist/tools/ask-codex.tool.js.map +1 -1
  15. package/dist/tools/batch-codex.tool.d.ts +3 -0
  16. package/dist/tools/batch-codex.tool.d.ts.map +1 -0
  17. package/dist/tools/batch-codex.tool.js +134 -0
  18. package/dist/tools/batch-codex.tool.js.map +1 -0
  19. package/dist/tools/brainstorm.tool.d.ts.map +1 -1
  20. package/dist/tools/brainstorm.tool.js +62 -29
  21. package/dist/tools/brainstorm.tool.js.map +1 -1
  22. package/dist/tools/exec-codex.tool.d.ts +3 -0
  23. package/dist/tools/exec-codex.tool.d.ts.map +1 -0
  24. package/dist/tools/exec-codex.tool.js +46 -0
  25. package/dist/tools/exec-codex.tool.js.map +1 -0
  26. package/dist/tools/fetch-chunk.tool.d.ts.map +1 -1
  27. package/dist/tools/fetch-chunk.tool.js +12 -8
  28. package/dist/tools/fetch-chunk.tool.js.map +1 -1
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +6 -2
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/registry.d.ts +3 -3
  33. package/dist/tools/registry.d.ts.map +1 -1
  34. package/dist/tools/registry.js +9 -5
  35. package/dist/tools/registry.js.map +1 -1
  36. package/dist/tools/review-codex.tool.d.ts +3 -0
  37. package/dist/tools/review-codex.tool.d.ts.map +1 -0
  38. package/dist/tools/review-codex.tool.js +91 -0
  39. package/dist/tools/review-codex.tool.js.map +1 -0
  40. package/dist/tools/simple-tools.d.ts +1 -0
  41. package/dist/tools/simple-tools.d.ts.map +1 -1
  42. package/dist/tools/simple-tools.js +42 -11
  43. package/dist/tools/simple-tools.js.map +1 -1
  44. package/dist/tools/test-tool.example.d.ts.map +1 -1
  45. package/dist/tools/test-tool.example.js +12 -10
  46. package/dist/tools/test-tool.example.js.map +1 -1
  47. package/dist/tools/timeout-test.tool.js +5 -5
  48. package/dist/tools/timeout-test.tool.js.map +1 -1
  49. package/dist/utils/changeModeChunker.d.ts.map +1 -1
  50. package/dist/utils/changeModeChunker.js +10 -6
  51. package/dist/utils/changeModeChunker.js.map +1 -1
  52. package/dist/utils/changeModeParser.d.ts.map +1 -1
  53. package/dist/utils/changeModeParser.js.map +1 -1
  54. package/dist/utils/changeModeRunner.d.ts.map +1 -1
  55. package/dist/utils/changeModeRunner.js +17 -11
  56. package/dist/utils/changeModeRunner.js.map +1 -1
  57. package/dist/utils/changeModeTranslator.d.ts.map +1 -1
  58. package/dist/utils/changeModeTranslator.js +5 -2
  59. package/dist/utils/changeModeTranslator.js.map +1 -1
  60. package/dist/utils/chunkCache.d.ts.map +1 -1
  61. package/dist/utils/chunkCache.js +6 -4
  62. package/dist/utils/chunkCache.js.map +1 -1
  63. package/dist/utils/codexExecutor.d.ts +17 -0
  64. package/dist/utils/codexExecutor.d.ts.map +1 -1
  65. package/dist/utils/codexExecutor.js +163 -4
  66. package/dist/utils/codexExecutor.js.map +1 -1
  67. package/dist/utils/commandExecutor.d.ts.map +1 -1
  68. package/dist/utils/commandExecutor.js +25 -17
  69. package/dist/utils/commandExecutor.js.map +1 -1
  70. package/dist/utils/fibonacci.d.ts +2 -0
  71. package/dist/utils/fibonacci.d.ts.map +1 -0
  72. package/dist/utils/fibonacci.js +17 -0
  73. package/dist/utils/fibonacci.js.map +1 -0
  74. package/dist/utils/gitHelper.d.ts +20 -0
  75. package/dist/utils/gitHelper.d.ts.map +1 -0
  76. package/dist/utils/gitHelper.js +66 -0
  77. package/dist/utils/gitHelper.js.map +1 -0
  78. package/dist/utils/logger.d.ts +2 -1
  79. package/dist/utils/logger.d.ts.map +1 -1
  80. package/dist/utils/logger.js +21 -15
  81. package/dist/utils/logger.js.map +1 -1
  82. package/dist/utils/outputParser.d.ts +26 -0
  83. package/dist/utils/outputParser.d.ts.map +1 -0
  84. package/dist/utils/outputParser.js +174 -0
  85. package/dist/utils/outputParser.js.map +1 -0
  86. package/dist/utils/reviewParser.d.ts +28 -0
  87. package/dist/utils/reviewParser.d.ts.map +1 -0
  88. package/dist/utils/reviewParser.js +87 -0
  89. package/dist/utils/reviewParser.js.map +1 -0
  90. package/dist/utils/workingDirResolver.d.ts +47 -0
  91. package/dist/utils/workingDirResolver.d.ts.map +1 -0
  92. package/dist/utils/workingDirResolver.js +199 -0
  93. package/dist/utils/workingDirResolver.js.map +1 -0
  94. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"commandExecutor.js","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commandExecutor.js","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyBrC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,IAAc,EACd,UAA0B,EAAE;IAE5B,MAAM,EACJ,UAAU,EACV,SAAS,GAAG,MAAM,EAClB,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,eAAe;IAClD,KAAK,GACN,GAAG,OAAO,CAAC;IAEZ,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;IAEzC,OAAO,OAAO,GAAG,WAAW,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;YAC9C,UAAU;YACV,SAAS;YACT,cAAc;SACf,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GACf,KAAK;YACL,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACrF,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,eAAe,OAAO,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;QACzF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,+BAA+B;IAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,IAAc,EACd,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAiC;IAExE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAElD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,uCAAuC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,yBAAyB,SAAS,qBAAqB,CAAC,CAAC;gBAErE,iDAAiD;gBACjD,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC7B,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;QACH,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC;QAExB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC9C,0BAA0B;YAC1B,IAAI,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBACtE,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,cAAc,GAAG,IAAI,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,mBAAmB,cAAc,6BAA6B,CAAC,CAAC;oBAC5E,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC;YAEhC,oCAAoC;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC9C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBAEtC,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;gBACnC,IAAK,KAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC;wBACN,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI;wBACV,MAAM,EAAE,EAAE;wBACV,MAAM,EAAE,YAAY,OAAO,2CAA2C;wBACtE,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC;wBACN,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI;wBACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACpD,MAAM,EAAE,YAAY;wBACpB,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;gBAE9D,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEvD,OAAO,CAAC;oBACN,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc;oBACjC,IAAI;oBACJ,MAAM,EAAE,MAAM,IAAI,SAAS;oBAC3B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,QAAQ;oBACR,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBACnD,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,IAAc,EACd,UAAwC,EACxC,YAAoB,MAAM;IAE1B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE;QACzD,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,QAAQ;YACb,CAAC,CAAC,2BAA2B,SAAS,IAAI;YAC1C,CAAC,CAAC,iCAAiC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function fibonacci(n: number): number;
2
+ //# sourceMappingURL=fibonacci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB3C"}
@@ -0,0 +1,17 @@
1
+ export function fibonacci(n) {
2
+ if (!Number.isInteger(n) || n < 0) {
3
+ throw new Error('fibonacci expects a non-negative integer');
4
+ }
5
+ if (n <= 1) {
6
+ return n;
7
+ }
8
+ let prev = 0;
9
+ let curr = 1;
10
+ for (let i = 2; i <= n; i += 1) {
11
+ const next = prev + curr;
12
+ prev = curr;
13
+ curr = next;
14
+ }
15
+ return curr;
16
+ }
17
+ //# sourceMappingURL=fibonacci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibonacci.js","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface GitChanges {
2
+ diff: string;
3
+ stagedDiff: string;
4
+ untrackedFiles: string[];
5
+ modifiedFiles: string[];
6
+ hasChanges: boolean;
7
+ }
8
+ /**
9
+ * Get comprehensive git changes for review
10
+ */
11
+ export declare function getGitChanges(): Promise<GitChanges>;
12
+ /**
13
+ * Format git changes for review prompt
14
+ */
15
+ export declare function formatChangesForReview(changes: GitChanges): string;
16
+ /**
17
+ * Get git status summary
18
+ */
19
+ export declare function getGitStatus(): Promise<string>;
20
+ //# sourceMappingURL=gitHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitHelper.d.ts","sourceRoot":"","sources":["../../src/utils/gitHelper.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA+BzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAoBlE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAQpD"}
@@ -0,0 +1,66 @@
1
+ import { executeCommand } from './commandExecutor.js';
2
+ import { Logger } from './logger.js';
3
+ /**
4
+ * Get comprehensive git changes for review
5
+ */
6
+ export async function getGitChanges() {
7
+ try {
8
+ // Get unstaged changes
9
+ const diffResult = await executeCommand('git', ['diff', 'HEAD']);
10
+ const diff = diffResult.trim();
11
+ // Get staged changes
12
+ const stagedResult = await executeCommand('git', ['diff', '--cached']);
13
+ const stagedDiff = stagedResult.trim();
14
+ // Get list of modified files
15
+ const modifiedResult = await executeCommand('git', ['diff', '--name-only', 'HEAD']);
16
+ const modifiedFiles = modifiedResult.trim().split('\n').filter(Boolean);
17
+ // Get list of untracked files
18
+ const untrackedResult = await executeCommand('git', ['ls-files', '--others', '--exclude-standard']);
19
+ const untrackedFiles = untrackedResult.trim().split('\n').filter(Boolean);
20
+ const hasChanges = diff.length > 0 || stagedDiff.length > 0 || untrackedFiles.length > 0;
21
+ return {
22
+ diff,
23
+ stagedDiff,
24
+ untrackedFiles,
25
+ modifiedFiles,
26
+ hasChanges
27
+ };
28
+ }
29
+ catch (error) {
30
+ Logger.error('Failed to get git changes:', error);
31
+ throw new Error(`Failed to get git changes: ${error}`);
32
+ }
33
+ }
34
+ /**
35
+ * Format git changes for review prompt
36
+ */
37
+ export function formatChangesForReview(changes) {
38
+ const sections = [];
39
+ if (changes.diff) {
40
+ sections.push('## Unstaged Changes\n```diff\n' + changes.diff + '\n```');
41
+ }
42
+ if (changes.stagedDiff) {
43
+ sections.push('## Staged Changes\n```diff\n' + changes.stagedDiff + '\n```');
44
+ }
45
+ if (changes.untrackedFiles.length > 0) {
46
+ sections.push('## Untracked Files\n' + changes.untrackedFiles.map(f => `- ${f}`).join('\n'));
47
+ }
48
+ if (sections.length === 0) {
49
+ return 'No changes detected in the repository.';
50
+ }
51
+ return sections.join('\n\n');
52
+ }
53
+ /**
54
+ * Get git status summary
55
+ */
56
+ export async function getGitStatus() {
57
+ try {
58
+ const result = await executeCommand('git', ['status', '--short']);
59
+ return result.trim();
60
+ }
61
+ catch (error) {
62
+ Logger.error('Failed to get git status:', error);
63
+ return '';
64
+ }
65
+ }
66
+ //# sourceMappingURL=gitHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitHelper.js","sourceRoot":"","sources":["../../src/utils/gitHelper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { LoggingLevel } from "@modelcontextprotocol/sdk/types.js";
1
+ import type { LoggingLevel } from '@modelcontextprotocol/sdk/types.js';
2
2
  export declare class Logger {
3
3
  private static currentLevel;
4
4
  static setLevel(level: LoggingLevel): void;
@@ -15,5 +15,6 @@ export declare class Logger {
15
15
  static commandExecution(command: string, args: string[], startTime: number): void;
16
16
  private static _commandStartTimes;
17
17
  static commandComplete(startTime: number, exitCode: number | null, outputLength?: number): void;
18
+ static codexResponse(response: string, tokensUsed?: number): void;
18
19
  }
19
20
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oCAAoC,CAAC;AAyBrE,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAC,YAAY,CAA2B;IAEtD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1C,MAAM,CAAC,QAAQ,IAAI,YAAY;IAI/B,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,IAAI;IAOnB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAIxD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI;IAIpG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAUjF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA6E;IAE9G,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;CAUlG"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAyBvE,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,YAAY,CAA2B;IAEtD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1C,MAAM,CAAC,QAAQ,IAAI,YAAY;IAI/B,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,IAAI;IAOnB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAIxD,MAAM,CAAC,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,OAAO,GACnB,IAAI;IAIP,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAQjF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAG7B;IAEJ,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAW/F,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAMlE"}
@@ -1,4 +1,4 @@
1
- import { LOG_PREFIX } from "../constants.js";
1
+ import { LOG_PREFIX } from '../constants.js';
2
2
  const LEVEL_ORDER = {
3
3
  debug: 0,
4
4
  info: 1,
@@ -10,17 +10,17 @@ const LEVEL_ORDER = {
10
10
  emergency: 7,
11
11
  };
12
12
  const LEVEL_CONSOLE_METHOD = {
13
- debug: "log",
14
- info: "log",
15
- notice: "log",
16
- warning: "warn",
17
- error: "error",
18
- critical: "error",
19
- alert: "error",
20
- emergency: "error",
13
+ debug: 'log',
14
+ info: 'log',
15
+ notice: 'log',
16
+ warning: 'warn',
17
+ error: 'error',
18
+ critical: 'error',
19
+ alert: 'error',
20
+ emergency: 'error',
21
21
  };
22
22
  export class Logger {
23
- static currentLevel = "warning";
23
+ static currentLevel = 'warning';
24
24
  static setLevel(level) {
25
25
  this.currentLevel = level;
26
26
  }
@@ -40,16 +40,16 @@ export class Logger {
40
40
  console[consoleMethod](this.formatMessage(level, message), ...args);
41
41
  }
42
42
  static log(message, ...args) {
43
- this.emit("info", message, ...args);
43
+ this.emit('info', message, ...args);
44
44
  }
45
45
  static warn(message, ...args) {
46
- this.emit("warning", message, ...args);
46
+ this.emit('warning', message, ...args);
47
47
  }
48
48
  static error(message, ...args) {
49
- this.emit("error", message, ...args);
49
+ this.emit('error', message, ...args);
50
50
  }
51
51
  static debug(message, ...args) {
52
- this.emit("debug", message, ...args);
52
+ this.emit('debug', message, ...args);
53
53
  }
54
54
  static toolInvocation(toolName, args) {
55
55
  this.debug(`Raw args for tool '${toolName}':`, JSON.stringify(args, null, 2));
@@ -58,7 +58,7 @@ export class Logger {
58
58
  this.debug(`Parsed prompt: "${prompt}"\nchangeMode: ${changeMode || false}`);
59
59
  }
60
60
  static commandExecution(command, args, startTime) {
61
- this.warn(`[${startTime}] Starting: ${command} ${args.map((arg) => `"${arg}"`).join(" ")}`);
61
+ this.warn(`[${startTime}] Starting: ${command} ${args.map(arg => `"${arg}"`).join(' ')}`);
62
62
  // Store command execution start for timing analysis
63
63
  this._commandStartTimes.set(startTime, { command, args, startTime });
64
64
  }
@@ -73,5 +73,11 @@ export class Logger {
73
73
  // Clean up command tracking
74
74
  this._commandStartTimes.delete(startTime);
75
75
  }
76
+ static codexResponse(response, tokensUsed) {
77
+ this.debug(`Codex response: ${response.substring(0, 200)}...`);
78
+ if (tokensUsed) {
79
+ this.debug(`Tokens used: ${tokensUsed}`);
80
+ }
81
+ }
76
82
  }
77
83
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface CodexOutput {
2
+ metadata: {
3
+ version?: string;
4
+ workdir?: string;
5
+ model?: string;
6
+ provider?: string;
7
+ approval?: string;
8
+ sandbox?: string;
9
+ reasoning_effort?: string;
10
+ reasoning_summaries?: string;
11
+ [key: string]: string | undefined;
12
+ };
13
+ userInstructions: string;
14
+ thinking?: string;
15
+ response: string;
16
+ tokensUsed?: number;
17
+ timestamps: string[];
18
+ rawOutput: string;
19
+ }
20
+ export declare function parseCodexOutput(rawOutput: string): CodexOutput;
21
+ export declare function formatCodexResponse(output: CodexOutput, includeThinking?: boolean, includeMetadata?: boolean): string;
22
+ export declare function formatCodexResponseForMCP(result: string, includeThinking?: boolean, includeMetadata?: boolean): string;
23
+ export declare function extractCodeBlocks(text: string): string[];
24
+ export declare function extractDiffBlocks(text: string): string[];
25
+ export declare function isErrorResponse(output: CodexOutput | string): boolean;
26
+ //# sourceMappingURL=outputParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputParser.d.ts","sourceRoot":"","sources":["../../src/utils/outputParser.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAqG/D;AAiBD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,eAAe,GAAE,OAAc,EAC/B,eAAe,GAAE,OAAc,GAC9B,MAAM,CA8BR;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,OAAc,EAC/B,eAAe,GAAE,OAAc,GAC9B,MAAM,CASR;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAgBrE"}
@@ -0,0 +1,174 @@
1
+ import { Logger } from './logger.js';
2
+ export function parseCodexOutput(rawOutput) {
3
+ const lines = rawOutput.split('\n');
4
+ const timestamps = [];
5
+ let metadata = {};
6
+ let userInstructions = '';
7
+ let thinking = '';
8
+ let response = '';
9
+ let tokensUsed;
10
+ let currentSection = 'header';
11
+ let metadataLines = [];
12
+ let thinkingLines = [];
13
+ let responseLines = [];
14
+ for (let i = 0; i < lines.length; i++) {
15
+ const line = lines[i];
16
+ // Extract timestamps
17
+ const timestampMatch = line.match(/^\[([^\]]+)\]/);
18
+ if (timestampMatch) {
19
+ timestamps.push(timestampMatch[1]);
20
+ }
21
+ // Extract tokens used
22
+ const tokensMatch = line.match(/tokens used:\s*(\d+)/);
23
+ if (tokensMatch) {
24
+ tokensUsed = parseInt(tokensMatch[1], 10);
25
+ continue;
26
+ }
27
+ // Identify sections
28
+ if (line.includes('OpenAI Codex') || line.includes('Codex CLI')) {
29
+ currentSection = 'header';
30
+ continue;
31
+ }
32
+ else if (line.startsWith('--------')) {
33
+ if (currentSection === 'header') {
34
+ currentSection = 'metadata';
35
+ }
36
+ else if (currentSection === 'metadata') {
37
+ currentSection = 'content';
38
+ }
39
+ continue;
40
+ }
41
+ else if (line.includes('User instructions:')) {
42
+ currentSection = 'userInstructions';
43
+ continue;
44
+ }
45
+ else if (line.includes('thinking')) {
46
+ currentSection = 'thinking';
47
+ continue;
48
+ }
49
+ else if (line.includes('codex') || line.includes('assistant')) {
50
+ currentSection = 'response';
51
+ continue;
52
+ }
53
+ // Parse based on current section
54
+ switch (currentSection) {
55
+ case 'metadata':
56
+ if (line.trim()) {
57
+ metadataLines.push(line.trim());
58
+ }
59
+ break;
60
+ case 'userInstructions':
61
+ if (line.trim() && !line.includes('User instructions:')) {
62
+ userInstructions += line + '\n';
63
+ }
64
+ break;
65
+ case 'thinking':
66
+ if (line.trim() && !line.includes('thinking')) {
67
+ thinkingLines.push(line);
68
+ }
69
+ break;
70
+ case 'response':
71
+ case 'content':
72
+ if (line.trim() &&
73
+ !line.includes('codex') &&
74
+ !line.includes('assistant') &&
75
+ !line.includes('tokens used:')) {
76
+ responseLines.push(line);
77
+ }
78
+ break;
79
+ }
80
+ }
81
+ // Parse metadata
82
+ metadata = parseMetadata(metadataLines);
83
+ thinking = thinkingLines.join('\n').trim();
84
+ response = responseLines.join('\n').trim() || rawOutput; // Fallback to raw output if no response found
85
+ userInstructions = userInstructions.trim();
86
+ const output = {
87
+ metadata,
88
+ userInstructions,
89
+ thinking: thinking || undefined,
90
+ response,
91
+ tokensUsed,
92
+ timestamps,
93
+ rawOutput,
94
+ };
95
+ Logger.codexResponse(response, tokensUsed);
96
+ return output;
97
+ }
98
+ function parseMetadata(metadataLines) {
99
+ const metadata = {};
100
+ for (const line of metadataLines) {
101
+ const colonIndex = line.indexOf(':');
102
+ if (colonIndex > 0) {
103
+ const key = line.substring(0, colonIndex).trim().toLowerCase().replace(/\s+/g, '_');
104
+ const value = line.substring(colonIndex + 1).trim();
105
+ metadata[key] = value;
106
+ }
107
+ }
108
+ return metadata;
109
+ }
110
+ export function formatCodexResponse(output, includeThinking = true, includeMetadata = true) {
111
+ let formatted = '';
112
+ // Add metadata summary if requested
113
+ if (includeMetadata && (output.metadata.model || output.metadata.sandbox)) {
114
+ formatted += `**Codex Configuration:**\n`;
115
+ if (output.metadata.model)
116
+ formatted += `- Model: ${output.metadata.model}\n`;
117
+ if (output.metadata.sandbox)
118
+ formatted += `- Sandbox: ${output.metadata.sandbox}\n`;
119
+ if (output.metadata.approval)
120
+ formatted += `- Approval: ${output.metadata.approval}\n`;
121
+ formatted += '\n';
122
+ }
123
+ // Add thinking section if requested and available
124
+ if (includeThinking && output.thinking) {
125
+ formatted += `**Reasoning:**\n`;
126
+ formatted += output.thinking + '\n\n';
127
+ }
128
+ // Add main response
129
+ if (includeMetadata || includeThinking) {
130
+ formatted += `**Response:**\n`;
131
+ }
132
+ formatted += output.response;
133
+ // Add token usage if available
134
+ if (output.tokensUsed) {
135
+ formatted += `\n\n*Tokens used: ${output.tokensUsed}*`;
136
+ }
137
+ return formatted;
138
+ }
139
+ export function formatCodexResponseForMCP(result, includeThinking = true, includeMetadata = true) {
140
+ // Try to parse the output first
141
+ try {
142
+ const parsed = parseCodexOutput(result);
143
+ return formatCodexResponse(parsed, includeThinking, includeMetadata);
144
+ }
145
+ catch {
146
+ // If parsing fails, return the raw output
147
+ return result;
148
+ }
149
+ }
150
+ export function extractCodeBlocks(text) {
151
+ const codeBlockRegex = /```[\s\S]*?```/g;
152
+ const matches = text.match(codeBlockRegex);
153
+ return matches || [];
154
+ }
155
+ export function extractDiffBlocks(text) {
156
+ const diffRegex = /```diff[\s\S]*?```/g;
157
+ const matches = text.match(diffRegex);
158
+ return matches || [];
159
+ }
160
+ export function isErrorResponse(output) {
161
+ const errorKeywords = [
162
+ 'error',
163
+ 'failed',
164
+ 'unable',
165
+ 'cannot',
166
+ 'authentication',
167
+ 'permission denied',
168
+ 'rate limit',
169
+ 'quota exceeded',
170
+ ];
171
+ const responseText = typeof output === 'string' ? output.toLowerCase() : output.response.toLowerCase();
172
+ return errorKeywords.some(keyword => responseText.includes(keyword));
173
+ }
174
+ //# sourceMappingURL=outputParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputParser.js","sourceRoot":"","sources":["../../src/utils/outputParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ReviewFinding {
2
+ title: string;
3
+ body: string;
4
+ confidence_score: number;
5
+ priority?: number;
6
+ code_location?: {
7
+ absolute_file_path: string;
8
+ line_range: {
9
+ start: number;
10
+ end: number;
11
+ };
12
+ };
13
+ }
14
+ export interface ReviewOutput {
15
+ findings: ReviewFinding[];
16
+ overall_correctness: 'patch is correct' | 'patch is incorrect';
17
+ overall_explanation: string;
18
+ overall_confidence_score: number;
19
+ }
20
+ /**
21
+ * Parse review output from Codex response
22
+ */
23
+ export declare function parseReviewOutput(response: string): ReviewOutput | null;
24
+ /**
25
+ * Format review findings for display
26
+ */
27
+ export declare function formatReviewFindings(review: ReviewOutput): string;
28
+ //# sourceMappingURL=reviewParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewParser.d.ts","sourceRoot":"","sources":["../../src/utils/reviewParser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,mBAAmB,EAAE,kBAAkB,GAAG,oBAAoB,CAAC;IAC/D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAwBvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA6CjE"}
@@ -0,0 +1,87 @@
1
+ import { Logger } from './logger.js';
2
+ /**
3
+ * Parse review output from Codex response
4
+ */
5
+ export function parseReviewOutput(response) {
6
+ try {
7
+ // Try to extract JSON from the response
8
+ // Look for JSON object pattern
9
+ const jsonMatch = response.match(/\{[\s\S]*"findings"[\s\S]*\}/);
10
+ if (!jsonMatch) {
11
+ Logger.warn('No JSON review output found in response');
12
+ return null;
13
+ }
14
+ const reviewData = JSON.parse(jsonMatch[0]);
15
+ // Validate structure
16
+ if (!Array.isArray(reviewData.findings)) {
17
+ Logger.warn('Invalid review output structure: missing findings array');
18
+ return null;
19
+ }
20
+ return reviewData;
21
+ }
22
+ catch (error) {
23
+ Logger.error('Failed to parse review output:', error);
24
+ Logger.debug('Raw response:', response.substring(0, 500));
25
+ return null;
26
+ }
27
+ }
28
+ /**
29
+ * Format review findings for display
30
+ */
31
+ export function formatReviewFindings(review) {
32
+ const lines = [];
33
+ // Overall verdict
34
+ const verdict = review.overall_correctness === 'patch is correct' ? '✅' : '❌';
35
+ lines.push(`## Review Result: ${verdict} ${review.overall_correctness.toUpperCase()}`);
36
+ lines.push('');
37
+ lines.push(`**Overall Assessment:** ${review.overall_explanation}`);
38
+ lines.push(`**Confidence:** ${(review.overall_confidence_score * 100).toFixed(0)}%`);
39
+ lines.push('');
40
+ // Findings
41
+ if (review.findings.length === 0) {
42
+ lines.push('### No Issues Found');
43
+ lines.push('The code changes look good with no issues detected.');
44
+ }
45
+ else {
46
+ lines.push(`### Issues Found (${review.findings.length})`);
47
+ lines.push('');
48
+ // Sort findings by priority
49
+ const sortedFindings = [...review.findings].sort((a, b) => {
50
+ const priorityA = a.priority ?? 999;
51
+ const priorityB = b.priority ?? 999;
52
+ return priorityA - priorityB;
53
+ });
54
+ sortedFindings.forEach((finding, index) => {
55
+ const priorityTag = getPriorityTag(finding.priority);
56
+ const confidence = `(${(finding.confidence_score * 100).toFixed(0)}% confidence)`;
57
+ lines.push(`#### ${index + 1}. ${priorityTag} ${finding.title} ${confidence}`);
58
+ lines.push('');
59
+ lines.push(finding.body);
60
+ if (finding.code_location) {
61
+ const location = `📍 \`${finding.code_location.absolute_file_path}:${finding.code_location.line_range.start}-${finding.code_location.line_range.end}\``;
62
+ lines.push('');
63
+ lines.push(location);
64
+ }
65
+ lines.push('');
66
+ });
67
+ }
68
+ return lines.join('\n');
69
+ }
70
+ /**
71
+ * Get priority tag for display
72
+ */
73
+ function getPriorityTag(priority) {
74
+ switch (priority) {
75
+ case 0:
76
+ return '[P0 🔴]'; // Blocking
77
+ case 1:
78
+ return '[P1 🟠]'; // Urgent
79
+ case 2:
80
+ return '[P2 🟡]'; // Normal
81
+ case 3:
82
+ return '[P3 🔵]'; // Low
83
+ default:
84
+ return '';
85
+ }
86
+ }
87
+ //# sourceMappingURL=reviewParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewParser.js","sourceRoot":"","sources":["../../src/utils/reviewParser.ts"],"names":[],"mappings":"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"}