@eldrforge/kodrdriv 0.1.0 → 1.2.1

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 (71) hide show
  1. package/README.md +1 -0
  2. package/dist/application.js +25 -3
  3. package/dist/application.js.map +1 -1
  4. package/dist/arguments.js +103 -18
  5. package/dist/arguments.js.map +1 -1
  6. package/dist/commands/audio-commit.js +28 -7
  7. package/dist/commands/audio-commit.js.map +1 -1
  8. package/dist/commands/audio-review.js +28 -7
  9. package/dist/commands/audio-review.js.map +1 -1
  10. package/dist/commands/commit.js +75 -18
  11. package/dist/commands/commit.js.map +1 -1
  12. package/dist/commands/development.js +264 -0
  13. package/dist/commands/development.js.map +1 -0
  14. package/dist/commands/link.js +356 -181
  15. package/dist/commands/link.js.map +1 -1
  16. package/dist/commands/publish.js +166 -32
  17. package/dist/commands/publish.js.map +1 -1
  18. package/dist/commands/release.js +78 -13
  19. package/dist/commands/release.js.map +1 -1
  20. package/dist/commands/review.js +10 -6
  21. package/dist/commands/review.js.map +1 -1
  22. package/dist/commands/tree.js +450 -24
  23. package/dist/commands/tree.js.map +1 -1
  24. package/dist/commands/unlink.js +267 -372
  25. package/dist/commands/unlink.js.map +1 -1
  26. package/dist/commands/versions.js +224 -0
  27. package/dist/commands/versions.js.map +1 -0
  28. package/dist/constants.js +29 -10
  29. package/dist/constants.js.map +1 -1
  30. package/dist/content/diff.js.map +1 -1
  31. package/dist/content/files.js +192 -0
  32. package/dist/content/files.js.map +1 -0
  33. package/dist/content/log.js +16 -0
  34. package/dist/content/log.js.map +1 -1
  35. package/dist/main.js +0 -0
  36. package/dist/prompt/commit.js +9 -2
  37. package/dist/prompt/commit.js.map +1 -1
  38. package/dist/prompt/instructions/commit.md +20 -2
  39. package/dist/prompt/instructions/release.md +27 -10
  40. package/dist/prompt/instructions/review.md +75 -8
  41. package/dist/prompt/release.js +13 -5
  42. package/dist/prompt/release.js.map +1 -1
  43. package/dist/types.js +21 -5
  44. package/dist/types.js.map +1 -1
  45. package/dist/util/child.js +112 -26
  46. package/dist/util/child.js.map +1 -1
  47. package/dist/util/countdown.js +215 -0
  48. package/dist/util/countdown.js.map +1 -0
  49. package/dist/util/general.js +31 -7
  50. package/dist/util/general.js.map +1 -1
  51. package/dist/util/git.js +587 -0
  52. package/dist/util/git.js.map +1 -0
  53. package/dist/util/github.js +519 -3
  54. package/dist/util/github.js.map +1 -1
  55. package/dist/util/interactive.js +245 -79
  56. package/dist/util/interactive.js.map +1 -1
  57. package/dist/util/openai.js +70 -22
  58. package/dist/util/openai.js.map +1 -1
  59. package/dist/util/performance.js +1 -69
  60. package/dist/util/performance.js.map +1 -1
  61. package/dist/util/storage.js +28 -1
  62. package/dist/util/storage.js.map +1 -1
  63. package/dist/util/validation.js +1 -25
  64. package/dist/util/validation.js.map +1 -1
  65. package/package.json +10 -8
  66. package/test-multiline/cli/package.json +8 -0
  67. package/test-multiline/core/package.json +5 -0
  68. package/test-multiline/mobile/package.json +8 -0
  69. package/test-multiline/web/package.json +8 -0
  70. package/dist/util/npmOptimizations.js +0 -174
  71. package/dist/util/npmOptimizations.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../src/prompt/release.ts"],"sourcesContent":["import { ContentItem, Prompt, recipe } from '@riotprompt/riotprompt';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// Types for the release prompt\nexport type Config = {\n overridePaths?: string[];\n overrides?: boolean;\n}\n\nexport type Content = {\n releaseFocus?: string;\n logContent: string;\n diffContent: string;\n};\n\nexport type Context = {\n context?: string;\n directories?: string[];\n};\n\nexport type ReleasePromptResult = {\n prompt: Prompt;\n maxTokens: number;\n isLargeRelease: boolean;\n};\n\n/**\n * Analyzes release content to determine if it's a large release\n * and calculates appropriate token limits\n */\nconst analyzeReleaseSize = (logContent: string, diffContent: string): { isLarge: boolean; maxTokens: number } => {\n const logLines = logContent.split('\\n').length;\n const diffLines = diffContent.split('\\n').length;\n const totalContentLength = logContent.length + diffContent.length;\n\n // Consider it a large release if:\n // - More than 20 commits (log lines typically ~3-5 per commit)\n // - More than 500 diff lines\n // - Total content length > 50KB\n const isLarge = logLines > 60 || diffLines > 500 || totalContentLength > 50000;\n\n if (isLarge) {\n // For large releases, significantly increase token limit\n return { isLarge: true, maxTokens: 25000 };\n } else {\n // Standard token limit for normal releases\n return { isLarge: false, maxTokens: 10000 };\n }\n};\n\n/**\n * Build a release prompt using RiotPrompt Recipes.\n */\nexport const createPrompt = async (\n { overrides: _overrides, overridePaths: _overridePaths }: Config,\n { releaseFocus, logContent, diffContent }: Content,\n { context, directories }: Context = {}\n): Promise<ReleasePromptResult> => {\n const basePath = __dirname;\n\n // Analyze release size to determine token requirements\n const { isLarge: isLargeRelease, maxTokens } = analyzeReleaseSize(logContent, diffContent);\n\n // Build content items for the prompt\n const contentItems: ContentItem[] = [];\n const contextItems: ContentItem[] = [];\n\n if (diffContent) {\n contentItems.push({ content: diffContent, title: 'Diff' });\n }\n if (logContent) {\n contentItems.push({ content: logContent, title: 'Log Context' });\n }\n if (releaseFocus) {\n contentItems.push({ content: releaseFocus, title: 'Release Focus' });\n }\n\n // Add release size context to help guide the AI\n if (isLargeRelease) {\n contextItems.push({\n content: `This appears to be a LARGE RELEASE with significant changes. Please provide comprehensive, detailed release notes that thoroughly document all major changes, improvements, and fixes. Don't summarize - dive deep into the details.`,\n title: 'Release Size Context'\n });\n }\n\n if (context) {\n contextItems.push({ content: context, title: 'User Context' });\n }\n if (directories && directories.length > 0) {\n contextItems.push({ directories, title: 'Directories' });\n }\n\n const prompt = await recipe(basePath)\n .persona({ path: 'personas/releaser.md' })\n .instructions({ path: 'instructions/release.md' })\n .overridePaths(_overridePaths ?? [])\n .overrides(_overrides ?? true)\n .content(...contentItems)\n .context(...contextItems)\n .cook();\n\n return {\n prompt,\n maxTokens,\n isLargeRelease\n };\n};\n"],"names":["__filename","fileURLToPath","url","__dirname","path","dirname","analyzeReleaseSize","logContent","diffContent","logLines","split","length","diffLines","totalContentLength","isLarge","maxTokens","createPrompt","overrides","_overrides","overridePaths","_overridePaths","releaseFocus","context","directories","basePath","isLargeRelease","contentItems","contextItems","push","content","title","prompt","recipe","persona","instructions","cook"],"mappings":"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"}
