@webpieces/ai-hook-rules 0.3.154 → 0.3.155

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webpieces/ai-hook-rules",
3
- "version": "0.3.154",
3
+ "version": "0.3.155",
4
4
  "description": "Pluggable write-time validation framework for AI coding agents (@webpieces/ai-hook-rules). Claude Code PreToolUse + openclaw before_tool_call adapters share one rule engine.",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -35,7 +35,7 @@
35
35
  "directory": "packages/tooling/ai-hook-rules"
36
36
  },
37
37
  "dependencies": {
38
- "@webpieces/rules-config": "0.3.154"
38
+ "@webpieces/rules-config": "0.3.155"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export declare function main(): Promise<void>;
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.main = main;
@@ -1 +1 @@
1
- {"version":3,"file":"git-gatherInfo.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-gatherInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { execSync, spawnSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { getFeatureName } from './workflow/git-readAiBranchName';\nimport { findForkPoint } from './workflow/git-findForkPoint';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\ninterface HashPoints {\n hashForkPoint: string;\n hashFeatureHead: string;\n hashMainHead: string;\n}\n\nfunction validateCleanTree(currentBranch: string): void {\n if (currentBranch === 'main') {\n process.stderr.write('❌ Error: Already on main branch. No need to update from main.\\n');\n process.exit(1);\n }\n\n process.stderr.write(`Current branch: ${currentBranch}\\n`);\n\n const hasDirtyFiles = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status !== 0;\n if (!hasDirtyFiles) return;\n\n const changedFiles = execSync('git diff --name-only HEAD', { encoding: 'utf8' }).trim();\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('❌ ERROR: You have uncommitted changes\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Please commit or stash your changes before updating from main.\\n');\n process.stderr.write('\\n');\n process.stderr.write('Files with changes:\\n');\n process.stderr.write(changedFiles + '\\n');\n process.stderr.write('\\n');\n process.stderr.write('\\x1b[1;31mTo commit your changes, run:\\n');\n process.stderr.write(' git add -A && git commit -m \"your message\"\\x1b[0m\\n');\n process.stderr.write('\\n');\n process.stderr.write('Or to stash them temporarily:\\n');\n process.stderr.write(' git stash\\n');\n process.stderr.write(' ./scripts/git-updateFromMain.sh\\n');\n process.stderr.write(' git stash pop\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.exit(1);\n}\n\nfunction printHashPoints(hashes: HashPoints, currentBranch: string, mergeDir: string): void {\n process.stderr.write('📍 The 3 Hash Points:\\n');\n process.stderr.write(` 1. Fork point (A): ${hashes.hashForkPoint}\\n`);\n process.stderr.write(` (where ${currentBranch} diverged from main)\\n`);\n process.stderr.write('\\n');\n process.stderr.write(` 2. Feature HEAD (B): ${hashes.hashFeatureHead}\\n`);\n process.stderr.write(` (tip of ${currentBranch})\\n`);\n process.stderr.write('\\n');\n process.stderr.write(` 3. Main HEAD (C): ${hashes.hashMainHead}\\n`);\n process.stderr.write(' (current origin/main)\\n');\n process.stderr.write('\\n');\n process.stderr.write(`Merge directory: ${mergeDir}\\n`);\n process.stderr.write('\\n');\n}\n\nexport async function main(): Promise<void> {\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n const featureName = getFeatureName();\n const repoRoot = execSync('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();\n const mergeDir = path.join(repoRoot, 'webpiecesTmp', `merge-${featureName}`);\n fs.mkdirSync(mergeDir, { recursive: true });\n\n validateCleanTree(currentBranch);\n\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('📍 Gathering Merge Context\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Fetching latest changes from origin/main...\\n');\n spawnSync('git', ['fetch', 'origin', 'main'], { stdio: 'inherit' });\n\n await findForkPoint('merge');\n\n const hashesFile = path.join(mergeDir, 'updatemain-hashes.json');\n const hashes = JSON.parse(fs.readFileSync(hashesFile, 'utf8')) as HashPoints;\n\n printHashPoints(hashes, currentBranch, mergeDir);\n\n if (hashes.hashForkPoint === hashes.hashMainHead) {\n process.stderr.write(SEP);\n process.stderr.write('✅ Already up to date with main!\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Your branch has not diverged from main.\\n');\n process.stderr.write('There are no new changes from main to merge.\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.exit(0);\n }\n\n process.stderr.write('Main has advanced. Merge will be needed.\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}
1
+ {"version":3,"file":"git-gatherInfo.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-gatherInfo.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { execSync, spawnSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { getFeatureName } from './workflow/git-readAiBranchName';\nimport { findForkPoint } from './workflow/git-findForkPoint';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\ninterface HashPoints {\n hashForkPoint: string;\n hashFeatureHead: string;\n hashMainHead: string;\n}\n\nfunction validateCleanTree(currentBranch: string): void {\n if (currentBranch === 'main') {\n process.stderr.write('❌ Error: Already on main branch. No need to update from main.\\n');\n process.exit(1);\n }\n\n process.stderr.write(`Current branch: ${currentBranch}\\n`);\n\n const hasDirtyFiles = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status !== 0;\n if (!hasDirtyFiles) return;\n\n const changedFiles = execSync('git diff --name-only HEAD', { encoding: 'utf8' }).trim();\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('❌ ERROR: You have uncommitted changes\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Please commit or stash your changes before updating from main.\\n');\n process.stderr.write('\\n');\n process.stderr.write('Files with changes:\\n');\n process.stderr.write(changedFiles + '\\n');\n process.stderr.write('\\n');\n process.stderr.write('\\x1b[1;31mTo commit your changes, run:\\n');\n process.stderr.write(' git add -A && git commit -m \"your message\"\\x1b[0m\\n');\n process.stderr.write('\\n');\n process.stderr.write('Or to stash them temporarily:\\n');\n process.stderr.write(' git stash\\n');\n process.stderr.write(' ./scripts/git-updateFromMain.sh\\n');\n process.stderr.write(' git stash pop\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.exit(1);\n}\n\nfunction printHashPoints(hashes: HashPoints, currentBranch: string, mergeDir: string): void {\n process.stderr.write('📍 The 3 Hash Points:\\n');\n process.stderr.write(` 1. Fork point (A): ${hashes.hashForkPoint}\\n`);\n process.stderr.write(` (where ${currentBranch} diverged from main)\\n`);\n process.stderr.write('\\n');\n process.stderr.write(` 2. Feature HEAD (B): ${hashes.hashFeatureHead}\\n`);\n process.stderr.write(` (tip of ${currentBranch})\\n`);\n process.stderr.write('\\n');\n process.stderr.write(` 3. Main HEAD (C): ${hashes.hashMainHead}\\n`);\n process.stderr.write(' (current origin/main)\\n');\n process.stderr.write('\\n');\n process.stderr.write(`Merge directory: ${mergeDir}\\n`);\n process.stderr.write('\\n');\n}\n\nexport async function main(): Promise<void> {\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n const featureName = getFeatureName();\n const repoRoot = execSync('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();\n const mergeDir = path.join(repoRoot, 'webpiecesTmp', `merge-${featureName}`);\n fs.mkdirSync(mergeDir, { recursive: true });\n\n validateCleanTree(currentBranch);\n\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('📍 Gathering Merge Context\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Fetching latest changes from origin/main...\\n');\n spawnSync('git', ['fetch', 'origin', 'main'], { stdio: 'inherit' });\n\n await findForkPoint('merge');\n\n const hashesFile = path.join(mergeDir, 'updatemain-hashes.json');\n const hashes = JSON.parse(fs.readFileSync(hashesFile, 'utf8')) as HashPoints;\n\n printHashPoints(hashes, currentBranch, mergeDir);\n\n if (hashes.hashForkPoint === hashes.hashMainHead) {\n process.stderr.write(SEP);\n process.stderr.write('✅ Already up to date with main!\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n process.stderr.write('Your branch has not diverged from main.\\n');\n process.stderr.write('There are no new changes from main to merge.\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.exit(0);\n }\n\n process.stderr.write('Main has advanced. Merge will be needed.\\n');\n process.stderr.write('\\n');\n process.stderr.write(SEP);\n process.stderr.write('\\n');\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export declare function main(): Promise<void>;
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.main = main;
@@ -1 +1 @@
1
- {"version":3,"file":"git-mergeComplete.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-mergeComplete.ts"],"names":[],"mappings":"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","sourcesContent":["import { execSync, spawnSync } from 'child_process';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\nexport async function main(): Promise<void> {\n process.stdout.write(SEP);\n process.stdout.write('📝 Staging Merge Changes for Review\\n');\n process.stdout.write(SEP);\n process.stdout.write('\\n');\n\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n\n const originMainResult = spawnSync('git', ['rev-parse', 'origin/main'], { encoding: 'utf8' });\n const mainFallbackResult = spawnSync('git', ['rev-parse', 'main'], { encoding: 'utf8' });\n const newForkPoint = (\n originMainResult.status === 0\n ? (originMainResult.stdout ?? '')\n : (mainFallbackResult.stdout ?? '')\n ).trim();\n\n const inMergeState = spawnSync('git', ['rev-parse', '--verify', 'MERGE_HEAD']).status === 0;\n\n let oldForkPoint: string;\n if (inMergeState) {\n const mergeHead = execSync('git rev-parse MERGE_HEAD', { encoding: 'utf8' }).trim();\n const result = spawnSync('git', ['merge-base', mergeHead, 'origin/main'], { encoding: 'utf8' });\n oldForkPoint = (result.stdout ?? '').trim();\n } else {\n const result = spawnSync('git', ['merge-base', 'HEAD', 'origin/main'], { encoding: 'utf8' });\n oldForkPoint = (result.stdout ?? '').trim();\n }\n\n process.stdout.write(`Branch: ${currentBranch}\\n`);\n process.stdout.write(`Old fork point: ${oldForkPoint.slice(0, 12)}\\n`);\n process.stdout.write(`New fork point: ${newForkPoint.slice(0, 12)}\\n`);\n process.stdout.write('\\n');\n\n process.stdout.write('Staging all resolved changes...\\n');\n spawnSync('git', ['add', '-A'], { stdio: 'inherit' });\n\n process.stdout.write('\\n');\n process.stdout.write(SEP);\n process.stdout.write('✅ All changes staged for review\\n');\n process.stdout.write(SEP);\n process.stdout.write('\\n');\n process.stdout.write('📋 Review staged changes with:\\n');\n process.stdout.write(' git diff --cached\\n');\n process.stdout.write('\\n');\n process.stdout.write('📋 View list of changed files:\\n');\n process.stdout.write(' git status\\n');\n process.stdout.write('\\n');\n process.stdout.write('⚠️ REVIEW CAREFULLY before committing!\\n');\n process.stdout.write('\\n');\n process.stdout.write('When ready to commit, the git-updateFromMain.sh script will continue.\\n');\n process.stdout.write('\\n');\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}
1
+ {"version":3,"file":"git-mergeComplete.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-mergeComplete.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { execSync, spawnSync } from 'child_process';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\nexport async function main(): Promise<void> {\n process.stdout.write(SEP);\n process.stdout.write('📝 Staging Merge Changes for Review\\n');\n process.stdout.write(SEP);\n process.stdout.write('\\n');\n\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n\n const originMainResult = spawnSync('git', ['rev-parse', 'origin/main'], { encoding: 'utf8' });\n const mainFallbackResult = spawnSync('git', ['rev-parse', 'main'], { encoding: 'utf8' });\n const newForkPoint = (\n originMainResult.status === 0\n ? (originMainResult.stdout ?? '')\n : (mainFallbackResult.stdout ?? '')\n ).trim();\n\n const inMergeState = spawnSync('git', ['rev-parse', '--verify', 'MERGE_HEAD']).status === 0;\n\n let oldForkPoint: string;\n if (inMergeState) {\n const mergeHead = execSync('git rev-parse MERGE_HEAD', { encoding: 'utf8' }).trim();\n const result = spawnSync('git', ['merge-base', mergeHead, 'origin/main'], { encoding: 'utf8' });\n oldForkPoint = (result.stdout ?? '').trim();\n } else {\n const result = spawnSync('git', ['merge-base', 'HEAD', 'origin/main'], { encoding: 'utf8' });\n oldForkPoint = (result.stdout ?? '').trim();\n }\n\n process.stdout.write(`Branch: ${currentBranch}\\n`);\n process.stdout.write(`Old fork point: ${oldForkPoint.slice(0, 12)}\\n`);\n process.stdout.write(`New fork point: ${newForkPoint.slice(0, 12)}\\n`);\n process.stdout.write('\\n');\n\n process.stdout.write('Staging all resolved changes...\\n');\n spawnSync('git', ['add', '-A'], { stdio: 'inherit' });\n\n process.stdout.write('\\n');\n process.stdout.write(SEP);\n process.stdout.write('✅ All changes staged for review\\n');\n process.stdout.write(SEP);\n process.stdout.write('\\n');\n process.stdout.write('📋 Review staged changes with:\\n');\n process.stdout.write(' git diff --cached\\n');\n process.stdout.write('\\n');\n process.stdout.write('📋 View list of changed files:\\n');\n process.stdout.write(' git status\\n');\n process.stdout.write('\\n');\n process.stdout.write('⚠️ REVIEW CAREFULLY before committing!\\n');\n process.stdout.write('\\n');\n process.stdout.write('When ready to commit, the git-updateFromMain.sh script will continue.\\n');\n process.stdout.write('\\n');\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export declare function main(): Promise<void>;
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.main = main;
@@ -1 +1 @@
1
- {"version":3,"file":"git-updateFromMain.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-updateFromMain.ts"],"names":[],"mappings":"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","sourcesContent":["import { execSync, spawnSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { getFeatureName } from './workflow/git-readAiBranchName';\nimport { main as gatherInfo } from './git-gatherInfo';\nimport { main as cleanTmp } from './workflow/cleanTmp';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\ninterface WebpiecesSettings {\n ai_merge_conflicts?: boolean;\n}\n\ninterface HashPoints {\n hashForkPoint: string;\n hashFeatureHead: string;\n hashMainHead: string;\n}\n\nfunction getAiMergePreference(): 'yes' | 'no' | null {\n const settingsFile = path.join(process.env['HOME'] ?? '', '.webpieces', 'settings.json');\n if (!fs.existsSync(settingsFile)) return null;\n const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf8')) as WebpiecesSettings;\n if (settings.ai_merge_conflicts === true) return 'yes';\n if (settings.ai_merge_conflicts === false) return 'no';\n return null;\n}\n\nfunction saveAiMergePreference(useAi: boolean): void {\n const settingsDir = path.join(process.env['HOME'] ?? '', '.webpieces');\n const settingsFile = path.join(settingsDir, 'settings.json');\n fs.mkdirSync(settingsDir, { recursive: true });\n let settings: WebpiecesSettings = {};\n if (fs.existsSync(settingsFile)) {\n settings = JSON.parse(fs.readFileSync(settingsFile, 'utf8')) as WebpiecesSettings;\n }\n settings.ai_merge_conflicts = useAi;\n fs.writeFileSync(settingsFile, JSON.stringify(settings, null, 2) + '\\n');\n}\n\nfunction askQuestion(rl: readline.Interface, question: string): Promise<string> {\n return new Promise<string>((resolve: (answer: string) => void) => {\n rl.question(question, resolve);\n });\n}\n\nfunction saveConflictContext(conflictedFiles: string[], mergeDir: string, forkPoint: string, featureHead: string, mainHead: string): void {\n for (const file of conflictedFiles) {\n const safePath = file.replace(/\\//g, '__');\n const fileDir = path.join(mergeDir, `updatemain-${safePath}`);\n fs.mkdirSync(fileDir, { recursive: true });\n\n const forkContent = spawnSync('git', ['show', `${forkPoint}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'A-forkpoint.txt'), forkContent.status === 0 ? (forkContent.stdout ?? '') : '(file did not exist)\\n');\n\n const featureContent = spawnSync('git', ['show', `${featureHead}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'B-feature.txt'), featureContent.status === 0 ? (featureContent.stdout ?? '') : '(file did not exist)\\n');\n\n const mainContent = spawnSync('git', ['show', `${mainHead}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'C-main.txt'), mainContent.status === 0 ? (mainContent.stdout ?? '') : '(file did not exist)\\n');\n\n const baResult = spawnSync('git', ['diff', forkPoint, featureHead, '--', file], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'B-A.diff'), baResult.stdout ?? '');\n\n const caResult = spawnSync('git', ['diff', forkPoint, mainHead, '--', file], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'C-A.diff'), caResult.stdout ?? '');\n }\n}\n\nasync function waitForCleanCommit(rl: readline.Interface, prompt: string): Promise<void> {\n let committed = false;\n while (!committed) {\n const ans = await askQuestion(rl, prompt);\n process.stdout.write('\\n');\n if (ans.toLowerCase() === 'y') {\n const isClean = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status === 0;\n if (isClean) {\n committed = true;\n } else {\n process.stdout.write('❌ You still have uncommitted changes\\n\\n');\n }\n }\n }\n}\n\nasync function resolveAiMerge(rl: readline.Interface, repoRoot: string, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🤖 Calling AI to Resolve Conflicts\\n' + SEP + '\\n');\n\n spawnSync('claude', [\n '--allowed-tools', 'Edit Write Read Bash Glob Grep',\n '--append-system-prompt',\n 'Read .claude/commands/wp-merge.md and follow ALL instructions in that file to resolve the merge conflicts.',\n 'Start resolving the merge conflicts now.',\n ], { stdio: 'inherit', cwd: repoRoot });\n\n process.stdout.write('\\n' + SEP + '✅ AI Merge Summary ✅\\n' + SEP + '\\n');\n process.stdout.write('Review what I did before committing:\\n');\n process.stdout.write(\" 1. Read each file's resolution details BELOW (quick read)\\n\");\n process.stdout.write(' 2. Diff each file in your IDE making sure AI did nothing extra\\n');\n process.stdout.write(' 3. Delete any remaining A/B/C comment blocks in the code\\n\\n');\n process.stdout.write(`Full merge context available in: ${mergeDir}\\n\\n`);\n\n const mergeSummaryFile = path.join(mergeDir, 'merge-summary.md');\n if (fs.existsSync(mergeSummaryFile)) {\n process.stdout.write(fs.readFileSync(mergeSummaryFile, 'utf8'));\n } else {\n process.stdout.write('ℹ️ No merge summary file was generated by AI.\\n');\n process.stdout.write(` (Expected: ${mergeSummaryFile})\\n`);\n }\n\n process.stdout.write('\\n' + SEP + '⚠️ IMPORTANT: SCROLL UP to AI Merge Summary section\\n' + SEP + '\\n');\n process.stdout.write('When done reviewing, run:\\n\\n git add -A && git commit -m \"Merge main into feature branch\"\\n\\n');\n\n await waitForCleanCommit(rl, 'Have you scrolled up to ✅ AI Merge Summary ✅ and done a quick read? Did you commit it per instructions? (y/n) ');\n fs.writeFileSync(path.join(mergeDir, 'conflicts-resolved'), '');\n process.stdout.write('\\n' + SEP);\n}\n\nasync function resolveManualMerge(rl: readline.Interface, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🛠️ Manual Merge Required\\n' + SEP + '\\n');\n\n let committed = false;\n while (!committed) {\n process.stdout.write('Please resolve conflicts manually\\n');\n process.stdout.write(`Merge context available in: ${mergeDir}\\n\\n`);\n\n const ans = await askQuestion(rl, 'Are you done merging and committing? (y/n) ');\n process.stdout.write('\\n');\n\n if (ans.toLowerCase() === 'y') {\n const isClean = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status === 0;\n if (isClean) {\n committed = true;\n } else {\n process.stdout.write('❌ You still have uncommitted changes\\n\\n');\n }\n }\n }\n fs.writeFileSync(path.join(mergeDir, 'conflicts-resolved'), '');\n}\n\nasync function handleConflicts(currentBranch: string, mergeDir: string, hashes: HashPoints, rl: readline.Interface, repoRoot: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '⚠️ Conflicts Detected\\n' + SEP + '\\n');\n process.stdout.write('Conflicting files:\\n');\n\n const conflictedFilesRaw = execSync('git diff --name-only --diff-filter=U', { encoding: 'utf8' }).trim();\n process.stdout.write(conflictedFilesRaw + '\\n\\n');\n\n fs.writeFileSync(path.join(mergeDir, 'updatemain-conflicted-files.txt'), conflictedFilesRaw + '\\n');\n const conflictedFiles = conflictedFilesRaw.split('\\n').filter((f: string) => f.trim() !== '');\n\n saveConflictContext(conflictedFiles, mergeDir, hashes.hashForkPoint, hashes.hashFeatureHead, hashes.hashMainHead);\n process.stdout.write(`✅ Merge context saved to: ${mergeDir}\\n\\n`);\n\n const settingsFile = path.join(process.env['HOME'] ?? '', '.webpieces', 'settings.json');\n const savedPref = getAiMergePreference();\n let useAi: boolean;\n\n if (savedPref !== null) {\n useAi = savedPref === 'yes';\n process.stdout.write(`Using saved preference: ${useAi ? 'AI merge' : 'Manual merge'} (from ${settingsFile})\\n`);\n process.stdout.write(`To change, edit ${settingsFile} and set \"ai_merge_conflicts\"\\n\\n`);\n } else {\n process.stdout.write(SEP + `⚠️ Your choice will be saved to: ${settingsFile}\\n` + ' You can edit this file later to change your preference.\\n' + SEP + '\\n');\n const answer = await askQuestion(rl, 'Would you like AI to help resolve conflicts? (y/n) ');\n process.stdout.write('\\n');\n useAi = answer.toLowerCase() === 'y';\n saveAiMergePreference(useAi);\n process.stdout.write(`✅ Saved preference: ${useAi ? 'AI merge' : 'Manual merge'}\\n\\n`);\n }\n\n if (useAi) {\n await resolveAiMerge(rl, repoRoot, mergeDir);\n } else {\n await resolveManualMerge(rl, mergeDir);\n }\n\n void currentBranch;\n}\n\nfunction printFinalSummary(currentBranch: string, backupBranch: string, prNumber: string, mergeDir: string, hasRemote: boolean): void {\n process.stdout.write('\\n' + SEP);\n if (hasRemote) {\n process.stdout.write(prNumber ? `✅ Successfully Updated PR #${prNumber}\\n` : '✅ Successfully Updated Remote Branch\\n');\n } else {\n process.stdout.write('✅ Branch Updated from Main\\n');\n }\n process.stdout.write(SEP + '\\n📋 Summary:\\n');\n process.stdout.write(` Branch: ${currentBranch}\\n`);\n if (hasRemote && prNumber) {\n process.stdout.write(` PR: #${prNumber}\\n`);\n } else if (!hasRemote) {\n process.stdout.write(' Base: main (latest)\\n');\n } else {\n process.stdout.write(' PR: (none found - create with gh pr create)\\n');\n }\n process.stdout.write(` Backup: ${backupBranch}\\n`);\n process.stdout.write(` Merge context: ${mergeDir}\\n`);\n process.stdout.write('\\nNext steps:\\n');\n if (hasRemote) {\n process.stdout.write(' 1. Review changes on GitHub\\n');\n process.stdout.write(' 2. Continue development or create more commits\\n');\n } else {\n process.stdout.write(' 1. Test your changes\\n');\n process.stdout.write(' 2. Create PR with: gh pr create\\n');\n }\n process.stdout.write(` 3. Delete old backup when safe: git branch -D ${backupBranch}\\n\\n`);\n process.stdout.write(SEP);\n}\n\nfunction createBackup(currentBranch: string): string {\n process.stdout.write('\\n' + SEP + '💾 Creating Incremental Backup\\n' + SEP + '\\n');\n let n = 1;\n while (spawnSync('git', ['show-ref', '--verify', '--quiet', `refs/heads/${currentBranch}Backup${n}`]).status === 0) {\n n += 1;\n }\n const backupBranch = `${currentBranch}Backup${n}`;\n process.stdout.write(`Creating backup: ${backupBranch}\\n`);\n spawnSync('git', ['checkout', '-b', backupBranch], { stdio: 'inherit' });\n spawnSync('git', ['checkout', currentBranch], { stdio: 'inherit' });\n process.stdout.write(`✅ Backup created: ${backupBranch}\\n\\n`);\n return backupBranch;\n}\n\nasync function finalizeBranch(currentBranch: string, squashBranch: string, backupBranch: string, prNumber: string, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🗑️ Cleaning Up Old Branch\\n' + SEP + '\\n');\n process.stdout.write(`Deleting local branch: ${currentBranch} (backed up as ${backupBranch})\\n`);\n spawnSync('git', ['branch', '-D', currentBranch], { stdio: 'inherit' });\n process.stdout.write('\\n');\n\n const remoteExists = spawnSync('git', ['ls-remote', '--exit-code', '--heads', 'origin', currentBranch]).status === 0;\n\n if (remoteExists) {\n process.stdout.write(SEP + (prNumber ? `🔍 Updating Existing PR #${prNumber}\\n` : '🔍 Updating Remote Branch (no PR found)\\n') + SEP + '\\n');\n if (prNumber) {\n process.stdout.write(`✅ Updating PR #${prNumber} with squashed changes\\n`);\n } else {\n process.stdout.write('⚠️ Remote branch exists but no PR found (PR check may have failed)\\n Syncing remote branch anyway...\\n');\n }\n process.stdout.write(`\\nForce pushing ${squashBranch} to origin/${currentBranch}...\\n`);\n spawnSync('git', ['push', '-u', '--force-with-lease', 'origin', `${squashBranch}:${currentBranch}`], { stdio: 'inherit' });\n spawnSync('git', ['checkout', squashBranch], { stdio: 'inherit' });\n spawnSync('git', ['branch', '-m', currentBranch], { stdio: 'inherit' });\n } else {\n process.stdout.write(SEP + '📝 No Remote Branch to Update\\n' + SEP + '\\n');\n spawnSync('git', ['checkout', squashBranch], { stdio: 'inherit' });\n spawnSync('git', ['branch', '-m', currentBranch], { stdio: 'inherit' });\n process.stdout.write(`ℹ️ No remote branch found for ${currentBranch} (local only)\\n\\n`);\n }\n\n printFinalSummary(currentBranch, backupBranch, prNumber, mergeDir, remoteExists);\n}\n\nexport async function main(): Promise<void> {\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n const featureName = getFeatureName();\n const repoRoot = execSync('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();\n const mergeDir = path.join(repoRoot, 'webpiecesTmp', `merge-${featureName}`);\n fs.mkdirSync(mergeDir, { recursive: true });\n\n process.stdout.write('\\n' + SEP + '🔄 Squash-Merge Workflow\\n' + SEP + '\\n');\n process.stdout.write('Gathering merge context...\\n');\n await gatherInfo();\n\n const hashes = JSON.parse(fs.readFileSync(path.join(mergeDir, 'updatemain-hashes.json'), 'utf8')) as HashPoints;\n\n process.stdout.write('\\nChecking for existing PR...\\n');\n const prResult = spawnSync('gh', ['pr', 'list', '--head', currentBranch, '--json', 'number', '--jq', '.[0].number'], { encoding: 'utf8' });\n const prNumber = prResult.status === 0 ? (prResult.stdout ?? '').trim() : '';\n process.stdout.write(prNumber ? `✅ Found existing PR #${prNumber} (will be updated after merge)\\n\\n` : 'ℹ️ No existing PR found (you can create one later with gh pr create)\\n\\n');\n\n const backupBranch = createBackup(currentBranch);\n\n process.stdout.write(SEP + '🔄 Creating Temporary Squash Branch\\n' + SEP + '\\n');\n const squashBranch = `${currentBranch}Squash`;\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n\n if (spawnSync('git', ['show-ref', '--verify', '--quiet', `refs/heads/${squashBranch}`]).status === 0) {\n process.stdout.write(`⚠️ Found existing ${squashBranch} from previous run\\n`);\n const answer = await askQuestion(rl, 'Delete and start fresh? (y/n) ');\n process.stdout.write('\\n');\n if (answer.toLowerCase() === 'y') {\n spawnSync('git', ['branch', '-D', squashBranch], { stdio: 'inherit' });\n } else {\n process.stdout.write('❌ Aborting. Please clean up manually.\\n');\n rl.close();\n process.exit(1);\n }\n }\n\n process.stdout.write('Updating local main branch...\\n');\n spawnSync('git', ['checkout', 'main'], { stdio: 'inherit' });\n spawnSync('git', ['pull', 'origin', 'main'], { stdio: 'inherit' });\n process.stdout.write(`Creating new branch: ${squashBranch} from main...\\n\\n`);\n spawnSync('git', ['checkout', '-b', squashBranch], { stdio: 'inherit' });\n\n process.stdout.write(SEP + `🔀 Squash Merging ${currentBranch}\\n` + SEP + '\\n');\n const mergeResult = spawnSync('git', ['merge', '--squash', currentBranch], { stdio: 'inherit' });\n\n if (mergeResult.status === 0) {\n process.stdout.write('\\n✅ Squash merge successful (no conflicts)\\n\\n');\n const nothingStaged = spawnSync('git', ['diff-index', '--quiet', '--cached', 'HEAD', '--']).status === 0;\n if (nothingStaged) {\n process.stdout.write('ℹ️ Branch already up-to-date with main (nothing to merge)\\n');\n } else {\n spawnSync('git', ['commit', '-m', `Squash merge of ${currentBranch}`], { stdio: 'inherit' });\n }\n } else {\n await handleConflicts(currentBranch, mergeDir, hashes, rl, repoRoot);\n }\n\n rl.close();\n await finalizeBranch(currentBranch, squashBranch, backupBranch, prNumber, mergeDir);\n await cleanTmp();\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}
1
+ {"version":3,"file":"git-updateFromMain.js","sourceRoot":"","sources":["../../../../../../packages/tooling/ai-hook-rules/src/scripts/git-updateFromMain.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { execSync, spawnSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { getFeatureName } from './workflow/git-readAiBranchName';\nimport { main as gatherInfo } from './git-gatherInfo';\nimport { main as cleanTmp } from './workflow/cleanTmp';\n\nconst SEP = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n';\n\ninterface WebpiecesSettings {\n ai_merge_conflicts?: boolean;\n}\n\ninterface HashPoints {\n hashForkPoint: string;\n hashFeatureHead: string;\n hashMainHead: string;\n}\n\nfunction getAiMergePreference(): 'yes' | 'no' | null {\n const settingsFile = path.join(process.env['HOME'] ?? '', '.webpieces', 'settings.json');\n if (!fs.existsSync(settingsFile)) return null;\n const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf8')) as WebpiecesSettings;\n if (settings.ai_merge_conflicts === true) return 'yes';\n if (settings.ai_merge_conflicts === false) return 'no';\n return null;\n}\n\nfunction saveAiMergePreference(useAi: boolean): void {\n const settingsDir = path.join(process.env['HOME'] ?? '', '.webpieces');\n const settingsFile = path.join(settingsDir, 'settings.json');\n fs.mkdirSync(settingsDir, { recursive: true });\n let settings: WebpiecesSettings = {};\n if (fs.existsSync(settingsFile)) {\n settings = JSON.parse(fs.readFileSync(settingsFile, 'utf8')) as WebpiecesSettings;\n }\n settings.ai_merge_conflicts = useAi;\n fs.writeFileSync(settingsFile, JSON.stringify(settings, null, 2) + '\\n');\n}\n\nfunction askQuestion(rl: readline.Interface, question: string): Promise<string> {\n return new Promise<string>((resolve: (answer: string) => void) => {\n rl.question(question, resolve);\n });\n}\n\nfunction saveConflictContext(conflictedFiles: string[], mergeDir: string, forkPoint: string, featureHead: string, mainHead: string): void {\n for (const file of conflictedFiles) {\n const safePath = file.replace(/\\//g, '__');\n const fileDir = path.join(mergeDir, `updatemain-${safePath}`);\n fs.mkdirSync(fileDir, { recursive: true });\n\n const forkContent = spawnSync('git', ['show', `${forkPoint}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'A-forkpoint.txt'), forkContent.status === 0 ? (forkContent.stdout ?? '') : '(file did not exist)\\n');\n\n const featureContent = spawnSync('git', ['show', `${featureHead}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'B-feature.txt'), featureContent.status === 0 ? (featureContent.stdout ?? '') : '(file did not exist)\\n');\n\n const mainContent = spawnSync('git', ['show', `${mainHead}:${file}`], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'C-main.txt'), mainContent.status === 0 ? (mainContent.stdout ?? '') : '(file did not exist)\\n');\n\n const baResult = spawnSync('git', ['diff', forkPoint, featureHead, '--', file], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'B-A.diff'), baResult.stdout ?? '');\n\n const caResult = spawnSync('git', ['diff', forkPoint, mainHead, '--', file], { encoding: 'utf8' });\n fs.writeFileSync(path.join(fileDir, 'C-A.diff'), caResult.stdout ?? '');\n }\n}\n\nasync function waitForCleanCommit(rl: readline.Interface, prompt: string): Promise<void> {\n let committed = false;\n while (!committed) {\n const ans = await askQuestion(rl, prompt);\n process.stdout.write('\\n');\n if (ans.toLowerCase() === 'y') {\n const isClean = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status === 0;\n if (isClean) {\n committed = true;\n } else {\n process.stdout.write('❌ You still have uncommitted changes\\n\\n');\n }\n }\n }\n}\n\nasync function resolveAiMerge(rl: readline.Interface, repoRoot: string, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🤖 Calling AI to Resolve Conflicts\\n' + SEP + '\\n');\n\n spawnSync('claude', [\n '--allowed-tools', 'Edit Write Read Bash Glob Grep',\n '--append-system-prompt',\n 'Read .claude/commands/wp-merge.md and follow ALL instructions in that file to resolve the merge conflicts.',\n 'Start resolving the merge conflicts now.',\n ], { stdio: 'inherit', cwd: repoRoot });\n\n process.stdout.write('\\n' + SEP + '✅ AI Merge Summary ✅\\n' + SEP + '\\n');\n process.stdout.write('Review what I did before committing:\\n');\n process.stdout.write(\" 1. Read each file's resolution details BELOW (quick read)\\n\");\n process.stdout.write(' 2. Diff each file in your IDE making sure AI did nothing extra\\n');\n process.stdout.write(' 3. Delete any remaining A/B/C comment blocks in the code\\n\\n');\n process.stdout.write(`Full merge context available in: ${mergeDir}\\n\\n`);\n\n const mergeSummaryFile = path.join(mergeDir, 'merge-summary.md');\n if (fs.existsSync(mergeSummaryFile)) {\n process.stdout.write(fs.readFileSync(mergeSummaryFile, 'utf8'));\n } else {\n process.stdout.write('ℹ️ No merge summary file was generated by AI.\\n');\n process.stdout.write(` (Expected: ${mergeSummaryFile})\\n`);\n }\n\n process.stdout.write('\\n' + SEP + '⚠️ IMPORTANT: SCROLL UP to AI Merge Summary section\\n' + SEP + '\\n');\n process.stdout.write('When done reviewing, run:\\n\\n git add -A && git commit -m \"Merge main into feature branch\"\\n\\n');\n\n await waitForCleanCommit(rl, 'Have you scrolled up to ✅ AI Merge Summary ✅ and done a quick read? Did you commit it per instructions? (y/n) ');\n fs.writeFileSync(path.join(mergeDir, 'conflicts-resolved'), '');\n process.stdout.write('\\n' + SEP);\n}\n\nasync function resolveManualMerge(rl: readline.Interface, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🛠️ Manual Merge Required\\n' + SEP + '\\n');\n\n let committed = false;\n while (!committed) {\n process.stdout.write('Please resolve conflicts manually\\n');\n process.stdout.write(`Merge context available in: ${mergeDir}\\n\\n`);\n\n const ans = await askQuestion(rl, 'Are you done merging and committing? (y/n) ');\n process.stdout.write('\\n');\n\n if (ans.toLowerCase() === 'y') {\n const isClean = spawnSync('git', ['diff-index', '--quiet', 'HEAD', '--']).status === 0;\n if (isClean) {\n committed = true;\n } else {\n process.stdout.write('❌ You still have uncommitted changes\\n\\n');\n }\n }\n }\n fs.writeFileSync(path.join(mergeDir, 'conflicts-resolved'), '');\n}\n\nasync function handleConflicts(currentBranch: string, mergeDir: string, hashes: HashPoints, rl: readline.Interface, repoRoot: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '⚠️ Conflicts Detected\\n' + SEP + '\\n');\n process.stdout.write('Conflicting files:\\n');\n\n const conflictedFilesRaw = execSync('git diff --name-only --diff-filter=U', { encoding: 'utf8' }).trim();\n process.stdout.write(conflictedFilesRaw + '\\n\\n');\n\n fs.writeFileSync(path.join(mergeDir, 'updatemain-conflicted-files.txt'), conflictedFilesRaw + '\\n');\n const conflictedFiles = conflictedFilesRaw.split('\\n').filter((f: string) => f.trim() !== '');\n\n saveConflictContext(conflictedFiles, mergeDir, hashes.hashForkPoint, hashes.hashFeatureHead, hashes.hashMainHead);\n process.stdout.write(`✅ Merge context saved to: ${mergeDir}\\n\\n`);\n\n const settingsFile = path.join(process.env['HOME'] ?? '', '.webpieces', 'settings.json');\n const savedPref = getAiMergePreference();\n let useAi: boolean;\n\n if (savedPref !== null) {\n useAi = savedPref === 'yes';\n process.stdout.write(`Using saved preference: ${useAi ? 'AI merge' : 'Manual merge'} (from ${settingsFile})\\n`);\n process.stdout.write(`To change, edit ${settingsFile} and set \"ai_merge_conflicts\"\\n\\n`);\n } else {\n process.stdout.write(SEP + `⚠️ Your choice will be saved to: ${settingsFile}\\n` + ' You can edit this file later to change your preference.\\n' + SEP + '\\n');\n const answer = await askQuestion(rl, 'Would you like AI to help resolve conflicts? (y/n) ');\n process.stdout.write('\\n');\n useAi = answer.toLowerCase() === 'y';\n saveAiMergePreference(useAi);\n process.stdout.write(`✅ Saved preference: ${useAi ? 'AI merge' : 'Manual merge'}\\n\\n`);\n }\n\n if (useAi) {\n await resolveAiMerge(rl, repoRoot, mergeDir);\n } else {\n await resolveManualMerge(rl, mergeDir);\n }\n\n void currentBranch;\n}\n\nfunction printFinalSummary(currentBranch: string, backupBranch: string, prNumber: string, mergeDir: string, hasRemote: boolean): void {\n process.stdout.write('\\n' + SEP);\n if (hasRemote) {\n process.stdout.write(prNumber ? `✅ Successfully Updated PR #${prNumber}\\n` : '✅ Successfully Updated Remote Branch\\n');\n } else {\n process.stdout.write('✅ Branch Updated from Main\\n');\n }\n process.stdout.write(SEP + '\\n📋 Summary:\\n');\n process.stdout.write(` Branch: ${currentBranch}\\n`);\n if (hasRemote && prNumber) {\n process.stdout.write(` PR: #${prNumber}\\n`);\n } else if (!hasRemote) {\n process.stdout.write(' Base: main (latest)\\n');\n } else {\n process.stdout.write(' PR: (none found - create with gh pr create)\\n');\n }\n process.stdout.write(` Backup: ${backupBranch}\\n`);\n process.stdout.write(` Merge context: ${mergeDir}\\n`);\n process.stdout.write('\\nNext steps:\\n');\n if (hasRemote) {\n process.stdout.write(' 1. Review changes on GitHub\\n');\n process.stdout.write(' 2. Continue development or create more commits\\n');\n } else {\n process.stdout.write(' 1. Test your changes\\n');\n process.stdout.write(' 2. Create PR with: gh pr create\\n');\n }\n process.stdout.write(` 3. Delete old backup when safe: git branch -D ${backupBranch}\\n\\n`);\n process.stdout.write(SEP);\n}\n\nfunction createBackup(currentBranch: string): string {\n process.stdout.write('\\n' + SEP + '💾 Creating Incremental Backup\\n' + SEP + '\\n');\n let n = 1;\n while (spawnSync('git', ['show-ref', '--verify', '--quiet', `refs/heads/${currentBranch}Backup${n}`]).status === 0) {\n n += 1;\n }\n const backupBranch = `${currentBranch}Backup${n}`;\n process.stdout.write(`Creating backup: ${backupBranch}\\n`);\n spawnSync('git', ['checkout', '-b', backupBranch], { stdio: 'inherit' });\n spawnSync('git', ['checkout', currentBranch], { stdio: 'inherit' });\n process.stdout.write(`✅ Backup created: ${backupBranch}\\n\\n`);\n return backupBranch;\n}\n\nasync function finalizeBranch(currentBranch: string, squashBranch: string, backupBranch: string, prNumber: string, mergeDir: string): Promise<void> {\n process.stdout.write('\\n' + SEP + '🗑️ Cleaning Up Old Branch\\n' + SEP + '\\n');\n process.stdout.write(`Deleting local branch: ${currentBranch} (backed up as ${backupBranch})\\n`);\n spawnSync('git', ['branch', '-D', currentBranch], { stdio: 'inherit' });\n process.stdout.write('\\n');\n\n const remoteExists = spawnSync('git', ['ls-remote', '--exit-code', '--heads', 'origin', currentBranch]).status === 0;\n\n if (remoteExists) {\n process.stdout.write(SEP + (prNumber ? `🔍 Updating Existing PR #${prNumber}\\n` : '🔍 Updating Remote Branch (no PR found)\\n') + SEP + '\\n');\n if (prNumber) {\n process.stdout.write(`✅ Updating PR #${prNumber} with squashed changes\\n`);\n } else {\n process.stdout.write('⚠️ Remote branch exists but no PR found (PR check may have failed)\\n Syncing remote branch anyway...\\n');\n }\n process.stdout.write(`\\nForce pushing ${squashBranch} to origin/${currentBranch}...\\n`);\n spawnSync('git', ['push', '-u', '--force-with-lease', 'origin', `${squashBranch}:${currentBranch}`], { stdio: 'inherit' });\n spawnSync('git', ['checkout', squashBranch], { stdio: 'inherit' });\n spawnSync('git', ['branch', '-m', currentBranch], { stdio: 'inherit' });\n } else {\n process.stdout.write(SEP + '📝 No Remote Branch to Update\\n' + SEP + '\\n');\n spawnSync('git', ['checkout', squashBranch], { stdio: 'inherit' });\n spawnSync('git', ['branch', '-m', currentBranch], { stdio: 'inherit' });\n process.stdout.write(`ℹ️ No remote branch found for ${currentBranch} (local only)\\n\\n`);\n }\n\n printFinalSummary(currentBranch, backupBranch, prNumber, mergeDir, remoteExists);\n}\n\nexport async function main(): Promise<void> {\n const currentBranch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n const featureName = getFeatureName();\n const repoRoot = execSync('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();\n const mergeDir = path.join(repoRoot, 'webpiecesTmp', `merge-${featureName}`);\n fs.mkdirSync(mergeDir, { recursive: true });\n\n process.stdout.write('\\n' + SEP + '🔄 Squash-Merge Workflow\\n' + SEP + '\\n');\n process.stdout.write('Gathering merge context...\\n');\n await gatherInfo();\n\n const hashes = JSON.parse(fs.readFileSync(path.join(mergeDir, 'updatemain-hashes.json'), 'utf8')) as HashPoints;\n\n process.stdout.write('\\nChecking for existing PR...\\n');\n const prResult = spawnSync('gh', ['pr', 'list', '--head', currentBranch, '--json', 'number', '--jq', '.[0].number'], { encoding: 'utf8' });\n const prNumber = prResult.status === 0 ? (prResult.stdout ?? '').trim() : '';\n process.stdout.write(prNumber ? `✅ Found existing PR #${prNumber} (will be updated after merge)\\n\\n` : 'ℹ️ No existing PR found (you can create one later with gh pr create)\\n\\n');\n\n const backupBranch = createBackup(currentBranch);\n\n process.stdout.write(SEP + '🔄 Creating Temporary Squash Branch\\n' + SEP + '\\n');\n const squashBranch = `${currentBranch}Squash`;\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n\n if (spawnSync('git', ['show-ref', '--verify', '--quiet', `refs/heads/${squashBranch}`]).status === 0) {\n process.stdout.write(`⚠️ Found existing ${squashBranch} from previous run\\n`);\n const answer = await askQuestion(rl, 'Delete and start fresh? (y/n) ');\n process.stdout.write('\\n');\n if (answer.toLowerCase() === 'y') {\n spawnSync('git', ['branch', '-D', squashBranch], { stdio: 'inherit' });\n } else {\n process.stdout.write('❌ Aborting. Please clean up manually.\\n');\n rl.close();\n process.exit(1);\n }\n }\n\n process.stdout.write('Updating local main branch...\\n');\n spawnSync('git', ['checkout', 'main'], { stdio: 'inherit' });\n spawnSync('git', ['pull', 'origin', 'main'], { stdio: 'inherit' });\n process.stdout.write(`Creating new branch: ${squashBranch} from main...\\n\\n`);\n spawnSync('git', ['checkout', '-b', squashBranch], { stdio: 'inherit' });\n\n process.stdout.write(SEP + `🔀 Squash Merging ${currentBranch}\\n` + SEP + '\\n');\n const mergeResult = spawnSync('git', ['merge', '--squash', currentBranch], { stdio: 'inherit' });\n\n if (mergeResult.status === 0) {\n process.stdout.write('\\n✅ Squash merge successful (no conflicts)\\n\\n');\n const nothingStaged = spawnSync('git', ['diff-index', '--quiet', '--cached', 'HEAD', '--']).status === 0;\n if (nothingStaged) {\n process.stdout.write('ℹ️ Branch already up-to-date with main (nothing to merge)\\n');\n } else {\n spawnSync('git', ['commit', '-m', `Squash merge of ${currentBranch}`], { stdio: 'inherit' });\n }\n } else {\n await handleConflicts(currentBranch, mergeDir, hashes, rl, repoRoot);\n }\n\n rl.close();\n await finalizeBranch(currentBranch, squashBranch, backupBranch, prNumber, mergeDir);\n await cleanTmp();\n}\n\nif (require.main === module) {\n main().catch((err) => {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(message + '\\n');\n process.exit(1);\n });\n}\n"]}