@eldrforge/kodrdriv 1.2.1 → 1.2.2
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.
- package/dist/arguments.js +60 -9
- package/dist/arguments.js.map +1 -1
- package/dist/commands/commit.js +16 -6
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/release.js +9 -3
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/review.js +354 -143
- package/dist/commands/review.js.map +1 -1
- package/dist/constants.js +21 -7
- package/dist/constants.js.map +1 -1
- package/dist/content/issues.js +1 -1
- package/dist/prompt/commit.js +6 -0
- package/dist/prompt/commit.js.map +1 -1
- package/dist/prompt/instructions/review.md +13 -3
- package/dist/types.js +44 -4
- package/dist/types.js.map +1 -1
- package/dist/util/openai.js +70 -9
- package/dist/util/openai.js.map +1 -1
- package/dist/util/validation.js +24 -1
- package/dist/util/validation.js.map +1 -1
- package/package.json +2 -2
- package/test-review-flow.sh +15 -0
- package/test-sort-files/alpha.md +3 -0
- package/test-sort-files/middle.txt +3 -0
- package/test-sort-files/zebra.txt +3 -0
package/dist/arguments.js
CHANGED
|
@@ -14,6 +14,12 @@ z.object({
|
|
|
14
14
|
checkConfig: z.boolean().optional(),
|
|
15
15
|
initConfig: z.boolean().optional(),
|
|
16
16
|
model: z.string().optional(),
|
|
17
|
+
openaiReasoning: z.enum([
|
|
18
|
+
'low',
|
|
19
|
+
'medium',
|
|
20
|
+
'high'
|
|
21
|
+
]).optional(),
|
|
22
|
+
openaiMaxOutputTokens: z.number().optional(),
|
|
17
23
|
contextDirectories: z.array(z.string()).optional(),
|
|
18
24
|
configDir: z.string().optional(),
|
|
19
25
|
outputDir: z.string().optional(),
|
|
@@ -75,6 +81,8 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
75
81
|
if (finalCliArgs.debug !== undefined) transformedCliArgs.debug = finalCliArgs.debug;
|
|
76
82
|
if (finalCliArgs.overrides !== undefined) transformedCliArgs.overrides = finalCliArgs.overrides;
|
|
77
83
|
if (finalCliArgs.model !== undefined) transformedCliArgs.model = finalCliArgs.model;
|
|
84
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
85
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
78
86
|
if (finalCliArgs.contextDirectories !== undefined) transformedCliArgs.contextDirectories = finalCliArgs.contextDirectories;
|
|
79
87
|
// Map configDir (CLI) to configDirectory (Cardigantime standard)
|
|
80
88
|
if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;
|
|
@@ -83,7 +91,7 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
83
91
|
// Map preferencesDir (CLI) to preferencesDirectory (Config standard)
|
|
84
92
|
if (finalCliArgs.preferencesDir !== undefined) transformedCliArgs.preferencesDirectory = finalCliArgs.preferencesDir;
|
|
85
93
|
// Nested mappings for 'commit' options
|
|
86
|
-
if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.add !== undefined || finalCliArgs.skipFileCheck !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.amend !== undefined) {
|
|
94
|
+
if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.add !== undefined || finalCliArgs.skipFileCheck !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.amend !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined || finalCliArgs.direction !== undefined) {
|
|
87
95
|
transformedCliArgs.commit = {};
|
|
88
96
|
if (finalCliArgs.add !== undefined) transformedCliArgs.commit.add = finalCliArgs.add;
|
|
89
97
|
if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;
|
|
@@ -95,15 +103,19 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
95
103
|
if (finalCliArgs.direction !== undefined) transformedCliArgs.commit.direction = finalCliArgs.direction;
|
|
96
104
|
if (finalCliArgs.skipFileCheck !== undefined) transformedCliArgs.commit.skipFileCheck = finalCliArgs.skipFileCheck;
|
|
97
105
|
if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.commit.maxDiffBytes = finalCliArgs.maxDiffBytes;
|
|
106
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.commit.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
107
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.commit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
98
108
|
}
|
|
99
109
|
// Nested mappings for 'audioCommit' options
|
|
100
|
-
if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined) {
|
|
110
|
+
if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {
|
|
101
111
|
transformedCliArgs.audioCommit = {};
|
|
102
112
|
if (finalCliArgs.file !== undefined) transformedCliArgs.audioCommit.file = finalCliArgs.file;
|
|
103
113
|
if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioCommit.keepTemp = finalCliArgs.keepTemp;
|
|
114
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioCommit.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
115
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioCommit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
104
116
|
}
|
|
105
117
|
// Nested mappings for 'release' options
|
|
106
|
-
if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.noMilestones !== undefined) {
|
|
118
|
+
if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.noMilestones !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {
|
|
107
119
|
transformedCliArgs.release = {};
|
|
108
120
|
if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;
|
|
109
121
|
if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;
|
|
@@ -112,6 +124,8 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
112
124
|
if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.release.messageLimit = finalCliArgs.messageLimit;
|
|
113
125
|
if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.release.maxDiffBytes = finalCliArgs.maxDiffBytes;
|
|
114
126
|
if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.release.noMilestones = finalCliArgs.noMilestones;
|
|
127
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.release.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
128
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.release.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
115
129
|
}
|
|
116
130
|
// Nested mappings for 'publish' options (only when it's actually a publish command or has publish-specific options)
|
|
117
131
|
if (finalCliArgs.mergeMethod !== undefined || finalCliArgs.targetVersion !== undefined || finalCliArgs.syncTarget !== undefined || finalCliArgs.noMilestones !== undefined || commandName === 'publish' && (finalCliArgs.from !== undefined || finalCliArgs.interactive !== undefined)) {
|
|
@@ -156,7 +170,7 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
156
170
|
}
|
|
157
171
|
}
|
|
158
172
|
// Nested mappings for 'audio-review' options (only when it's not a tree command)
|
|
159
|
-
if (commandName !== 'tree' && (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.file !== undefined || finalCliArgs.directories !== undefined || finalCliArgs.keepTemp !== undefined)) {
|
|
173
|
+
if (commandName !== 'tree' && (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.file !== undefined || finalCliArgs.directories !== undefined || finalCliArgs.keepTemp !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined)) {
|
|
160
174
|
transformedCliArgs.audioReview = {};
|
|
161
175
|
if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;
|
|
162
176
|
if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;
|
|
@@ -171,11 +185,15 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
171
185
|
if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;
|
|
172
186
|
if (finalCliArgs.directory !== undefined) transformedCliArgs.audioReview.directory = finalCliArgs.directory;
|
|
173
187
|
if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;
|
|
188
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioReview.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
189
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioReview.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
174
190
|
}
|
|
175
191
|
// Nested mappings for 'review' options
|
|
176
|
-
if (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.context !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.note !== undefined) {
|
|
192
|
+
if (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.context !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.note !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined || commandName === 'review' && (finalCliArgs.file !== undefined || finalCliArgs.directory !== undefined)) {
|
|
177
193
|
transformedCliArgs.review = {};
|
|
178
194
|
if (finalCliArgs.note !== undefined) transformedCliArgs.review.note = finalCliArgs.note;
|
|
195
|
+
if (commandName === 'review' && finalCliArgs.file !== undefined) transformedCliArgs.review.file = finalCliArgs.file;
|
|
196
|
+
if (commandName === 'review' && finalCliArgs.directory !== undefined) transformedCliArgs.review.directory = finalCliArgs.directory;
|
|
179
197
|
// Include optional review configuration options if specified
|
|
180
198
|
if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.review.includeCommitHistory = finalCliArgs.includeCommitHistory;
|
|
181
199
|
if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.review.includeRecentDiffs = finalCliArgs.includeRecentDiffs;
|
|
@@ -188,6 +206,8 @@ const transformCliArgs = (finalCliArgs, commandName)=>{
|
|
|
188
206
|
if (finalCliArgs.context !== undefined) transformedCliArgs.review.context = finalCliArgs.context;
|
|
189
207
|
if (finalCliArgs.sendit !== undefined) transformedCliArgs.review.sendit = finalCliArgs.sendit;
|
|
190
208
|
if (finalCliArgs.editorTimeout !== undefined) transformedCliArgs.review.editorTimeout = finalCliArgs.editorTimeout;
|
|
209
|
+
if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.review.openaiReasoning = finalCliArgs.openaiReasoning;
|
|
210
|
+
if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.review.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;
|
|
191
211
|
}
|
|
192
212
|
// Nested mappings for 'tree' options (add when relevant args present)
|
|
193
213
|
if (commandName === 'tree') {
|
|
@@ -375,7 +395,7 @@ const configure = async (cardigantime)=>{
|
|
|
375
395
|
async function getCliConfig(program) {
|
|
376
396
|
const addSharedOptions = (command)=>{
|
|
377
397
|
command.option('--dry-run', 'perform a dry run without saving files') // Removed default, will be handled by merging
|
|
378
|
-
.option('--verbose', 'enable verbose logging').option('--debug', 'enable debug logging').option('--overrides', 'enable overrides').option('--model <model>', 'OpenAI model to use').option('-d, --context-directories [contextDirectories...]', 'directories to scan for context').option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location
|
|
398
|
+
.option('--verbose', 'enable verbose logging').option('--debug', 'enable debug logging').option('--overrides', 'enable overrides').option('--model <model>', 'OpenAI model to use').option('--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)').option('--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens', parseInt).option('-d, --context-directories [contextDirectories...]', 'directories to scan for context').option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location
|
|
379
399
|
.option('--output-dir <outputDir>', 'output directory for generated files').option('--preferences-dir <preferencesDir>', 'preferences directory for personal settings').option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff').option('--keep-temp', 'keep temporary recording files');
|
|
380
400
|
};
|
|
381
401
|
// Add global options to the main program
|
|
@@ -441,6 +461,14 @@ async function getCliConfig(program) {
|
|
|
441
461
|
'--model <model>',
|
|
442
462
|
'OpenAI model to use'
|
|
443
463
|
],
|
|
464
|
+
[
|
|
465
|
+
'--openai-reasoning <level>',
|
|
466
|
+
'OpenAI reasoning level (low, medium, high)'
|
|
467
|
+
],
|
|
468
|
+
[
|
|
469
|
+
'--openai-max-output-tokens <tokens>',
|
|
470
|
+
'OpenAI maximum output tokens'
|
|
471
|
+
],
|
|
444
472
|
[
|
|
445
473
|
'-d, --context-directories [contextDirectories...]',
|
|
446
474
|
'directories to scan for context'
|
|
@@ -479,7 +507,7 @@ async function getCliConfig(program) {
|
|
|
479
507
|
addSharedOptions(unlinkCommand);
|
|
480
508
|
const audioReviewCommand = program.command('audio-review').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the audio review').option('--file <file>', 'audio file path').option('--directory <directory>', 'directory containing audio files to process').option('--max-recording-time <time>', 'maximum recording time in seconds', parseInt).option('--sendit', 'Create GitHub issues automatically without confirmation').description('Record audio, transcribe with Whisper, and analyze for project issues using AI');
|
|
481
509
|
addSharedOptions(audioReviewCommand);
|
|
482
|
-
const reviewCommand = program.command('review').argument('[note]', 'review note to analyze for project issues').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the review').option('--sendit', 'Create GitHub issues automatically without confirmation').option('--editor-timeout <timeout>', 'timeout for editor in milliseconds (default: no timeout)', parseInt).description('Analyze review note for project issues using AI');
|
|
510
|
+
const reviewCommand = program.command('review').argument('[note]', 'review note to analyze for project issues').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the review').option('--file <file>', 'read review note from a file').option('--directory <directory>', 'process all review files in a directory').option('--sendit', 'Create GitHub issues automatically without confirmation').option('--editor-timeout <timeout>', 'timeout for editor in milliseconds (default: no timeout)', parseInt).description('Analyze review note for project issues using AI');
|
|
483
511
|
addSharedOptions(reviewCommand);
|
|
484
512
|
// Customize help output for review command
|
|
485
513
|
reviewCommand.configureHelp({
|
|
@@ -495,6 +523,14 @@ async function getCliConfig(program) {
|
|
|
495
523
|
[
|
|
496
524
|
'--context <context>',
|
|
497
525
|
'additional context for the review'
|
|
526
|
+
],
|
|
527
|
+
[
|
|
528
|
+
'--file <file>',
|
|
529
|
+
'read review note from a file'
|
|
530
|
+
],
|
|
531
|
+
[
|
|
532
|
+
'--directory <directory>',
|
|
533
|
+
'process all review files in a directory'
|
|
498
534
|
]
|
|
499
535
|
];
|
|
500
536
|
const gitContextOptions = [
|
|
@@ -574,6 +610,14 @@ async function getCliConfig(program) {
|
|
|
574
610
|
'--model <model>',
|
|
575
611
|
'OpenAI model to use'
|
|
576
612
|
],
|
|
613
|
+
[
|
|
614
|
+
'--openai-reasoning <level>',
|
|
615
|
+
'OpenAI reasoning level (low, medium, high)'
|
|
616
|
+
],
|
|
617
|
+
[
|
|
618
|
+
'--openai-max-output-tokens <tokens>',
|
|
619
|
+
'OpenAI maximum output tokens'
|
|
620
|
+
],
|
|
577
621
|
[
|
|
578
622
|
'-d, --context-directories [contextDirectories...]',
|
|
579
623
|
'directories to scan for context'
|
|
@@ -621,9 +665,14 @@ async function getCliConfig(program) {
|
|
|
621
665
|
}
|
|
622
666
|
// Only proceed with command-specific options if validation passed
|
|
623
667
|
if (ALLOWED_COMMANDS.includes(commandName)) {
|
|
624
|
-
if (commandName === 'commit'
|
|
668
|
+
if (commandName === 'commit') {
|
|
625
669
|
commandOptions = commitCommand.opts();
|
|
626
670
|
// Handle positional argument for direction
|
|
671
|
+
// Try to get direction from program.args (after the command name)
|
|
672
|
+
if (program.args.length > 1) {
|
|
673
|
+
commandOptions.direction = program.args[1];
|
|
674
|
+
}
|
|
675
|
+
// Also try commitCommand.args as fallback
|
|
627
676
|
const args = commitCommand.args;
|
|
628
677
|
if (args && args.length > 0 && args[0]) {
|
|
629
678
|
commandOptions.direction = args[0];
|
|
@@ -725,7 +774,7 @@ async function validateAndProcessSecureOptions() {
|
|
|
725
774
|
async function validateAndProcessOptions(options) {
|
|
726
775
|
const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);
|
|
727
776
|
const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;
|
|
728
|
-
var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_outputDirectory, _options_preferencesDirectory, _options_discoveredConfigDirs, _options_resolvedConfigDirs, _options_excludedPatterns;
|
|
777
|
+
var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_openaiReasoning, _options_openaiMaxOutputTokens, _options_outputDirectory, _options_preferencesDirectory, _options_discoveredConfigDirs, _options_resolvedConfigDirs, _options_excludedPatterns;
|
|
729
778
|
// Skip config directory validation since Cardigantime handles hierarchical lookup
|
|
730
779
|
// Ensure all required fields are present and have correct types after merging
|
|
731
780
|
const finalConfig = {
|
|
@@ -734,6 +783,8 @@ async function validateAndProcessOptions(options) {
|
|
|
734
783
|
debug: (_options_debug = options.debug) !== null && _options_debug !== void 0 ? _options_debug : KODRDRIV_DEFAULTS.debug,
|
|
735
784
|
overrides: (_options_overrides = options.overrides) !== null && _options_overrides !== void 0 ? _options_overrides : KODRDRIV_DEFAULTS.overrides,
|
|
736
785
|
model: (_options_model = options.model) !== null && _options_model !== void 0 ? _options_model : KODRDRIV_DEFAULTS.model,
|
|
786
|
+
openaiReasoning: (_options_openaiReasoning = options.openaiReasoning) !== null && _options_openaiReasoning !== void 0 ? _options_openaiReasoning : KODRDRIV_DEFAULTS.openaiReasoning,
|
|
787
|
+
openaiMaxOutputTokens: (_options_openaiMaxOutputTokens = options.openaiMaxOutputTokens) !== null && _options_openaiMaxOutputTokens !== void 0 ? _options_openaiMaxOutputTokens : KODRDRIV_DEFAULTS.openaiMaxOutputTokens,
|
|
737
788
|
contextDirectories: contextDirectories,
|
|
738
789
|
configDirectory: configDir,
|
|
739
790
|
outputDirectory: (_options_outputDirectory = options.outputDirectory) !== null && _options_outputDirectory !== void 0 ? _options_outputDirectory : KODRDRIV_DEFAULTS.outputDirectory,
|