1
+ {"version":3,"file":"release.js","sources":["../../src/prompt/release.ts"],"sourcesContent":["import { ContentItem, Prompt, recipe } from '@riotprompt/riotprompt';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// Types for the release prompt\nexport type Config = {\n overridePaths?: string[];\n overrides?: boolean;\n}\n\nexport type Content = {\n releaseFocus?: string;\n logContent: string;\n diffContent: string;\n milestoneIssues?: string;\n};\n\nexport type Context = {\n context?: string;\n directories?: string[];\n};\n\nexport type ReleasePromptResult = {\n prompt: Prompt;\n maxTokens: number;\n isLargeRelease: boolean;\n};\n\n/**\n * Analyzes release content to determine if it's a large release\n * and calculates appropriate token limits\n */\nconst analyzeReleaseSize = (logContent: string, diffContent: string, milestoneIssues?: string): { isLarge: boolean; maxTokens: number } => {\n const logLines = logContent.split('\\n').length;\n const diffLines = diffContent.split('\\n').length;\n const milestoneLines = milestoneIssues ? milestoneIssues.split('\\n').length : 0;\n const totalContentLength = logContent.length + diffContent.length + (milestoneIssues?.length || 0);\n\n // Consider it a large release if:\n // - More than 20 commits (log lines typically ~3-5 per commit)\n // - More than 500 diff lines\n // - Milestone issues present (indicates significant work)\n // - Total content length > 50KB\n const isLarge = logLines > 60 || diffLines > 500 || milestoneLines > 50 || totalContentLength > 50000;\n\n if (isLarge) {\n // For large releases, significantly increase token limit\n return { isLarge: true, maxTokens: 25000 };\n } else {\n // Standard token limit for normal releases\n return { isLarge: false, maxTokens: 10000 };\n }\n};\n\n/**\n * Build a release prompt using RiotPrompt Recipes.\n */\nexport const createPrompt = async (\n { overrides: _overrides, overridePaths: _overridePaths }: Config,\n { releaseFocus, logContent, diffContent, milestoneIssues }: Content,\n { context, directories }: Context = {}\n): Promise<ReleasePromptResult> => {\n const basePath = __dirname;\n\n // Analyze release size to determine token requirements\n const { isLarge: isLargeRelease, maxTokens } = analyzeReleaseSize(logContent, diffContent, milestoneIssues);\n\n // Build content items for the prompt\n const contentItems: ContentItem[] = [];\n const contextItems: ContentItem[] = [];\n\n if (diffContent) {\n contentItems.push({ content: diffContent, title: 'Diff' });\n }\n if (logContent) {\n contentItems.push({ content: logContent, title: 'Log Context' });\n }\n if (milestoneIssues) {\n contentItems.push({ content: milestoneIssues, title: 'Resolved Issues from Milestone' });\n }\n if (releaseFocus) {\n contentItems.push({ content: releaseFocus, title: 'Release Focus' });\n }\n\n // Add release size context to help guide the AI\n if (isLargeRelease) {\n contextItems.push({\n content: `This appears to be a LARGE RELEASE with significant changes. Please provide comprehensive, detailed release notes that thoroughly document all major changes, improvements, and fixes. Don't summarize - dive deep into the details.`,\n title: 'Release Size Context'\n });\n }\n\n if (context) {\n contextItems.push({ content: context, title: 'User Context' });\n }\n if (directories && directories.length > 0) {\n contextItems.push({ directories, title: 'Directories' });\n }\n\n const prompt = await recipe(basePath)\n .persona({ path: 'personas/releaser.md' })\n .instructions({ path: 'instructions/release.md' })\n .overridePaths(_overridePaths ?? [])\n .overrides(_overrides ?? true)\n .content(...contentItems)\n .context(...contextItems)\n .cook();\n\n return {\n prompt,\n maxTokens,\n isLargeRelease\n };\n};\n"],"names":["__filename","fileURLToPath","url","__dirname","path","dirname","analyzeReleaseSize","logContent","diffContent","milestoneIssues","logLines","split","length","diffLines","milestoneLines","totalContentLength","isLarge","maxTokens","createPrompt","overrides","_overrides","overridePaths","_overridePaths","releaseFocus","context","directories","basePath","isLargeRelease","contentItems","contextItems","push","content","title","prompt","recipe","persona","instructions","cook"],"mappings":"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"}
package/dist/types.js CHANGED
@@ -36,7 +36,8 @@ const ConfigSchema = z.object({
36
36
  interactive: z.boolean().optional(),
37
37
  focus: z.string().optional(),
38
38
  maxDiffBytes: z.number().optional(),
39
- model: z.string().optional()
39
+ model: z.string().optional(),
40
+ noMilestones: z.boolean().optional()
40
41
  }).optional(),
