| 248 | } |
| 249 | |
| 250 | async function writeGeneratedProjectFiles(outDir, context) { |
| 251 | const { sourceDir, stats, dependencies } = context |
| 252 | |
| 253 | await fs.writeFile( |
| 254 | path.join(outDir, 'dependencies.generated.json'), |
| 255 | JSON.stringify( |
| 256 | { |
| 257 | generatedAt: new Date().toISOString(), |
| 258 | dependencyRoots: dependencies, |
| 259 | }, |
| 260 | null, |
| 261 | 2, |
| 262 | ), |
| 263 | 'utf8', |
| 264 | ) |
| 265 | |
| 266 | const dependencyMap = Object.fromEntries(dependencies.map(dep => [dep, '*'])) |
| 267 | |
| 268 | await fs.writeFile( |
| 269 | path.join(outDir, 'package.generated.json'), |
| 270 | JSON.stringify( |
| 271 | { |
| 272 | name: 'recovered-claude-code', |
| 273 | private: true, |
| 274 | version: '0.0.0-recovered', |
| 275 | type: 'module', |
| 276 | packageManager: 'bun@latest', |
| 277 | scripts: { |
| 278 | dev: 'bun run src/entrypoints/cli.tsx', |
| 279 | gateway: 'node ../tools/model-gateway/server.mjs', |
| 280 | }, |
| 281 | devDependencies: { |
| 282 | typescript: '*', |
| 283 | }, |
| 284 | dependencies: dependencyMap, |
| 285 | }, |
| 286 | null, |
| 287 | 2, |
| 288 | ), |
| 289 | 'utf8', |
| 290 | ) |
| 291 | |
| 292 | await fs.writeFile( |
| 293 | path.join(outDir, 'tsconfig.json'), |
| 294 | JSON.stringify( |
| 295 | { |
| 296 | compilerOptions: { |
| 297 | target: 'ES2022', |
| 298 | module: 'NodeNext', |
| 299 | moduleResolution: 'NodeNext', |
| 300 | allowJs: true, |
| 301 | checkJs: false, |
| 302 | jsx: 'react-jsx', |
| 303 | baseUrl: '.', |
| 304 | paths: { |
| 305 | 'src/*': ['src/*'], |
| 306 | }, |
| 307 | skipLibCheck: true, |