@eldrforge/kodrdriv 1.2.137 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUG_TREE_PUBLISH_CONFIG_DIR.md +79 -0
- package/README.md +76 -3
- package/dist/application.js +51 -6
- package/dist/application.js.map +1 -1
- package/dist/arguments.js +52 -11
- package/dist/arguments.js.map +1 -1
- package/dist/constants.js +6 -2
- package/dist/constants.js.map +1 -1
- package/dist/logging.js +63 -58
- package/dist/logging.js.map +1 -1
- package/dist/mcp/prompts/check_development.md +169 -0
- package/dist/mcp/prompts/dependency_update.md +62 -0
- package/dist/mcp/prompts/fix_and_commit.md +53 -0
- package/dist/mcp/prompts/publish.md +100 -0
- package/dist/mcp/prompts/tree_fix_and_commit.md +102 -0
- package/dist/mcp/prompts/tree_publish.md +118 -0
- package/dist/mcp-server.js +15601 -0
- package/dist/mcp-server.js.map +7 -0
- package/dist/types.js +23 -3
- package/dist/types.js.map +1 -1
- package/guide/index.md +9 -0
- package/guide/quickstart.md +23 -0
- package/package.json +29 -19
- package/packages/components/package.json +4 -1
- package/packages/tools/package.json +4 -1
- package/packages/utils/package.json +4 -1
- package/scripts/build-mcp.js +111 -0
- package/scripts/test-get-version-tool.js +102 -0
- package/scripts/test-mcp-compliance.js +254 -0
- package/AI-GUIDE.md +0 -837
package/dist/types.js
CHANGED
|
@@ -81,6 +81,9 @@ const ConfigSchema = z.object({
|
|
|
81
81
|
maxAgenticIterations: z.number().optional(),
|
|
82
82
|
selfReflection: z.boolean().optional()
|
|
83
83
|
}).optional(),
|
|
84
|
+
precommit: z.object({
|
|
85
|
+
fix: z.boolean().optional()
|
|
86
|
+
}).optional(),
|
|
84
87
|
review: z.object({
|
|
85
88
|
includeCommitHistory: z.boolean().optional(),
|
|
86
89
|
includeRecentDiffs: z.boolean().optional(),
|
|
@@ -158,7 +161,8 @@ const ConfigSchema = z.object({
|
|
|
158
161
|
skipPrePublishMerge: z.boolean().optional(),
|
|
159
162
|
updateDeps: z.string().optional(),
|
|
160
163
|
agenticPublish: z.boolean().optional(),
|
|
161
|
-
agenticPublishMaxIterations: z.number().optional()
|
|
164
|
+
agenticPublishMaxIterations: z.number().optional(),
|
|
165
|
+
skipLinkCleanup: z.boolean().optional()
|
|
162
166
|
}).optional(),
|
|
163
167
|
branches: z.record(z.string(), z.object({
|
|
164
168
|
targetBranch: z.string().optional(),
|
|
@@ -204,6 +208,7 @@ const ConfigSchema = z.object({
|
|
|
204
208
|
packageArgument: z.string().optional(),
|
|
205
209
|
cleanNodeModules: z.boolean().optional(),
|
|
206
210
|
externals: z.array(z.string()).optional(),
|
|
211
|
+
fix: z.boolean().optional(),
|
|
207
212
|
// Parallel execution options
|
|
208
213
|
parallel: z.boolean().optional(),
|
|
209
214
|
maxConcurrency: z.number().optional(),
|
|
@@ -239,7 +244,8 @@ const ConfigSchema = z.object({
|
|
|
239
244
|
resetPackage: z.string().optional(),
|
|
240
245
|
statusParallel: z.boolean().optional(),
|
|
241
246
|
auditBranches: z.boolean().optional(),
|
|
242
|
-
validateState: z.boolean().optional()
|
|
247
|
+
validateState: z.boolean().optional(),
|
|
248
|
+
order: z.boolean().optional()
|
|
243
249
|
}).optional(),
|
|
244
250
|
development: z.object({
|
|
245
251
|
targetVersion: z.string().optional(),
|
|
@@ -254,8 +260,22 @@ const ConfigSchema = z.object({
|
|
|
254
260
|
}).optional(),
|
|
255
261
|
updates: z.object({
|
|
256
262
|
scope: z.string().optional(),
|
|
263
|
+
scopes: z.array(z.string()).optional(),
|
|
257
264
|
directories: z.array(z.string()).optional(),
|
|
258
|
-
interProject: z.boolean().optional()
|
|
265
|
+
interProject: z.boolean().optional(),
|
|
266
|
+
report: z.boolean().optional(),
|
|
267
|
+
analyze: z.boolean().optional(),
|
|
268
|
+
strategy: z.enum([
|
|
269
|
+
'latest',
|
|
270
|
+
'conservative',
|
|
271
|
+
'compatible'
|
|
272
|
+
]).optional()
|
|
273
|
+
}).optional(),
|
|
274
|
+
pull: z.object({
|
|
275
|
+
remote: z.string().optional(),
|
|
276
|
+
branch: z.string().optional(),
|
|
277
|
+
autoStash: z.boolean().optional(),
|
|
278
|
+
autoResolve: z.boolean().optional()
|
|
259
279
|
}).optional(),
|
|
260
280
|
excludedPatterns: z.array(z.string()).optional(),
|
|
261
281
|
traits: z.any().optional(),
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n push: z.union([z.boolean(), z.string()]).optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n contextFiles: z.array(z.string()).optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n // Agentic options (always enabled)\n maxAgenticIterations: z.number().optional(),\n allowCommitSplitting: z.boolean().optional(),\n autoSplit: z.boolean().optional(), // Defaults to true if not specified (see commit.ts)\n toolTimeout: z.number().optional(),\n selfReflection: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n contextFiles: z.array(z.string()).optional(),\n interactive: z.boolean().optional(),\n focus: z.string().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n noMilestones: z.boolean().optional(),\n fromMain: z.boolean().optional(),\n currentBranch: z.string().optional(),\n // Agentic options (always enabled)\n maxAgenticIterations: z.number().optional(),\n selfReflection: z.boolean().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n file: z.string().optional(), // File path to read review note from\n directory: z.string().optional(), // Directory to process multiple review files\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n from: z.string().optional(),\n targetVersion: z.string().optional(),\n interactive: z.boolean().optional(),\n skipAlreadyPublished: z.boolean().optional(),\n forceRepublish: z.boolean().optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n scopedDependencyUpdates: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n syncTarget: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n targetBranch: z.string().optional(),\n noMilestones: z.boolean().optional(),\n fromMain: z.boolean().optional(),\n skipPrePublishMerge: z.boolean().optional(),\n updateDeps: z.string().optional(),\n agenticPublish: z.boolean().optional(),\n agenticPublishMaxIterations: z.number().optional(),\n }).optional(),\n branches: z.record(z.string(), z.object({\n targetBranch: z.string().optional(),\n developmentBranch: z.boolean().optional(),\n version: z.object({\n type: z.enum(['release', 'prerelease']),\n increment: z.boolean().optional(),\n incrementLevel: z.enum(['patch', 'minor', 'major']).optional(),\n tag: z.string().optional(),\n }).optional(),\n })).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n packageArgument: z.string().optional(),\n externals: z.array(z.string()).optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n cleanNodeModules: z.boolean().optional(),\n packageArgument: z.string().optional(),\n externals: z.array(z.string()).optional(),\n }).optional(),\n tree: z.object({\n directories: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n stopAt: z.string().optional(),\n cmd: z.string().optional(),\n builtInCommand: z.string().optional(),\n continue: z.boolean().optional(),\n status: z.boolean().optional(),\n promote: z.string().optional(),\n packageArgument: z.string().optional(),\n cleanNodeModules: z.boolean().optional(),\n externals: z.array(z.string()).optional(),\n // Parallel execution options\n parallel: z.boolean().optional(),\n maxConcurrency: z.number().optional(),\n retry: z.object({\n maxAttempts: z.number().optional(),\n initialDelayMs: z.number().optional(),\n maxDelayMs: z.number().optional(),\n backoffMultiplier: z.number().optional(),\n retriableErrors: z.array(z.string()).optional(),\n }).optional(),\n recovery: z.object({\n checkpointInterval: z.enum(['package', 'batch']).optional(),\n autoRetry: z.boolean().optional(),\n continueOnError: z.boolean().optional(),\n }).optional(),\n monitoring: z.object({\n showProgress: z.boolean().optional(),\n showMetrics: z.boolean().optional(),\n logLevel: z.enum(['minimal', 'normal', 'verbose']).optional(),\n }).optional(),\n // Recovery options\n markCompleted: z.array(z.string()).optional(),\n skipPackages: z.array(z.string()).optional(),\n retryFailed: z.boolean().optional(),\n skipFailed: z.boolean().optional(),\n resetPackage: z.string().optional(),\n statusParallel: z.boolean().optional(),\n auditBranches: z.boolean().optional(),\n validateState: z.boolean().optional(),\n }).optional(),\n development: z.object({\n targetVersion: z.string().optional(),\n noMilestones: z.boolean().optional(),\n tagWorkingBranch: z.boolean().optional(),\n createRetroactiveTags: z.boolean().optional(),\n workingTagPrefix: z.string().optional(),\n }).optional(),\n versions: z.object({\n subcommand: z.string().optional(),\n directories: z.array(z.string()).optional(),\n }).optional(),\n updates: z.object({\n scope: z.string().optional(),\n directories: z.array(z.string()).optional(),\n interProject: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n traits: z.any().optional(), // Add traits property for cardigantime compatibility\n stopContext: z.object({\n enabled: z.boolean().optional(),\n strings: z.array(z.string()).optional(),\n patterns: z.array(z.object({\n regex: z.string(),\n flags: z.string().optional(),\n description: z.string().optional(),\n })).optional(),\n caseSensitive: z.boolean().optional(),\n replacement: z.string().optional(),\n warnOnFilter: z.boolean().optional(),\n }).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels?: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n contextFiles?: string[]; // Additional context from files\n interactive?: boolean;\n focus?: string;\n messageLimit?: number;\n maxDiffBytes?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n currentBranch?: string;\n // Agentic options (always enabled)\n maxAgenticIterations?: number;\n selfReflection?: boolean;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type CommitConfig = {\n add?: boolean;\n cached?: boolean;\n sendit?: boolean;\n interactive?: boolean;\n amend?: boolean;\n push?: string | boolean;\n messageLimit?: number;\n context?: string;\n contextFiles?: string[]; // Additional context from files\n direction?: string;\n skipFileCheck?: boolean;\n maxDiffBytes?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n // Agentic options (always enabled)\n maxAgenticIterations?: number;\n allowCommitSplitting?: boolean;\n autoSplit?: boolean;\n toolTimeout?: number;\n selfReflection?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type LinkConfig = {\n scopeRoots?: Record<string, string>;\n dryRun?: boolean;\n packageArgument?: string;\n externalLinkPatterns?: string[];\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n cleanNodeModules?: boolean;\n packageArgument?: string;\n}\n\nexport type PublishConfig = {\n mergeMethod?: 'merge' | 'squash' | 'rebase';\n from?: string;\n targetVersion?: string;\n interactive?: boolean;\n skipAlreadyPublished?: boolean;\n forceRepublish?: boolean;\n syncTarget?: boolean;\n dependencyUpdatePatterns?: string[];\n scopedDependencyUpdates?: string[];\n requiredEnvVars?: string[];\n linkWorkspacePackages?: boolean;\n unlinkWorkspacePackages?: boolean;\n checksTimeout?: number;\n skipUserConfirmation?: boolean;\n sendit?: boolean;\n waitForReleaseWorkflows?: boolean;\n releaseWorkflowsTimeout?: number;\n releaseWorkflowNames?: string[];\n targetBranch?: string;\n noMilestones?: boolean;\n updateDeps?: string; // scope for inter-project dependency updates (e.g., '@fjell')\n agenticPublish?: boolean; // use AI agent to automatically diagnose and fix publish issues\n agenticPublishMaxIterations?: number; // maximum iterations for agentic publish (default: 10)\n}\n\nexport type VersionTargetConfig = {\n type: 'release' | 'prerelease';\n increment?: boolean;\n tag?: string;\n}\n\nexport type BranchTargetConfig = {\n targetBranch: string;\n developmentBranch?: boolean;\n version?: VersionTargetConfig;\n}\n\nexport type TargetsConfig = Record<string, BranchTargetConfig>;\n\nexport type TreeConfig = {\n directories?: string[];\n excludedPatterns?: string[];\n exclude?: string[]; // Alias for excludedPatterns\n startFrom?: string;\n stopAt?: string;\n cmd?: string;\n\n builtInCommand?: string;\n continue?: boolean; // Continue from previous tree publish execution\n status?: boolean; // Check status of running tree publish processes\n promote?: string; // Mark a package as completed in the execution context\n packageArgument?: string; // Package argument for link/unlink commands (e.g., \"@fjell\" or \"@fjell/core\")\n cleanNodeModules?: boolean; // For unlink command: remove node_modules and package-lock.json, then reinstall dependencies\n externalLinkPatterns?: string[];\n externals?: string[]; // Alias for externalLinkPatterns\n\n // Parallel execution options\n parallel?: boolean;\n maxConcurrency?: number;\n retry?: {\n maxAttempts: number;\n initialDelayMs: number;\n maxDelayMs: number;\n backoffMultiplier: number;\n retriableErrors?: string[];\n };\n recovery?: {\n checkpointInterval: 'package' | 'batch';\n autoRetry: boolean;\n continueOnError: boolean;\n };\n monitoring?: {\n showProgress: boolean;\n showMetrics: boolean;\n logLevel: 'minimal' | 'normal' | 'verbose';\n };\n\n // Recovery options\n markCompleted?: string[];\n skipPackages?: string[];\n retryFailed?: boolean;\n skipFailed?: boolean;\n resetPackage?: string;\n statusParallel?: boolean;\n auditBranches?: boolean;\n validateState?: boolean;\n}\n\nexport type DevelopmentConfig = {\n targetVersion?: string; // 'patch', 'minor', 'major', or explicit version like '2.1.0' (default: 'patch')\n noMilestones?: boolean; // Disable GitHub milestone integration\n tagWorkingBranch?: boolean; // Tag working branch with release version before bumping to dev (default: true)\n createRetroactiveTags?: boolean; // Create tags for past releases found in git history (default: false)\n workingTagPrefix?: string; // Tag prefix for working branch tags (default: 'working/')\n}\n\nexport type VersionsConfig = {\n subcommand?: string; // 'minor' or other versioning strategies\n directories?: string[]; // directories to scan for packages\n}\n\nexport type UpdatesConfig = {\n scope?: string; // npm scope to update (e.g., '@fjell', '@getdidthey')\n directories?: string[]; // directories to scan for packages (tree mode)\n interProject?: boolean; // update inter-project dependencies based on tree state\n}\n\nexport type StopContextPattern = {\n regex: string;\n flags?: string;\n description?: string;\n}\n\nexport type StopContextConfig = {\n enabled?: boolean;\n strings?: string[];\n patterns?: StopContextPattern[];\n caseSensitive?: boolean;\n replacement?: string;\n warnOnFilter?: boolean;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","openaiReasoning","enum","openaiMaxOutputTokens","number","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","interactive","amend","push","union","messageLimit","context","contextFiles","direction","skipFileCheck","maxDiffBytes","maxAgenticIterations","allowCommitSplitting","autoSplit","toolTimeout","selfReflection","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","noMilestones","fromMain","currentBranch","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","directory","audioReview","publish","mergeMethod","targetVersion","skipAlreadyPublished","forceRepublish","dependencyUpdatePatterns","scopedDependencyUpdates","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","syncTarget","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","targetBranch","skipPrePublishMerge","updateDeps","agenticPublish","agenticPublishMaxIterations","branches","record","developmentBranch","version","type","increment","incrementLevel","tag","link","scopeRoots","packageArgument","externals","unlink","workspaceFile","cleanNodeModules","tree","directories","exclude","startFrom","stopAt","cmd","builtInCommand","continue","status","promote","parallel","maxConcurrency","retry","maxAttempts","initialDelayMs","maxDelayMs","backoffMultiplier","retriableErrors","recovery","checkpointInterval","autoRetry","continueOnError","monitoring","showProgress","showMetrics","logLevel","markCompleted","skipPackages","retryFailed","skipFailed","resetPackage","statusParallel","auditBranches","validateState","development","tagWorkingBranch","createRetroactiveTags","workingTagPrefix","versions","subcommand","updates","scope","interProject","excludedPatterns","traits","any","stopContext","enabled","strings","patterns","regex","flags","description","caseSensitive","replacement","warnOnFilter","openaiApiKey","commandName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n push: z.union([z.boolean(), z.string()]).optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n contextFiles: z.array(z.string()).optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n // Agentic options (always enabled)\n maxAgenticIterations: z.number().optional(),\n allowCommitSplitting: z.boolean().optional(),\n autoSplit: z.boolean().optional(), // Defaults to true if not specified (see commit.ts)\n toolTimeout: z.number().optional(),\n selfReflection: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n contextFiles: z.array(z.string()).optional(),\n interactive: z.boolean().optional(),\n focus: z.string().optional(),\n maxDiffBytes: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n noMilestones: z.boolean().optional(),\n fromMain: z.boolean().optional(),\n currentBranch: z.string().optional(),\n // Agentic options (always enabled)\n maxAgenticIterations: z.number().optional(),\n selfReflection: z.boolean().optional(),\n }).optional(),\n precommit: z.object({\n fix: z.boolean().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n file: z.string().optional(), // File path to read review note from\n directory: z.string().optional(), // Directory to process multiple review files\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n from: z.string().optional(),\n targetVersion: z.string().optional(),\n interactive: z.boolean().optional(),\n skipAlreadyPublished: z.boolean().optional(),\n forceRepublish: z.boolean().optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n scopedDependencyUpdates: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n syncTarget: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n targetBranch: z.string().optional(),\n noMilestones: z.boolean().optional(),\n fromMain: z.boolean().optional(),\n skipPrePublishMerge: z.boolean().optional(),\n updateDeps: z.string().optional(),\n agenticPublish: z.boolean().optional(),\n agenticPublishMaxIterations: z.number().optional(),\n skipLinkCleanup: z.boolean().optional(),\n }).optional(),\n branches: z.record(z.string(), z.object({\n targetBranch: z.string().optional(),\n developmentBranch: z.boolean().optional(),\n version: z.object({\n type: z.enum(['release', 'prerelease']),\n increment: z.boolean().optional(),\n incrementLevel: z.enum(['patch', 'minor', 'major']).optional(),\n tag: z.string().optional(),\n }).optional(),\n })).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n packageArgument: z.string().optional(),\n externals: z.array(z.string()).optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n cleanNodeModules: z.boolean().optional(),\n packageArgument: z.string().optional(),\n externals: z.array(z.string()).optional(),\n }).optional(),\n tree: z.object({\n directories: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n stopAt: z.string().optional(),\n cmd: z.string().optional(),\n builtInCommand: z.string().optional(),\n continue: z.boolean().optional(),\n status: z.boolean().optional(),\n promote: z.string().optional(),\n packageArgument: z.string().optional(),\n cleanNodeModules: z.boolean().optional(),\n externals: z.array(z.string()).optional(),\n fix: z.boolean().optional(),\n // Parallel execution options\n parallel: z.boolean().optional(),\n maxConcurrency: z.number().optional(),\n retry: z.object({\n maxAttempts: z.number().optional(),\n initialDelayMs: z.number().optional(),\n maxDelayMs: z.number().optional(),\n backoffMultiplier: z.number().optional(),\n retriableErrors: z.array(z.string()).optional(),\n }).optional(),\n recovery: z.object({\n checkpointInterval: z.enum(['package', 'batch']).optional(),\n autoRetry: z.boolean().optional(),\n continueOnError: z.boolean().optional(),\n }).optional(),\n monitoring: z.object({\n showProgress: z.boolean().optional(),\n showMetrics: z.boolean().optional(),\n logLevel: z.enum(['minimal', 'normal', 'verbose']).optional(),\n }).optional(),\n // Recovery options\n markCompleted: z.array(z.string()).optional(),\n skipPackages: z.array(z.string()).optional(),\n retryFailed: z.boolean().optional(),\n skipFailed: z.boolean().optional(),\n resetPackage: z.string().optional(),\n statusParallel: z.boolean().optional(),\n auditBranches: z.boolean().optional(),\n validateState: z.boolean().optional(),\n order: z.boolean().optional(),\n }).optional(),\n development: z.object({\n targetVersion: z.string().optional(),\n noMilestones: z.boolean().optional(),\n tagWorkingBranch: z.boolean().optional(),\n createRetroactiveTags: z.boolean().optional(),\n workingTagPrefix: z.string().optional(),\n }).optional(),\n versions: z.object({\n subcommand: z.string().optional(),\n directories: z.array(z.string()).optional(),\n }).optional(),\n updates: z.object({\n scope: z.string().optional(),\n scopes: z.array(z.string()).optional(), // Default scopes to check when no scope provided\n directories: z.array(z.string()).optional(),\n interProject: z.boolean().optional(),\n report: z.boolean().optional(), // Generate dependency analysis report\n analyze: z.boolean().optional(), // Run AI-powered dependency analysis\n strategy: z.enum(['latest', 'conservative', 'compatible']).optional(), // Strategy for analyze\n }).optional(),\n pull: z.object({\n remote: z.string().optional(), // Remote to pull from (default: 'origin')\n branch: z.string().optional(), // Branch to pull (default: current branch)\n autoStash: z.boolean().optional(), // Auto-stash local changes\n autoResolve: z.boolean().optional(), // Auto-resolve common conflicts\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n traits: z.any().optional(), // Add traits property for cardigantime compatibility\n stopContext: z.object({\n enabled: z.boolean().optional(),\n strings: z.array(z.string()).optional(),\n patterns: z.array(z.object({\n regex: z.string(),\n flags: z.string().optional(),\n description: z.string().optional(),\n })).optional(),\n caseSensitive: z.boolean().optional(),\n replacement: z.string().optional(),\n warnOnFilter: z.boolean().optional(),\n }).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels?: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n contextFiles?: string[]; // Additional context from files\n interactive?: boolean;\n focus?: string;\n messageLimit?: number;\n maxDiffBytes?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n currentBranch?: string;\n // Agentic options (always enabled)\n maxAgenticIterations?: number;\n selfReflection?: boolean;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type CommitConfig = {\n add?: boolean;\n cached?: boolean;\n sendit?: boolean;\n interactive?: boolean;\n amend?: boolean;\n push?: string | boolean;\n messageLimit?: number;\n context?: string;\n contextFiles?: string[]; // Additional context from files\n direction?: string;\n skipFileCheck?: boolean;\n maxDiffBytes?: number;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n // Agentic options (always enabled)\n maxAgenticIterations?: number;\n allowCommitSplitting?: boolean;\n autoSplit?: boolean;\n toolTimeout?: number;\n selfReflection?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n model?: string;\n openaiReasoning?: 'low' | 'medium' | 'high';\n openaiMaxOutputTokens?: number;\n}\n\nexport type LinkConfig = {\n scopeRoots?: Record<string, string>;\n dryRun?: boolean;\n packageArgument?: string;\n externalLinkPatterns?: string[];\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n cleanNodeModules?: boolean;\n packageArgument?: string;\n}\n\nexport type PublishConfig = {\n mergeMethod?: 'merge' | 'squash' | 'rebase';\n from?: string;\n targetVersion?: string;\n interactive?: boolean;\n skipAlreadyPublished?: boolean;\n forceRepublish?: boolean;\n syncTarget?: boolean;\n dependencyUpdatePatterns?: string[];\n scopedDependencyUpdates?: string[];\n requiredEnvVars?: string[];\n linkWorkspacePackages?: boolean;\n unlinkWorkspacePackages?: boolean;\n checksTimeout?: number;\n skipUserConfirmation?: boolean;\n sendit?: boolean;\n waitForReleaseWorkflows?: boolean;\n releaseWorkflowsTimeout?: number;\n releaseWorkflowNames?: string[];\n targetBranch?: string;\n noMilestones?: boolean;\n updateDeps?: string; // scope for inter-project dependency updates (e.g., '@fjell')\n agenticPublish?: boolean; // use AI agent to automatically diagnose and fix publish issues\n agenticPublishMaxIterations?: number; // maximum iterations for agentic publish (default: 10)\n}\n\nexport type VersionTargetConfig = {\n type: 'release' | 'prerelease';\n increment?: boolean;\n tag?: string;\n}\n\nexport type BranchTargetConfig = {\n targetBranch: string;\n developmentBranch?: boolean;\n version?: VersionTargetConfig;\n}\n\nexport type TargetsConfig = Record<string, BranchTargetConfig>;\n\nexport type TreeConfig = {\n directories?: string[];\n excludedPatterns?: string[];\n exclude?: string[]; // Alias for excludedPatterns\n startFrom?: string;\n stopAt?: string;\n cmd?: string;\n\n builtInCommand?: string;\n continue?: boolean; // Continue from previous tree publish execution\n status?: boolean; // Check status of running tree publish processes\n promote?: string; // Mark a package as completed in the execution context\n packageArgument?: string; // Package argument for link/unlink commands (e.g., \"@fjell\" or \"@fjell/core\")\n cleanNodeModules?: boolean; // For unlink command: remove node_modules and package-lock.json, then reinstall dependencies\n externalLinkPatterns?: string[];\n externals?: string[]; // Alias for externalLinkPatterns\n\n // Parallel execution options\n parallel?: boolean;\n maxConcurrency?: number;\n retry?: {\n maxAttempts: number;\n initialDelayMs: number;\n maxDelayMs: number;\n backoffMultiplier: number;\n retriableErrors?: string[];\n };\n recovery?: {\n checkpointInterval: 'package' | 'batch';\n autoRetry: boolean;\n continueOnError: boolean;\n };\n monitoring?: {\n showProgress: boolean;\n showMetrics: boolean;\n logLevel: 'minimal' | 'normal' | 'verbose';\n };\n\n // Recovery options\n markCompleted?: string[];\n skipPackages?: string[];\n retryFailed?: boolean;\n skipFailed?: boolean;\n resetPackage?: string;\n statusParallel?: boolean;\n auditBranches?: boolean;\n validateState?: boolean;\n order?: boolean;\n}\n\nexport type DevelopmentConfig = {\n targetVersion?: string; // 'patch', 'minor', 'major', or explicit version like '2.1.0' (default: 'patch')\n noMilestones?: boolean; // Disable GitHub milestone integration\n tagWorkingBranch?: boolean; // Tag working branch with release version before bumping to dev (default: true)\n createRetroactiveTags?: boolean; // Create tags for past releases found in git history (default: false)\n workingTagPrefix?: string; // Tag prefix for working branch tags (default: 'working/')\n}\n\nexport type VersionsConfig = {\n subcommand?: string; // 'minor' or other versioning strategies\n directories?: string[]; // directories to scan for packages\n}\n\nexport type UpdatesConfig = {\n scope?: string; // npm scope to update (e.g., '@fjell', '@getdidthey')\n scopes?: string[]; // Default scopes to check when no scope is provided\n directories?: string[]; // directories to scan for packages (tree mode)\n interProject?: boolean; // update inter-project dependencies based on tree state\n report?: boolean; // Generate dependency analysis report instead of updating\n analyze?: boolean; // Run AI-powered dependency analysis\n strategy?: 'latest' | 'conservative' | 'compatible'; // Strategy for analyze mode\n}\n\nexport type PullConfig = {\n remote?: string; // Remote to pull from (default: 'origin')\n branch?: string; // Branch to pull (default: current branch)\n autoStash?: boolean; // Auto-stash local changes (default: true)\n autoResolve?: boolean; // Auto-resolve common conflicts (default: true)\n}\n\nexport type StopContextPattern = {\n regex: string;\n flags?: string;\n description?: string;\n}\n\nexport type StopContextConfig = {\n enabled?: boolean;\n strings?: string[];\n patterns?: StopContextPattern[];\n caseSensitive?: boolean;\n replacement?: string;\n warnOnFilter?: boolean;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","openaiReasoning","enum","openaiMaxOutputTokens","number","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","interactive","amend","push","union","messageLimit","context","contextFiles","direction","skipFileCheck","maxDiffBytes","maxAgenticIterations","allowCommitSplitting","autoSplit","toolTimeout","selfReflection","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","noMilestones","fromMain","currentBranch","precommit","fix","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","directory","audioReview","publish","mergeMethod","targetVersion","skipAlreadyPublished","forceRepublish","dependencyUpdatePatterns","scopedDependencyUpdates","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","syncTarget","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","targetBranch","skipPrePublishMerge","updateDeps","agenticPublish","agenticPublishMaxIterations","skipLinkCleanup","branches","record","developmentBranch","version","type","increment","incrementLevel","tag","link","scopeRoots","packageArgument","externals","unlink","workspaceFile","cleanNodeModules","tree","directories","exclude","startFrom","stopAt","cmd","builtInCommand","continue","status","promote","parallel","maxConcurrency","retry","maxAttempts","initialDelayMs","maxDelayMs","backoffMultiplier","retriableErrors","recovery","checkpointInterval","autoRetry","continueOnError","monitoring","showProgress","showMetrics","logLevel","markCompleted","skipPackages","retryFailed","skipFailed","resetPackage","statusParallel","auditBranches","validateState","order","development","tagWorkingBranch","createRetroactiveTags","workingTagPrefix","versions","subcommand","updates","scope","scopes","interProject","report","analyze","strategy","pull","remote","branch","autoStash","autoResolve","excludedPatterns","traits","any","stopContext","enabled","strings","patterns","regex","flags","description","caseSensitive","replacement","warnOnFilter","openaiApiKey","commandName"],"mappings":"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"}
|
package/guide/index.md
CHANGED
|
@@ -8,6 +8,15 @@ KodrDriv automates Git workflows by using AI to generate intelligent commit mess
|
|
|
8
8
|
|
|
9
9
|
**Core Value**: Solves the "context switch" problem - when you're deep in code and Git asks you to summarize what you've done, kodrdriv analyzes your changes and writes documentation that reflects your actual work.
|
|
10
10
|
|
|
11
|
+
### MCP Integration
|
|
12
|
+
|
|
13
|
+
KodrDriv supports the **Model Context Protocol (MCP)**, allowing AI assistants like Cursor to directly invoke all kodrdriv commands:
|
|
14
|
+
- **14 Tools**: commit, release, publish, development, precommit, tree operations, and more
|
|
15
|
+
- **8 Resources**: Access config, status, and workspace data via `kodrdriv://` URIs
|
|
16
|
+
- **6 Prompts**: Guided workflows for common operations
|
|
17
|
+
|
|
18
|
+
See [`MCP_INTEGRATION.md`](../MCP_INTEGRATION.md) for details.
|
|
19
|
+
|
|
11
20
|
## Guide Contents
|
|
12
21
|
|
|
13
22
|
### Getting Started
|
package/guide/quickstart.md
CHANGED
|
@@ -22,8 +22,13 @@ npm install -g @eldrforge/kodrdriv
|
|
|
22
22
|
```bash
|
|
23
23
|
export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
24
24
|
export GITHUB_TOKEN="ghp-your-github-token-here" # Optional, for publish
|
|
25
|
+
|
|
26
|
+
# If your API key starts with sk-proj-, you must also set:
|
|
27
|
+
export OPENAI_PROJECT_ID="proj-your-project-id"
|
|
25
28
|
```
|
|
26
29
|
|
|
30
|
+
**Important:** Project-scoped API keys (starting with `sk-proj-`) require the `OPENAI_PROJECT_ID` environment variable. You can find your project ID at https://platform.openai.com/settings/organization/projects
|
|
31
|
+
|
|
27
32
|
Add to your shell profile (~/.zshrc, ~/.bashrc) to persist.
|
|
28
33
|
|
|
29
34
|
### 2. Initialize Configuration
|
|
@@ -181,6 +186,24 @@ echo $OPENAI_API_KEY
|
|
|
181
186
|
|
|
182
187
|
# Set it
|
|
183
188
|
export OPENAI_API_KEY="your-key"
|
|
189
|
+
|
|
190
|
+
# If using project-scoped key (sk-proj-*), also set:
|
|
191
|
+
export OPENAI_PROJECT_ID="proj-your-project-id"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### "401 You do not have access to the project tied to the API key"
|
|
195
|
+
|
|
196
|
+
This error occurs when using a project-scoped API key without setting `OPENAI_PROJECT_ID`:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Check if your key is project-scoped
|
|
200
|
+
echo $OPENAI_API_KEY | grep "sk-proj"
|
|
201
|
+
|
|
202
|
+
# If it is, set the project ID:
|
|
203
|
+
export OPENAI_PROJECT_ID="proj-your-project-id"
|
|
204
|
+
|
|
205
|
+
# Find your project ID at:
|
|
206
|
+
# https://platform.openai.com/settings/organization/projects
|
|
184
207
|
```
|
|
185
208
|
|
|
186
209
|
### "No changes to commit"
|
package/package.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eldrforge/kodrdriv",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Create Intelligent Release Notes or Change Logs from Git",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"kodrdriv": "./dist/main.js"
|
|
8
|
+
"kodrdriv": "./dist/main.js",
|
|
9
|
+
"kodrdriv-mcp": "./dist/mcp-server.js"
|
|
9
10
|
},
|
|
10
11
|
"repository": {
|
|
11
12
|
"type": "git",
|
|
12
13
|
"url": "git+https://github.com/grunnverk/kodrdriv.git"
|
|
13
14
|
},
|
|
14
15
|
"scripts": {
|
|
15
|
-
"build": "npm run lint && tsc --noEmit && vite build && copyfiles -u 1 \"src/**/*.md\" dist && chmod 755 ./dist/main.js 2>/dev/null || chmod 755 ./dist/kodrdriv/src/main.js",
|
|
16
|
+
"build": "npm run lint && tsc --noEmit && vite build && node scripts/build-mcp.js && copyfiles -u 1 \"src/**/*.md\" dist && chmod 755 ./dist/main.js 2>/dev/null || chmod 755 ./dist/kodrdriv/src/main.js",
|
|
16
17
|
"start": "dist/main.js",
|
|
17
18
|
"dev": "vite",
|
|
18
19
|
"watch": "vite build --watch",
|
|
@@ -20,8 +21,12 @@
|
|
|
20
21
|
"lint": "eslint . --ext .ts",
|
|
21
22
|
"lint:fix": "eslint . --ext .ts --fix",
|
|
22
23
|
"clean": "rm -rf dist",
|
|
23
|
-
"precommit": "npm run build && npm run lint && npm run test",
|
|
24
|
+
"precommit": "npm run build && npm run lint && npm run test && npm run mcp:test",
|
|
24
25
|
"prepublishOnly": "npm run lint && npm run build && npm run test",
|
|
26
|
+
"mcp:build": "vite build && chmod 755 ./dist/mcp-server.js 2>/dev/null || true",
|
|
27
|
+
"mcp:inspect": "mcp-inspector npx -y @modelcontextprotocol/server-kodrdriv",
|
|
28
|
+
"mcp:test": "node scripts/test-mcp-compliance.js",
|
|
29
|
+
"mcp:dev": "vite build --watch",
|
|
25
30
|
"docs:dev": "cd docs && cp ../README.md public/ && npm install && npm run dev",
|
|
26
31
|
"docs:build": "cd docs && cp ../README.md public/ && npm install && npm run build",
|
|
27
32
|
"docs:preview": "cd docs && npm run preview",
|
|
@@ -37,23 +42,27 @@
|
|
|
37
42
|
],
|
|
38
43
|
"author": "Tim O'Brien <tobrien@discursive.com>",
|
|
39
44
|
"license": "Apache-2.0",
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=24.0.0"
|
|
47
|
+
},
|
|
40
48
|
"dependencies": {
|
|
41
|
-
"@eldrforge/
|
|
42
|
-
"@eldrforge/
|
|
43
|
-
"@eldrforge/commands-
|
|
44
|
-
"@eldrforge/commands-
|
|
45
|
-
"@eldrforge/commands-
|
|
46
|
-
"@eldrforge/
|
|
47
|
-
"@eldrforge/
|
|
48
|
-
"@eldrforge/git-tools": "^0.1
|
|
49
|
-
"@eldrforge/github-tools": "^0.
|
|
50
|
-
"@eldrforge/shared": "^0.1.
|
|
51
|
-
"@eldrforge/tree-core": "^0.
|
|
52
|
-
"@eldrforge/tree-execution": "^0.
|
|
49
|
+
"@eldrforge/ai-service": "^1.0.1",
|
|
50
|
+
"@eldrforge/audio-tools": "^1.0.0",
|
|
51
|
+
"@eldrforge/commands-audio": "^1.0.0",
|
|
52
|
+
"@eldrforge/commands-git": "^1.0.0",
|
|
53
|
+
"@eldrforge/commands-publish": "^1.0.0",
|
|
54
|
+
"@eldrforge/commands-tree": "^1.0.0",
|
|
55
|
+
"@eldrforge/core": "^1.0.0",
|
|
56
|
+
"@eldrforge/git-tools": "^1.0.1",
|
|
57
|
+
"@eldrforge/github-tools": "^1.0.0",
|
|
58
|
+
"@eldrforge/shared": "^0.1.11",
|
|
59
|
+
"@eldrforge/tree-core": "^1.0.0",
|
|
60
|
+
"@eldrforge/tree-execution": "^1.0.0",
|
|
61
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
53
62
|
"@octokit/rest": "^22.0.0",
|
|
54
|
-
"@riotprompt/riotprompt": "^0.0.
|
|
55
|
-
"@theunwalked/cardigantime": "^0.0.
|
|
56
|
-
"@theunwalked/unplayable": "^0.0.
|
|
63
|
+
"@riotprompt/riotprompt": "^0.0.21",
|
|
64
|
+
"@theunwalked/cardigantime": "^0.0.22",
|
|
65
|
+
"@theunwalked/unplayable": "^0.0.28",
|
|
57
66
|
"@types/semver": "^7.7.0",
|
|
58
67
|
"commander": "^14.0.0",
|
|
59
68
|
"dayjs": "^1.11.13",
|
|
@@ -70,6 +79,7 @@
|
|
|
70
79
|
"devDependencies": {
|
|
71
80
|
"@eslint/eslintrc": "^3.3.1",
|
|
72
81
|
"@eslint/js": "^9.33.0",
|
|
82
|
+
"@modelcontextprotocol/inspector": "^0.18.0",
|
|
73
83
|
"@rollup/plugin-replace": "^6.0.2",
|
|
74
84
|
"@swc/core": "^1.13.3",
|
|
75
85
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build MCP Server
|
|
4
|
+
* Simple build script to compile the MCP server separately from main build
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { build } from 'esbuild';
|
|
8
|
+
import { resolve, dirname } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { readFileSync, writeFileSync, chmodSync } from 'fs';
|
|
11
|
+
import { execSync } from 'child_process';
|
|
12
|
+
import os from 'os';
|
|
13
|
+
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = dirname(__filename);
|
|
16
|
+
const root = resolve(__dirname, '..');
|
|
17
|
+
|
|
18
|
+
// Capture git info
|
|
19
|
+
let gitInfo = {
|
|
20
|
+
branch: '',
|
|
21
|
+
commit: '',
|
|
22
|
+
tags: '',
|
|
23
|
+
commitDate: '',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
gitInfo = {
|
|
28
|
+
branch: execSync('git rev-parse --abbrev-ref HEAD').toString().trim(),
|
|
29
|
+
commit: execSync('git rev-parse --short HEAD').toString().trim(),
|
|
30
|
+
tags: '',
|
|
31
|
+
commitDate: execSync('git log -1 --format=%cd --date=iso').toString().trim(),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
gitInfo.tags = execSync('git tag --points-at HEAD | paste -sd "," -').toString().trim();
|
|
36
|
+
} catch {
|
|
37
|
+
gitInfo.tags = '';
|
|
38
|
+
}
|
|
39
|
+
} catch {
|
|
40
|
+
console.log('No git repository, using placeholder values');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Capture build metadata
|
|
44
|
+
const buildInfo = {
|
|
45
|
+
hostname: os.hostname(),
|
|
46
|
+
timestamp: new Date().toISOString(),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// Get package version
|
|
50
|
+
const packageJson = JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf-8'));
|
|
51
|
+
const version = packageJson.version;
|
|
52
|
+
|
|
53
|
+
async function buildMCPServer() {
|
|
54
|
+
try {
|
|
55
|
+
console.log('Building MCP server...');
|
|
56
|
+
|
|
57
|
+
await build({
|
|
58
|
+
entryPoints: [resolve(root, 'src/mcp/server.ts')],
|
|
59
|
+
bundle: true,
|
|
60
|
+
platform: 'node',
|
|
61
|
+
target: 'esnext',
|
|
62
|
+
format: 'esm',
|
|
63
|
+
outfile: resolve(root, 'dist/mcp-server.js'),
|
|
64
|
+
external: [
|
|
65
|
+
'@modelcontextprotocol/*',
|
|
66
|
+
'@eldrforge/*',
|
|
67
|
+
'@theunwalked/*',
|
|
68
|
+
'@riotprompt/*',
|
|
69
|
+
// Winston and its dependencies use dynamic requires that don't work when bundled
|
|
70
|
+
// These must be external dependencies, not bundled
|
|
71
|
+
'winston',
|
|
72
|
+
'winston/*',
|
|
73
|
+
'logform',
|
|
74
|
+
'logform/*',
|
|
75
|
+
'@colors/colors',
|
|
76
|
+
'@colors/safe',
|
|
77
|
+
],
|
|
78
|
+
sourcemap: true,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Add shebang and replace placeholders
|
|
82
|
+
const outputPath = resolve(root, 'dist/mcp-server.js');
|
|
83
|
+
let content = readFileSync(outputPath, 'utf-8');
|
|
84
|
+
|
|
85
|
+
// Replace placeholders
|
|
86
|
+
content = content.replace(/__VERSION__/g, version);
|
|
87
|
+
content = content.replace(/__GIT_BRANCH__/g, gitInfo.branch);
|
|
88
|
+
content = content.replace(/__GIT_COMMIT__/g, gitInfo.commit);
|
|
89
|
+
content = content.replace(/__GIT_TAGS__/g, gitInfo.tags === '' ? '' : `T:${gitInfo.tags}`);
|
|
90
|
+
content = content.replace(/__GIT_COMMIT_DATE__/g, gitInfo.commitDate);
|
|
91
|
+
content = content.replace(/__SYSTEM_INFO__/g, `${process.platform} ${process.arch} ${process.version}`);
|
|
92
|
+
content = content.replace(/__BUILD_HOSTNAME__/g, buildInfo.hostname);
|
|
93
|
+
content = content.replace(/__BUILD_TIMESTAMP__/g, buildInfo.timestamp);
|
|
94
|
+
|
|
95
|
+
if (!content.startsWith('#!')) {
|
|
96
|
+
content = `#!/usr/bin/env node\n${content}`;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
writeFileSync(outputPath, content);
|
|
100
|
+
|
|
101
|
+
// Make executable
|
|
102
|
+
chmodSync(outputPath, 0o755);
|
|
103
|
+
|
|
104
|
+
console.log('✓ MCP server built successfully');
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error('✗ MCP server build failed:', error);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
buildMCPServer();
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Test get_version MCP tool
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
import { resolve } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname } from 'path';
|
|
10
|
+
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
|
|
14
|
+
const SERVER_PATH = resolve(__dirname, '../dist/mcp-server.js');
|
|
15
|
+
const TIMEOUT_MS = 5000;
|
|
16
|
+
|
|
17
|
+
console.log('🔍 Testing get_version tool...\n');
|
|
18
|
+
|
|
19
|
+
function sendMCPRequest(server, method, params = {}) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
22
|
+
const request = {
|
|
23
|
+
jsonrpc: '2.0',
|
|
24
|
+
id,
|
|
25
|
+
method,
|
|
26
|
+
params,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
let response = '';
|
|
30
|
+
const timeout = setTimeout(() => {
|
|
31
|
+
reject(new Error('Request timeout'));
|
|
32
|
+
}, TIMEOUT_MS);
|
|
33
|
+
|
|
34
|
+
server.stdout.on('data', (data) => {
|
|
35
|
+
response += data.toString();
|
|
36
|
+
try {
|
|
37
|
+
const parsed = JSON.parse(response);
|
|
38
|
+
if (parsed.id === id) {
|
|
39
|
+
clearTimeout(timeout);
|
|
40
|
+
resolve(parsed);
|
|
41
|
+
}
|
|
42
|
+
} catch (e) {
|
|
43
|
+
// Still accumulating response
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
server.stdin.write(JSON.stringify(request) + '\n');
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function testGetVersionTool() {
|
|
52
|
+
const server = spawn('node', [SERVER_PATH], {
|
|
53
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
// Initialize
|
|
58
|
+
await sendMCPRequest(server, 'initialize', {
|
|
59
|
+
protocolVersion: '2024-11-05',
|
|
60
|
+
capabilities: {},
|
|
61
|
+
clientInfo: { name: 'test', version: '1.0.0' },
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Call get_version tool
|
|
65
|
+
const response = await sendMCPRequest(server, 'tools/call', {
|
|
66
|
+
name: 'kodrdriv_get_version',
|
|
67
|
+
arguments: {},
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (response.result && response.result.content) {
|
|
71
|
+
const content = response.result.content[0];
|
|
72
|
+
console.log('✅ get_version tool executed successfully\n');
|
|
73
|
+
console.log('Response:');
|
|
74
|
+
console.log(content.text);
|
|
75
|
+
console.log('\n');
|
|
76
|
+
|
|
77
|
+
// Parse and display structured data
|
|
78
|
+
try {
|
|
79
|
+
const data = JSON.parse(content.text);
|
|
80
|
+
console.log('Parsed data:');
|
|
81
|
+
console.log(' Version:', data.version);
|
|
82
|
+
console.log(' Build Hostname:', data.buildHostname);
|
|
83
|
+
console.log(' Build Timestamp:', data.buildTimestamp);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
// Response might be text format
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
throw new Error('Invalid response from get_version tool');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
server.kill();
|
|
92
|
+
return true;
|
|
93
|
+
} catch (error) {
|
|
94
|
+
server.kill();
|
|
95
|
+
console.log(`❌ Test failed: ${error.message}\n`);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
testGetVersionTool().then(success => {
|
|
101
|
+
process.exit(success ? 0 : 1);
|
|
102
|
+
});
|