@eldrforge/kodrdriv 0.0.3 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.kodrdriv/config.yaml +13 -5
  2. package/.kodrdriv/context/content.md +1 -0
  3. package/README.md +421 -4
  4. package/dist/arguments.js +93 -16
  5. package/dist/arguments.js.map +1 -1
  6. package/dist/commands/commit.js +15 -8
  7. package/dist/commands/commit.js.map +1 -1
  8. package/dist/commands/link.js +183 -0
  9. package/dist/commands/link.js.map +1 -0
  10. package/dist/commands/publish.js +216 -0
  11. package/dist/commands/publish.js.map +1 -0
  12. package/dist/commands/release.js +4 -1
  13. package/dist/commands/release.js.map +1 -1
  14. package/dist/commands/unlink.js +179 -0
  15. package/dist/commands/unlink.js.map +1 -0
  16. package/dist/constants.js +24 -3
  17. package/dist/constants.js.map +1 -1
  18. package/dist/content/diff.js.map +1 -1
  19. package/dist/content/log.js.map +1 -1
  20. package/dist/error/ExitError.js.map +1 -1
  21. package/dist/logging.js.map +1 -1
  22. package/dist/main.js +13 -3
  23. package/dist/main.js.map +1 -1
  24. package/dist/prompt/instructions/release.md +29 -28
  25. package/dist/prompt/prompts.js.map +1 -1
  26. package/dist/types.js +17 -0
  27. package/dist/types.js.map +1 -1
  28. package/dist/util/child.js.map +1 -1
  29. package/dist/util/general.js +13 -1
  30. package/dist/util/general.js.map +1 -1
  31. package/dist/util/github.js +144 -0
  32. package/dist/util/github.js.map +1 -0
  33. package/dist/util/openai.js.map +1 -1
  34. package/dist/util/storage.js +4 -0
  35. package/dist/util/storage.js.map +1 -1
  36. package/package.json +19 -18
  37. package/vitest.config.ts +7 -4
  38. package/.kodrdriv/context/people/context.md +0 -5
  39. package/.kodrdriv/context/projects/context.md +0 -3
  40. package/.kodrdriv/instructions/INACTIVE-release-pre.md +0 -1