41
42
  review: z.object({
42
43
  includeCommitHistory: z.boolean().optional(),
@@ -86,30 +87,45 @@ const ConfigSchema = z.object({
86
87
  unlinkWorkspacePackages: z.boolean().optional(),
87
88
  checksTimeout: z.number().optional(),
88
89
  skipUserConfirmation: z.boolean().optional(),
90
+ syncTarget: z.boolean().optional(),
89
91
  sendit: z.boolean().optional(),
90
92
  waitForReleaseWorkflows: z.boolean().optional(),
91
93
  releaseWorkflowsTimeout: z.number().optional(),
92
94
  releaseWorkflowNames: z.array(z.string()).optional(),
93
- targetBranch: z.string().optional()
95
+ targetBranch: z.string().optional(),
96
+ noMilestones: z.boolean().optional()
94
97
  }).optional(),
95
98
  link: z.object({
96
99
  scopeRoots: z.record(z.string(), z.string()).optional(),
97
- dryRun: z.boolean().optional()
100
+ dryRun: z.boolean().optional(),
101
+ packageArgument: z.string().optional()
98
102
  }).optional(),
99
103
  unlink: z.object({
100
104
  scopeRoots: z.record(z.string(), z.string()).optional(),
101
105
  workspaceFile: z.string().optional(),
102
106
  dryRun: z.boolean().optional(),
103
- cleanNodeModules: z.boolean().optional()
107
+ cleanNodeModules: z.boolean().optional(),
108
+ packageArgument: z.string().optional()
104
109
  }).optional(),
105
110
  tree: z.object({
106
111
  directories: z.array(z.string()).optional(),
107
112
  excludedPatterns: z.array(z.string()).optional(),
108
113
  startFrom: z.string().optional(),
114
+ stopAt: z.string().optional(),
109
115
  cmd: z.string().optional(),
110
116
  parallel: z.boolean().optional(),
111
117
  builtInCommand: z.string().optional(),
112
- continue: z.boolean().optional()
118
+ continue: z.boolean().optional(),
119
+ packageArgument: z.string().optional(),
120
+ cleanNodeModules: z.boolean().optional()
121
+ }).optional(),
122
+ development: z.object({
123
+ targetVersion: z.string().optional(),
124
+ noMilestones: z.boolean().optional()
125
+ }).optional(),
126
+ versions: z.object({
127
+ subcommand: z.string().optional(),
128
+ directories: z.array(z.string()).optional()
113
129
  }).optional(),
114
130
  excludedPatterns: z.array(z.string()).optional()
115
131
  });
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n interactive: z.boolean().optional(),\n focus: z.string().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n model: z.string().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n from: z.string().optional(),\n targetVersion: z.string().optional(),\n interactive: z.boolean().optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n targetBranch: z.string().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n cleanNodeModules: z.boolean().optional(),\n }).optional(),\n tree: z.object({\n directories: z.array(z.string()).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n cmd: z.string().optional(),\n parallel: z.boolean().optional(),\n builtInCommand: z.string().optional(),\n continue: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n interactive?: boolean;\n focus?: string;\n messageLimit?: number;\n maxDiffBytes?: number;\n model?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n model?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type CommitConfig = {\n add?: boolean;\n cached?: boolean;\n sendit?: boolean;\n interactive?: boolean;\n messageLimit?: number;\n context?: string;\n direction?: string;\n skipFileCheck?: boolean;\n maxDiffBytes?: number;\n model?: string;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n cleanNodeModules?: boolean;\n}\n\nexport type PublishConfig = {\n mergeMethod?: 'merge' | 'squash' | 'rebase';\n from?: string;\n targetVersion?: string;\n interactive?: boolean;\n dependencyUpdatePatterns?: string[];\n requiredEnvVars?: string[];\n linkWorkspacePackages?: boolean;\n unlinkWorkspacePackages?: boolean;\n checksTimeout?: number;\n skipUserConfirmation?: boolean;\n sendit?: boolean;\n waitForReleaseWorkflows?: boolean;\n releaseWorkflowsTimeout?: number;\n releaseWorkflowNames?: string[];\n targetBranch?: string;\n}\n\nexport type TreeConfig = {\n directories?: string[];\n excludedPatterns?: string[];\n startFrom?: string;\n cmd?: string;\n parallel?: boolean;\n builtInCommand?: string;\n continue?: boolean; // Continue from previous tree publish execution\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","interactive","amend","messageLimit","number","context","direction","skipFileCheck","maxDiffBytes","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","targetVersion","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","targetBranch","link","scopeRoots","record","unlink","workspaceFile","cleanNodeModules","tree","directories","excludedPatterns","startFrom","cmd","parallel","builtInCommand","continue","openaiApiKey","commandName"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n interactive: z.boolean().optional(),\n focus: z.string().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n noMilestones: z.boolean().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n model: z.string().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n from: z.string().optional(),\n targetVersion: z.string().optional(),\n interactive: z.boolean().optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n syncTarget: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n targetBranch: z.string().optional(),\n noMilestones: z.boolean().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n packageArgument: z.string().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n cleanNodeModules: z.boolean().optional(),\n packageArgument: z.string().optional(),\n }).optional(),\n tree: z.object({\n directories: z.array(z.string()).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n stopAt: z.string().optional(),\n cmd: z.string().optional(),\n parallel: z.boolean().optional(),\n builtInCommand: z.string().optional(),\n continue: z.boolean().optional(),\n packageArgument: z.string().optional(),\n cleanNodeModules: z.boolean().optional(),\n }).optional(),\n development: z.object({\n targetVersion: z.string().optional(),\n noMilestones: z.boolean().optional(),\n }).optional(),\n versions: z.object({\n subcommand: z.string().optional(),\n directories: z.array(z.string()).optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n interactive?: boolean;\n focus?: string;\n messageLimit?: number;\n maxDiffBytes?: number;\n model?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n model?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type CommitConfig = {\n add?: boolean;\n cached?: boolean;\n sendit?: boolean;\n interactive?: boolean;\n messageLimit?: number;\n context?: string;\n direction?: string;\n skipFileCheck?: boolean;\n maxDiffBytes?: number;\n model?: string;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type LinkConfig = {\n scopeRoots?: Record<string, string>;\n dryRun?: boolean;\n packageArgument?: string;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n cleanNodeModules?: boolean;\n packageArgument?: string;\n}\n\nexport type PublishConfig = {\n mergeMethod?: 'merge' | 'squash' | 'rebase';\n from?: string;\n targetVersion?: string;\n interactive?: boolean;\n dependencyUpdatePatterns?: string[];\n requiredEnvVars?: string[];\n linkWorkspacePackages?: boolean;\n unlinkWorkspacePackages?: boolean;\n checksTimeout?: number;\n skipUserConfirmation?: boolean;\n sendit?: boolean;\n waitForReleaseWorkflows?: boolean;\n releaseWorkflowsTimeout?: number;\n releaseWorkflowNames?: string[];\n targetBranch?: string;\n}\n\nexport type TreeConfig = {\n directories?: string[];\n excludedPatterns?: string[];\n startFrom?: string;\n stopAt?: string;\n cmd?: string;\n parallel?: boolean;\n builtInCommand?: string;\n continue?: boolean; // Continue from previous tree publish execution\n packageArgument?: string; // Package argument for link/unlink commands (e.g., \"@fjell\" or \"@fjell/core\")\n cleanNodeModules?: boolean; // For unlink command: remove node_modules and package-lock.json, then reinstall dependencies\n}\n\nexport type DevelopmentConfig = {\n targetVersion?: string; // 'patch', 'minor', 'major', or explicit version like '2.1.0' (default: 'patch')\n}\n\nexport type VersionsConfig = {\n subcommand?: string; // 'minor' or other versioning strategies\n directories?: string[]; // directories to scan for packages\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","interactive","amend","messageLimit","number","context","direction","skipFileCheck","maxDiffBytes","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","noMilestones","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","targetVersion","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","syncTarget","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","targetBranch","link","scopeRoots","record","packageArgument","unlink","workspaceFile","cleanNodeModules","tree","directories","excludedPatterns","startFrom","stopAt","cmd","parallel","builtInCommand","continue","development","versions","subcommand","openaiApiKey","commandName"],"mappings":"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"}
@@ -1,8 +1,105 @@
1
1
  #!/usr/bin/env node
2
- import child_process, { exec } from 'child_process';
2
+ import { exec, spawn } from 'child_process';
3
3
  import util from 'util';
4
4
  import { getLogger } from '../logging.js';
5
5
 
6
+ /**
7
+ * Validates git references to prevent injection
8
+ */ function validateGitRef(ref) {
9
+ // Git refs can contain letters, numbers, hyphens, underscores, slashes, and dots
10
+ // But cannot contain certain dangerous characters
11
+ const validRefPattern = /^[a-zA-Z0-9._/-]+$/;
12
+ const invalidPatterns = [
13
+ /\.\./,
14
+ /^-/,
15
+ /[\s;<>|&`$(){}[\]]/ // No shell metacharacters
16
+ ];
17
+ if (!validRefPattern.test(ref)) {
18
+ return false;
19
+ }
20
+ return !invalidPatterns.some((pattern)=>pattern.test(ref));
21
+ }
22
+ /**
23
+ * Securely executes a command with arguments array (no shell injection risk)
24
+ */ async function runSecure(command, args = [], options = {}) {
25
+ const logger = getLogger();
26
+ return new Promise((resolve, reject)=>{
27
+ logger.verbose(`Executing command securely: ${command} ${args.join(' ')}`);
28
+ logger.verbose(`Working directory: ${(options === null || options === void 0 ? void 0 : options.cwd) || process.cwd()}`);
29
+ const child = spawn(command, args, {
30
+ ...options,
31
+ shell: false,
32
+ stdio: 'pipe'
33
+ });
34
+ let stdout = '';
35
+ let stderr = '';
36
+ if (child.stdout) {
37
+ child.stdout.on('data', (data)=>{
38
+ stdout += data.toString();
39
+ });
40
+ }
41
+ if (child.stderr) {
42
+ child.stderr.on('data', (data)=>{
43
+ stderr += data.toString();
44
+ });
45
+ }
46
+ child.on('close', (code)=>{
47
+ if (code === 0) {
48
+ logger.verbose(`Command completed successfully`);
49
+ logger.verbose(`stdout: ${stdout}`);
50
+ if (stderr) {
51
+ logger.verbose(`stderr: ${stderr}`);
52
+ }
53
+ resolve({
54
+ stdout,
55
+ stderr
56
+ });
57
+ } else {
58
+ logger.error(`Command failed with exit code ${code}`);
59
+ logger.error(`stdout: ${stdout}`);
60
+ logger.error(`stderr: ${stderr}`);
61
+ reject(new Error(`Command "${[
62
+ command,
63
+ ...args
64
+ ].join(' ')}" failed with exit code ${code}`));
65
+ }
66
+ });
67
+ child.on('error', (error)=>{
68
+ logger.error(`Command failed to start: ${error.message}`);
69
+ reject(error);
70
+ });
71
+ });
72
+ }
73
+ /**
74
+ * Securely executes a command with inherited stdio (no shell injection risk)
75
+ */ async function runSecureWithInheritedStdio(command, args = [], options = {}) {
76
+ const logger = getLogger();
77
+ return new Promise((resolve, reject)=>{
78
+ logger.verbose(`Executing command securely with inherited stdio: ${command} ${args.join(' ')}`);
79
+ logger.verbose(`Working directory: ${(options === null || options === void 0 ? void 0 : options.cwd) || process.cwd()}`);
80
+ const child = spawn(command, args, {
81
+ ...options,
82
+ shell: false,
83
+ stdio: 'inherit'
84
+ });
85
+ child.on('close', (code)=>{
86
+ if (code === 0) {
87
+ logger.verbose(`Command completed successfully with code ${code}`);
88
+ resolve();
89
+ } else {
90
+ logger.error(`Command failed with exit code ${code}`);
91
+ reject(new Error(`Command "${[
92
+ command,
93
+ ...args
94
+ ].join(' ')}" failed with exit code ${code}`));
95
+ }
96
+ });
97
+ child.on('error', (error)=>{
98
+ logger.error(`Command failed to start: ${error.message}`);
99
+ reject(error);
100
+ });
101
+ });
102
+ }
6
103
  async function run(command, options = {}) {
7
104
  const logger = getLogger();
8
105
  const execPromise = util.promisify(exec);
@@ -31,30 +128,19 @@ async function run(command, options = {}) {
31
128
  throw error;
32
129
  }
33
130
  }
