@eldrforge/kodrdriv 0.0.15 → 0.0.18

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 (82) hide show
  1. package/README.md +1 -9
  2. package/dist/arguments.js +38 -63
  3. package/dist/arguments.js.map +1 -1
  4. package/dist/audio/devices.js +284 -0
  5. package/dist/audio/devices.js.map +1 -0
  6. package/dist/audio/index.js +31 -0
  7. package/dist/audio/index.js.map +1 -0
  8. package/dist/audio/processor.js +766 -0
  9. package/dist/audio/processor.js.map +1 -0
  10. package/dist/audio/types.js +16 -0
  11. package/dist/audio/types.js.map +1 -0
  12. package/dist/audio/validation.js +35 -0
  13. package/dist/audio/validation.js.map +1 -0
  14. package/dist/commands/audio-commit.js +59 -634
  15. package/dist/commands/audio-commit.js.map +1 -1
  16. package/dist/commands/audio-review.js +68 -632
  17. package/dist/commands/audio-review.js.map +1 -1
  18. package/dist/commands/commit.js +23 -15
  19. package/dist/commands/commit.js.map +1 -1
  20. package/dist/commands/release.js +20 -12
  21. package/dist/commands/release.js.map +1 -1
  22. package/dist/commands/review.js +64 -13
  23. package/dist/commands/review.js.map +1 -1
  24. package/dist/commands/select-audio.js +265 -0
  25. package/dist/commands/select-audio.js.map +1 -0
  26. package/dist/constants.js +17 -9
  27. package/dist/constants.js.map +1 -1
  28. package/dist/content/issues.js +16 -0
  29. package/dist/content/issues.js.map +1 -1
  30. package/dist/main.js +9 -3
  31. package/dist/main.js.map +1 -1
  32. package/dist/prompt/commit.js +64 -0
  33. package/dist/prompt/commit.js.map +1 -0
  34. package/dist/prompt/personas/you.md +49 -5
  35. package/dist/prompt/release.js +52 -0
  36. package/dist/prompt/release.js.map +1 -0
  37. package/dist/prompt/review.js +64 -0
  38. package/dist/prompt/review.js.map +1 -0
  39. package/dist/types.js +5 -3
  40. package/dist/types.js.map +1 -1
  41. package/dist/util/openai.js +34 -3
  42. package/dist/util/openai.js.map +1 -1
  43. package/package.json +2 -2
  44. package/.kodrdriv/config.yaml +0 -20
  45. package/.kodrdriv/context/content.md +0 -7
  46. package/RELEASE_NOTES.md +0 -14
  47. package/dist/prompt/personas/committer.md +0 -29
  48. package/dist/prompt/personas/reviewer.md +0 -29
  49. package/dist/prompt/prompts.js +0 -160
  50. package/dist/prompt/prompts.js.map +0 -1
  51. package/docs/index.html +0 -17
  52. package/docs/package.json +0 -36
  53. package/docs/pnpm-lock.yaml +0 -3441
  54. package/docs/public/README.md +0 -132
  55. package/docs/public/advanced-usage.md +0 -188
  56. package/docs/public/code-icon.svg +0 -4
  57. package/docs/public/commands.md +0 -136
  58. package/docs/public/configuration.md +0 -274
  59. package/docs/public/examples.md +0 -352
  60. package/docs/public/kodrdriv-logo.svg +0 -62
  61. package/docs/src/App.css +0 -387
  62. package/docs/src/App.tsx +0 -60
  63. package/docs/src/components/DocumentPage.tsx +0 -56
  64. package/docs/src/components/ErrorMessage.tsx +0 -15
  65. package/docs/src/components/LoadingSpinner.tsx +0 -14
  66. package/docs/src/components/MarkdownRenderer.tsx +0 -56
  67. package/docs/src/components/Navigation.css +0 -73
  68. package/docs/src/components/Navigation.tsx +0 -36
  69. package/docs/src/index.css +0 -61
  70. package/docs/src/main.tsx +0 -10
  71. package/docs/src/test/setup.ts +0 -1
  72. package/docs/src/vite-env.d.ts +0 -10
  73. package/docs/tsconfig.node.json +0 -13
  74. package/docs/vite.config.ts +0 -15
  75. package/docs/vitest.config.ts +0 -15
  76. package/eslint.config.mjs +0 -83
  77. package/nodemon.json +0 -14
  78. package/output/kodrdriv/250702-0552-release-notes.md +0 -3
  79. package/pnpm-workspace.yaml +0 -5
  80. package/tsconfig.tsbuildinfo +0 -1
  81. package/vite.config.ts +0 -90
  82. package/vitest.config.ts +0 -24
package/dist/constants.js CHANGED
@@ -1,6 +1,8 @@
1
- const VERSION = '0.0.15 (HEAD/16994fd T:v0.0.15 2025-07-02 02:49:07 -0700) linux x64 v22.16.0';
1
+ import os from 'os';
2
+ import path from 'path';
3
+
4
+ const VERSION = '0.0.18 (HEAD/9b5bba0 T:v0.0.18 2025-07-02 21:45:28 -0700) linux x64 v22.16.0';
2
5
  const PROGRAM_NAME = 'kodrdriv';
3
- const DEFAULT_CHARACTER_ENCODING = 'utf-8';
4
6
  const DEFAULT_OVERRIDES = false;
5
7
  const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';
6
8
  const DEFAULT_VERBOSE = false;
@@ -10,6 +12,7 @@ const DEFAULT_MODEL = 'gpt-4o-mini';
10
12
  const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';
11
13
  const DEFAULT_CONTEXT_DIRECTORIES = [];
12
14
  const DEFAULT_CONFIG_DIR = '.kodrdriv';
15
+ const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');
13
16
  const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';
14
17
  const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';
15
18
  const DEFAULT_ADD = false;
@@ -56,6 +59,7 @@ const DEFAULT_EXCLUDED_PATTERNS = [
56
59
  ];
57
60
  const COMMAND_COMMIT = 'commit';
58
61
  const COMMAND_AUDIO_COMMIT = 'audio-commit';
62
+ const COMMAND_SELECT_AUDIO = 'select-audio';
59
63
  const COMMAND_RELEASE = 'release';
60
64
  const COMMAND_REVIEW = 'review';
61
65
  const COMMAND_AUDIO_REVIEW = 'audio-review';