@@ -0,0 +1,183 @@
1
+ import path from 'path';
2
+ import yaml from 'js-yaml';
3
+ import { getLogger } from '../logging.js';
4
+ import { create } from '../util/storage.js';
5
+ import { run } from '../util/child.js';
6
+
7
+ const scanDirectoryForPackages = async (rootDir, storage)=>{
8
+ const logger = getLogger();
9
+ const packageMap = new Map(); // packageName -> relativePath
10
+ const absoluteRootDir = path.resolve(process.cwd(), rootDir);
11
+ logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);
12
+ if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {
13
+ logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);
14
+ return packageMap;
15
+ }
16
+ try {
17
+ // Get all subdirectories in the root directory
18
+ const items = await storage.listFiles(absoluteRootDir);
19
+ for (const item of items){
20
+ const itemPath = path.join(absoluteRootDir, item);
21
+ if (await storage.isDirectory(itemPath)) {
22
+ const packageJsonPath = path.join(itemPath, 'package.json');
23
+ if (await storage.exists(packageJsonPath)) {
24
+ try {
25
+ const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');
26
+ const packageJson = JSON.parse(packageJsonContent);
27
+ if (packageJson.name) {
28
+ const relativePath = path.relative(process.cwd(), itemPath);
29
+ packageMap.set(packageJson.name, relativePath);
30
+ logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);
31
+ }
32
+ } catch (error) {
33
+ logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ } catch (error) {
39
+ logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);
40
+ }
41
+ return packageMap;
42
+ };
43
+ const findPackagesByScope = async (dependencies, scopeRoots, storage)=>{
44
+ const logger = getLogger();
45
+ const workspacePackages = new Map();
46
+ logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);
47
+ // First, scan all scope roots to build a comprehensive map of available packages
48
+ const allPackages = new Map(); // packageName -> relativePath
49
+ for (const [scope, rootDir] of Object.entries(scopeRoots)){
50
+ logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);
51
+ const scopePackages = await scanDirectoryForPackages(rootDir, storage);
52
+ // Add packages from this scope to the overall map
53
+ for (const [packageName, packagePath] of scopePackages){
54
+ if (packageName.startsWith(scope)) {
55
+ allPackages.set(packageName, packagePath);
56
+ logger.debug(`Registered package: ${packageName} -> ${packagePath}`);
57
+ }
58
+ }
59
+ }
60
+ // Now check each dependency against our discovered packages
61
+ for (const [depName, depVersion] of Object.entries(dependencies)){
62
+ logger.debug(`Processing dependency: ${depName}@${depVersion}`);
63
+ if (allPackages.has(depName)) {
64
+ const packagePath = allPackages.get(depName);
65
+ workspacePackages.set(depName, packagePath);
66
+ logger.info(`Found sibling package: ${depName} at ${packagePath}`);
67
+ }
68
+ }
69
+ return workspacePackages;
70
+ };
71
+ const readCurrentWorkspaceFile = async (workspaceFilePath, storage)=>{
72
+ if (await storage.exists(workspaceFilePath)) {
73
+ try {
74
+ const content = await storage.readFile(workspaceFilePath, 'utf-8');
75
+ return yaml.load(content) || {};
76
+ } catch (error) {
77
+ throw new Error(`Failed to parse existing workspace file: ${error}`);
78
+ }
79
+ }
80
+ return {};
81
+ };
82
+ const writeWorkspaceFile = async (workspaceFilePath, config, storage)=>{
83
+ const yamlContent = yaml.dump(config, {
84
+ indent: 2,
85
+ lineWidth: -1,
86
+ noRefs: true,
87
+ sortKeys: false
88
+ });
89
+ await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');
90
+ };
91
+ const execute = async (runConfig)=>{
92
+ var _runConfig_link, _runConfig_link1, _runConfig_link2;
93
+ const logger = getLogger();
94
+ const storage = create({
95
+ log: logger.info
96
+ });
97
+ logger.info('Starting pnpm workspace link management using overrides...');
98
+ // Read current package.json
99
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
100
+ if (!await storage.exists(packageJsonPath)) {
101
+ throw new Error('package.json not found in current directory.');
102
+ }
103
+ let packageJson;
104
+ try {
105
+ const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');
106
+ packageJson = JSON.parse(packageJsonContent);
107
+ } catch (error) {
108
+ throw new Error(`Failed to parse package.json: ${error}`);
109
+ }
110
+ logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);
111
+ // Get configuration
112
+ const scopeRoots = ((_runConfig_link = runConfig.link) === null || _runConfig_link === void 0 ? void 0 : _runConfig_link.scopeRoots) || {};
113
+ const workspaceFileName = ((_runConfig_link1 = runConfig.link) === null || _runConfig_link1 === void 0 ? void 0 : _runConfig_link1.workspaceFile) || 'pnpm-workspace.yaml';
114
+ const isDryRun = runConfig.dryRun || ((_runConfig_link2 = runConfig.link) === null || _runConfig_link2 === void 0 ? void 0 : _runConfig_link2.dryRun) || false;
115
+ logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));
116
+ logger.debug('Extracted workspaceFileName:', workspaceFileName);
117
+ logger.debug('Extracted isDryRun:', isDryRun);
118
+ if (Object.keys(scopeRoots).length === 0) {
119
+ throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');
120
+ }
121
+ logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
122
+ // Collect all dependencies
123
+ const allDependencies = {
124
+ ...packageJson.dependencies,
125
+ ...packageJson.devDependencies,
126
+ ...packageJson.peerDependencies
127
+ };
128
+ logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);
129
+ // Find matching sibling packages
130
+ const packagesToLink = await findPackagesByScope(allDependencies, scopeRoots, storage);
131
+ if (packagesToLink.size === 0) {
132
+ logger.info('No matching sibling packages found for linking.');
133
+ return 'No matching sibling packages found for linking.';
134
+ }
135
+ logger.info(`Found ${packagesToLink.size} packages to link: ${[
136
+ ...packagesToLink.keys()
137
+ ].join(', ')}`);
138
+ // Read existing workspace configuration
139
+ const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
140
+ const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
141
+ // Create overrides
142
+ const newOverrides = {};
143
+ for (const [packageName, packagePath] of packagesToLink.entries()){
144
+ newOverrides[packageName] = `link:${packagePath}`;
145
+ }
146
+ const updatedOverrides = {
147
+ ...workspaceConfig.overrides || {},
148
+ ...newOverrides
149
+ };
150
+ const sortedOverrides = Object.keys(updatedOverrides).sort().reduce((obj, key)=>{
151
+ obj[key] = updatedOverrides[key];
152
+ return obj;
153
+ }, {});
154
+ const updatedConfig = {
155
+ ...workspaceConfig,
156
+ overrides: sortedOverrides
157
+ };
158
+ // Write the updated workspace file
159
+ if (isDryRun) {
160
+ logger.info('DRY RUN: Would write the following workspace configuration:');
161
+ logger.info(yaml.dump(updatedConfig, {
162
+ indent: 2
163
+ }));
164
+ } else {
165
+ await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
166
+ logger.info(`Updated ${workspaceFileName} with ${packagesToLink.size} linked packages in overrides.`);
167
+ // Rebuild pnpm lock file and node_modules
168
+ logger.info('Running pnpm install to apply links...');
169
+ try {
170
+ await run('pnpm install');
171
+ logger.info('Successfully applied links.');
172
+ } catch (error) {
173
+ logger.warn(`Failed to run pnpm install: ${error}. You may need to run 'pnpm install' manually.`);
174
+ }
175
+ }
176
+ const summary = `Successfully linked ${packagesToLink.size} sibling packages:\n${[
177
+ ...packagesToLink.entries()
178
+ ].map(([name, path])=>` - ${name}: link:${path}`).join('\n')}`;
179
+ return summary;
180
+ };
181
+
182
+ export { execute };
183
+ //# sourceMappingURL=link.js.map
@@ -0,0 +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';\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 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 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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"}
@@ -0,0 +1,216 @@
1
+ import path from 'path';
2
+ import { execute as execute$2 } from './commit.js';
3
+ import { hasStagedChanges } from '../content/diff.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';
7
+ import { getLogger } from '../logging.js';
8
+ import { run } from '../util/child.js';
9
+ import { getCurrentBranchName, findOpenPullRequestByHeadRef, createPullRequest, waitForPullRequestChecks, mergePullRequest, createRelease } from '../util/github.js';
10
+ import { create } from '../util/storage.js';
11
+ import { incrementPatchVersion } from '../util/general.js';
12
+
13
+ const scanNpmrcForEnvVars = async (storage)=>{
14
+ const npmrcPath = path.join(process.cwd(), '.npmrc');
15
+ const envVars = [];
16
+ if (await storage.exists(npmrcPath)) {
17
+ try {
18
+ const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');
19
+ // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME
20
+ const envVarMatches = npmrcContent.match(/\$\{([^}]+)\}|\$([A-Z_][A-Z0-9_]*)/g);
21
+ if (envVarMatches) {
22
+ for (const match of envVarMatches){
23
+ // Extract variable name from ${VAR_NAME} or $VAR_NAME format
24
+ const varName = match.replace(/\$\{|\}|\$/g, '');
25
+ if (varName && !envVars.includes(varName)) {
26
+ envVars.push(varName);
27
+ }
28
+ }
29
+ }
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ } catch (error) {
32
+ // If we can't read .npmrc, that's okay - just continue
33
+ }
34
+ }
35
+ return envVars;
36
+ };
37
+ const validateEnvironmentVariables = (requiredEnvVars)=>{
38
+ const logger = getLogger();
39
+ const missingEnvVars = [];
40
+ for (const envVar of requiredEnvVars){
41
+ if (!process.env[envVar]) {
42
+ missingEnvVars.push(envVar);
43
+ }
44
+ }
45
+ if (missingEnvVars.length > 0) {
46
+ logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);
47
+ throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);
48
+ }
49
+ };
50
+ const runPrechecks = async (runConfig)=>{
51
+ var _packageJson_scripts, _runConfig_publish;
52
+ const logger = getLogger();
53
+ const storage = create({
54
+ log: logger.info
55
+ });
56
+ logger.info('Running prechecks...');
57
+ // Check if we're in a git repository
58
+ try {
59
+ await run('git rev-parse --git-dir');
60
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
61
+ } catch (error) {
62
+ throw new Error('Not in a git repository. Please run this command from within a git repository.');
63
+ }
64
+ // Check for uncommitted changes
65
+ logger.info('Checking for uncommitted changes...');
66
+ try {
67
+ const { stdout } = await run('git status --porcelain');
68
+ if (stdout.trim()) {
69
+ throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');
70
+ }
71
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
72
+ } catch (error) {
73
+ throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');
74
+ }
75
+ // Check if we're on a release branch
76
+ logger.info('Checking current branch...');
77
+ const currentBranch = await getCurrentBranchName();
78
+ if (!currentBranch.startsWith('release/')) {
79
+ 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.`);
80
+ }
81
+ // Check if prepublishOnly script exists in package.json
82
+ logger.info('Checking for prepublishOnly script...');
83
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
84
+ if (!await storage.exists(packageJsonPath)) {
85
+ throw new Error('package.json not found in current directory.');
86
+ }
87
+ let packageJson;
88
+ try {
89
+ const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');
90
+ packageJson = JSON.parse(packageJsonContents);
91
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
92
+ } catch (error) {
93
+ throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');
94
+ }
95
+ if (!((_packageJson_scripts = packageJson.scripts) === null || _packageJson_scripts === void 0 ? void 0 : _packageJson_scripts.prepublishOnly)) {
96
+ 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).');
97
+ }
98
+ // Check required environment variables
99
+ logger.info('Checking required environment variables...');
100
+ const coreRequiredEnvVars = ((_runConfig_publish = runConfig.publish) === null || _runConfig_publish === void 0 ? void 0 : _runConfig_publish.requiredEnvVars) || [];
101
+ const npmrcEnvVars = await scanNpmrcForEnvVars(storage);
102
+ const allRequiredEnvVars = [
103
+ ...new Set([
104
+ ...coreRequiredEnvVars,
105
+ ...npmrcEnvVars
106
+ ])
107
+ ];
108
+ if (allRequiredEnvVars.length > 0) {
109
+ logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);
110
+ validateEnvironmentVariables(allRequiredEnvVars);
111
+ } else {
112
+ logger.info('No required environment variables specified.');
113
+ }
114
+ logger.info('All prechecks passed.');
115
+ };
116
+ const execute = async (runConfig)=>{
117
+ const logger = getLogger();
118
+ const storage = create({
119
+ log: logger.info
120
+ });
121
+ // Run prechecks before starting any work
122
+ await runPrechecks(runConfig);
123
+ logger.info('Starting release process...');
124
+ try {
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
+ const branchName = await getCurrentBranchName();
135
+ let pr = await findOpenPullRequestByHeadRef(branchName);
136
+ if (pr) {
137
+ logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);
138
+ } else {
139
+ var _runConfig_publish2;
140
+ logger.info('No open pull request found, starting new release publishing process...');
141
+ // 1. Prepare for release
142
+ logger.info('Preparing for release: switching from workspace to remote dependencies.');
143
+ logger.info('Updating dependencies to latest versions from registry');
144
+ const updatePatterns = (_runConfig_publish2 = runConfig.publish) === null || _runConfig_publish2 === void 0 ? void 0 : _runConfig_publish2.dependencyUpdatePatterns;
145
+ if (updatePatterns && updatePatterns.length > 0) {
146
+ logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);
147
+ const patternsArg = updatePatterns.join(' ');
148
+ await run(`pnpm update --latest ${patternsArg}`);
149
+ } else {
150
+ logger.info('No dependency update patterns specified, updating all dependencies');
151
+ await run('pnpm update --latest');
152
+ }
153
+ logger.info('Staging changes for release commit');
154
+ await run('git add package.json pnpm-lock.yaml');
155
+ logger.info('Running prepublishOnly script...');
156
+ await run('pnpm run prepublishOnly');
157
+ logger.info('Checking for staged changes...');
158
+ if (await hasStagedChanges()) {
159
+ logger.info('Staged changes found, creating commit...');
160
+ await execute$2(runConfig);
161
+ } else {
162
+ logger.info('No changes to commit, skipping commit.');
163
+ }
164
+ logger.info('Bumping version...');
165
+ await run('pnpm version patch');
166
+ logger.info('Generating release notes...');
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.');
171
+ logger.info('Pushing to origin...');
172
+ await run('git push --follow-tags');
173
+ logger.info('Creating pull request...');
174
+ const { stdout: commitTitle } = await run('git log -1 --pretty=%B');
175
+ pr = await createPullRequest(commitTitle, 'Automated release PR.', branchName);
176
+ if (!pr) {
177
+ throw new Error('Failed to create pull request.');
178
+ }
179
+ logger.info(`Pull request created: ${pr.html_url}`);
180
+ }
181
+ logger.info(`Waiting for PR #${pr.number} checks to complete...`);
182
+ await waitForPullRequestChecks(pr.number);
183
+ const mergeMethod = ((_runConfig_publish1 = runConfig.publish) === null || _runConfig_publish1 === void 0 ? void 0 : _runConfig_publish1.mergeMethod) || 'squash';
184
+ await mergePullRequest(pr.number, mergeMethod);
185
+ logger.info('Checking out main branch...');
186
+ await run('git checkout main');
187
+ await run('git pull origin main');
188
+ logger.info('Creating GitHub release...');
189
+ const packageJsonContents = await storage.readFile('package.json', 'utf-8');
190
+ const { version } = JSON.parse(packageJsonContents);
191
+ const tagName = `v${version}`;
192
+ const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');
193
+ const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');
194
+ await createRelease(tagName, releaseTitle, releaseNotesContent);
195
+ logger.info('Creating new release branch...');
196
+ const nextVersion = incrementPatchVersion(version);
197
+ const newBranchName = `release/${nextVersion}`;
198
+ await run(`git checkout -b ${newBranchName}`);
199
+ await run(`git push -u origin ${newBranchName}`);
200
+ logger.info(`Branch ${newBranchName} created and pushed to origin.`);
201
+ logger.info('Preparation complete.');
202
+ } finally{
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
+ }
212
+ }
213
+ };
214
+
215
+ export { execute };
216
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +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 * 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":";;;;;;;;AAWO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,UAAU,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAGWA,kBAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAGxDA,qBAA0DA,CAMvBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAX1E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,UAAU,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAACF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUG,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAWH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAE1BA,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAA/F,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAU,CAAC,CAAA;QAAEC,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,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAI,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA2BQ,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;QAA2BC,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAjBP,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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,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,qBAAyBU,CAAAA,CAAAA,CAAAA,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,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,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,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoEA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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,CAAMY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAW,CAAC,CAAA;QAAEP,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,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAI,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA2BQ,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;QAA2BC,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,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,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAE,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAyBU,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;AAAyBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,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,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,yCAAAA,2BAA8Be,CAAAA,CAAAA,CAAAA,CAAAA,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,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAElBA,WAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMJ,KAAKK,GAAG,CAAA,CAAA,CAAA;IAC5BN,UAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMP,IAAIa,GAAG,CAAA,CAAA,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMjB,CAAQkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAACR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYK,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,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,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,oBAAmBoB,OAAO,CAAA,CAAA;CAEpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,OAAAA,CAAmBpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQqB,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAACJ,MAAAA,CAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMK,OAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,gBAAiBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAkC,CAAA,CAAA;AAAEtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOH,CAAAA,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,CAAA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"}