- Replace @anthropic-ai/claude-code with @anthropic-ai/claude-agent-sdk@0.1.1 - Update all import statements across 4 files - Migrate patch for Electron compatibility (fork vs spawn) - Handle breaking changes: replace appendSystemPrompt with systemPrompt preset - Add settingSources configuration for filesystem settings - Update vendor path in build scripts - Update package name mapping in CodeToolsService
106 lines
3.5 KiB
JavaScript
106 lines
3.5 KiB
JavaScript
const { Arch } = require('electron-builder')
|
|
const { downloadNpmPackage } = require('./utils')
|
|
|
|
// if you want to add new prebuild binaries packages with different architectures, you can add them here
|
|
// please add to allX64 and allArm64 from yarn.lock
|
|
const allArm64 = {
|
|
'@img/sharp-darwin-arm64': '0.34.3',
|
|
'@img/sharp-win32-arm64': '0.34.3',
|
|
'@img/sharp-linux-arm64': '0.34.3',
|
|
|
|
'@img/sharp-libvips-darwin-arm64': '1.2.0',
|
|
'@img/sharp-libvips-linux-arm64': '1.2.0',
|
|
|
|
'@libsql/darwin-arm64': '0.4.7',
|
|
'@libsql/linux-arm64-gnu': '0.4.7',
|
|
'@strongtz/win32-arm64-msvc': '0.4.7',
|
|
|
|
'@napi-rs/system-ocr-darwin-arm64': '1.0.2',
|
|
'@napi-rs/system-ocr-win32-arm64-msvc': '1.0.2'
|
|
}
|
|
|
|
const allX64 = {
|
|
'@img/sharp-darwin-x64': '0.34.3',
|
|
'@img/sharp-linux-x64': '0.34.3',
|
|
'@img/sharp-win32-x64': '0.34.3',
|
|
|
|
'@img/sharp-libvips-darwin-x64': '1.2.0',
|
|
'@img/sharp-libvips-linux-x64': '1.2.0',
|
|
|
|
'@libsql/darwin-x64': '0.4.7',
|
|
'@libsql/linux-x64-gnu': '0.4.7',
|
|
'@libsql/win32-x64-msvc': '0.4.7',
|
|
|
|
'@napi-rs/system-ocr-darwin-x64': '1.0.2',
|
|
'@napi-rs/system-ocr-win32-x64-msvc': '1.0.2'
|
|
}
|
|
|
|
const claudeCodeVenderPath = '@anthropic-ai/claude-agent-sdk/vendor'
|
|
const claudeCodeVenders = ['arm64-darwin', 'arm64-linux', 'x64-darwin', 'x64-linux', 'x64-win32']
|
|
|
|
const platformToArch = {
|
|
mac: 'darwin',
|
|
windows: 'win32',
|
|
linux: 'linux'
|
|
}
|
|
|
|
exports.default = async function (context) {
|
|
const arch = context.arch
|
|
const archType = arch === Arch.arm64 ? 'arm64' : 'x64'
|
|
const platform = context.packager.platform.name
|
|
|
|
const downloadPackages = async (packages) => {
|
|
console.log('downloading packages ......')
|
|
const downloadPromises = []
|
|
|
|
for (const name of Object.keys(packages)) {
|
|
if (name.includes(`${platformToArch[platform]}`) && name.includes(`-${archType}`)) {
|
|
downloadPromises.push(
|
|
downloadNpmPackage(
|
|
name,
|
|
`https://registry.npmjs.org/${name}/-/${name.split('/').pop()}-${packages[name]}.tgz`
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
await Promise.all(downloadPromises)
|
|
}
|
|
|
|
const changeFilters = async (filtersToExclude, filtersToInclude) => {
|
|
// remove filters for the target architecture (allow inclusion)
|
|
let filters = context.packager.config.files[0].filter
|
|
filters = filters.filter((filter) => !filtersToInclude.includes(filter))
|
|
|
|
// add filters for other architectures (exclude them)
|
|
filters.push(...filtersToExclude)
|
|
|
|
context.packager.config.files[0].filter = filters
|
|
}
|
|
|
|
await downloadPackages(arch === Arch.arm64 ? allArm64 : allX64)
|
|
|
|
const arm64Filters = Object.keys(allArm64).map((f) => '!node_modules/' + f + '/**')
|
|
const x64Filters = Object.keys(allX64).map((f) => '!node_modules/' + f + '/*')
|
|
const excludeClaudeCodeRipgrepFilters = claudeCodeVenders
|
|
.filter((f) => f !== `${archType}-${platformToArch[platform]}`)
|
|
.map((f) => '!node_modules/' + claudeCodeVenderPath + '/ripgrep/' + f + '/**')
|
|
const excludeClaudeCodeJBPlutins = ['!node_modules/' + claudeCodeVenderPath + '/' + 'claude-code-jetbrains-plugin']
|
|
|
|
const includeClaudeCodeFilters = [
|
|
'!node_modules/' + claudeCodeVenderPath + '/ripgrep/' + `${archType}-${platformToArch[platform]}/**`
|
|
]
|
|
|
|
if (arch === Arch.arm64) {
|
|
await changeFilters(
|
|
[...x64Filters, ...excludeClaudeCodeRipgrepFilters, ...excludeClaudeCodeJBPlutins],
|
|
[...arm64Filters, ...includeClaudeCodeFilters]
|
|
)
|
|
} else {
|
|
await changeFilters(
|
|
[...arm64Filters, ...excludeClaudeCodeRipgrepFilters, ...excludeClaudeCodeJBPlutins],
|
|
[...x64Filters, ...includeClaudeCodeFilters]
|
|
)
|
|
}
|
|
}
|