@trishchuk/codex-mcp-tool 1.0.6 → 1.3.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 (106) hide show
  1. package/README.md +92 -16
  2. package/dist/constants.d.ts +64 -2
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +85 -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 +171 -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 +4 -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/codexCommandBuilder.d.ts +80 -0
  64. package/dist/utils/codexCommandBuilder.d.ts.map +1 -0
  65. package/dist/utils/codexCommandBuilder.js +259 -0
  66. package/dist/utils/codexCommandBuilder.js.map +1 -0
  67. package/dist/utils/codexExecutor.d.ts +19 -0
  68. package/dist/utils/codexExecutor.d.ts.map +1 -1
  69. package/dist/utils/codexExecutor.js +49 -57
  70. package/dist/utils/codexExecutor.js.map +1 -1
  71. package/dist/utils/commandExecutor.d.ts.map +1 -1
  72. package/dist/utils/commandExecutor.js +25 -17
  73. package/dist/utils/commandExecutor.js.map +1 -1
  74. package/dist/utils/fibonacci.d.ts +2 -0
  75. package/dist/utils/fibonacci.d.ts.map +1 -0
  76. package/dist/utils/fibonacci.js +17 -0
  77. package/dist/utils/fibonacci.js.map +1 -0
  78. package/dist/utils/gitHelper.d.ts +20 -0
  79. package/dist/utils/gitHelper.d.ts.map +1 -0
  80. package/dist/utils/gitHelper.js +66 -0
  81. package/dist/utils/gitHelper.js.map +1 -0
  82. package/dist/utils/logger.d.ts +2 -1
  83. package/dist/utils/logger.d.ts.map +1 -1
  84. package/dist/utils/logger.js +21 -15
  85. package/dist/utils/logger.js.map +1 -1
  86. package/dist/utils/modelDetection.d.ts +45 -0
  87. package/dist/utils/modelDetection.d.ts.map +1 -0
  88. package/dist/utils/modelDetection.js +148 -0
  89. package/dist/utils/modelDetection.js.map +1 -0
  90. package/dist/utils/outputParser.d.ts +26 -0
  91. package/dist/utils/outputParser.d.ts.map +1 -0
  92. package/dist/utils/outputParser.js +174 -0
  93. package/dist/utils/outputParser.js.map +1 -0
  94. package/dist/utils/reviewParser.d.ts +28 -0
  95. package/dist/utils/reviewParser.d.ts.map +1 -0
  96. package/dist/utils/reviewParser.js +87 -0
  97. package/dist/utils/reviewParser.js.map +1 -0
  98. package/dist/utils/versionDetection.d.ts +108 -0
  99. package/dist/utils/versionDetection.d.ts.map +1 -0
  100. package/dist/utils/versionDetection.js +160 -0
  101. package/dist/utils/versionDetection.js.map +1 -0
  102. package/dist/utils/workingDirResolver.d.ts +52 -0
  103. package/dist/utils/workingDirResolver.d.ts.map +1 -0
  104. package/dist/utils/workingDirResolver.js +217 -0
  105. package/dist/utils/workingDirResolver.js.map +1 -0
  106. package/package.json +8 -3
