@eldrforge/kodrdriv 0.0.6 → 0.0.9

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/README.md CHANGED
@@ -171,6 +171,9 @@ KodrDriv provides several command line options to customize its behavior:
171
171
  - `--dry-run`: Perform a dry run without saving files (default: false)
172
172
  - `--verbose`: Enable verbose logging (default: false)
173
173
  - `--debug`: Enable debug logging (default: false)
174
+ - `--overrides`: Enable instruction overrides (allows custom instruction files to override defaults)
175
+ - `--config-dir <configDir>`: Specify a custom configuration directory (default: '.kodrdriv')
176
+ - `--excluded-paths [excludedPatterns...]`: Paths to exclude from the diff (can specify multiple patterns)
174
177
  - `--version`: Display version information
175
178
 
176
179
  ### Commit Command Options
@@ -279,6 +282,40 @@ Please set these environment variables before running publish.
279
282
  - Never commit environment variables or tokens to your repository
280
283
  - Consider using `.env` files (with proper .gitignore configuration) for local development
281
284
 
285
+ #### Workspace Package Management
286
+
287
+ The publish command provides options to control whether workspace packages should be linked or unlinked during the release process. Both operations are enabled by default for backward compatibility, but can be disabled if needed.
288
+
289
+ **Configuration Options:**
290
+
291
+ - `linkWorkspacePackages` (boolean, default: true): Controls whether to restore linked workspace packages after the publish process completes
292
+ - `unlinkWorkspacePackages` (boolean, default: true): Controls whether to unlink workspace packages before starting the publish process
293
+
294
+ **Configuration Example:**
295
+ ```json
296
+ {
297
+ "publish": {
298
+ "linkWorkspacePackages": false,
299
+ "unlinkWorkspacePackages": false,
300
+ "mergeMethod": "squash"
301
+ }
302
+ }
303
+ ```
304
+
305
+ **Use Cases:**
306
+
307
+ - **Skip Unlinking**: Set `unlinkWorkspacePackages: false` if you want to publish using your current workspace configuration without switching to registry dependencies
308
+ - **Skip Linking**: Set `linkWorkspacePackages: false` if you want to leave the project in a "release-ready" state after publishing, with registry dependencies instead of workspace links
309
+ - **Skip Both**: Disable both options if you're managing workspace configuration manually or using a different dependency management strategy
310
+
311
+ **Default Behavior:**
312
+ When both options are enabled (default), the publish command will:
313
+ 1. Unlink workspace packages before starting (switching to registry dependencies)
314
+ 2. Perform the release process with registry dependencies
315
+ 3. Restore workspace links after completion (returning to local development mode)
316
+
317
+ This ensures that releases are published with proper registry dependencies while maintaining local development convenience.
318
+
282
319
  #### prepublishOnly Script Requirement
283
320
 
284
321
  The publish command requires a `prepublishOnly` script to be defined in your `package.json`. This script should contain all the checks and builds necessary to verify your project is ready for release.
@@ -426,6 +463,24 @@ kodrdriv publish --merge-method merge
426
463
  kodrdriv publish --merge-method rebase
427
464
  ```
428
465
 
466
+ Use excluded paths to filter diff content:
467
+ ```bash
468
+ # Exclude specific files or directories from diff analysis
469
+ kodrdriv commit --excluded-paths "*.lock" "dist/" "node_modules/"
470
+
471
+ # Exclude patterns from release notes
472
+ kodrdriv release --excluded-paths "package-lock.json" "pnpm-lock.yaml"
473
+ ```
474
+
475
+ Use overrides with custom instructions:
476
+ ```bash
477
+ # Enable instruction overrides (requires custom instruction files in .kodrdriv/instructions/)
478
+ kodrdriv commit --overrides
479
+
480
+ # Use custom config directory with overrides
481
+ kodrdriv release --config-dir ~/my-kodrdriv-config --overrides
482
+ ```
483
+
429
484
  Link local packages for development:
430
485
  ```bash
431
486
  # Basic linking with single scope
@@ -483,7 +538,9 @@ Example configuration file (`.kodrdriv/config.json`):
483
538
  "publish": {
484
539
  "mergeMethod": "merge",
485
540
  "dependencyUpdatePatterns": ["@company/*", "@myorg/*"],
486
- "requiredEnvVars": ["NODE_AUTH_TOKEN", "CUSTOM_TOKEN"]
541
+ "requiredEnvVars": ["NODE_AUTH_TOKEN", "CUSTOM_TOKEN"],
542
+ "linkWorkspacePackages": true,
543
+ "unlinkWorkspacePackages": true
487
544
  },