34
- async function runWithInheritedStdio(command, options = {}) {
35
- const logger = getLogger();
36
- return new Promise((resolve, reject)=>{
37
- logger.verbose(`Executing command with inherited stdio: ${command}`);
38
- logger.verbose(`Working directory: ${(options === null || options === void 0 ? void 0 : options.cwd) || process.cwd()}`);
39
- const child = child_process.spawn(command, [], {
40
- ...options,
41
- shell: true,
42
- stdio: 'inherit'
43
- });
44
- child.on('close', (code)=>{
45
- if (code === 0) {
46
- logger.verbose(`Command completed successfully with code ${code}`);
47
- resolve();
48
- } else {
49
- logger.error(`Command failed with exit code ${code}`);
50
- reject(new Error(`Command "${command}" failed with exit code ${code}`));
51
- }
52
- });
53
- child.on('error', (error)=>{
54
- logger.error(`Command failed to start: ${error.message}`);
55
- reject(error);
56
- });
57
- });
131
+ /**
132
+ * @deprecated Use runSecureWithInheritedStdio instead for better security
133
+ * Legacy function for backward compatibility - parses shell command string
134
+ */ async function runWithInheritedStdio(command, options = {}) {
135
+ // Parse command to extract command and arguments safely
136
+ const parts = command.trim().split(/\s+/);
137
+ if (parts.length === 0) {
138
+ throw new Error('Empty command provided');
139
+ }
140
+ const cmd = parts[0];
141
+ const args = parts.slice(1);
142
+ // Use the secure version
143
+ return runSecureWithInheritedStdio(cmd, args, options);
58
144
  }
59
145
  async function runWithDryRunSupport(command, isDryRun, options = {}, useInheritedStdio = false) {
60
146
  const logger = getLogger();
@@ -75,5 +161,5 @@ async function runWithDryRunSupport(command, isDryRun, options = {}, useInherite
75
161
  return run(command, options);
76
162
  }
77
163
 
78
- export { run, runWithDryRunSupport, runWithInheritedStdio };
164
+ export { run, runSecure, runSecureWithInheritedStdio, runWithDryRunSupport, runWithInheritedStdio, validateGitRef };
79
165
  //# sourceMappingURL=child.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"child.js","sources":["../../src/util/child.ts"],"sourcesContent":["#!/usr/bin/env node\nimport child_process, { exec } from 'child_process';\nimport util from 'util';\nimport { getLogger } from '../logging';\n\nexport async function run(command: string, options: child_process.ExecOptions = {}): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n const execPromise = util.promisify(exec);\n\n logger.verbose(`Executing command: ${command}`);\n logger.verbose(`Working directory: ${options?.cwd || process.cwd()}`);\n logger.verbose(`Environment variables: ${Object.keys(options?.env || process.env).length} variables`);\n\n try {\n const result = await execPromise(command, options);\n logger.verbose(`Command completed successfully`);\n logger.verbose(`stdout: ${result.stdout}`);\n if (result.stderr) {\n logger.verbose(`stderr: ${result.stderr}`);\n }\n return result;\n } catch (error: any) {\n logger.error(`Command failed: ${command}`);\n logger.error(`Error: ${error.message}`);\n logger.error(`Exit code: ${error.code}`);\n logger.error(`Signal: ${error.signal}`);\n if (error.stdout) {\n logger.error(`stdout: ${error.stdout}`);\n }\n if (error.stderr) {\n logger.error(`stderr: ${error.stderr}`);\n }\n throw error;\n }\n}\n\nexport async function runWithInheritedStdio(command: string, options: child_process.ExecOptions = {}): Promise<void> {\n const logger = getLogger();\n\n return new Promise((resolve, reject) => {\n logger.verbose(`Executing command with inherited stdio: ${command}`);\n logger.verbose(`Working directory: ${options?.cwd || process.cwd()}`);\n\n const child = child_process.spawn(command, [], {\n ...options,\n shell: true,\n stdio: 'inherit'\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n logger.verbose(`Command completed successfully with code ${code}`);\n resolve();\n } else {\n logger.error(`Command failed with exit code ${code}`);\n reject(new Error(`Command \"${command}\" failed with exit code ${code}`));\n }\n });\n\n child.on('error', (error) => {\n logger.error(`Command failed to start: ${error.message}`);\n reject(error);\n });\n });\n}\n\nexport async function runWithDryRunSupport(\n command: string,\n isDryRun: boolean,\n options: child_process.ExecOptions = {},\n useInheritedStdio: boolean = false\n): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n\n if (isDryRun) {\n logger.info(`DRY RUN: Would execute command: ${command}`);\n return { stdout: '', stderr: '' };\n }\n\n if (useInheritedStdio) {\n await runWithInheritedStdio(command, options);\n return { stdout: '', stderr: '' }; // No output captured when using inherited stdio\n }\n\n return run(command, options);\n}\n"],"names":["run","command","options","logger","getLogger","execPromise","util","promisify","exec","verbose","cwd","process","Object","keys","env","length","result","stdout","stderr","error","message","code","signal","runWithInheritedStdio","Promise","resolve","reject","child","child_process","spawn","shell","stdio","on","Error","runWithDryRunSupport","isDryRun","useInheritedStdio","info"],"mappings":"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"}
1
+ {"version":3,"file":"child.js","sources":["../../src/util/child.ts"],"sourcesContent":["#!/usr/bin/env node\nimport child_process, { exec, spawn } from 'child_process';\nimport util from 'util';\nimport { getLogger } from '../logging';\n\n/**\n * Escapes shell arguments to prevent command injection\n */\nfunction escapeShellArg(arg: string): string {\n // For Windows, we need different escaping\n if (process.platform === 'win32') {\n // Escape double quotes and backslashes\n return `\"${arg.replace(/[\\\\\"]/g, '\\\\$&')}\"`;\n } else {\n // For Unix-like systems, escape single quotes\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n }\n}\n\n/**\n * Validates git references to prevent injection\n */\nfunction validateGitRef(ref: string): boolean {\n // Git refs can contain letters, numbers, hyphens, underscores, slashes, and dots\n // But cannot contain certain dangerous characters\n const validRefPattern = /^[a-zA-Z0-9._/-]+$/;\n const invalidPatterns = [\n /\\.\\./, // No double dots (directory traversal)\n /^-/, // Cannot start with dash (flag injection)\n /[\\s;<>|&`$(){}[\\]]/ // No shell metacharacters\n ];\n\n if (!validRefPattern.test(ref)) {\n return false;\n }\n\n return !invalidPatterns.some(pattern => pattern.test(ref));\n}\n\n/**\n * Validates file paths to prevent injection\n */\nfunction validateFilePath(filePath: string): boolean {\n // Basic validation - no shell metacharacters\n const invalidChars = /[;<>|&`$(){}[\\]]/;\n return !invalidChars.test(filePath);\n}\n\n/**\n * Securely executes a command with arguments array (no shell injection risk)\n */\nexport async function runSecure(\n command: string,\n args: string[] = [],\n options: child_process.SpawnOptions = {}\n): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n\n return new Promise((resolve, reject) => {\n logger.verbose(`Executing command securely: ${command} ${args.join(' ')}`);\n logger.verbose(`Working directory: ${options?.cwd || process.cwd()}`);\n\n const child = spawn(command, args, {\n ...options,\n shell: false, // CRITICAL: Never use shell for user input\n stdio: 'pipe'\n });\n\n let stdout = '';\n let stderr = '';\n\n if (child.stdout) {\n child.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n }\n\n if (child.stderr) {\n child.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n }\n\n child.on('close', (code) => {\n if (code === 0) {\n logger.verbose(`Command completed successfully`);\n logger.verbose(`stdout: ${stdout}`);\n if (stderr) {\n logger.verbose(`stderr: ${stderr}`);\n }\n resolve({ stdout, stderr });\n } else {\n logger.error(`Command failed with exit code ${code}`);\n logger.error(`stdout: ${stdout}`);\n logger.error(`stderr: ${stderr}`);\n reject(new Error(`Command \"${[command, ...args].join(' ')}\" failed with exit code ${code}`));\n }\n });\n\n child.on('error', (error) => {\n logger.error(`Command failed to start: ${error.message}`);\n reject(error);\n });\n });\n}\n\n/**\n * Securely executes a command with inherited stdio (no shell injection risk)\n */\nexport async function runSecureWithInheritedStdio(\n command: string,\n args: string[] = [],\n options: child_process.SpawnOptions = {}\n): Promise<void> {\n const logger = getLogger();\n\n return new Promise((resolve, reject) => {\n logger.verbose(`Executing command securely with inherited stdio: ${command} ${args.join(' ')}`);\n logger.verbose(`Working directory: ${options?.cwd || process.cwd()}`);\n\n const child = spawn(command, args, {\n ...options,\n shell: false, // CRITICAL: Never use shell for user input\n stdio: 'inherit'\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n logger.verbose(`Command completed successfully with code ${code}`);\n resolve();\n } else {\n logger.error(`Command failed with exit code ${code}`);\n reject(new Error(`Command \"${[command, ...args].join(' ')}\" failed with exit code ${code}`));\n }\n });\n\n child.on('error', (error) => {\n logger.error(`Command failed to start: ${error.message}`);\n reject(error);\n });\n });\n}\n\nexport async function run(command: string, options: child_process.ExecOptions = {}): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n const execPromise = util.promisify(exec);\n\n logger.verbose(`Executing command: ${command}`);\n logger.verbose(`Working directory: ${options?.cwd || process.cwd()}`);\n logger.verbose(`Environment variables: ${Object.keys(options?.env || process.env).length} variables`);\n\n try {\n const result = await execPromise(command, options);\n logger.verbose(`Command completed successfully`);\n logger.verbose(`stdout: ${result.stdout}`);\n if (result.stderr) {\n logger.verbose(`stderr: ${result.stderr}`);\n }\n return result;\n } catch (error: any) {\n logger.error(`Command failed: ${command}`);\n logger.error(`Error: ${error.message}`);\n logger.error(`Exit code: ${error.code}`);\n logger.error(`Signal: ${error.signal}`);\n if (error.stdout) {\n logger.error(`stdout: ${error.stdout}`);\n }\n if (error.stderr) {\n logger.error(`stderr: ${error.stderr}`);\n }\n throw error;\n }\n}\n\n/**\n * @deprecated Use runSecureWithInheritedStdio instead for better security\n * Legacy function for backward compatibility - parses shell command string\n */\nexport async function runWithInheritedStdio(command: string, options: child_process.ExecOptions = {}): Promise<void> {\n\n // Parse command to extract command and arguments safely\n const parts = command.trim().split(/\\s+/);\n if (parts.length === 0) {\n throw new Error('Empty command provided');\n }\n\n const cmd = parts[0];\n const args = parts.slice(1);\n\n // Use the secure version\n return runSecureWithInheritedStdio(cmd, args, options);\n}\n\nexport async function runWithDryRunSupport(\n command: string,\n isDryRun: boolean,\n options: child_process.ExecOptions = {},\n useInheritedStdio: boolean = false\n): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n\n if (isDryRun) {\n logger.info(`DRY RUN: Would execute command: ${command}`);\n return { stdout: '', stderr: '' };\n }\n\n if (useInheritedStdio) {\n await runWithInheritedStdio(command, options);\n return { stdout: '', stderr: '' }; // No output captured when using inherited stdio\n }\n\n return run(command, options);\n}\n\n/**\n * Secure version of runWithDryRunSupport using argument arrays\n */\nexport async function runSecureWithDryRunSupport(\n command: string,\n args: string[] = [],\n isDryRun: boolean,\n options: child_process.SpawnOptions = {},\n useInheritedStdio: boolean = false\n): Promise<{ stdout: string; stderr: string }> {\n const logger = getLogger();\n\n if (isDryRun) {\n logger.info(`DRY RUN: Would execute command: ${command} ${args.join(' ')}`);\n return { stdout: '', stderr: '' };\n }\n\n if (useInheritedStdio) {\n await runSecureWithInheritedStdio(command, args, options);\n return { stdout: '', stderr: '' }; // No output captured when using inherited stdio\n }\n\n return runSecure(command, args, options);\n}\n\n// Export validation functions for use in other modules\nexport { validateGitRef, validateFilePath, escapeShellArg };\n"],"names":["validateGitRef","ref","validRefPattern","invalidPatterns","test","some","pattern","runSecure","command","args","options","logger","getLogger","Promise","resolve","reject","verbose","join","cwd","process","child","spawn","shell","stdio","stdout","stderr","on","data","toString","code","error","Error","message","runSecureWithInheritedStdio","run","execPromise","util","promisify","exec","Object","keys","env","length","result","signal","runWithInheritedStdio","parts","trim","split","cmd","slice","runWithDryRunSupport","isDryRun","useInheritedStdio","info"],"mappings":"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"}