@@ -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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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Codex CLI version detection and feature compatibility checks
3
+ * Ensures correct CLI flags are used based on installed version
4
+ */
5
+ export interface CodexVersion {
6
+ major: number;
7
+ minor: number;
8
+ patch: number;
9
+ raw: string;
10
+ isValid: boolean;
11
+ }
12
+ /**
13
+ * Feature availability by version
14
+ */
15
+ export declare const FEATURE_VERSIONS: {
16
+ readonly NATIVE_SEARCH: {
17
+ readonly major: 0;
18
+ readonly minor: 52;
19
+ readonly patch: 0;
20
+ };
21
+ readonly TOOL_TOKEN_LIMIT: {
22
+ readonly major: 0;
23
+ readonly minor: 59;
24
+ readonly patch: 0;
25
+ };
26
+ readonly ADD_DIR: {
27
+ readonly major: 0;
28
+ readonly minor: 59;
29
+ readonly patch: 0;
30
+ };
31
+ readonly WINDOWS_AGENT: {
32
+ readonly major: 0;
33
+ readonly minor: 59;
34
+ readonly patch: 0;
35
+ };
36
+ readonly GPT5_1_MODELS: {
37
+ readonly major: 0;
38
+ readonly minor: 56;
39
+ readonly patch: 0;
40
+ };
41
+ };
42
+ /**
43
+ * Parse version string into structured format
44
+ * @param versionString Raw version string (e.g., "0.59.0", "v0.52.1")
45
+ * @returns CodexVersion object
46
+ */
47
+ export declare function parseVersion(versionString: string): CodexVersion;
48
+ /**
49
+ * Compare two versions
50
+ * @returns number Negative if v1 < v2, 0 if equal, positive if v1 > v2
51
+ */
52
+ export declare function compareVersions(v1: CodexVersion, v2: {
53
+ major: number;
54
+ minor: number;
55
+ patch: number;
56
+ }): number;
57
+ /**
58
+ * Check if version meets minimum requirement
59
+ * @param version Current version
60
+ * @param minVersion Minimum required version
61
+ * @returns boolean True if version >= minVersion
62
+ */
63
+ export declare function meetsMinVersion(version: CodexVersion, minVersion: {
64
+ major: number;
65
+ minor: number;
66
+ patch: number;
67
+ }): boolean;
68
+ /**
69
+ * Get installed Codex CLI version
70
+ * @returns Promise<CodexVersion> Version information
71
+ */
72
+ export declare function getCodexVersion(): Promise<CodexVersion>;
73
+ /**
74
+ * Check if specific feature is available in installed version
75
+ * @param featureName Name of feature from FEATURE_VERSIONS
76
+ * @returns Promise<boolean> True if feature is available
77
+ */
78
+ export declare function isFeatureAvailable(featureName: keyof typeof FEATURE_VERSIONS): Promise<boolean>;
79
+ /**
80
+ * Check if native --search flag is available
81
+ * @returns Promise<boolean> True if --search flag is supported
82
+ */
83
+ export declare function supportsNativeSearch(): Promise<boolean>;
84
+ /**
85
+ * Check if --add-dir flag is available
86
+ * @returns Promise<boolean> True if --add-dir flag is supported
87
+ */
88
+ export declare function supportsAddDir(): Promise<boolean>;
89
+ /**
90
+ * Check if tool_output_token_limit config is available
91
+ * @returns Promise<boolean> True if token limit config is supported
92
+ */
93
+ export declare function supportsToolTokenLimit(): Promise<boolean>;
94
+ /**
95
+ * Check if GPT-5.1 models are available
96
+ * @returns Promise<boolean> True if GPT-5.1 models are supported
97
+ */
98
+ export declare function supportsGPT51Models(): Promise<boolean>;
99
+ /**
100
+ * Get all supported features for current version
101
+ * @returns Promise<Record<string, boolean>> Map of feature names to availability
102
+ */
103
+ export declare function getSupportedFeatures(): Promise<Record<string, boolean>>;
104
+ /**
105
+ * Log version and feature support information
106
+ */
107
+ export declare function logVersionInfo(): Promise<void>;
108
+ //# sourceMappingURL=versionDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionDetection.d.ts","sourceRoot":"","sources":["../../src/utils/versionDetection.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,CAwBhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAgC7D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,OAAO,gBAAgB,GACzC,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE7D;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAS7E;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD"}
@@ -0,0 +1,160 @@
1
+ import { Logger } from './logger.js';
2
+ import { executeCommand } from './commandExecutor.js';
3
+ /**
4
+ * Feature availability by version
5
+ */
6
+ export const FEATURE_VERSIONS = {
7
+ NATIVE_SEARCH: { major: 0, minor: 52, patch: 0 }, // --search flag
8
+ TOOL_TOKEN_LIMIT: { major: 0, minor: 59, patch: 0 }, // tool_output_token_limit
9
+ ADD_DIR: { major: 0, minor: 59, patch: 0 }, // --add-dir flag
10
+ WINDOWS_AGENT: { major: 0, minor: 59, patch: 0 }, // Windows agent mode
11
+ GPT5_1_MODELS: { major: 0, minor: 56, patch: 0 }, // GPT-5.1 model family
12
+ };
13
+ /**
14
+ * Parse version string into structured format
15
+ * @param versionString Raw version string (e.g., "0.59.0", "v0.52.1")
16
+ * @returns CodexVersion object
17
+ */
18
+ export function parseVersion(versionString) {
19
+ // Remove 'v' prefix if present
20
+ const cleanVersion = versionString.replace(/^v/, '').trim();
21
+ // Match semantic version pattern
22
+ const match = cleanVersion.match(/^(\d+)\.(\d+)\.(\d+)/);
23
+ if (!match) {
24
+ return {
25
+ major: 0,
26
+ minor: 0,
27
+ patch: 0,
28
+ raw: versionString,
29
+ isValid: false,
30
+ };
31
+ }
32
+ return {
33
+ major: parseInt(match[1], 10),
34
+ minor: parseInt(match[2], 10),
35
+ patch: parseInt(match[3], 10),
36
+ raw: versionString,
37
+ isValid: true,
38
+ };
39
+ }
40
+ /**
41
+ * Compare two versions
42
+ * @returns number Negative if v1 < v2, 0 if equal, positive if v1 > v2
43
+ */
44
+ export function compareVersions(v1, v2) {
45
+ if (v1.major !== v2.major)
46
+ return v1.major - v2.major;
47
+ if (v1.minor !== v2.minor)
48
+ return v1.minor - v2.minor;
49
+ return v1.patch - v2.patch;
50
+ }
51
+ /**
52
+ * Check if version meets minimum requirement
53
+ * @param version Current version
54
+ * @param minVersion Minimum required version
55
+ * @returns boolean True if version >= minVersion
56
+ */
57
+ export function meetsMinVersion(version, minVersion) {
58
+ if (!version.isValid) {
59
+ Logger.warn('Invalid version format, assuming feature not available');
60
+ return false;
61
+ }
62
+ return compareVersions(version, minVersion) >= 0;
63
+ }
64
+ /**
65
+ * Get installed Codex CLI version
66
+ * @returns Promise<CodexVersion> Version information
67
+ */
68
+ export async function getCodexVersion() {
69
+ try {
70
+ const versionOutput = await executeCommand('codex', ['--version'], undefined, 5000);
71
+ // Parse version from output (format: "codex 0.59.0" or just "0.59.0")
72
+ const versionMatch = versionOutput.match(/codex\s+v?(\d+\.\d+\.\d+)/) || versionOutput.match(/v?(\d+\.\d+\.\d+)/);
73
+ if (!versionMatch) {
74
+ Logger.warn('Could not parse Codex version from output:', versionOutput);
75
+ return {
76
+ major: 0,
77
+ minor: 0,
78
+ patch: 0,
79
+ raw: versionOutput,
80
+ isValid: false,
81
+ };
82
+ }
83
+ const version = parseVersion(versionMatch[1]);
84
+ Logger.log(`Detected Codex CLI version: ${version.major}.${version.minor}.${version.patch}`);
85
+ return version;
86
+ }
87
+ catch (error) {
88
+ Logger.error('Failed to get Codex CLI version:', error);
89
+ return {
90
+ major: 0,
91
+ minor: 0,
92
+ patch: 0,
93
+ raw: 'unknown',
94
+ isValid: false,
95
+ };
96
+ }
97
+ }
98
+ /**
99
+ * Check if specific feature is available in installed version
100
+ * @param featureName Name of feature from FEATURE_VERSIONS
101
+ * @returns Promise<boolean> True if feature is available
102
+ */
103
+ export async function isFeatureAvailable(featureName) {
104
+ const version = await getCodexVersion();
105
+ const minVersion = FEATURE_VERSIONS[featureName];
106
+ return meetsMinVersion(version, minVersion);
107
+ }
108
+ /**
109
+ * Check if native --search flag is available
110
+ * @returns Promise<boolean> True if --search flag is supported
111
+ */
112
+ export async function supportsNativeSearch() {
113
+ return await isFeatureAvailable('NATIVE_SEARCH');
114
+ }
115
+ /**
116
+ * Check if --add-dir flag is available
117
+ * @returns Promise<boolean> True if --add-dir flag is supported
118
+ */
119
+ export async function supportsAddDir() {
120
+ return await isFeatureAvailable('ADD_DIR');
121
+ }
122
+ /**
123
+ * Check if tool_output_token_limit config is available
124
+ * @returns Promise<boolean> True if token limit config is supported
125
+ */
126
+ export async function supportsToolTokenLimit() {
127
+ return await isFeatureAvailable('TOOL_TOKEN_LIMIT');
128
+ }
129
+ /**
130
+ * Check if GPT-5.1 models are available
131
+ * @returns Promise<boolean> True if GPT-5.1 models are supported
132
+ */
133
+ export async function supportsGPT51Models() {
134
+ return await isFeatureAvailable('GPT5_1_MODELS');
135
+ }
136
+ /**
137
+ * Get all supported features for current version
138
+ * @returns Promise<Record<string, boolean>> Map of feature names to availability
139
+ */
140
+ export async function getSupportedFeatures() {
141
+ const version = await getCodexVersion();
142
+ const features = {};
143
+ for (const [featureName, minVersion] of Object.entries(FEATURE_VERSIONS)) {
144
+ features[featureName] = meetsMinVersion(version, minVersion);
145
+ }
146
+ return features;
147
+ }
148
+ /**
149
+ * Log version and feature support information
150
+ */
151
+ export async function logVersionInfo() {
152
+ const version = await getCodexVersion();
153
+ const features = await getSupportedFeatures();
154
+ Logger.log(`Codex CLI Version: ${version.raw}`);
155
+ Logger.log('Supported Features:');
156
+ for (const [feature, supported] of Object.entries(features)) {
157
+ Logger.log(` ${feature}: ${supported ? '✓' : '✗'}`);
158
+ }
159
+ }
160
+ //# sourceMappingURL=versionDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionDetection.js","sourceRoot":"","sources":["../../src/utils/versionDetection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Find the project root directory by walking up the directory tree
3
+ * looking for common project marker files.
4
+ *
5
+ * @param startPath - The directory or file path to start searching from
6
+ * @returns The project root directory, or the starting directory if no markers found
7
+ */
8
+ export declare function findProjectRoot(startPath: string): string;
9
+ /**
10
+ * Ensures that the provided path points to a directory.
11
+ * If the path is a file, returns its parent directory.
12
+ * If the path doesn't exist or is invalid, returns undefined.
13
+ * Supports both absolute and relative paths.
14
+ *
15
+ * @param path - The file or directory path (absolute or relative)
16
+ * @param baseDir - Base directory for resolving relative paths (default: process.cwd())
17
+ * @returns The directory path, or undefined if invalid
18
+ */
19
+ export declare function ensureDirectory(path?: string, baseDir?: string): string | undefined;
20
+ /**
21
+ * Extract file paths from @path syntax in the prompt.
22
+ * Supports both quoted and unquoted paths, absolute and relative.
23
+ *
24
+ * Examples:
25
+ * - @/absolute/path/to/file.ts (absolute)
26
+ * - @./relative/path/to/file.ts (relative)
27
+ * - @src/file.ts (relative)
28
+ * - @"path with spaces/file.ts" (quoted, can be absolute or relative)
29
+ * - @'path with spaces/file.ts' (quoted, can be absolute or relative)
30
+ *
31
+ * @param prompt - The user prompt that may contain @path references
32
+ * @param baseDir - Base directory for resolving relative paths (default: process.cwd())
33
+ * @returns Array of absolute paths found in the prompt
34
+ */
35
+ export declare function extractPathFromAtSyntax(prompt: string, baseDir?: string): string[];
36
+ /**
37
+ * Resolve the working directory using a fallback chain with multiple strategies.
38
+ *
39
+ * Priority order (highest to lowest):
40
+ * 1. Explicit workingDir parameter
41
+ * 2. Environment variables: CODEX_MCP_CWD > PWD > INIT_CWD
42
+ * 3. Automatic inference from @path syntax in prompt
43
+ * 4. process.cwd() as last resort
44
+ *
45
+ * @param options - Resolution options
46
+ * @returns The resolved working directory path
47
+ */
48
+ export declare function resolveWorkingDirectory(options?: {
49
+ workingDir?: string;
50
+ prompt?: string;
51
+ }): string | undefined;
52
+ //# sourceMappingURL=workingDirResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workingDirResolver.d.ts","sourceRoot":"","sources":["../../src/utils/workingDirResolver.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2CzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,GAAE,MAAsB,GAC9B,MAAM,GAAG,SAAS,CAsCpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAsB,GAAG,MAAM,EAAE,CAoCjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,GAAG,SAAS,CAqDrB"}