488
545
  "commit": {
489
546
  "add": true,
@@ -698,10 +755,10 @@ Whether you're merging branches or writing books, kodrdriv is built for that end
698
755
 
699
756
  ### Release Command Options
700
757
 
701
- - `--from <from>`: Branch or reference to generate release notes from
702
- - `--to <to>`: Branch or reference to generate release notes to
758
+ - `--from <from>`: Branch or reference to generate release notes from (default: 'main')
759
+ - `--to <to>`: Branch or reference to generate release notes to (default: 'HEAD')
703
760
  - `--context <context>`: Provide additional context (as a string or file path) to guide the release notes generation. This context is included in the prompt sent to the AI and can be used to specify the purpose, theme, or any special considerations for the release.
704
- - `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the release notes prompt (default: 10).
761
+ - `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the release notes prompt (default: 10). Reducing this number can make the summary more focused, while increasing it provides broader historical context.
705
762
 
706
763
  ### Explanation
707
764
 
@@ -2,6 +2,7 @@ import path from 'path';
2
2
  import yaml from 'js-yaml';
3
3
  import { getLogger } from '../logging.js';
4
4
  import { create } from '../util/storage.js';
5
+ import { run } from '../util/child.js';
5
6
 
6
7
  const scanDirectoryForPackages = async (rootDir, storage)=>{
7
8
  const logger = getLogger();
@@ -41,7 +42,7 @@ const scanDirectoryForPackages = async (rootDir, storage)=>{
41
42
  };
42
43
  const findPackagesByScope = async (dependencies, scopeRoots, storage)=>{
43
44
  const logger = getLogger();
44
- const workspacePackages = [];
45
+ const workspacePackages = new Map();
45
46
  logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);
46
47
  // First, scan all scope roots to build a comprehensive map of available packages
47
48
  const allPackages = new Map(); // packageName -> relativePath
@@ -61,7 +62,7 @@ const findPackagesByScope = async (dependencies, scopeRoots, storage)=>{
61
62
  logger.debug(`Processing dependency: ${depName}@${depVersion}`);
62
63
  if (allPackages.has(depName)) {
63
64
  const packagePath = allPackages.get(depName);
64
- workspacePackages.push(packagePath);
65
+ workspacePackages.set(depName, packagePath);
65
66
  logger.info(`Found sibling package: ${depName} at ${packagePath}`);
66
67
  }
67
68
  }
@@ -71,14 +72,12 @@ const readCurrentWorkspaceFile = async (workspaceFilePath, storage)=>{
71
72
  if (await storage.exists(workspaceFilePath)) {
72
73
  try {
73
74
  const content = await storage.readFile(workspaceFilePath, 'utf-8');
74
- return yaml.load(content);
75
+ return yaml.load(content) || {};
75
76
  } catch (error) {
76
77
  throw new Error(`Failed to parse existing workspace file: ${error}`);
77
78
  }
78
79
  }
79
- return {
80
- packages: []
81
- };
80
+ return {};
82
81
  };
83
82
  const writeWorkspaceFile = async (workspaceFilePath, config, storage)=>{
84
83
  const yamlContent = yaml.dump(config, {
@@ -95,7 +94,7 @@ const execute = async (runConfig)=>{
95
94
  const storage = create({
96
95
  log: logger.info
97
96
  });
98
- logger.info('Starting pnpm workspace link management...');
97
+ logger.info('Starting pnpm workspace link management using overrides...');
99
98
  // Read current package.json
100
99
  const packageJsonPath = path.join(process.cwd(), 'package.json');
101
100
  if (!await storage.exists(packageJsonPath)) {
@@ -117,7 +116,8 @@ const execute = async (runConfig)=>{
117
116
  logger.debug('Extracted workspaceFileName:', workspaceFileName);
118
117
  logger.debug('Extracted isDryRun:', isDryRun);
119
118
  if (Object.keys(scopeRoots).length === 0) {
120
- throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');
119
+ logger.info('No scope roots configured. Skipping link management.');
120
+ return 'No scope roots configured. Skipping link management.';
121
121
  }
122
122
  logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
123
123
  // Collect all dependencies
@@ -128,25 +128,33 @@ const execute = async (runConfig)=>{
128
128
  };
129
129
  logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);
130
130
  // Find matching sibling packages
131
- const workspacePackages = await findPackagesByScope(allDependencies, scopeRoots, storage);
132
- if (workspacePackages.length === 0) {
131
+ const packagesToLink = await findPackagesByScope(allDependencies, scopeRoots, storage);
132
+ if (packagesToLink.size === 0) {
133
133
  logger.info('No matching sibling packages found for linking.');
134
134
  return 'No matching sibling packages found for linking.';
135
135
  }
136
- logger.info(`Found ${workspacePackages.length} packages to link: ${workspacePackages.join(', ')}`);
136
+ logger.info(`Found ${packagesToLink.size} packages to link: ${[
137
+ ...packagesToLink.keys()
138
+ ].join(', ')}`);
137
139
  // Read existing workspace configuration
138
140
  const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
139
141
  const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
140
- // Merge with existing packages (avoid duplicates)
141
- const existingPackages = workspaceConfig.packages || [];
142
- const allPackages = [
143
- ...new Set([
144
- ...existingPackages,
145
- ...workspacePackages
146
- ])
147
- ];
142
+ // Create overrides
143
+ const newOverrides = {};
144
+ for (const [packageName, packagePath] of packagesToLink.entries()){
145
+ newOverrides[packageName] = `link:${packagePath}`;
146
+ }
147
+ const updatedOverrides = {
148
+ ...workspaceConfig.overrides || {},
149
+ ...newOverrides
150
+ };
151
+ const sortedOverrides = Object.keys(updatedOverrides).sort().reduce((obj, key)=>{
152
+ obj[key] = updatedOverrides[key];
153
+ return obj;
154
+ }, {});
148
155
  const updatedConfig = {
149
- packages: allPackages.sort()
156
+ ...workspaceConfig,
157
+ overrides: sortedOverrides
150
158
  };
151
159
  // Write the updated workspace file
152
160
  if (isDryRun) {
@@ -156,9 +164,19 @@ const execute = async (runConfig)=>{
156
164
  }));
157
165
  } else {
158
166
  await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
159
- logger.info(`Updated ${workspaceFileName} with ${workspacePackages.length} linked packages`);
167
+ logger.info(`Updated ${workspaceFileName} with ${packagesToLink.size} linked packages in overrides.`);
168
+ // Rebuild pnpm lock file and node_modules
169
+ logger.info('Running pnpm install to apply links...');
170
+ try {
171
+ await run('pnpm install');
172
+ logger.info('Successfully applied links.');
173
+ } catch (error) {
174
+ logger.warn(`Failed to run pnpm install: ${error}. You may need to run 'pnpm install' manually.`);
175
+ }
160
176
  }
161
- const summary = `Successfully linked ${workspacePackages.length} sibling packages:\n${workspacePackages.map((pkg)=>` - ${pkg}`).join('\n')}`;
177
+ const summary = `Successfully linked ${packagesToLink.size} sibling packages:\n${[
178
+ ...packagesToLink.entries()
179
+ ].map(([name, path])=>` - ${name}: link:${path}`).join('\n')}`;
162
180
  return summary;
163
181
  };
164
182
 
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface WorkspaceConfig {\n packages?: string[];\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesByScope = async (dependencies: Record<string, string>, scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const workspacePackages: string[] = [];\n\n logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // First, scan all scope roots to build a comprehensive map of available packages\n const allPackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allPackages.set(packageName, packagePath);\n logger.debug(`Registered package: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n // Now check each dependency against our discovered packages\n for (const [depName, depVersion] of Object.entries(dependencies)) {\n logger.debug(`Processing dependency: ${depName}@${depVersion}`);\n\n if (allPackages.has(depName)) {\n const packagePath = allPackages.get(depName)!;\n workspacePackages.push(packagePath);\n logger.info(`Found sibling package: ${depName} at ${packagePath}`);\n }\n }\n\n return workspacePackages;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<WorkspaceConfig> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return yaml.load(content) as WorkspaceConfig;\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return { packages: [] };\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: WorkspaceConfig, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace link management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Collect all dependencies\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies\n };\n\n logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);\n\n // Find matching sibling packages\n const workspacePackages = await findPackagesByScope(allDependencies, scopeRoots, storage);\n\n if (workspacePackages.length === 0) {\n logger.info('No matching sibling packages found for linking.');\n return 'No matching sibling packages found for linking.';\n }\n\n logger.info(`Found ${workspacePackages.length} packages to link: ${workspacePackages.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Merge with existing packages (avoid duplicates)\n const existingPackages = workspaceConfig.packages || [];\n const allPackages = [...new Set([...existingPackages, ...workspacePackages])];\n\n const updatedConfig: WorkspaceConfig = {\n packages: allPackages.sort()\n };\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} with ${workspacePackages.length} linked packages`);\n }\n\n const summary = `Successfully linked ${workspacePackages.length} sibling packages:\\n${workspacePackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n}; "],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesByScope","dependencies","scopeRoots","workspacePackages","stringify","allPackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","depName","depVersion","has","get","push","info","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","packages","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","allDependencies","devDependencies","peerDependencies","workspaceConfig","existingPackages","Set","updatedConfig","sort","summary","map","pkg"],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesByScope = async (dependencies: Record<string, string>, scopeRoots: Record<string, string>, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const workspacePackages = new Map<string, string>();\n\n logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // First, scan all scope roots to build a comprehensive map of available packages\n const allPackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allPackages.set(packageName, packagePath);\n logger.debug(`Registered package: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n // Now check each dependency against our discovered packages\n for (const [depName, depVersion] of Object.entries(dependencies)) {\n logger.debug(`Processing dependency: ${depName}@${depVersion}`);\n\n if (allPackages.has(depName)) {\n const packagePath = allPackages.get(depName)!;\n workspacePackages.set(depName, packagePath);\n logger.info(`Found sibling package: ${depName} at ${packagePath}`);\n }\n }\n\n return workspacePackages;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace link management using overrides...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.info('No scope roots configured. Skipping link management.');\n return 'No scope roots configured. Skipping link management.';\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Collect all dependencies\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies\n };\n\n logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);\n\n // Find matching sibling packages\n const packagesToLink = await findPackagesByScope(allDependencies, scopeRoots, storage);\n\n if (packagesToLink.size === 0) {\n logger.info('No matching sibling packages found for linking.');\n return 'No matching sibling packages found for linking.';\n }\n\n logger.info(`Found ${packagesToLink.size} packages to link: ${[...packagesToLink.keys()].join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Create overrides\n const newOverrides: Record<string, string> = {};\n for (const [packageName, packagePath] of packagesToLink.entries()) {\n newOverrides[packageName] = `link:${packagePath}`;\n }\n\n const updatedOverrides = { ...(workspaceConfig.overrides || {}), ...newOverrides };\n\n const sortedOverrides = Object.keys(updatedOverrides)\n .sort()\n .reduce((obj, key) => {\n obj[key] = updatedOverrides[key];\n return obj;\n }, {} as Record<string, string>);\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: sortedOverrides\n };\n\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} with ${packagesToLink.size} linked packages in overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Running pnpm install to apply links...');\n try {\n await run('pnpm install');\n logger.info('Successfully applied links.');\n } catch (error) {\n logger.warn(`Failed to run pnpm install: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully linked ${packagesToLink.size} sibling packages:\\n${[...packagesToLink.entries()].map(([name, path]) => ` - ${name}: link:${path}`).join('\\n')}`;\n\n return summary;\n};"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesByScope","dependencies","scopeRoots","workspacePackages","stringify","allPackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","depName","depVersion","has","get","info","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","allDependencies","devDependencies","peerDependencies","packagesToLink","size","workspaceConfig","newOverrides","updatedOverrides","overrides","sortedOverrides","sort","reduce","obj","key","updatedConfig","run","summary","map"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import path from 'path';
2
- import { execute as execute$1 } from './commit.js';
2
+ import { execute as execute$2 } from './commit.js';
3
3
  import { hasStagedChanges } from '../content/diff.js';
4
- import { execute as execute$2 } from './release.js';
4
+ import { execute as execute$3 } from './release.js';
5
+ import { execute as execute$4 } from './link.js';
6
+ import { execute as execute$1 } from './unlink.js';
5
7
  import { getLogger } from '../logging.js';
6
8
  import { run } from '../util/child.js';
7
9
  import { getCurrentBranchName, findOpenPullRequestByHeadRef, createPullRequest, waitForPullRequestChecks, mergePullRequest, createRelease } from '../util/github.js';
8
10
  import { create } from '../util/storage.js';
9
11
  import { incrementPatchVersion } from '../util/general.js';
10
12
 
11
- const PNPM_WORKSPACE_FILE = 'pnpm-workspace.yaml';
12
- const PNPM_WORKSPACE_BACKUP_FILE = 'pnpm-workspace.yaml.bak';
13
13
  const scanNpmrcForEnvVars = async (storage)=>{
14
14
  const npmrcPath = path.join(process.cwd(), '.npmrc');
15
15
  const envVars = [];
@@ -121,33 +121,27 @@ const execute = async (runConfig)=>{
121
121
  // Run prechecks before starting any work
122
122
  await runPrechecks(runConfig);
123
123
  logger.info('Starting release process...');
124
- const workspaceFile = path.join(process.cwd(), PNPM_WORKSPACE_FILE);
125
- const workspaceBackupFile = path.join(process.cwd(), PNPM_WORKSPACE_BACKUP_FILE);
126
- const restoreWorkspaceFile = async ()=>{
127
- if (await storage.exists(workspaceBackupFile)) {
128
- logger.info('Restoring pnpm-workspace.yaml...');
129
- await storage.rename(workspaceBackupFile, workspaceFile);
130
- }
131
- };
132
124
  try {
133
- var _runConfig_publish;
125
+ var _runConfig_publish, _runConfig_publish1;
126
+ // Unlink all workspace packages before starting (if enabled)
127
+ const shouldUnlink = ((_runConfig_publish = runConfig.publish) === null || _runConfig_publish === void 0 ? void 0 : _runConfig_publish.unlinkWorkspacePackages) !== false; // default to true
128
+ if (shouldUnlink) {
129
+ logger.info('Unlinking workspace packages...');
130
+ await execute$1(runConfig);
131
+ } else {
132
+ logger.info('Skipping unlink workspace packages (disabled in config).');
133
+ }
134
134
  const branchName = await getCurrentBranchName();
135
135
  let pr = await findOpenPullRequestByHeadRef(branchName);
136
136
  if (pr) {
137
137
  logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);
138
138
  } else {
139
- var _runConfig_publish1;
139
+ var _runConfig_publish2;
140
140
  logger.info('No open pull request found, starting new release publishing process...');
141
141
  // 1. Prepare for release
142
142
  logger.info('Preparing for release: switching from workspace to remote dependencies.');
143
- if (await storage.exists(workspaceFile)) {
144
- logger.info('Renaming pnpm-workspace.yaml to prevent workspace-protocol resolution');
145
- await storage.rename(workspaceFile, workspaceBackupFile);
146
- } else {
147
- logger.info('pnpm-workspace.yaml not found, skipping rename.');
148
- }
149
143
  logger.info('Updating dependencies to latest versions from registry');
150
- const updatePatterns = (_runConfig_publish1 = runConfig.publish) === null || _runConfig_publish1 === void 0 ? void 0 : _runConfig_publish1.dependencyUpdatePatterns;
144
+ const updatePatterns = (_runConfig_publish2 = runConfig.publish) === null || _runConfig_publish2 === void 0 ? void 0 : _runConfig_publish2.dependencyUpdatePatterns;
151
145
  if (updatePatterns && updatePatterns.length > 0) {
152
146
  logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);
153
147
  const patternsArg = updatePatterns.join(' ');
@@ -163,16 +157,17 @@ const execute = async (runConfig)=>{
163
157
  logger.info('Checking for staged changes...');
164
158
  if (await hasStagedChanges()) {
165
159
  logger.info('Staged changes found, creating commit...');
166
- await execute$1(runConfig);
160
+ await execute$2(runConfig);
167
161
  } else {
168
162
  logger.info('No changes to commit, skipping commit.');
169
163
  }
170
164
  logger.info('Bumping version...');
171
165
  await run('pnpm version patch');
172
166
  logger.info('Generating release notes...');
173
- const releaseNotes = await execute$2(runConfig);
174
- await storage.writeFile('RELEASE_NOTES.md', releaseNotes, 'utf-8');
175
- logger.info('Release notes generated and saved to RELEASE_NOTES.md.');
167
+ const releaseSummary = await execute$3(runConfig);
168
+ await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');
169
+ await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');
170
+ logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');
176
171
  logger.info('Pushing to origin...');
177
172
  await run('git push --follow-tags');
178
173
  logger.info('Creating pull request...');
@@ -185,7 +180,7 @@ const execute = async (runConfig)=>{
185
180
  }
186
181
  logger.info(`Waiting for PR #${pr.number} checks to complete...`);
187
182
  await waitForPullRequestChecks(pr.number);
188
- const mergeMethod = ((_runConfig_publish = runConfig.publish) === null || _runConfig_publish === void 0 ? void 0 : _runConfig_publish.mergeMethod) || 'squash';
183
+ const mergeMethod = ((_runConfig_publish1 = runConfig.publish) === null || _runConfig_publish1 === void 0 ? void 0 : _runConfig_publish1.mergeMethod) || 'squash';
189
184
  await mergePullRequest(pr.number, mergeMethod);
190
185
  logger.info('Checking out main branch...');
191
186
  await run('git checkout main');
@@ -195,7 +190,8 @@ const execute = async (runConfig)=>{
195
190
  const { version } = JSON.parse(packageJsonContents);
196
191
  const tagName = `v${version}`;
197
192
  const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');
198
- await createRelease(tagName, releaseNotesContent);
193
+ const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');
194
+ await createRelease(tagName, releaseTitle, releaseNotesContent);
199
195
  logger.info('Creating new release branch...');
200
196
  const nextVersion = incrementPatchVersion(version);
201
197
  const newBranchName = `release/${nextVersion}`;
@@ -204,7 +200,15 @@ const execute = async (runConfig)=>{
204
200
  logger.info(`Branch ${newBranchName} created and pushed to origin.`);
205
201
  logger.info('Preparation complete.');
206
202
  } finally{
207
- await restoreWorkspaceFile();
203
+ var _runConfig_publish3;
204
+ // Restore linked packages (if enabled)
205
+ const shouldLink = ((_runConfig_publish3 = runConfig.publish) === null || _runConfig_publish3 === void 0 ? void 0 : _runConfig_publish3.linkWorkspacePackages) !== false; // default to true
206
+ if (shouldLink) {
207
+ logger.info('Restoring linked packages...');
208
+ await execute$4(runConfig);
209
+ } else {
210
+ logger.info('Skipping restore linked packages (disabled in config).');
211
+ }
208
212
  }
209
213
  };
210
214
 
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst PNPM_WORKSPACE_FILE = 'pnpm-workspace.yaml';\nconst PNPM_WORKSPACE_BACKUP_FILE = 'pnpm-workspace.yaml.bak';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[]): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n await run('git rev-parse --git-dir');\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n\n if (!packageJson.scripts?.prepublishOnly) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n }\n\n // Check required environment variables\n logger.info('Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = await scanNpmrcForEnvVars(storage);\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars);\n } else {\n logger.info('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n const workspaceFile = path.join(process.cwd(), PNPM_WORKSPACE_FILE);\n const workspaceBackupFile = path.join(process.cwd(), PNPM_WORKSPACE_BACKUP_FILE);\n\n const restoreWorkspaceFile = async () => {\n if (await storage.exists(workspaceBackupFile)) {\n logger.info('Restoring pnpm-workspace.yaml...');\n await storage.rename(workspaceBackupFile, workspaceFile);\n }\n };\n\n try {\n const branchName = await GitHub.getCurrentBranchName();\n let pr: PullRequest | null = await GitHub.findOpenPullRequestByHeadRef(branchName);\n\n if (pr) {\n logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.info('Preparing for release: switching from workspace to remote dependencies.');\n\n if (await storage.exists(workspaceFile)) {\n logger.info('Renaming pnpm-workspace.yaml to prevent workspace-protocol resolution');\n await storage.rename(workspaceFile, workspaceBackupFile);\n } else {\n logger.info('pnpm-workspace.yaml not found, skipping rename.');\n }\n\n logger.info('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await run(`pnpm update --latest ${patternsArg}`);\n } else {\n logger.info('No dependency update patterns specified, updating all dependencies');\n await run('pnpm update --latest');\n }\n\n logger.info('Staging changes for release commit');\n await run('git add package.json pnpm-lock.yaml');\n\n logger.info('Running prepublishOnly script...');\n await run('pnpm run prepublishOnly');\n\n logger.info('Checking for staged changes...');\n if (await Diff.hasStagedChanges()) {\n logger.info('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.info('No changes to commit, skipping commit.');\n }\n\n logger.info('Bumping version...');\n await run('pnpm version patch');\n\n logger.info('Generating release notes...');\n const releaseNotes = await Release.execute(runConfig);\n await storage.writeFile('RELEASE_NOTES.md', releaseNotes, 'utf-8');\n logger.info('Release notes generated and saved to RELEASE_NOTES.md.');\n\n logger.info('Pushing to origin...');\n await run('git push --follow-tags');\n\n logger.info('Creating pull request...');\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', branchName);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n\n logger.info(`Waiting for PR #${pr.number} checks to complete...`);\n await GitHub.waitForPullRequestChecks(pr.number);\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n await GitHub.mergePullRequest(pr.number, mergeMethod);\n\n logger.info('Checking out main branch...');\n await run('git checkout main');\n await run('git pull origin main');\n\n logger.info('Creating GitHub release...');\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseNotesContent);\n\n logger.info('Creating new release branch...');\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n\n logger.info('Preparation complete.');\n } finally {\n await restoreWorkspaceFile();\n }\n}; "],"names":["PNPM_WORKSPACE_FILE","PNPM_WORKSPACE_BACKUP_FILE","scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","logger","getLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","packageJson","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJsonContents","JSON","parse","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","workspaceFile","workspaceBackupFile","restoreWorkspaceFile","rename","branchName","pr","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","Diff","Commit","releaseNotes","Release","writeFile","commitTitle","number","mergeMethod","version","tagName","releaseNotesContent","nextVersion","incrementPatchVersion","newBranchName"],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[]): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n await run('git rev-parse --git-dir');\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n\n if (!packageJson.scripts?.prepublishOnly) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n }\n\n // Check required environment variables\n logger.info('Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = await scanNpmrcForEnvVars(storage);\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars);\n } else {\n logger.info('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.info('Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.info('Skipping unlink workspace packages (disabled in config).');\n }\n\n const branchName = await GitHub.getCurrentBranchName();\n let pr: PullRequest | null = await GitHub.findOpenPullRequestByHeadRef(branchName);\n\n if (pr) {\n logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.info('Preparing for release: switching from workspace to remote dependencies.');\n\n logger.info('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await run(`pnpm update --latest ${patternsArg}`);\n } else {\n logger.info('No dependency update patterns specified, updating all dependencies');\n await run('pnpm update --latest');\n }\n\n logger.info('Staging changes for release commit');\n await run('git add package.json pnpm-lock.yaml');\n\n logger.info('Running prepublishOnly script...');\n await run('pnpm run prepublishOnly');\n\n logger.info('Checking for staged changes...');\n if (await Diff.hasStagedChanges()) {\n logger.info('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.info('No changes to commit, skipping commit.');\n }\n\n logger.info('Bumping version...');\n await run('pnpm version patch');\n\n logger.info('Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');\n await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');\n logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');\n\n logger.info('Pushing to origin...');\n await run('git push --follow-tags');\n\n logger.info('Creating pull request...');\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', branchName);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n\n logger.info(`Waiting for PR #${pr.number} checks to complete...`);\n await GitHub.waitForPullRequestChecks(pr.number);\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n await GitHub.mergePullRequest(pr.number, mergeMethod);\n\n logger.info('Checking out main branch...');\n await run('git checkout main');\n await run('git pull origin main');\n\n logger.info('Creating GitHub release...');\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n\n logger.info('Creating new release branch...');\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n\n logger.info('Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.info('Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.info('Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","logger","getLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","packageJson","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJsonContents","JSON","parse","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","branchName","pr","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","Diff","Commit","releaseSummary","Release","writeFile","body","title","commitTitle","number","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
@@ -27,7 +27,10 @@ const execute = async (runConfig)=>{
27
27
  const prompt = await prompts.createReleasePrompt(logContent, diffContent, (_runConfig_release4 = runConfig.release) === null || _runConfig_release4 === void 0 ? void 0 : _runConfig_release4.context);
28
28
  const request = prompts.format(prompt);
29
29
  const summary = await createCompletion(request.messages, {
30
- model: runConfig.model
30
+ model: runConfig.model,
31
+ responseFormat: {
32
+ type: 'json_object'
33
+ }
31
34
  });
32
35
  return summary;
33
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config) => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n return summary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages"],"mappings":"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AAA,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,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;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,CAAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,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,qBAAAA,CAAAA,CAAAA,CAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA;AAEsBX,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,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAoEA,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;AAArK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAW,CAAC,CAAA;QAAEP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMN,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,GAAAA,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBM,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBN,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,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;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAyBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAAA,CAAkBd,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,SAAAA,CAAUc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAA1Bd,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,eAAAA,2BAAAA,CAAAA,CAAAA,CAA8Be,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;AAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7N,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA;IAElBA,WAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMJ,CAAAA,CAAAA,CAAAA,EAAKK,GAAG,CAAA,CAAA,CAAA;IAC5BN,UAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMP,CAAAA,CAAAA,EAAIa,GAAG,CAAA,CAAA,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAACR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAahB,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAmBoB,OAAO,CAAA,CAAA;IAEpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,OAAAA,CAAAA,CAAAA,CAAmBpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAACJ,MAAAA,CAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMK,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,gBAAAA,CAAiBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAkC,CAAA;AAAEtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAElH,OAAOoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACX,CAAA,CAAA;;"}
1
+ {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config, ReleaseSummary } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(\n request.messages as ChatCompletionMessageParam[],\n {\n model: runConfig.model,\n responseFormat: { type: 'json_object' }\n }\n );\n\n return summary as ReleaseSummary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages","responseFormat","type"],"mappings":"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AAA,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,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;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,CAAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,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,qBAAAA,CAAAA,CAAAA,CAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA;AAEsBX,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,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAoEA,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;AAArK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAW,CAAC,CAAA;QAAEP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMN,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,GAAAA,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBM,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBN,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,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;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAyBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAAA,CAAkBd,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,SAAAA,CAAUc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAA1Bd,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,eAAAA,2BAAAA,CAAAA,CAAAA,CAA8Be,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;AAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7N,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA;IAElBA,WAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMJ,CAAAA,CAAAA,CAAAA,EAAKK,GAAG,CAAA,CAAA,CAAA;IAC5BN,UAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMP,CAAAA,CAAAA,EAAIa,GAAG,CAAA,CAAA,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAACR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAahB,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAjBP,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAmBoB,OAAO,CAAA,CAAA;IAEpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,OAAAA,CAAAA,CAAAA,CAAmBpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAACJ,MAAAA,CAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMK,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,gBAAAA,CAClBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAChB,CAAA;AACItB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUG,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;QACtBuB,cAAAA,CAAAA,CAAgB,CAAA;YAAEC,IAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAGJ,OAAOJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACX,CAAA,CAAA;;"}
@@ -64,22 +64,24 @@ const readCurrentWorkspaceFile = async (workspaceFilePath, storage)=>{
64
64
  if (await storage.exists(workspaceFilePath)) {
65
65
  try {
66
66
  const content = await storage.readFile(workspaceFilePath, 'utf-8');
67
- return yaml.load(content);
67
+ return yaml.load(content) || {};
68
68
  } catch (error) {
69
69
  throw new Error(`Failed to parse existing workspace file: ${error}`);
70
70
  }
71
71
  }
72
- return {
73
- packages: []
74
- };
72
+ return {};
75
73
  };
76
74
  const writeWorkspaceFile = async (workspaceFilePath, config, storage)=>{
77
- const yamlContent = yaml.dump(config, {
75
+ let yamlContent = yaml.dump(config, {
78
76
  indent: 2,
79
77
  lineWidth: -1,
80
78
  noRefs: true,
81
- sortKeys: false
79
+ sortKeys: false,
80
+ quotingType: "'",
81
+ forceQuotes: true
82
82
  });
83
+ // Post-process to fix numeric values that shouldn't be quoted
84
+ yamlContent = yamlContent.replace(/: '(\d+(?:\.\d+)*)'/g, ': $1');
83
85
  await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');
84
86
  };
85
87
  const execute = async (runConfig)=>{
@@ -110,30 +112,47 @@ const execute = async (runConfig)=>{
110
112
  logger.debug('Extracted workspaceFileName:', workspaceFileName);
111
113
  logger.debug('Extracted isDryRun:', isDryRun);
112
114
  if (Object.keys(scopeRoots).length === 0) {
113
- throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');
115
+ logger.info('No scope roots configured. Skipping unlink management.');
116
+ return 'No scope roots configured. Skipping unlink management.';
114
117
  }
115
118
  logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
116
119
  // Find packages to unlink based on scope roots
117
- const packagesToUnlink = await findPackagesToUnlink(scopeRoots, storage);
118
- if (packagesToUnlink.length === 0) {
120
+ const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);
121
+ if (packagesToUnlinkPaths.length === 0) {
119
122
  logger.info('No packages found matching scope roots for unlinking.');
120
123
  return 'No packages found matching scope roots for unlinking.';
121
124
  }
122
- logger.info(`Found ${packagesToUnlink.length} packages that could be unlinked: ${packagesToUnlink.join(', ')}`);
125
+ logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);
123
126
  // Read existing workspace configuration
124
127
  const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
125
128
  const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
126
- // Filter out packages that match our scope roots
127
- const existingPackages = workspaceConfig.packages || [];
128
- const remainingPackages = existingPackages.filter((pkg)=>!packagesToUnlink.includes(pkg));
129
- const actuallyRemovedPackages = existingPackages.filter((pkg)=>packagesToUnlink.includes(pkg));
129
+ if (!workspaceConfig.overrides) {
130
+ logger.info('No overrides found in workspace file. Nothing to do.');
131
+ return 'No overrides found in workspace file. Nothing to do.';
132
+ }
133
+ // Filter out packages that match our scope roots from overrides
134
+ const existingOverrides = workspaceConfig.overrides || {};
135
+ const remainingOverrides = {};
136
+ const actuallyRemovedPackages = [];
137
+ const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map((p)=>`link:${p}`));
138
+ for (const [pkgName, pkgLink] of Object.entries(existingOverrides)){
139
+ if (packagesToUnlinkSet.has(pkgLink)) {
140
+ actuallyRemovedPackages.push(pkgName);
141
+ } else {
142
+ remainingOverrides[pkgName] = pkgLink;
143
+ }
144
+ }
130
145
  if (actuallyRemovedPackages.length === 0) {
131
146
  logger.info('No linked packages found in workspace file that match scope roots.');
132
147
  return 'No linked packages found in workspace file that match scope roots.';
133
148
  }
134
149
  const updatedConfig = {
135
- packages: remainingPackages.sort()
150
+ ...workspaceConfig,
151
+ overrides: remainingOverrides
136
152
  };
153
+ if (Object.keys(remainingOverrides).length === 0) {
154
+ delete updatedConfig.overrides;
155
+ }
137
156
  // Write the updated workspace file
138
157
  if (isDryRun) {
139
158
  logger.info('DRY RUN: Would write the following workspace configuration:');
@@ -143,26 +162,10 @@ const execute = async (runConfig)=>{
143
162
  logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);
144
163
  } else {
145
164
  await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
146
- logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages`);
165
+ logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);
147
166
  // Rebuild pnpm lock file and node_modules
148
167
  logger.info('Rebuilding pnpm lock file and node_modules...');
149
168
  try {
150
- // Remove existing lock file and node_modules to force clean rebuild
151
- const fs = await import('fs');
152
- const pnpmLockPath = path.join(process.cwd(), 'pnpm-lock.yaml');
153
- const nodeModulesPath = path.join(process.cwd(), 'node_modules');
154
- if (await storage.exists(pnpmLockPath)) {
155
- await fs.promises.unlink(pnpmLockPath);
156
- logger.debug('Removed existing pnpm-lock.yaml');
157
- }
158
- if (await storage.exists(nodeModulesPath) && await storage.isDirectory(nodeModulesPath)) {
159
- await fs.promises.rm(nodeModulesPath, {
160
- recursive: true,
161
- force: true
162
- });
163
- logger.debug('Removed existing node_modules directory');
164
- }
165
- // Install dependencies fresh
166
169
  await run('pnpm install');
167
170
  logger.info('Successfully rebuilt pnpm lock file and node_modules');
168
171
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface WorkspaceConfig {\n packages?: string[];\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<WorkspaceConfig> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return yaml.load(content) as WorkspaceConfig;\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return { packages: [] };\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: WorkspaceConfig, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlink = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlink.length === 0) {\n logger.info('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.info(`Found ${packagesToUnlink.length} packages that could be unlinked: ${packagesToUnlink.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Filter out packages that match our scope roots\n const existingPackages = workspaceConfig.packages || [];\n const remainingPackages = existingPackages.filter(pkg => !packagesToUnlink.includes(pkg));\n const actuallyRemovedPackages = existingPackages.filter(pkg => packagesToUnlink.includes(pkg));\n\n if (actuallyRemovedPackages.length === 0) {\n logger.info('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: WorkspaceConfig = {\n packages: remainingPackages.sort()\n };\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Rebuilding pnpm lock file and node_modules...');\n try {\n // Remove existing lock file and node_modules to force clean rebuild\n const fs = await import('fs');\n const pnpmLockPath = path.join(process.cwd(), 'pnpm-lock.yaml');\n const nodeModulesPath = path.join(process.cwd(), 'node_modules');\n\n if (await storage.exists(pnpmLockPath)) {\n await fs.promises.unlink(pnpmLockPath);\n logger.debug('Removed existing pnpm-lock.yaml');\n }\n\n if (await storage.exists(nodeModulesPath) && await storage.isDirectory(nodeModulesPath)) {\n await fs.promises.rm(nodeModulesPath, { recursive: true, force: true });\n logger.debug('Removed existing node_modules directory');\n }\n\n // Install dependencies fresh\n await run('pnpm install');\n logger.info('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n}; "],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","packages","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","workspaceConfig","existingPackages","remainingPackages","filter","pkg","includes","actuallyRemovedPackages","updatedConfig","sort","fs","pnpmLockPath","nodeModulesPath","promises","unlink","rm","recursive","force","run","summary","map"],"mappings":"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"}
1
+ {"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n let yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n quotingType: \"'\",\n forceQuotes: true\n });\n\n // Post-process to fix numeric values that shouldn't be quoted\n yamlContent = yamlContent.replace(/: '(\\d+(?:\\.\\d+)*)'/g, ': $1');\n\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.info('No scope roots configured. Skipping unlink management.');\n return 'No scope roots configured. Skipping unlink management.';\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkPaths.length === 0) {\n logger.info('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n if (!workspaceConfig.overrides) {\n logger.info('No overrides found in workspace file. Nothing to do.');\n return 'No overrides found in workspace file. Nothing to do.';\n }\n\n // Filter out packages that match our scope roots from overrides\n const existingOverrides = workspaceConfig.overrides || {};\n const remainingOverrides: Record<string, string> = {};\n const actuallyRemovedPackages: string[] = [];\n const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map(p => `link:${p}`));\n\n for (const [pkgName, pkgLink] of Object.entries(existingOverrides)) {\n if (packagesToUnlinkSet.has(pkgLink)) {\n actuallyRemovedPackages.push(pkgName);\n } else {\n remainingOverrides[pkgName] = pkgLink;\n }\n }\n\n if (actuallyRemovedPackages.length === 0) {\n logger.info('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: remainingOverrides\n };\n\n if (Object.keys(remainingOverrides).length === 0) {\n delete updatedConfig.overrides;\n }\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Rebuilding pnpm lock file and node_modules...');\n try {\n await run('pnpm install');\n logger.info('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n};\n"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","quotingType","forceQuotes","replace","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","packagesToUnlinkPaths","workspaceConfig","overrides","existingOverrides","remainingOverrides","actuallyRemovedPackages","packagesToUnlinkSet","Set","map","p","pkgName","pkgLink","has","updatedConfig","run","summary","pkg"],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- const VERSION = '0.0.6 (HEAD/0439a56 T:v0.0.6 2025-06-29 23:01:28 -0700) linux x64 v22.16.0';
1
+ const VERSION = '0.0.9 (HEAD/ad6d978 T:v0.0.9 2025-06-30 15:27:19 -0700) linux x64 v22.16.0';
2
2
  const PROGRAM_NAME = 'kodrdriv';
3
3
  const DEFAULT_CHARACTER_ENCODING = 'utf-8';
4
4
  const DEFAULT_OVERRIDES = false;
package/dist/main.js CHANGED
@@ -41,7 +41,8 @@ async function main() {
41
41
  if (commandName === COMMAND_COMMIT) {
42
42
  summary = await execute(runConfig);
43
43
  } else if (commandName === COMMAND_RELEASE) {
44
- summary = await execute$1(runConfig);
44
+ const releaseSummary = await execute$1(runConfig);
45
+ summary = `${releaseSummary.title}\n\n${releaseSummary.body}`;
45
46
  } else if (commandName === COMMAND_PUBLISH) {
46
47
  await execute$2(runConfig);
47
48
  } else if (commandName === COMMAND_LINK) {
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 * as Arguments from './arguments';\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 Unlink from './commands/unlink';\nimport { COMMAND_COMMIT, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { CommandConfig } from 'types';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\nexport async function main() {\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR, // Default directory for config file\n },\n configShape: ConfigSchema.shape as any, // Cast to any to avoid TypeScript recursion issues\n logger: getLogger(), // Optional: Pass logger instance\n });\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\n try {\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 === 'release' || command === 'publish' || command === 'link' || command === 'unlink') {\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_RELEASE) {\n summary = await Release.execute(runConfig);\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 }\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":["main","cardigantime","Cardigantime","create","defaults","configDirectory","DEFAULT_CONFIG_DIR","configShape","ConfigSchema","shape","logger","getLogger","runConfig","secureConfig","commandConfig","Arguments","verbose","setLogLevel","debug","command","process","argv","commandName","summary","COMMAND_COMMIT","Commit","COMMAND_RELEASE","Release","COMMAND_PUBLISH","Publish","COMMAND_LINK","Link","COMMAND_UNLINK","Unlink","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 * as Arguments from './arguments';\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 Unlink from './commands/unlink';\nimport { COMMAND_COMMIT, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { CommandConfig } from 'types';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\nexport async function main() {\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR, // Default directory for config file\n },\n configShape: ConfigSchema.shape as any, // Cast to any to avoid TypeScript recursion issues\n logger: getLogger(), // Optional: Pass logger instance\n });\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\n try {\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 === 'release' || command === 'publish' || command === 'link' || command === 'unlink') {\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_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 }\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":["main","cardigantime","Cardigantime","create","defaults","configDirectory","DEFAULT_CONFIG_DIR","configShape","ConfigSchema","shape","logger","getLogger","runConfig","secureConfig","commandConfig","Arguments","verbose","setLogLevel","debug","command","process","argv","commandName","summary","COMMAND_COMMIT","Commit","COMMAND_RELEASE","releaseSummary","Release","title","body","COMMAND_PUBLISH","Publish","COMMAND_LINK","Link","COMMAND_UNLINK","Unlink","console","log","error","message","stack","exit"],"mappings":"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"}
@@ -4,6 +4,24 @@ Task #2: Provide a detailed list of changes involved in this release, and make s
4
4
 
5
5
  Task #3: Use the content in the <context> section to help you write the release notes and to help make connections with people, projects, issues, features, and other information.
6
6
 
7
+ ### Output Format
8
+
9
+ Your response MUST be a valid JSON object with the following structure:
10
+ {
11
+ "title": "A single-line, concise title for the release.",
12
+ "body": "The detailed release notes in Markdown format."
13
+ }
14
+
15
+ **Instructions for the `title` field:**
16
+ - It must be a single line.
17
+ - It should capture the most significant, substantive changes in the release.
18
+ - Focus on what is noticeable to developers using the software.
19
+ - AVOID mentioning trivial changes like "improving formatting," "updating dependencies," or "refactoring code."
20
+
21
+ **Instructions for the `body` field:**
22
+ - This should be the full release notes in Markdown format.
23
+ - Follow the detailed instructions below for structuring and writing the release notes.
24
+
7
25
  ### Output Restrictions
8
26
 
9
27
  - Do not mention and people or contributors in the release notes. For example, do not say, "Thanks to John Doe for this feature." Release notes are to be impersonal and not focused on indiviudals.
@@ -48,12 +66,12 @@ Create release notes that:
48
66
 
49
67
  3. **Use clear, factual bullet points** under each section. Briefly describe what changed and why it's relevant — **but do not use marketing language**. Avoid vague or exaggerated terms like:
50
68
 
51
- * awesome new feature
52
- * significant boost
53
- * exciting changes
54
- * revolutionary update
69
+ * "awesome new feature"
70
+ * "significant boost"
71
+ * "exciting changes"
72
+ * "revolutionary update"
55
73
 
56
- 4. **Keep your tone technical, neutral, and useful.** Its okay to include references to:
74
+ 4. **Keep your tone technical, neutral, and useful.** It's okay to include references to:
57
75
 
58
76
  * Affected files or systems
59
77
  * Internal components (if relevant to the audience)
@@ -64,26 +82,9 @@ Create release notes that:
64
82
 
65
83
  ## 📝 Output Format Example
66
84
 
67
- **Release v1.6.0 – May 26, 2025**
68
-
69
- This release focuses on simplifying the configuration system and removing deprecated environment-specific files. Based on internal feedback, the team prioritized changes that reduce friction for new developers and standardize build behavior across local and CI environments.
70
-
71
- **Improvements**
72
-
73
- * Unified `vite.config.ts` and `webpack.config.js` into a single environment-aware module
74
- * Reduced config nesting depth in `tsconfig.json` to improve readability
75
- * Updated CI scripts to use `.env.defaults` instead of `.env.local`
76
-
77
- **Bug Fixes**
78
-
79
- * Fixed crash in config loader when optional fields were undefined
80
- * Resolved issue with `yarn build` failing on Windows due to missing path escape
81
-
82
- **Documentation Updates**
83
-
84
- * Rewrote setup instructions in `README.md` to reflect unified config process
85
- * Removed legacy instructions for `env.local.js`
86
-
87
- ---
88
-
89
- Let me know if you'd like a version optimized for a changelog generator plugin or a GitHub Actions pipeline.
85
+ ```json
86
+ {
87
+ "title": "New Generation Types, and Updates to API",
88
+ "body": "This release focuses on simplifying the configuration system and removing deprecated environment-specific files. Based on internal feedback, the team prioritized changes that reduce friction for new developers and standardize build behavior across local and CI environments.\\n\\n**Improvements**\\n\\n* Unified `vite.config.ts` and `webpack.config.js` into a single environment-aware module\\n* Reduced config nesting depth in `tsconfig.json` to improve readability\\n* Updated CI scripts to use `.env.defaults` instead of `.env.local`\\n\\n**Bug Fixes**\\n\\n* Fixed crash in config loader when optional fields were undefined\\n* Resolved issue with `yarn build` failing on Windows due to missing path escape\\n\\n**Documentation Updates**\\n\\n* Rewrote setup instructions in `README.md` to reflect unified config process\\n* Removed legacy instructions for `env.local.js`"
89
+ }
90
+ ```
package/dist/types.js CHANGED
@@ -28,7 +28,9 @@ const ConfigSchema = z.object({
28
28
  'rebase'
29
29
  ]).optional(),
30
30
  dependencyUpdatePatterns: z.array(z.string()).optional(),
31
- requiredEnvVars: z.array(z.string()).optional()
31
+ requiredEnvVars: z.array(z.string()).optional(),
32
+ linkWorkspacePackages: z.boolean().optional(),
33
+ unlinkWorkspacePackages: z.boolean().optional()
32
34
  }).optional(),
33
35
  link: z.object({
34
36
  scopeRoots: z.record(z.string(), z.string()).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 instructions: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().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 }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","instructions","string","model","contextDirectories","array","commit","add","cached","sendit","messageLimit","number","context","release","from","to","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","link","scopeRoots","record","workspaceFile","excludedPatterns","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 instructions: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().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 }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","instructions","string","model","contextDirectories","array","commit","add","cached","sendit","messageLimit","number","context","release","from","to","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","record","workspaceFile","excludedPatterns","openaiApiKey","commandName"],"mappings":"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"}
@@ -125,7 +125,7 @@ const mergePullRequest = async (prNumber, mergeMethod = 'squash')=>{
125
125
  });
126
126
  logger.info(`Branch ${headBranch} deleted.`);
127
127
  };
128
- const createRelease = async (tagName, notes)=>{
128
+ const createRelease = async (tagName, title, notes)=>{
129
129
  const octokit = getOctokit();
130
130
  const { owner, repo } = await getRepoDetails();
131
131
  const logger = getLogger();
@@ -134,7 +134,7 @@ const createRelease = async (tagName, notes)=>{
134
134
  owner,
135
135
  repo,
136
136
  tag_name: tagName,
137
- name: tagName,
137
+ name: title,
138
138
  body: notes
139
139
  });
140
140
  logger.info(`Release ${tagName} created.`);
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w-]+)\\.git/);\n if (!match) {\n throw new Error('Could not parse repository owner and name from origin URL.');\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n return response.data[0] ?? null;\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\nexport const waitForPullRequestChecks = async (prNumber: number): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n while (true) {\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n logger.info(`PR #${prNumber}: No checks found. Waiting...`);\n await delay(10000);\n continue;\n }\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: tagName,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","list","state","delay","ms","Promise","resolve","setTimeout","waitForPullRequestChecks","prNumber","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","length","info","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","status","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name"],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w-]+)\\.git/);\n if (!match) {\n throw new Error('Could not parse repository owner and name from origin URL.');\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n return response.data[0] ?? null;\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\nexport const waitForPullRequestChecks = async (prNumber: number): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n while (true) {\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n logger.info(`PR #${prNumber}: No checks found. Waiting...`);\n await delay(10000);\n continue;\n }\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, title: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: title,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","list","state","delay","ms","Promise","resolve","setTimeout","waitForPullRequestChecks","prNumber","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","length","info","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","status","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eldrforge/kodrdriv",
3
- "version": "0.0.6",
3
+ "version": "0.0.9",
4
4
  "description": "Create Intelligent Release Notes or Change Logs from Git",
5
5
  "main": "dist/main.js",
6
6
  "type": "module",
@@ -43,11 +43,11 @@
43
43
  "@swc/core": "^1.12.7",
44
44
  "@types/js-yaml": "^4.0.9",
45
45
  "@types/luxon": "^3.6.2",
46
- "@types/node": "^24.0.7",
46
+ "@types/node": "^24.0.8",
47
47
  "@types/shell-escape": "^0.2.3",
48
48
  "@types/winston": "^2.4.4",
49
- "@typescript-eslint/eslint-plugin": "^8.35.0",
50
- "@typescript-eslint/parser": "^8.35.0",
49
+ "@typescript-eslint/eslint-plugin": "^8.35.1",
50
+ "@typescript-eslint/parser": "^8.35.1",
51
51
  "@vitest/coverage-v8": "^3.2.4",
52
52
  "copyfiles": "^2.4.1",
53
53
  "esbuild": "0.25.5",