@@ -68,6 +72,7 @@ const COMMAND_INIT_CONFIG = 'init-config';
68
72
  const ALLOWED_COMMANDS = [
69
73
  COMMAND_COMMIT,
70
74
  COMMAND_AUDIO_COMMIT,
75
+ COMMAND_SELECT_AUDIO,
71
76
  COMMAND_RELEASE,
72
77
  COMMAND_REVIEW,
73
78
  COMMAND_AUDIO_REVIEW,
@@ -81,10 +86,9 @@ const DEFAULT_INSTRUCTIONS_DIR = `instructions`;
81
86
  const DEFAULT_PERSONA_DIR = `personas`;
82
87
  const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;
83
88
  const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;
84
- const DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;
85
- const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONA_DIR}/committer.md`;
89
+ const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;
86
90
  const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;
87
- const DEFAULT_PERSONA_REVIEWER_FILE = `${DEFAULT_PERSONA_DIR}/reviewer.md`;
91
+ const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;
88
92
  // Define defaults in one place
89
93
  const KODRDRIV_DEFAULTS = {
90
94
  dryRun: DEFAULT_DRY_RUN,
@@ -92,11 +96,11 @@ const KODRDRIV_DEFAULTS = {
92
96
  debug: DEFAULT_DEBUG,
93
97
  overrides: DEFAULT_OVERRIDES,
94
98
  model: DEFAULT_MODEL,
95
- instructions: DEFAULT_INSTRUCTIONS_DIR,
96
99
  contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,
97
100
  commandName: DEFAULT_COMMAND,
98
101
  configDirectory: DEFAULT_CONFIG_DIR,
99
102
  outputDirectory: DEFAULT_OUTPUT_DIRECTORY,
103
+ preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,
100
104
  commit: {
101
105
  add: DEFAULT_ADD,
102
106
  cached: DEFAULT_CACHED,
@@ -132,14 +136,18 @@ const KODRDRIV_DEFAULTS = {
132
136
  diffHistoryLimit: 5,
133
137
  releaseNotesLimit: 3,
134
138
  githubIssuesLimit: 20,
135
- sendit: DEFAULT_SENDIT_MODE
139
+ sendit: DEFAULT_SENDIT_MODE,
140
+ maxRecordingTime: 300,
141
+ audioDevice: undefined
136
142
  },
137
143
  publish: {
138
144
  mergeMethod: DEFAULT_MERGE_METHOD,
139
145
  requiredEnvVars: [
140
146
  'GITHUB_TOKEN',
141
147
  'OPENAI_API_KEY'
142
- ]
148
+ ],
149
+ linkWorkspacePackages: true,
150
+ unlinkWorkspacePackages: true
143
151
  },
144
152
  link: {
145
153
  scopeRoots: {},
@@ -149,5 +157,5 @@ const KODRDRIV_DEFAULTS = {
149
157
  excludedPatterns: DEFAULT_EXCLUDED_PATTERNS
150
158
  };
151
159
 
152
- export { ALLOWED_COMMANDS, COMMAND_AUDIO_COMMIT, COMMAND_AUDIO_REVIEW, COMMAND_CHECK_CONFIG, COMMAND_CLEAN, COMMAND_COMMIT, COMMAND_INIT_CONFIG, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_REVIEW, COMMAND_UNLINK, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_ADD, DEFAULT_CACHED, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_MERGE_METHOD, DEFAULT_MESSAGE_LIMIT, DEFAULT_MODEL, DEFAULT_OUTPUT_DIRECTORY, DEFAULT_OVERRIDES, DEFAULT_PERSONA_COMMITTER_FILE, DEFAULT_PERSONA_DIR, DEFAULT_PERSONA_RELEASER_FILE, DEFAULT_PERSONA_REVIEWER_FILE, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
160
+ export { ALLOWED_COMMANDS, COMMAND_AUDIO_COMMIT, COMMAND_AUDIO_REVIEW, COMMAND_CHECK_CONFIG, COMMAND_CLEAN, COMMAND_COMMIT, COMMAND_INIT_CONFIG, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_REVIEW, COMMAND_SELECT_AUDIO, COMMAND_UNLINK, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_ADD, DEFAULT_CACHED, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_INSTRUCTIONS_REVIEW_FILE, DEFAULT_MERGE_METHOD, DEFAULT_MESSAGE_LIMIT, DEFAULT_MODEL, DEFAULT_OUTPUT_DIRECTORY, DEFAULT_OVERRIDES, DEFAULT_PERSONA_DIR, DEFAULT_PERSONA_RELEASER_FILE, DEFAULT_PERSONA_YOU_FILE, DEFAULT_PREFERENCES_DIRECTORY, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
153
161
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONA_DIR}/committer.md`;\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_REVIEWER_FILE = `${DEFAULT_PERSONA_DIR}/reviewer.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_COMMITTER_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_COMMITTER_FILE, // Reuse committer persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_REVIEWER_FILE, // Reuse reviewer persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_REVIEWER_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n instructions: DEFAULT_INSTRUCTIONS_DIR,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_CHARACTER_ENCODING","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_PERSONA_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_INSTRUCTIONS_AUDIO_REVIEW_FILE","DEFAULT_PERSONA_COMMITTER_FILE","DEFAULT_PERSONA_RELEASER_FILE","DEFAULT_PERSONA_REVIEWER_FILE","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","instructions","contextDirectories","commandName","configDirectory","outputDirectory","commit","add","cached","sendit","messageLimit","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","publish","mergeMethod","requiredEnvVars","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_PERSONA_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_INSTRUCTIONS_REVIEW_FILE","DEFAULT_PERSONA_RELEASER_FILE","DEFAULT_PERSONA_YOU_FILE","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
@@ -30,6 +30,10 @@ async function getUserChoice(prompt, choices) {
30
30
  });
31
31
  logger.info('');
32
32
  return new Promise((resolve)=>{
33
+ // Ensure stdin is referenced so the process doesn't exit while waiting for input
34
+ if (typeof process.stdin.ref === 'function') {
35
+ process.stdin.ref();
36
+ }
33
37
  process.stdin.setRawMode(true);
34
38
  process.stdin.resume();
35
39
  process.stdin.on('data', (key)=>{
@@ -38,6 +42,10 @@ async function getUserChoice(prompt, choices) {
38
42
  if (choice) {
39
43
  process.stdin.setRawMode(false);
40
44
  process.stdin.pause();
45
+ // Detach stdin again now that we're done
46
+ if (typeof process.stdin.unref === 'function') {
47
+ process.stdin.unref();
48
+ }
41
49
  logger.info(`Selected: ${choice.label}\n`);
42
50
  resolve(choice.key);
43
51
  }
@@ -48,6 +56,10 @@ async function getUserChoice(prompt, choices) {
48
56
  async function editIssueInteractively(issue) {
49
57
  const logger = getLogger();
50
58
  const readline = await import('readline');
59
+ // Ensure stdin is referenced during readline interaction
60
+ if (typeof process.stdin.ref === 'function') {
61
+ process.stdin.ref();
62
+ }
51
63
  const rl = readline.createInterface({
52
64
  input: process.stdin,
53
65
  output: process.stdout
@@ -74,6 +86,10 @@ async function editIssueInteractively(issue) {
74
86
  return updatedIssue;
75
87
  } finally{
76
88
  rl.close();
89
+ // Detach stdin after interactive edit completes
90
+ if (typeof process.stdin.unref === 'function') {
91
+ process.stdin.unref();
92
+ }
77
93
  }
78
94
  }
79
95
  // Helper function to format issue body for GitHub
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sources":["../../src/content/issues.ts"],"sourcesContent":["import { getLogger } from '../logging';\nimport { getOpenIssues, createIssue } from '../util/github';\n\nexport interface Issue {\n title: string;\n description: string;\n priority: 'low' | 'medium' | 'high';\n category: 'ui' | 'content' | 'functionality' | 'accessibility' | 'performance' | 'other';\n suggestions?: string[];\n}\n\nexport interface ReviewResult {\n summary: string;\n totalIssues: number;\n issues: Issue[];\n}\n\n// Get GitHub issues content\nexport const get = async (options: { limit?: number } = {}): Promise<string> => {\n const logger = getLogger();\n const { limit = 20 } = options;\n\n try {\n logger.debug('Fetching open GitHub issues...');\n const issuesLimit = Math.min(limit, 20); // Cap at 20\n const githubIssues = await getOpenIssues(issuesLimit);\n\n if (githubIssues.trim()) {\n logger.debug('Added GitHub issues to context (%d characters)', githubIssues.length);\n return githubIssues;\n } else {\n logger.debug('No open GitHub issues found');\n return '';\n }\n } catch (error: any) {\n logger.warn('Failed to fetch GitHub issues: %s', error.message);\n return '';\n }\n};\n\n// Helper function to get user choice interactively\nasync function getUserChoice(prompt: string, choices: Array<{ key: string, label: string }>): Promise<string> {\n const logger = getLogger();\n\n logger.info(prompt);\n choices.forEach(choice => {\n logger.info(` [${choice.key}] ${choice.label}`);\n });\n logger.info('');\n\n return new Promise(resolve => {\n process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.on('data', (key) => {\n const keyStr = key.toString().toLowerCase();\n const choice = choices.find(c => c.key === keyStr);\n if (choice) {\n process.stdin.setRawMode(false);\n process.stdin.pause();\n logger.info(`Selected: ${choice.label}\\n`);\n resolve(choice.key);\n }\n });\n });\n}\n\n// Helper function to edit issue interactively\nasync function editIssueInteractively(issue: Issue): Promise<Issue> {\n const logger = getLogger();\n const readline = await import('readline');\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const question = (prompt: string): Promise<string> => {\n return new Promise(resolve => {\n rl.question(prompt, resolve);\n });\n };\n\n try {\n logger.info('📝 Edit issue details (press Enter to keep current value):');\n\n const newTitle = await question(`Title [${issue.title}]: `);\n const newDescription = await question(`Description [${issue.description}]: `);\n const newPriority = await question(`Priority (low/medium/high) [${issue.priority}]: `);\n const newCategory = await question(`Category (ui/content/functionality/accessibility/performance/other) [${issue.category}]: `);\n\n const updatedIssue: Issue = {\n title: newTitle.trim() || issue.title,\n description: newDescription.trim() || issue.description,\n priority: (newPriority.trim() as any) || issue.priority,\n category: (newCategory.trim() as any) || issue.category,\n suggestions: issue.suggestions\n };\n\n logger.info('✅ Issue updated successfully');\n return updatedIssue;\n } finally {\n rl.close();\n }\n}\n\n// Helper function to format issue body for GitHub\nfunction formatIssueBody(issue: Issue): string {\n let body = `## Description\\n\\n${issue.description}\\n\\n`;\n\n body += `## Details\\n\\n`;\n body += `- **Priority:** ${issue.priority}\\n`;\n body += `- **Category:** ${issue.category}\\n`;\n body += `- **Source:** Review\\n\\n`;\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n body += `## Suggestions\\n\\n`;\n issue.suggestions.forEach(suggestion => {\n body += `- ${suggestion}\\n`;\n });\n body += '\\n';\n }\n\n body += `---\\n\\n`;\n body += `*This issue was automatically created from a review session.*`;\n\n return body;\n}\n\n// Helper function to format results with created GitHub issues\nfunction formatReviewResultsWithIssues(\n result: ReviewResult,\n createdIssues: Array<{ issue: Issue, githubUrl: string, number: number }>\n): string {\n let output = `📝 Review Results\\n\\n`;\n output += `📋 Summary: ${result.summary}\\n`;\n output += `📊 Total Issues Found: ${result.totalIssues}\\n`;\n output += `🚀 GitHub Issues Created: ${createdIssues.length}\\n\\n`;\n\n if (result.issues && result.issues.length > 0) {\n output += `📝 Issues Identified:\\n\\n`;\n\n result.issues.forEach((issue, index) => {\n const priorityEmoji = issue.priority === 'high' ? '🔴' :\n issue.priority === 'medium' ? '🟡' : '🟢';\n const categoryEmoji = issue.category === 'ui' ? '🎨' :\n issue.category === 'content' ? '📝' :\n issue.category === 'functionality' ? '⚙️' :\n issue.category === 'accessibility' ? '♿' :\n issue.category === 'performance' ? '⚡' : '🔧';\n\n output += `${index + 1}. ${priorityEmoji} ${issue.title}\\n`;\n output += ` ${categoryEmoji} Category: ${issue.category} | Priority: ${issue.priority}\\n`;\n output += ` 📖 Description: ${issue.description}\\n`;\n\n // Check if this issue was created as a GitHub issue\n const createdIssue = createdIssues.find(ci => ci.issue === issue);\n if (createdIssue) {\n output += ` 🔗 GitHub Issue: #${createdIssue.number} - ${createdIssue.githubUrl}\\n`;\n }\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n output += ` 💡 Suggestions:\\n`;\n issue.suggestions.forEach(suggestion => {\n output += ` • ${suggestion}\\n`;\n });\n }\n output += `\\n`;\n });\n } else {\n output += `✅ No specific issues identified from the review.\\n\\n`;\n }\n\n if (createdIssues.length > 0) {\n output += `\\n🎯 Created GitHub Issues:\\n`;\n createdIssues.forEach(createdIssue => {\n output += `• #${createdIssue.number}: ${createdIssue.issue.title} - ${createdIssue.githubUrl}\\n`;\n });\n output += `\\n`;\n }\n\n output += `🚀 Next Steps: Review the created GitHub issues and prioritize them in your development workflow.`;\n\n return output;\n}\n\nfunction formatReviewResults(result: ReviewResult): string {\n let output = `📝 Review Results\\n\\n`;\n output += `📋 Summary: ${result.summary}\\n`;\n output += `📊 Total Issues Found: ${result.totalIssues}\\n\\n`;\n\n if (result.issues && result.issues.length > 0) {\n output += `📝 Issues Identified:\\n\\n`;\n\n result.issues.forEach((issue, index) => {\n const priorityEmoji = issue.priority === 'high' ? '🔴' :\n issue.priority === 'medium' ? '🟡' : '🟢';\n const categoryEmoji = issue.category === 'ui' ? '🎨' :\n issue.category === 'content' ? '📝' :\n issue.category === 'functionality' ? '⚙️' :\n issue.category === 'accessibility' ? '♿' :\n issue.category === 'performance' ? '⚡' : '🔧';\n\n output += `${index + 1}. ${priorityEmoji} ${issue.title}\\n`;\n output += ` ${categoryEmoji} Category: ${issue.category} | Priority: ${issue.priority}\\n`;\n output += ` 📖 Description: ${issue.description}\\n`;\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n output += ` 💡 Suggestions:\\n`;\n issue.suggestions.forEach(suggestion => {\n output += ` • ${suggestion}\\n`;\n });\n }\n output += `\\n`;\n });\n } else {\n output += `✅ No specific issues identified from the review.\\n\\n`;\n }\n\n output += `🚀 Next Steps: Review the identified issues and prioritize them for your development workflow.`;\n\n return output;\n}\n\n// Handle GitHub issue creation workflow\nexport const handleIssueCreation = async (\n result: ReviewResult,\n senditMode: boolean = false\n): Promise<string> => {\n const logger = getLogger();\n const createdIssues: Array<{ issue: Issue, githubUrl: string, number: number }> = [];\n\n if (!result.issues || result.issues.length === 0) {\n return formatReviewResults(result);\n }\n\n logger.info(`🔍 Found ${result.issues.length} issues to potentially create as GitHub issues`);\n\n for (let i = 0; i < result.issues.length; i++) {\n const issue = result.issues[i];\n let shouldCreateIssue = senditMode;\n\n if (!senditMode) {\n // Interactive confirmation for each issue\n logger.info(`\\n📋 Issue ${i + 1} of ${result.issues.length}:`);\n logger.info(` Title: ${issue.title}`);\n logger.info(` Priority: ${issue.priority} | Category: ${issue.category}`);\n logger.info(` Description: ${issue.description}`);\n if (issue.suggestions && issue.suggestions.length > 0) {\n logger.info(` Suggestions: ${issue.suggestions.join(', ')}`);\n }\n\n // Get user choice\n const choice = await getUserChoice('\\nWhat would you like to do with this issue?', [\n { key: 'c', label: 'Create GitHub issue' },\n { key: 's', label: 'Skip this issue' },\n { key: 'e', label: 'Edit issue details' }\n ]);\n\n if (choice === 'c') {\n shouldCreateIssue = true;\n } else if (choice === 'e') {\n // Allow user to edit the issue\n const editedIssue = await editIssueInteractively(issue);\n result.issues[i] = editedIssue;\n shouldCreateIssue = true;\n }\n // If choice is 's', shouldCreateIssue remains false\n }\n\n if (shouldCreateIssue) {\n try {\n logger.info(`🚀 Creating GitHub issue: \"${issue.title}\"`);\n\n // Format issue body with additional details\n const issueBody = formatIssueBody(issue);\n\n // Create labels based on priority and category\n const labels = [\n `priority-${issue.priority}`,\n `category-${issue.category}`,\n 'review'\n ];\n\n const createdIssue = await createIssue(issue.title, issueBody, labels);\n createdIssues.push({\n issue,\n githubUrl: createdIssue.html_url,\n number: createdIssue.number\n });\n\n logger.info(`✅ Created GitHub issue #${createdIssue.number}: ${createdIssue.html_url}`);\n } catch (error: any) {\n logger.error(`❌ Failed to create GitHub issue for \"${issue.title}\": ${error.message}`);\n }\n }\n }\n\n // Return formatted results\n if (createdIssues.length > 0) {\n return formatReviewResultsWithIssues(result, createdIssues);\n } else {\n return formatReviewResults(result);\n }\n}; "],"names":["get","options","logger","getLogger","limit","debug","issuesLimit","Math","min","githubIssues","getOpenIssues","trim","length","error","warn","message","getUserChoice","prompt","choices","info","forEach","choice","key","label","Promise","resolve","process","stdin","setRawMode","resume","on","keyStr","toString","toLowerCase","find","c","pause","editIssueInteractively","issue","readline","rl","createInterface","input","output","stdout","question","newTitle","title","newDescription","description","newPriority","priority","newCategory","category","updatedIssue","suggestions","close","formatIssueBody","body","suggestion","formatReviewResultsWithIssues","result","createdIssues","summary","totalIssues","issues","index","priorityEmoji","categoryEmoji","createdIssue","ci","number","githubUrl","formatReviewResults","handleIssueCreation","senditMode","i","shouldCreateIssue","join","editedIssue","issueBody","labels","createIssue","push","html_url"],"mappings":";;;AAiBA;AACO,MAAMA,GAAAA,GAAM,OAAOC,OAAAA,GAA8B,EAAE,GAAA;AACtD,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAM,EAAEC,KAAAA,GAAQ,EAAE,EAAE,GAAGH,OAAAA;IAEvB,IAAI;AACAC,QAAAA,MAAAA,CAAOG,KAAK,CAAC,gCAAA,CAAA;AACb,QAAA,MAAMC,cAAcC,IAAAA,CAAKC,GAAG,CAACJ,KAAAA,EAAO;QACpC,MAAMK,YAAAA,GAAe,MAAMC,aAAAA,CAAcJ,WAAAA,CAAAA;QAEzC,IAAIG,YAAAA,CAAaE,IAAI,EAAA,EAAI;AACrBT,YAAAA,MAAAA,CAAOG,KAAK,CAAC,gDAAA,EAAkDI,YAAAA,CAAaG,MAAM,CAAA;YAClF,OAAOH,YAAAA;SACX,MAAO;AACHP,YAAAA,MAAAA,CAAOG,KAAK,CAAC,6BAAA,CAAA;YACb,OAAO,EAAA;AACX;AACJ,KAAA,CAAE,OAAOQ,KAAAA,EAAY;AACjBX,QAAAA,MAAAA,CAAOY,IAAI,CAAC,mCAAA,EAAqCD,KAAAA,CAAME,OAAO,CAAA;QAC9D,OAAO,EAAA;AACX;AACJ;AAEA;AACA,eAAeC,aAAAA,CAAcC,MAAc,EAAEC,OAA8C,EAAA;AACvF,IAAA,MAAMhB,MAAAA,GAASC,SAAAA,EAAAA;AAEfD,IAAAA,MAAAA,CAAOiB,IAAI,CAACF,MAAAA,CAAAA;IACZC,OAAAA,CAAQE,OAAO,CAACC,CAAAA,MAAAA,GAAAA;AACZnB,QAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,IAAI,EAAEE,MAAAA,CAAOC,GAAG,CAAC,EAAE,EAAED,MAAAA,CAAOE,KAAK,CAAA,CAAE,CAAA;AACpD,KAAA,CAAA;AACArB,IAAAA,MAAAA,CAAOiB,IAAI,CAAC,EAAA,CAAA;IAEZ,OAAO,IAAIK,QAAQC,CAAAA,OAAAA,GAAAA;QACfC,OAAAA,CAAQC,KAAK,CAACC,UAAU,CAAC,IAAA,CAAA;QACzBF,OAAAA,CAAQC,KAAK,CAACE,MAAM,EAAA;AACpBH,QAAAA,OAAAA,CAAQC,KAAK,CAACG,EAAE,CAAC,QAAQ,CAACR,GAAAA,GAAAA;AACtB,YAAA,MAAMS,MAAAA,GAAST,GAAAA,CAAIU,QAAQ,EAAA,CAAGC,WAAW,EAAA;YACzC,MAAMZ,MAAAA,GAASH,QAAQgB,IAAI,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEb,GAAG,KAAKS,MAAAA,CAAAA;AAC3C,YAAA,IAAIV,MAAAA,EAAQ;gBACRK,OAAAA,CAAQC,KAAK,CAACC,UAAU,CAAC,KAAA,CAAA;gBACzBF,OAAAA,CAAQC,KAAK,CAACS,KAAK,EAAA;gBACnBlC,MAAAA,CAAOiB,IAAI,CAAC,CAAC,UAAU,EAAEE,MAAAA,CAAOE,KAAK,CAAC,EAAE,CAAC,CAAA;AACzCE,gBAAAA,OAAAA,CAAQJ,OAAOC,GAAG,CAAA;AACtB;AACJ,SAAA,CAAA;AACJ,KAAA,CAAA;AACJ;AAEA;AACA,eAAee,uBAAuBC,KAAY,EAAA;AAC9C,IAAA,MAAMpC,MAAAA,GAASC,SAAAA,EAAAA;IACf,MAAMoC,QAAAA,GAAW,MAAM,OAAO,UAAA,CAAA;IAE9B,MAAMC,EAAAA,GAAKD,QAAAA,CAASE,eAAe,CAAC;AAChCC,QAAAA,KAAAA,EAAOhB,QAAQC,KAAK;AACpBgB,QAAAA,MAAAA,EAAQjB,QAAQkB;AACpB,KAAA,CAAA;AAEA,IAAA,MAAMC,WAAW,CAAC5B,MAAAA,GAAAA;QACd,OAAO,IAAIO,QAAQC,CAAAA,OAAAA,GAAAA;YACfe,EAAAA,CAAGK,QAAQ,CAAC5B,MAAAA,EAAQQ,OAAAA,CAAAA;AACxB,SAAA,CAAA;AACJ,KAAA;IAEA,IAAI;AACAvB,QAAAA,MAAAA,CAAOiB,IAAI,CAAC,4DAAA,CAAA;QAEZ,MAAM2B,QAAAA,GAAW,MAAMD,QAAAA,CAAS,CAAC,OAAO,EAAEP,KAAAA,CAAMS,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1D,MAAMC,cAAAA,GAAiB,MAAMH,QAAAA,CAAS,CAAC,aAAa,EAAEP,KAAAA,CAAMW,WAAW,CAAC,GAAG,CAAC,CAAA;QAC5E,MAAMC,WAAAA,GAAc,MAAML,QAAAA,CAAS,CAAC,4BAA4B,EAAEP,KAAAA,CAAMa,QAAQ,CAAC,GAAG,CAAC,CAAA;QACrF,MAAMC,WAAAA,GAAc,MAAMP,QAAAA,CAAS,CAAC,qEAAqE,EAAEP,KAAAA,CAAMe,QAAQ,CAAC,GAAG,CAAC,CAAA;AAE9H,QAAA,MAAMC,YAAAA,GAAsB;AACxBP,YAAAA,KAAAA,EAAOD,QAAAA,CAASnC,IAAI,EAAA,IAAM2B,KAAAA,CAAMS,KAAK;AACrCE,YAAAA,WAAAA,EAAaD,cAAAA,CAAerC,IAAI,EAAA,IAAM2B,KAAAA,CAAMW,WAAW;AACvDE,YAAAA,QAAAA,EAAU,WAACD,CAAYvC,IAAI,EAAA,IAAc2B,MAAMa,QAAQ;AACvDE,YAAAA,QAAAA,EAAU,WAACD,CAAYzC,IAAI,EAAA,IAAc2B,MAAMe,QAAQ;AACvDE,YAAAA,WAAAA,EAAajB,MAAMiB;AACvB,SAAA;AAEArD,QAAAA,MAAAA,CAAOiB,IAAI,CAAC,8BAAA,CAAA;QACZ,OAAOmC,YAAAA;KACX,QAAU;AACNd,QAAAA,EAAAA,CAAGgB,KAAK,EAAA;AACZ;AACJ;AAEA;AACA,SAASC,gBAAgBnB,KAAY,EAAA;IACjC,IAAIoB,IAAAA,GAAO,CAAC,kBAAkB,EAAEpB,MAAMW,WAAW,CAAC,IAAI,CAAC;IAEvDS,IAAAA,IAAQ,CAAC,cAAc,CAAC;AACxBA,IAAAA,IAAAA,IAAQ,CAAC,gBAAgB,EAAEpB,MAAMa,QAAQ,CAAC,EAAE,CAAC;AAC7CO,IAAAA,IAAAA,IAAQ,CAAC,gBAAgB,EAAEpB,MAAMe,QAAQ,CAAC,EAAE,CAAC;IAC7CK,IAAAA,IAAQ,CAAC,wBAAwB,CAAC;IAElC,IAAIpB,KAAAA,CAAMiB,WAAW,IAAIjB,KAAAA,CAAMiB,WAAW,CAAC3C,MAAM,GAAG,CAAA,EAAG;QACnD8C,IAAAA,IAAQ,CAAC,kBAAkB,CAAC;AAC5BpB,QAAAA,KAAAA,CAAMiB,WAAW,CAACnC,OAAO,CAACuC,CAAAA,UAAAA,GAAAA;AACtBD,YAAAA,IAAAA,IAAQ,CAAC,EAAE,EAAEC,UAAAA,CAAW,EAAE,CAAC;AAC/B,SAAA,CAAA;QACAD,IAAAA,IAAQ,IAAA;AACZ;IAEAA,IAAAA,IAAQ,CAAC,OAAO,CAAC;IACjBA,IAAAA,IAAQ,CAAC,6DAA6D,CAAC;IAEvE,OAAOA,IAAAA;AACX;AAEA;AACA,SAASE,6BAAAA,CACLC,MAAoB,EACpBC,aAAyE,EAAA;IAEzE,IAAInB,MAAAA,GAAS,CAAC,qBAAqB,CAAC;AACpCA,IAAAA,MAAAA,IAAU,CAAC,YAAY,EAAEkB,OAAOE,OAAO,CAAC,EAAE,CAAC;AAC3CpB,IAAAA,MAAAA,IAAU,CAAC,uBAAuB,EAAEkB,OAAOG,WAAW,CAAC,EAAE,CAAC;AAC1DrB,IAAAA,MAAAA,IAAU,CAAC,0BAA0B,EAAEmB,cAAclD,MAAM,CAAC,IAAI,CAAC;IAEjE,IAAIiD,MAAAA,CAAOI,MAAM,IAAIJ,MAAAA,CAAOI,MAAM,CAACrD,MAAM,GAAG,CAAA,EAAG;QAC3C+B,MAAAA,IAAU,CAAC,yBAAyB,CAAC;AAErCkB,QAAAA,MAAAA,CAAOI,MAAM,CAAC7C,OAAO,CAAC,CAACkB,KAAAA,EAAO4B,KAAAA,GAAAA;YAC1B,MAAMC,aAAAA,GAAgB7B,KAAAA,CAAMa,QAAQ,KAAK,MAAA,GAAS,OAC9Cb,KAAAA,CAAMa,QAAQ,KAAK,QAAA,GAAW,IAAA,GAAO,IAAA;YACzC,MAAMiB,aAAAA,GAAgB9B,KAAAA,CAAMe,QAAQ,KAAK,IAAA,GAAO,OAC5Cf,KAAAA,CAAMe,QAAQ,KAAK,SAAA,GAAY,IAAA,GAC3Bf,KAAAA,CAAMe,QAAQ,KAAK,eAAA,GAAkB,IAAA,GACjCf,KAAAA,CAAMe,QAAQ,KAAK,eAAA,GAAkB,GAAA,GACjCf,KAAAA,CAAMe,QAAQ,KAAK,aAAA,GAAgB,GAAA,GAAM,IAAA;AAEzDV,YAAAA,MAAAA,IAAU,CAAA,EAAGuB,KAAAA,GAAQ,CAAA,CAAE,EAAE,EAAEC,aAAAA,CAAc,CAAC,EAAE7B,KAAAA,CAAMS,KAAK,CAAC,EAAE,CAAC;AAC3DJ,YAAAA,MAAAA,IAAU,CAAC,GAAG,EAAEyB,aAAAA,CAAc,WAAW,EAAE9B,KAAAA,CAAMe,QAAQ,CAAC,aAAa,EAAEf,KAAAA,CAAMa,QAAQ,CAAC,EAAE,CAAC;AAC3FR,YAAAA,MAAAA,IAAU,CAAC,mBAAmB,EAAEL,MAAMW,WAAW,CAAC,EAAE,CAAC;;YAGrD,MAAMoB,YAAAA,GAAeP,cAAc5B,IAAI,CAACoC,CAAAA,EAAAA,GAAMA,EAAAA,CAAGhC,KAAK,KAAKA,KAAAA,CAAAA;AAC3D,YAAA,IAAI+B,YAAAA,EAAc;AACd1B,gBAAAA,MAAAA,IAAU,CAAC,qBAAqB,EAAE0B,YAAAA,CAAaE,MAAM,CAAC,GAAG,EAAEF,YAAAA,CAAaG,SAAS,CAAC,EAAE,CAAC;AACzF;YAEA,IAAIlC,KAAAA,CAAMiB,WAAW,IAAIjB,KAAAA,CAAMiB,WAAW,CAAC3C,MAAM,GAAG,CAAA,EAAG;gBACnD+B,MAAAA,IAAU,CAAC,oBAAoB,CAAC;AAChCL,gBAAAA,KAAAA,CAAMiB,WAAW,CAACnC,OAAO,CAACuC,CAAAA,UAAAA,GAAAA;AACtBhB,oBAAAA,MAAAA,IAAU,CAAC,QAAQ,EAAEgB,UAAAA,CAAW,EAAE,CAAC;AACvC,iBAAA,CAAA;AACJ;YACAhB,MAAAA,IAAU,CAAC,EAAE,CAAC;AAClB,SAAA,CAAA;KACJ,MAAO;QACHA,MAAAA,IAAU,CAAC,oDAAoD,CAAC;AACpE;IAEA,IAAImB,aAAAA,CAAclD,MAAM,GAAG,CAAA,EAAG;QAC1B+B,MAAAA,IAAU,CAAC,6BAA6B,CAAC;QACzCmB,aAAAA,CAAc1C,OAAO,CAACiD,CAAAA,YAAAA,GAAAA;AAClB1B,YAAAA,MAAAA,IAAU,CAAC,GAAG,EAAE0B,aAAaE,MAAM,CAAC,EAAE,EAAEF,YAAAA,CAAa/B,KAAK,CAACS,KAAK,CAAC,GAAG,EAAEsB,aAAaG,SAAS,CAAC,EAAE,CAAC;AACpG,SAAA,CAAA;QACA7B,MAAAA,IAAU,CAAC,EAAE,CAAC;AAClB;IAEAA,MAAAA,IAAU,CAAC,iGAAiG,CAAC;IAE7G,OAAOA,MAAAA;AACX;AAEA,SAAS8B,oBAAoBZ,MAAoB,EAAA;IAC7C,IAAIlB,MAAAA,GAAS,CAAC,qBAAqB,CAAC;AACpCA,IAAAA,MAAAA,IAAU,CAAC,YAAY,EAAEkB,OAAOE,OAAO,CAAC,EAAE,CAAC;AAC3CpB,IAAAA,MAAAA,IAAU,CAAC,uBAAuB,EAAEkB,OAAOG,WAAW,CAAC,IAAI,CAAC;IAE5D,IAAIH,MAAAA,CAAOI,MAAM,IAAIJ,MAAAA,CAAOI,MAAM,CAACrD,MAAM,GAAG,CAAA,EAAG;QAC3C+B,MAAAA,IAAU,CAAC,yBAAyB,CAAC;AAErCkB,QAAAA,MAAAA,CAAOI,MAAM,CAAC7C,OAAO,CAAC,CAACkB,KAAAA,EAAO4B,KAAAA,GAAAA;YAC1B,MAAMC,aAAAA,GAAgB7B,KAAAA,CAAMa,QAAQ,KAAK,MAAA,GAAS,OAC9Cb,KAAAA,CAAMa,QAAQ,KAAK,QAAA,GAAW,IAAA,GAAO,IAAA;YACzC,MAAMiB,aAAAA,GAAgB9B,KAAAA,CAAMe,QAAQ,KAAK,IAAA,GAAO,OAC5Cf,KAAAA,CAAMe,QAAQ,KAAK,SAAA,GAAY,IAAA,GAC3Bf,KAAAA,CAAMe,QAAQ,KAAK,eAAA,GAAkB,IAAA,GACjCf,KAAAA,CAAMe,QAAQ,KAAK,eAAA,GAAkB,GAAA,GACjCf,KAAAA,CAAMe,QAAQ,KAAK,aAAA,GAAgB,GAAA,GAAM,IAAA;AAEzDV,YAAAA,MAAAA,IAAU,CAAA,EAAGuB,KAAAA,GAAQ,CAAA,CAAE,EAAE,EAAEC,aAAAA,CAAc,CAAC,EAAE7B,KAAAA,CAAMS,KAAK,CAAC,EAAE,CAAC;AAC3DJ,YAAAA,MAAAA,IAAU,CAAC,GAAG,EAAEyB,aAAAA,CAAc,WAAW,EAAE9B,KAAAA,CAAMe,QAAQ,CAAC,aAAa,EAAEf,KAAAA,CAAMa,QAAQ,CAAC,EAAE,CAAC;AAC3FR,YAAAA,MAAAA,IAAU,CAAC,mBAAmB,EAAEL,MAAMW,WAAW,CAAC,EAAE,CAAC;YAErD,IAAIX,KAAAA,CAAMiB,WAAW,IAAIjB,KAAAA,CAAMiB,WAAW,CAAC3C,MAAM,GAAG,CAAA,EAAG;gBACnD+B,MAAAA,IAAU,CAAC,oBAAoB,CAAC;AAChCL,gBAAAA,KAAAA,CAAMiB,WAAW,CAACnC,OAAO,CAACuC,CAAAA,UAAAA,GAAAA;AACtBhB,oBAAAA,MAAAA,IAAU,CAAC,QAAQ,EAAEgB,UAAAA,CAAW,EAAE,CAAC;AACvC,iBAAA,CAAA;AACJ;YACAhB,MAAAA,IAAU,CAAC,EAAE,CAAC;AAClB,SAAA,CAAA;KACJ,MAAO;QACHA,MAAAA,IAAU,CAAC,oDAAoD,CAAC;AACpE;IAEAA,MAAAA,IAAU,CAAC,8FAA8F,CAAC;IAE1G,OAAOA,MAAAA;AACX;AAEA;AACO,MAAM+B,mBAAAA,GAAsB,OAC/Bb,MAAAA,EACAc,aAAsB,KAAK,GAAA;AAE3B,IAAA,MAAMzE,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAM2D,gBAA4E,EAAE;IAEpF,IAAI,CAACD,OAAOI,MAAM,IAAIJ,OAAOI,MAAM,CAACrD,MAAM,KAAK,CAAA,EAAG;AAC9C,QAAA,OAAO6D,mBAAAA,CAAoBZ,MAAAA,CAAAA;AAC/B;IAEA3D,MAAAA,CAAOiB,IAAI,CAAC,CAAC,SAAS,EAAE0C,MAAAA,CAAOI,MAAM,CAACrD,MAAM,CAAC,8CAA8C,CAAC,CAAA;IAE5F,IAAK,IAAIgE,IAAI,CAAA,EAAGA,CAAAA,GAAIf,OAAOI,MAAM,CAACrD,MAAM,EAAEgE,CAAAA,EAAAA,CAAK;AAC3C,QAAA,MAAMtC,KAAAA,GAAQuB,MAAAA,CAAOI,MAAM,CAACW,CAAAA,CAAE;AAC9B,QAAA,IAAIC,iBAAAA,GAAoBF,UAAAA;AAExB,QAAA,IAAI,CAACA,UAAAA,EAAY;;AAEbzE,YAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,WAAW,EAAEyD,CAAAA,GAAI,CAAA,CAAE,IAAI,EAAEf,OAAOI,MAAM,CAACrD,MAAM,CAAC,CAAC,CAAC,CAAA;AAC7DV,YAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,UAAU,EAAEmB,KAAAA,CAAMS,KAAK,CAAA,CAAE,CAAA;AACtC7C,YAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,aAAa,EAAEmB,KAAAA,CAAMa,QAAQ,CAAC,aAAa,EAAEb,KAAAA,CAAMe,QAAQ,CAAA,CAAE,CAAA;AAC1EnD,YAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,gBAAgB,EAAEmB,KAAAA,CAAMW,WAAW,CAAA,CAAE,CAAA;YAClD,IAAIX,KAAAA,CAAMiB,WAAW,IAAIjB,KAAAA,CAAMiB,WAAW,CAAC3C,MAAM,GAAG,CAAA,EAAG;gBACnDV,MAAAA,CAAOiB,IAAI,CAAC,CAAC,gBAAgB,EAAEmB,MAAMiB,WAAW,CAACuB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AACjE;;YAGA,MAAMzD,MAAAA,GAAS,MAAML,aAAAA,CAAc,8CAAA,EAAgD;AAC/E,gBAAA;oBAAEM,GAAAA,EAAK,GAAA;oBAAKC,KAAAA,EAAO;AAAsB,iBAAA;AACzC,gBAAA;oBAAED,GAAAA,EAAK,GAAA;oBAAKC,KAAAA,EAAO;AAAkB,iBAAA;AACrC,gBAAA;oBAAED,GAAAA,EAAK,GAAA;oBAAKC,KAAAA,EAAO;AAAqB;AAC3C,aAAA,CAAA;AAED,YAAA,IAAIF,WAAW,GAAA,EAAK;gBAChBwD,iBAAAA,GAAoB,IAAA;aACxB,MAAO,IAAIxD,WAAW,GAAA,EAAK;;gBAEvB,MAAM0D,WAAAA,GAAc,MAAM1C,sBAAAA,CAAuBC,KAAAA,CAAAA;gBACjDuB,MAAAA,CAAOI,MAAM,CAACW,CAAAA,CAAE,GAAGG,WAAAA;gBACnBF,iBAAAA,GAAoB,IAAA;AACxB;;AAEJ;AAEA,QAAA,IAAIA,iBAAAA,EAAmB;YACnB,IAAI;gBACA3E,MAAAA,CAAOiB,IAAI,CAAC,CAAC,2BAA2B,EAAEmB,KAAAA,CAAMS,KAAK,CAAC,CAAC,CAAC,CAAA;;AAGxD,gBAAA,MAAMiC,YAAYvB,eAAAA,CAAgBnB,KAAAA,CAAAA;;AAGlC,gBAAA,MAAM2C,MAAAA,GAAS;AACX,oBAAA,CAAC,SAAS,EAAE3C,KAAAA,CAAMa,QAAQ,CAAA,CAAE;AAC5B,oBAAA,CAAC,SAAS,EAAEb,KAAAA,CAAMe,QAAQ,CAAA,CAAE;AAC5B,oBAAA;AACH,iBAAA;AAED,gBAAA,MAAMgB,eAAe,MAAMa,WAAAA,CAAY5C,KAAAA,CAAMS,KAAK,EAAEiC,SAAAA,EAAWC,MAAAA,CAAAA;AAC/DnB,gBAAAA,aAAAA,CAAcqB,IAAI,CAAC;AACf7C,oBAAAA,KAAAA;AACAkC,oBAAAA,SAAAA,EAAWH,aAAae,QAAQ;AAChCb,oBAAAA,MAAAA,EAAQF,aAAaE;AACzB,iBAAA,CAAA;AAEArE,gBAAAA,MAAAA,CAAOiB,IAAI,CAAC,CAAC,wBAAwB,EAAEkD,YAAAA,CAAaE,MAAM,CAAC,EAAE,EAAEF,YAAAA,CAAae,QAAQ,CAAA,CAAE,CAAA;AAC1F,aAAA,CAAE,OAAOvE,KAAAA,EAAY;AACjBX,gBAAAA,MAAAA,CAAOW,KAAK,CAAC,CAAC,qCAAqC,EAAEyB,KAAAA,CAAMS,KAAK,CAAC,GAAG,EAAElC,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACzF;AACJ;AACJ;;IAGA,IAAI+C,aAAAA,CAAclD,MAAM,GAAG,CAAA,EAAG;AAC1B,QAAA,OAAOgD,8BAA8BC,MAAAA,EAAQC,aAAAA,CAAAA;KACjD,MAAO;AACH,QAAA,OAAOW,mBAAAA,CAAoBZ,MAAAA,CAAAA;AAC/B;AACJ;;;;"}
1
+ {"version":3,"file":"issues.js","sources":["../../src/content/issues.ts"],"sourcesContent":["import { getLogger } from '../logging';\nimport { getOpenIssues, createIssue } from '../util/github';\n\nexport interface Issue {\n title: string;\n description: string;\n priority: 'low' | 'medium' | 'high';\n category: 'ui' | 'content' | 'functionality' | 'accessibility' | 'performance' | 'other';\n suggestions?: string[];\n}\n\nexport interface ReviewResult {\n summary: string;\n totalIssues: number;\n issues: Issue[];\n}\n\n// Get GitHub issues content\nexport const get = async (options: { limit?: number } = {}): Promise<string> => {\n const logger = getLogger();\n const { limit = 20 } = options;\n\n try {\n logger.debug('Fetching open GitHub issues...');\n const issuesLimit = Math.min(limit, 20); // Cap at 20\n const githubIssues = await getOpenIssues(issuesLimit);\n\n if (githubIssues.trim()) {\n logger.debug('Added GitHub issues to context (%d characters)', githubIssues.length);\n return githubIssues;\n } else {\n logger.debug('No open GitHub issues found');\n return '';\n }\n } catch (error: any) {\n logger.warn('Failed to fetch GitHub issues: %s', error.message);\n return '';\n }\n};\n\n// Helper function to get user choice interactively\nasync function getUserChoice(prompt: string, choices: Array<{ key: string, label: string }>): Promise<string> {\n const logger = getLogger();\n\n logger.info(prompt);\n choices.forEach(choice => {\n logger.info(` [${choice.key}] ${choice.label}`);\n });\n logger.info('');\n\n return new Promise(resolve => {\n // Ensure stdin is referenced so the process doesn't exit while waiting for input\n if (typeof process.stdin.ref === 'function') {\n process.stdin.ref();\n }\n\n process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.on('data', (key) => {\n const keyStr = key.toString().toLowerCase();\n const choice = choices.find(c => c.key === keyStr);\n if (choice) {\n process.stdin.setRawMode(false);\n process.stdin.pause();\n // Detach stdin again now that we're done\n if (typeof process.stdin.unref === 'function') {\n process.stdin.unref();\n }\n logger.info(`Selected: ${choice.label}\\n`);\n resolve(choice.key);\n }\n });\n });\n}\n\n// Helper function to edit issue interactively\nasync function editIssueInteractively(issue: Issue): Promise<Issue> {\n const logger = getLogger();\n const readline = await import('readline');\n\n // Ensure stdin is referenced during readline interaction\n if (typeof process.stdin.ref === 'function') {\n process.stdin.ref();\n }\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const question = (prompt: string): Promise<string> => {\n return new Promise(resolve => {\n rl.question(prompt, resolve);\n });\n };\n\n try {\n logger.info('📝 Edit issue details (press Enter to keep current value):');\n\n const newTitle = await question(`Title [${issue.title}]: `);\n const newDescription = await question(`Description [${issue.description}]: `);\n const newPriority = await question(`Priority (low/medium/high) [${issue.priority}]: `);\n const newCategory = await question(`Category (ui/content/functionality/accessibility/performance/other) [${issue.category}]: `);\n\n const updatedIssue: Issue = {\n title: newTitle.trim() || issue.title,\n description: newDescription.trim() || issue.description,\n priority: (newPriority.trim() as any) || issue.priority,\n category: (newCategory.trim() as any) || issue.category,\n suggestions: issue.suggestions\n };\n\n logger.info('✅ Issue updated successfully');\n return updatedIssue;\n } finally {\n rl.close();\n // Detach stdin after interactive edit completes\n if (typeof process.stdin.unref === 'function') {\n process.stdin.unref();\n }\n }\n}\n\n// Helper function to format issue body for GitHub\nfunction formatIssueBody(issue: Issue): string {\n let body = `## Description\\n\\n${issue.description}\\n\\n`;\n\n body += `## Details\\n\\n`;\n body += `- **Priority:** ${issue.priority}\\n`;\n body += `- **Category:** ${issue.category}\\n`;\n body += `- **Source:** Review\\n\\n`;\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n body += `## Suggestions\\n\\n`;\n issue.suggestions.forEach(suggestion => {\n body += `- ${suggestion}\\n`;\n });\n body += '\\n';\n }\n\n body += `---\\n\\n`;\n body += `*This issue was automatically created from a review session.*`;\n\n return body;\n}\n\n// Helper function to format results with created GitHub issues\nfunction formatReviewResultsWithIssues(\n result: ReviewResult,\n createdIssues: Array<{ issue: Issue, githubUrl: string, number: number }>\n): string {\n let output = `📝 Review Results\\n\\n`;\n output += `📋 Summary: ${result.summary}\\n`;\n output += `📊 Total Issues Found: ${result.totalIssues}\\n`;\n output += `🚀 GitHub Issues Created: ${createdIssues.length}\\n\\n`;\n\n if (result.issues && result.issues.length > 0) {\n output += `📝 Issues Identified:\\n\\n`;\n\n result.issues.forEach((issue, index) => {\n const priorityEmoji = issue.priority === 'high' ? '🔴' :\n issue.priority === 'medium' ? '🟡' : '🟢';\n const categoryEmoji = issue.category === 'ui' ? '🎨' :\n issue.category === 'content' ? '📝' :\n issue.category === 'functionality' ? '⚙️' :\n issue.category === 'accessibility' ? '♿' :\n issue.category === 'performance' ? '⚡' : '🔧';\n\n output += `${index + 1}. ${priorityEmoji} ${issue.title}\\n`;\n output += ` ${categoryEmoji} Category: ${issue.category} | Priority: ${issue.priority}\\n`;\n output += ` 📖 Description: ${issue.description}\\n`;\n\n // Check if this issue was created as a GitHub issue\n const createdIssue = createdIssues.find(ci => ci.issue === issue);\n if (createdIssue) {\n output += ` 🔗 GitHub Issue: #${createdIssue.number} - ${createdIssue.githubUrl}\\n`;\n }\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n output += ` 💡 Suggestions:\\n`;\n issue.suggestions.forEach(suggestion => {\n output += ` • ${suggestion}\\n`;\n });\n }\n output += `\\n`;\n });\n } else {\n output += `✅ No specific issues identified from the review.\\n\\n`;\n }\n\n if (createdIssues.length > 0) {\n output += `\\n🎯 Created GitHub Issues:\\n`;\n createdIssues.forEach(createdIssue => {\n output += `• #${createdIssue.number}: ${createdIssue.issue.title} - ${createdIssue.githubUrl}\\n`;\n });\n output += `\\n`;\n }\n\n output += `🚀 Next Steps: Review the created GitHub issues and prioritize them in your development workflow.`;\n\n return output;\n}\n\nfunction formatReviewResults(result: ReviewResult): string {\n let output = `📝 Review Results\\n\\n`;\n output += `📋 Summary: ${result.summary}\\n`;\n output += `📊 Total Issues Found: ${result.totalIssues}\\n\\n`;\n\n if (result.issues && result.issues.length > 0) {\n output += `📝 Issues Identified:\\n\\n`;\n\n result.issues.forEach((issue, index) => {\n const priorityEmoji = issue.priority === 'high' ? '🔴' :\n issue.priority === 'medium' ? '🟡' : '🟢';\n const categoryEmoji = issue.category === 'ui' ? '🎨' :\n issue.category === 'content' ? '📝' :\n issue.category === 'functionality' ? '⚙️' :\n issue.category === 'accessibility' ? '♿' :\n issue.category === 'performance' ? '⚡' : '🔧';\n\n output += `${index + 1}. ${priorityEmoji} ${issue.title}\\n`;\n output += ` ${categoryEmoji} Category: ${issue.category} | Priority: ${issue.priority}\\n`;\n output += ` 📖 Description: ${issue.description}\\n`;\n\n if (issue.suggestions && issue.suggestions.length > 0) {\n output += ` 💡 Suggestions:\\n`;\n issue.suggestions.forEach(suggestion => {\n output += ` • ${suggestion}\\n`;\n });\n }\n output += `\\n`;\n });\n } else {\n output += `✅ No specific issues identified from the review.\\n\\n`;\n }\n\n output += `🚀 Next Steps: Review the identified issues and prioritize them for your development workflow.`;\n\n return output;\n}\n\n// Handle GitHub issue creation workflow\nexport const handleIssueCreation = async (\n result: ReviewResult,\n senditMode: boolean = false\n): Promise<string> => {\n const logger = getLogger();\n const createdIssues: Array<{ issue: Issue, githubUrl: string, number: number }> = [];\n\n if (!result.issues || result.issues.length === 0) {\n return formatReviewResults(result);\n }\n\n logger.info(`🔍 Found ${result.issues.length} issues to potentially create as GitHub issues`);\n\n for (let i = 0; i < result.issues.length; i++) {\n const issue = result.issues[i];\n let shouldCreateIssue = senditMode;\n\n if (!senditMode) {\n // Interactive confirmation for each issue\n logger.info(`\\n📋 Issue ${i + 1} of ${result.issues.length}:`);\n logger.info(` Title: ${issue.title}`);\n logger.info(` Priority: ${issue.priority} | Category: ${issue.category}`);\n logger.info(` Description: ${issue.description}`);\n if (issue.suggestions && issue.suggestions.length > 0) {\n logger.info(` Suggestions: ${issue.suggestions.join(', ')}`);\n }\n\n // Get user choice\n const choice = await getUserChoice('\\nWhat would you like to do with this issue?', [\n { key: 'c', label: 'Create GitHub issue' },\n { key: 's', label: 'Skip this issue' },\n { key: 'e', label: 'Edit issue details' }\n ]);\n\n if (choice === 'c') {\n shouldCreateIssue = true;\n } else if (choice === 'e') {\n // Allow user to edit the issue\n const editedIssue = await editIssueInteractively(issue);\n result.issues[i] = editedIssue;\n shouldCreateIssue = true;\n }\n // If choice is 's', shouldCreateIssue remains false\n }\n\n if (shouldCreateIssue) {\n try {\n logger.info(`🚀 Creating GitHub issue: \"${issue.title}\"`);\n\n // Format issue body with additional details\n const issueBody = formatIssueBody(issue);\n\n // Create labels based on priority and category\n const labels = [\n `priority-${issue.priority}`,\n `category-${issue.category}`,\n 'review'\n ];\n\n const createdIssue = await createIssue(issue.title, issueBody, labels);\n createdIssues.push({\n issue,\n githubUrl: createdIssue.html_url,\n number: createdIssue.number\n });\n\n logger.info(`✅ Created GitHub issue #${createdIssue.number}: ${createdIssue.html_url}`);\n } catch (error: any) {\n logger.error(`❌ Failed to create GitHub issue for \"${issue.title}\": ${error.message}`);\n }\n }\n }\n\n // Return formatted results\n if (createdIssues.length > 0) {\n return formatReviewResultsWithIssues(result, createdIssues);\n } else {\n return formatReviewResults(result);\n }\n}; "],"names":["get","options","logger","getLogger","limit","debug","issuesLimit","Math","min","githubIssues","getOpenIssues","trim","length","error","warn","message","getUserChoice","prompt","choices","info","forEach","choice","key","label","Promise","resolve","process","stdin","ref","setRawMode","resume","on","keyStr","toString","toLowerCase","find","c","pause","unref","editIssueInteractively","issue","readline","rl","createInterface","input","output","stdout","question","newTitle","title","newDescription","description","newPriority","priority","newCategory","category","updatedIssue","suggestions","close","formatIssueBody","body","suggestion","formatReviewResultsWithIssues","result","createdIssues","summary","totalIssues","issues","index","priorityEmoji","categoryEmoji","createdIssue","ci","number","githubUrl","formatReviewResults","handleIssueCreation","senditMode","i","shouldCreateIssue","join","editedIssue","issueBody","labels","createIssue","push","html_url"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -10,8 +10,9 @@ import { execute as execute$4 } from './commands/link.js';
10
10
  import { execute as execute$3 } from './commands/publish.js';
11
11
  import { execute as execute$2 } from './commands/release.js';
12
12
  import { execute as execute$8 } from './commands/review.js';
13
+ import { execute as execute$9 } from './commands/select-audio.js';
13
14
  import { execute as execute$5 } from './commands/unlink.js';
14
- import { DEFAULT_CONFIG_DIR, COMMAND_CHECK_CONFIG, COMMAND_INIT_CONFIG, COMMAND_COMMIT, COMMAND_AUDIO_COMMIT, COMMAND_RELEASE, COMMAND_PUBLISH, COMMAND_LINK, COMMAND_UNLINK, COMMAND_AUDIO_REVIEW, COMMAND_CLEAN, COMMAND_REVIEW } from './constants.js';
15
+ import { DEFAULT_CONFIG_DIR, COMMAND_CHECK_CONFIG, COMMAND_INIT_CONFIG, COMMAND_COMMIT, COMMAND_AUDIO_COMMIT, COMMAND_RELEASE, COMMAND_PUBLISH, COMMAND_LINK, COMMAND_UNLINK, COMMAND_AUDIO_REVIEW, COMMAND_CLEAN, COMMAND_REVIEW, COMMAND_SELECT_AUDIO } from './constants.js';
15
16
  import { getLogger, setLogLevel } from './logging.js';
16
17
  import { ConfigSchema } from './types.js';
17
18
 
@@ -35,7 +36,9 @@ import { ConfigSchema } from './types.js';
35
36
  async function main() {
36
37
  // Configure logging early, before CardiganTime initialization
37
38
  configureEarlyLogging();
38
- const cardigantime = Cardigantime.create({
39
+ // Cast create to `any` to avoid excessive type instantiation issues in TS compiler
40
+ const createCardigantime = Cardigantime.create;
41
+ const cardigantime = createCardigantime({
39
42
  defaults: {
40
43
  configDirectory: DEFAULT_CONFIG_DIR,
41
44
  // Move pathResolution INSIDE defaults
@@ -84,7 +87,7 @@ async function main() {
84
87
  const command = process.argv[2];
85
88
  let commandName = commandConfig.commandName;
86
89
  // If we have a specific command argument, use that
87
- if (command === 'commit' || command === 'audio-commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink' || command === 'audio-review' || command === 'clean' || command === 'review') {
90
+ if (command === 'commit' || command === 'audio-commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink' || command === 'audio-review' || command === 'clean' || command === 'review' || command === 'select-audio') {
88
91
  commandName = command;
89
92
  }
90
93
  let summary = '';
@@ -108,6 +111,9 @@ async function main() {
108
111
  summary = 'Output directory cleaned successfully.';
109
112
  } else if (commandName === COMMAND_REVIEW) {
110
113
  summary = await execute$8(runConfig);
114
+ } else if (commandName === COMMAND_SELECT_AUDIO) {
115
+ await execute$9(runConfig);
116
+ summary = 'Audio selection completed successfully.';
111
117
  }
112
118
  // eslint-disable-next-line no-console
113
119
  console.log(`\n\n${summary}\n\n`);
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as Cardigantime from '@theunwalked/cardigantime';\nimport 'dotenv/config';\nimport { CommandConfig } from 'types';\nimport * as Arguments from './arguments';\nimport * as AudioCommit from './commands/audio-commit';\nimport * as AudioReview from './commands/audio-review';\nimport * as Clean from './commands/clean';\nimport * as Commit from './commands/commit';\nimport * as Link from './commands/link';\nimport * as Publish from './commands/publish';\nimport * as Release from './commands/release';\nimport * as Review from './commands/review';\nimport * as Unlink from './commands/unlink';\nimport { COMMAND_AUDIO_COMMIT, COMMAND_AUDIO_REVIEW, COMMAND_CHECK_CONFIG, COMMAND_CLEAN, COMMAND_COMMIT, COMMAND_INIT_CONFIG, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_REVIEW, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\n/**\n * Configure early logging based on command line flags.\n * \n * Hey we need this because we need to be able to debug CardiganTime.\n * This method checks for --verbose and --debug flags early in the process\n * before CardiganTime is configured, allowing us to capture debug output\n * from the CardiganTime initialization itself.\n */\nfunction configureEarlyLogging(): void {\n const hasVerbose = process.argv.includes('--verbose');\n const hasDebug = process.argv.includes('--debug');\n\n // Set log level based on early flag detection\n if (hasDebug) {\n setLogLevel('debug');\n } else if (hasVerbose) {\n setLogLevel('verbose');\n }\n}\n\nexport async function main() {\n // Configure logging early, before CardiganTime initialization\n configureEarlyLogging();\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR,\n // Move pathResolution INSIDE defaults\n pathResolution: {\n resolvePathArray: ['contextDirectories'], // Resolve contextDirectories array elements as paths\n },\n // Use fieldOverlaps instead of mergeStrategy, INSIDE defaults\n fieldOverlaps: {\n 'contextDirectories': 'prepend', // Use prepend strategy for contextDirectories array\n // Add other field overlap configurations as needed\n },\n },\n features: ['config', 'hierarchical'],\n configShape: ConfigSchema.shape, // No need for 'as any' now\n logger: getLogger(),\n }); // No need for 'as any' at the end\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [runConfig, secureConfig, commandConfig]: [Config, SecureConfig, CommandConfig] = await Arguments.configure(cardigantime); // Pass cardigantime instance\n\n // Set log level based on verbose flag\n if (runConfig.verbose) {\n setLogLevel('verbose');\n }\n if (runConfig.debug) {\n setLogLevel('debug');\n }\n\n const logger = getLogger();\n cardigantime.setLogger(logger);\n\n try {\n // Handle check-config command first\n if (commandConfig.commandName === COMMAND_CHECK_CONFIG) {\n // CardiganTime's checkConfig has already been called in Arguments.configure()\n // No additional processing needed here\n return;\n }\n\n // Handle init-config command\n if (commandConfig.commandName === COMMAND_INIT_CONFIG) {\n // CardiganTime's initConfig has already been called in Arguments.configure()\n // No additional processing needed here\n return;\n }\n\n // Get the command from Commander\n const command = process.argv[2];\n let commandName = commandConfig.commandName;\n\n // If we have a specific command argument, use that\n if (command === 'commit' || command === 'audio-commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink' || command === 'audio-review' || command === 'clean' || command === 'review') {\n commandName = command;\n }\n\n let summary: string = '';\n\n if (commandName === COMMAND_COMMIT) {\n summary = await Commit.execute(runConfig);\n } else if (commandName === COMMAND_AUDIO_COMMIT) {\n summary = await AudioCommit.execute(runConfig);\n } else if (commandName === COMMAND_RELEASE) {\n const releaseSummary = await Release.execute(runConfig);\n summary = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n } else if (commandName === COMMAND_PUBLISH) {\n await Publish.execute(runConfig);\n } else if (commandName === COMMAND_LINK) {\n summary = await Link.execute(runConfig);\n } else if (commandName === COMMAND_UNLINK) {\n summary = await Unlink.execute(runConfig);\n } else if (commandName === COMMAND_AUDIO_REVIEW) {\n summary = await AudioReview.execute(runConfig);\n } else if (commandName === COMMAND_CLEAN) {\n await Clean.execute(runConfig);\n summary = 'Output directory cleaned successfully.';\n } else if (commandName === COMMAND_REVIEW) {\n summary = await Review.execute(runConfig);\n }\n\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${summary}\\n\\n`);\n\n } catch (error: any) {\n logger.error('Exiting due to Error: %s, %s', error.message, error.stack);\n process.exit(1);\n }\n}\n\nmain();"],"names":["configureEarlyLogging","hasVerbose","process","argv","includes","hasDebug","setLogLevel","main","cardigantime","Cardigantime","create","defaults","configDirectory","DEFAULT_CONFIG_DIR","pathResolution","resolvePathArray","fieldOverlaps","features","configShape","ConfigSchema","shape","logger","getLogger","runConfig","secureConfig","commandConfig","Arguments","verbose","debug","setLogger","commandName","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","command","summary","COMMAND_COMMIT","Commit","COMMAND_AUDIO_COMMIT","AudioCommit","COMMAND_RELEASE","releaseSummary","Release","title","body","COMMAND_PUBLISH","Publish","COMMAND_LINK","Link","COMMAND_UNLINK","Unlink","COMMAND_AUDIO_REVIEW","AudioReview","COMMAND_CLEAN","Clean","COMMAND_REVIEW","Review","console","log","error","message","stack","exit"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as Cardigantime from '@theunwalked/cardigantime';\nimport 'dotenv/config';\nimport { CommandConfig } from 'types';\nimport * as Arguments from './arguments';\nimport * as AudioCommit from './commands/audio-commit';\nimport * as AudioReview from './commands/audio-review';\nimport * as Clean from './commands/clean';\nimport * as Commit from './commands/commit';\nimport * as Link from './commands/link';\nimport * as Publish from './commands/publish';\nimport * as Release from './commands/release';\nimport * as Review from './commands/review';\nimport * as SelectAudio from './commands/select-audio';\nimport * as Unlink from './commands/unlink';\nimport { COMMAND_AUDIO_COMMIT, COMMAND_AUDIO_REVIEW, COMMAND_CHECK_CONFIG, COMMAND_CLEAN, COMMAND_COMMIT, COMMAND_INIT_CONFIG, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_REVIEW, COMMAND_SELECT_AUDIO, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\n/**\n * Configure early logging based on command line flags.\n * \n * Hey we need this because we need to be able to debug CardiganTime.\n * This method checks for --verbose and --debug flags early in the process\n * before CardiganTime is configured, allowing us to capture debug output\n * from the CardiganTime initialization itself.\n */\nfunction configureEarlyLogging(): void {\n const hasVerbose = process.argv.includes('--verbose');\n const hasDebug = process.argv.includes('--debug');\n\n // Set log level based on early flag detection\n if (hasDebug) {\n setLogLevel('debug');\n } else if (hasVerbose) {\n setLogLevel('verbose');\n }\n}\n\nexport async function main() {\n // Configure logging early, before CardiganTime initialization\n configureEarlyLogging();\n\n // Cast create to `any` to avoid excessive type instantiation issues in TS compiler\n const createCardigantime: any = (Cardigantime as unknown as { create: unknown }).create as any;\n\n const cardigantime = createCardigantime({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR,\n // Move pathResolution INSIDE defaults\n pathResolution: {\n resolvePathArray: ['contextDirectories'], // Resolve contextDirectories array elements as paths\n },\n // Use fieldOverlaps instead of mergeStrategy, INSIDE defaults\n fieldOverlaps: {\n 'contextDirectories': 'prepend', // Use prepend strategy for contextDirectories array\n // Add other field overlap configurations as needed\n },\n },\n features: ['config', 'hierarchical'],\n configShape: ConfigSchema.shape, // No need for 'as any' now\n logger: getLogger(),\n }); // No need for 'as any' at the end\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [runConfig, secureConfig, commandConfig]: [Config, SecureConfig, CommandConfig] = await Arguments.configure(cardigantime); // Pass cardigantime instance\n\n // Set log level based on verbose flag\n if (runConfig.verbose) {\n setLogLevel('verbose');\n }\n if (runConfig.debug) {\n setLogLevel('debug');\n }\n\n const logger = getLogger();\n cardigantime.setLogger(logger);\n\n try {\n // Handle check-config command first\n if (commandConfig.commandName === COMMAND_CHECK_CONFIG) {\n // CardiganTime's checkConfig has already been called in Arguments.configure()\n // No additional processing needed here\n return;\n }\n\n // Handle init-config command\n if (commandConfig.commandName === COMMAND_INIT_CONFIG) {\n // CardiganTime's initConfig has already been called in Arguments.configure()\n // No additional processing needed here\n return;\n }\n\n // Get the command from Commander\n const command = process.argv[2];\n let commandName = commandConfig.commandName;\n\n // If we have a specific command argument, use that\n if (command === 'commit' || command === 'audio-commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink' || command === 'audio-review' || command === 'clean' || command === 'review' || command === 'select-audio') {\n commandName = command;\n }\n\n let summary: string = '';\n\n if (commandName === COMMAND_COMMIT) {\n summary = await Commit.execute(runConfig);\n } else if (commandName === COMMAND_AUDIO_COMMIT) {\n summary = await AudioCommit.execute(runConfig);\n } else if (commandName === COMMAND_RELEASE) {\n const releaseSummary = await Release.execute(runConfig);\n summary = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n } else if (commandName === COMMAND_PUBLISH) {\n await Publish.execute(runConfig);\n } else if (commandName === COMMAND_LINK) {\n summary = await Link.execute(runConfig);\n } else if (commandName === COMMAND_UNLINK) {\n summary = await Unlink.execute(runConfig);\n } else if (commandName === COMMAND_AUDIO_REVIEW) {\n summary = await AudioReview.execute(runConfig);\n } else if (commandName === COMMAND_CLEAN) {\n await Clean.execute(runConfig);\n summary = 'Output directory cleaned successfully.';\n } else if (commandName === COMMAND_REVIEW) {\n summary = await Review.execute(runConfig);\n } else if (commandName === COMMAND_SELECT_AUDIO) {\n await SelectAudio.execute(runConfig);\n summary = 'Audio selection completed successfully.';\n }\n\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${summary}\\n\\n`);\n\n } catch (error: any) {\n logger.error('Exiting due to Error: %s, %s', error.message, error.stack);\n process.exit(1);\n }\n}\n\nmain();"],"names":["configureEarlyLogging","hasVerbose","process","argv","includes","hasDebug","setLogLevel","main","createCardigantime","Cardigantime","create","cardigantime","defaults","configDirectory","DEFAULT_CONFIG_DIR","pathResolution","resolvePathArray","fieldOverlaps","features","configShape","ConfigSchema","shape","logger","getLogger","runConfig","secureConfig","commandConfig","Arguments","verbose","debug","setLogger","commandName","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","command","summary","COMMAND_COMMIT","Commit","COMMAND_AUDIO_COMMIT","AudioCommit","COMMAND_RELEASE","releaseSummary","Release","title","body","COMMAND_PUBLISH","Publish","COMMAND_LINK","Link","COMMAND_UNLINK","Unlink","COMMAND_AUDIO_REVIEW","AudioReview","COMMAND_CLEAN","Clean","COMMAND_REVIEW","Review","COMMAND_SELECT_AUDIO","SelectAudio","console","log","error","message","stack","exit"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,CAAA,CAAA,CAAA;;;;;;;AAOC,CAAA,CAAA,CAAA,CACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASA,qBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,IAAI,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,IAAI,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAGvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,QAAAA,CAAAA,CAAU,CAAA;QACVC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;QACnBK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAeC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;AAElBP,CAAAA,CAAAA,CAAAA,CAAAA,qBAAAA,CAAAA,CAAAA,CAAAA;;IAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAACC,CAAgDC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA;AAEvF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAeH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAAA;QACpCI,QAAAA,CAAAA,CAAU,CAAA;YACNC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;YAEjBC,cAAAA,CAAAA,CAAgB,CAAA;gBACZC,gBAAAA,CAAAA,CAAkB,CAAA;AAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;YAEAC,aAAAA,CAAAA,CAAe,CAAA;gBACX,oBAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACAC,QAAAA,CAAAA,CAAU,CAAA;AAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACpCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;QAC/BC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAQC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;IAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,YAAAA,CAAAA,CAAcC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAA0C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAAChB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;IAGlH,CAAA,CAAA,CAAA,CAAIa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAE,CAAA;QACnBtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA;IACA,CAAA,CAAA,CAAA,CAAIkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUK,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA,CAAE,CAAA;QACjBvB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACfZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAamB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAACR,MAAAA,CAAAA,CAAAA;IAEvB,CAAA,CAAA,CAAA,CAAI,CAAA;;QAEA,IAAII,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAKC,oBAAAA,CAAAA,CAAsB,CAAA;;;AAGpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;QAGA,IAAIN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAKE,mBAAAA,CAAAA,CAAqB,CAAA;;;AAGnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,OAAAA,CAAAA,CAAAA,CAAUhC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAE,CAAA;QAC/B,CAAA,CAAA,CAAA,CAAI4B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAcK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA;;AAG3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAIG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAY,QAAA,CAAA,CAAA,CAAA,CAAYA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAkBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,SAAA,CAAA,CAAA,CAAA,CAAaA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAaA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,KAAUA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAYA,YAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAkBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAWA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAYA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAY,cAAA,CAAA,CAAgB,CAAA;YAC/PH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAcG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkB,CAAA,CAAA,CAAA;AAEtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA;YAChCD,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAACb,SAAAA,CAAAA,CAAAA;SACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBO,oBAAAA,CAAAA,CAAsB,CAAA;YAC7CH,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAACf,SAAAA,CAAAA,CAAAA;SACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBS,eAAAA,CAAAA,CAAiB,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,CAAClB,SAAAA,CAAAA,CAAAA;YAC7CW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAGM,eAAeE,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAEF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAeG,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAE,CAAA;SACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBc,eAAAA,CAAAA,CAAiB,CAAA;YACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,CAACtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;SAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBgB,YAAAA,CAAAA,CAAc,CAAA;YACrCZ,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAACxB,SAAAA,CAAAA,CAAAA;SACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBkB,cAAAA,CAAAA,CAAgB,CAAA;YACvCd,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMe,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAC1B,SAAAA,CAAAA,CAAAA;SACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBoB,oBAAAA,CAAAA,CAAsB,CAAA;YAC7ChB,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAAC5B,SAAAA,CAAAA,CAAAA;SACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBsB,aAAAA,CAAAA,CAAe,CAAA;YACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAC9B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACpBW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;SACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgBwB,cAAAA,CAAAA,CAAgB,CAAA;YACvCpB,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAChC,SAAAA,CAAAA,CAAAA;SACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAgB0B,oBAAAA,CAAAA,CAAsB,CAAA;YAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAAClC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC1BW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAGAwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAAA,CAAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAEzB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA;AAEpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO0B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;AACjBvC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOuC,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgCA,CAAAA,CAAAA,CAAAA,CAAAA,EAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAED,CAAAA,CAAAA,CAAAA,CAAAA,EAAME,KAAK,CAAA,CAAA;AACvE7D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ8D,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA;AAEAzD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;"}
@@ -0,0 +1,64 @@
1
+ import { Builder } from '@riotprompt/riotprompt';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { DEFAULT_PERSONA_YOU_FILE, DEFAULT_INSTRUCTIONS_COMMIT_FILE } from '../constants.js';
5
+ import { getLogger } from '../logging.js';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ /**
10
+ * Build a commit prompt using RiotPrompt Builder.
11
+ *
12
+ * @param model OpenAI / RiotPrompt model identifier
13
+ * @param runConfig The runtime configuration provided by the CLI
14
+ * @param content Mandatory content inputs (e.g. diff)
15
+ * @param ctx Optional contextual inputs configured by the user
16
+ */ const createPrompt = async ({ overridePath, overrides }, { diffContent, userDirection }, { logContext, context, directories } = {})=>{
17
+ const logger = getLogger();
18
+ let builder = Builder.create({
19
+ logger,
20
+ basePath: __dirname,
21
+ overridePath,
22
+ overrides: overrides || false
23
+ });
24
+ // Persona & core instructions
25
+ builder = await builder.addPersonaPath(DEFAULT_PERSONA_YOU_FILE);
26
+ builder = await builder.addInstructionPath(DEFAULT_INSTRUCTIONS_COMMIT_FILE);
27
+ // User-supplied direction overrides highest priority
28
+ if (userDirection) {
29
+ builder = await builder.addContent(userDirection, {
30
+ title: 'User Direction',
31
+ weight: 1.0
32
+ });
33
+ }
34
+ // Always include the diff produced by git
35
+ builder = await builder.addContent(diffContent, {
36
+ title: 'Diff',
37
+ weight: 0.5
38
+ });
39
+ // Auto-load additional context directories specified via CLI/RC file
40
+ if (directories === null || directories === void 0 ? void 0 : directories.length) {
41
+ builder = await builder.loadContext(directories, {
42
+ weight: 0.5
43
+ });
44
+ }
45
+ // Explicit user context (free-form text) – highest weight
46
+ if (context) {
47
+ builder = await builder.addContext(context, {
48
+ title: 'User Context',
49
+ weight: 1.0
50
+ });
51
+ }
52
+ // Git log context (previous commits)
53
+ if (logContext) {
54
+ builder = await builder.addContext(logContext, {
55
+ title: 'Log Context',
56
+ weight: 0.5
57
+ });
58
+ }
59
+ // Build and return the prompt
60
+ return await builder.build();
61
+ };
62
+
63
+ export { createPrompt };
64
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sources":["../../src/prompt/commit.ts"],"sourcesContent":["import { Builder, Prompt } from '@riotprompt/riotprompt';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_PERSONA_YOU_FILE } from '../constants';\nimport { getLogger } from '../logging';\nimport { Config as RunConfig } from '../types';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// Types for the commit prompt\nexport type Content = {\n diffContent: string;\n userDirection?: string;\n};\n\nexport type Context = {\n logContext?: string;\n context?: string;\n directories?: string[];\n};\n\nexport type Config = {\n overridePath?: string;\n overrides?: boolean;\n}\n\n/**\n * Build a commit prompt using RiotPrompt Builder.\n *\n * @param model OpenAI / RiotPrompt model identifier\n * @param runConfig The runtime configuration provided by the CLI\n * @param content Mandatory content inputs (e.g. diff)\n * @param ctx Optional contextual inputs configured by the user\n */\nexport const createPrompt = async (\n { overridePath, overrides }: Config,\n { diffContent, userDirection }: Content,\n { logContext, context, directories }: Context = {}\n): Promise<Prompt> => {\n const logger = getLogger();\n\n let builder: Builder.Instance = Builder.create({\n logger,\n basePath: __dirname,\n overridePath,\n overrides: overrides || false,\n });\n\n // Persona & core instructions\n builder = await builder.addPersonaPath(DEFAULT_PERSONA_YOU_FILE);\n builder = await builder.addInstructionPath(DEFAULT_INSTRUCTIONS_COMMIT_FILE);\n\n // User-supplied direction overrides highest priority\n if (userDirection) {\n builder = await builder.addContent(userDirection, { title: 'User Direction', weight: 1.0 });\n }\n\n // Always include the diff produced by git\n builder = await builder.addContent(diffContent, { title: 'Diff', weight: 0.5 });\n\n // Auto-load additional context directories specified via CLI/RC file\n if (directories?.length) {\n builder = await builder.loadContext(directories, { weight: 0.5 });\n }\n\n // Explicit user context (free-form text) – highest weight\n if (context) {\n builder = await builder.addContext(context, { title: 'User Context', weight: 1.0 });\n }\n\n // Git log context (previous commits)\n if (logContext) {\n builder = await builder.addContext(logContext, { title: 'Log Context', weight: 0.5 });\n }\n\n // Build and return the prompt\n return await builder.build();\n}; "],"names":["__filename","fileURLToPath","url","__dirname","path","dirname","createPrompt","overridePath","overrides","diffContent","userDirection","logContext","context","directories","logger","getLogger","builder","Builder","create","basePath","addPersonaPath","DEFAULT_PERSONA_YOU_FILE","addInstructionPath","DEFAULT_INSTRUCTIONS_COMMIT_FILE","addContent","title","weight","length","loadContext","addContext","build"],"mappings":";;;;;;AAOA,MAAMA,UAAAA,GAAaC,aAAAA,CAAc,MAAA,CAAA,IAAA,CAAYC,GAAG,CAAA;AAChD,MAAMC,SAAAA,GAAYC,IAAAA,CAAKC,OAAO,CAACL,UAAAA,CAAAA;AAmB/B;;;;;;;IAQO,MAAMM,YAAAA,GAAe,OACxB,EAAEC,YAAY,EAAEC,SAAS,EAAU,EACnC,EAAEC,WAAW,EAAEC,aAAa,EAAW,EACvC,EAAEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,EAAW,GAAG,EAAE,GAAA;AAElD,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;IAEf,IAAIC,OAAAA,GAA4BC,OAAAA,CAAQC,MAAM,CAAC;AAC3CJ,QAAAA,MAAAA;QACAK,QAAAA,EAAUhB,SAAAA;AACVI,QAAAA,YAAAA;AACAC,QAAAA,SAAAA,EAAWA,SAAAA,IAAa;AAC5B,KAAA,CAAA;;IAGAQ,OAAAA,GAAU,MAAMA,OAAAA,CAAQI,cAAc,CAACC,wBAAAA,CAAAA;IACvCL,OAAAA,GAAU,MAAMA,OAAAA,CAAQM,kBAAkB,CAACC,gCAAAA,CAAAA;;AAG3C,IAAA,IAAIb,aAAAA,EAAe;AACfM,QAAAA,OAAAA,GAAU,MAAMA,OAAAA,CAAQQ,UAAU,CAACd,aAAAA,EAAe;YAAEe,KAAAA,EAAO,gBAAA;YAAkBC,MAAAA,EAAQ;AAAI,SAAA,CAAA;AAC7F;;AAGAV,IAAAA,OAAAA,GAAU,MAAMA,OAAAA,CAAQQ,UAAU,CAACf,WAAAA,EAAa;QAAEgB,KAAAA,EAAO,MAAA;QAAQC,MAAAA,EAAQ;AAAI,KAAA,CAAA;;AAG7E,IAAA,IAAIb,WAAAA,KAAAA,IAAAA,IAAAA,WAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,WAAAA,CAAac,MAAM,EAAE;AACrBX,QAAAA,OAAAA,GAAU,MAAMA,OAAAA,CAAQY,WAAW,CAACf,WAAAA,EAAa;YAAEa,MAAAA,EAAQ;AAAI,SAAA,CAAA;AACnE;;AAGA,IAAA,IAAId,OAAAA,EAAS;AACTI,QAAAA,OAAAA,GAAU,MAAMA,OAAAA,CAAQa,UAAU,CAACjB,OAAAA,EAAS;YAAEa,KAAAA,EAAO,cAAA;YAAgBC,MAAAA,EAAQ;AAAI,SAAA,CAAA;AACrF;;AAGA,IAAA,IAAIf,UAAAA,EAAY;AACZK,QAAAA,OAAAA,GAAU,MAAMA,OAAAA,CAAQa,UAAU,CAAClB,UAAAA,EAAY;YAAEc,KAAAA,EAAO,aAAA;YAAeC,MAAAA,EAAQ;AAAI,SAAA,CAAA;AACvF;;IAGA,OAAO,MAAMV,QAAQc,KAAK,EAAA;AAC9B;;;;"}
@@ -1,11 +1,55 @@
1
1
  # You
2
2
 
3
- ## Traits
3
+ You are an intelligent assistant acting as the **default persona** for most KodrDriv commands (commit, review, audio-commit, audio-review). You combine the responsibilities of a GitHub project committer and a software project reviewer.
4
4
 
5
- You are a developer who is contributing to a project that is using Git for source control.
5
+ ---
6
6
 
7
- You are an expert at writing documentation for projects, and you are an expert developer who is familiar with the codebase and all of the languages and frameworks used in the project.
7
+ ## 🧑‍💻 Role
8
8
 
9
- ## Instructions
9
+ *Role Title*: Project Contributor / Committer & Reviewer
10
+ *Scope*: Regular contributor with write access who submits meaningful commits **and** reviews feedback to file actionable issues.
10
11
 
11
- You are being asked to write documents that capture the details of changes that have been made to a git project.
12
+ ---
13
+
14
+ ## 🔑 Responsibilities
15
+
16
+ ### Submit Meaningful Commits
17
+ * Generate clear, purposeful, and well-scoped commit messages that align with project standards.
18
+ * Respect linked issues, project priorities, and any provided *User Context*.
19
+
20
+ ### Extract & File Actionable Issues
21
+ * Analyse review notes (text or audio transcripts).
22
+ * Convert spoken or written observations into structured GitHub issues.
23
+ * Categorise issues (UI, content, functionality, etc.) and assign sensible priority.
24
+
25
+ ### Maintain Focus & Quality
26
+ * Filter out non-actionable commentary and subjective opinions.
27
+ * Provide concrete suggestions that developers can implement.
28
+ * Treat documentation changes with the same diligence as code edits.
29
+
30
+ ---
31
+
32
+ ## 🛠 Technical Proficiencies
33
+
34
+ * Proficient in project languages & tooling (TypeScript, Node.js, etc.).
35
+ * Comfortable with Git workflows: feature branching, squash-and-merge, rebase.
36
+ * Runs pre-commit hooks, linting, and tests before pushing changes.
37
+
38
+ ---
39
+
40
+ ## 🧭 Operating Principles
41
+
42
+ * **Clarity > Brevity > Cleverness** – commit messages and issues are communication tools.
43
+ * Consider the future reader: teammates, open-source collaborators, or even your future self.
44
+ * Focus on user experience and practical functionality when filing issues.
45
+
46
+ ---
47
+
48
+ ## ✏️ Customisation
49
+
50
+ Users can customise this persona by creating either of the following optional files in their configuration directory (`.kodrdriv/personas/`):
51
+
52
+ * **`you-pre.md`** – Content that will be *prepended* to this default persona.
53
+ * **`you-post.md`** – Content that will be *appended* to this default persona.
54
+
55
+ If present, KodrDriv will automatically merge these custom snippets, allowing you to fine-tune the behaviour of the default persona without editing this file directly.