()
| 98 | } |
| 99 | |
| 100 | async function main() { |
| 101 | try { |
| 102 | switch (command) { |
| 103 | case 'scaffold-prompt': { |
| 104 | console.log(INITIAL_AGENT_SYSTEM_PROMPT); |
| 105 | console.log('\n--- INSTRUCTION ---\n'); |
| 106 | console.log(initialAgentInstruction({ appPath, appName: args[0] || 'MyApp' })); |
| 107 | break; |
| 108 | } |
| 109 | |
| 110 | case 'fetch-figma': { |
| 111 | const [figmaUrl, figmaToken] = args; |
| 112 | if (!figmaUrl || !figmaToken) throw new Error('Usage: fetch-figma <url> <token>'); |
| 113 | |
| 114 | const urlInfo = parseFigmaUrl(figmaUrl); |
| 115 | console.log('Fetching Figma document...'); |
| 116 | const { document, imageNodesMap } = await executeFigmaAndImagesActions(urlInfo, assetsDir, processDir, figmaToken); |
| 117 | |
| 118 | const simplified = figmaTool.simplifyImageNodes(document, imageNodesMap); |
| 119 | const processed = figmaTool.processedStyle(simplified); |
| 120 | fs.writeFileSync(path.join(processDir, 'processed.json'), JSON.stringify(processed, null, 2)); |
| 121 | |
| 122 | if (processed.thumbnailUrl) { |
| 123 | console.log('Downloading thumbnail...'); |
| 124 | const base64 = await downloadImage(processed.thumbnailUrl, undefined, undefined, true); |
| 125 | fs.writeFileSync(path.join(processDir, 'thumbnail.png'), Buffer.from(base64, 'base64')); |
| 126 | console.log('Thumbnail saved to process/thumbnail.png'); |
| 127 | } |
| 128 | console.log('Figma data processed.'); |
| 129 | break; |
| 130 | } |
| 131 | |
| 132 | case 'structure-prompt': { |
| 133 | const procDoc = JSON.parse(fs.readFileSync(path.join(processDir, 'processed.json'), 'utf-8')); |
| 134 | const frames = procDoc.frames || procDoc.children; |
| 135 | const positions = extractNodePositionsHierarchical(frames); |
| 136 | const prompt = generateStructurePrompt({ |
| 137 | positions: JSON.stringify(positions, null, 2), |
| 138 | width: String(procDoc.absoluteBoundingBox?.width || 1440) |
| 139 | }); |
| 140 | console.log(prompt); |
| 141 | break; |
| 142 | } |
| 143 | |
| 144 | case 'save-structure': { |
| 145 | const structureJson = fs.readFileSync(path.join(scriptsDir, 'structure-output.json'), 'utf-8'); |
| 146 | const pDoc = JSON.parse(fs.readFileSync(path.join(processDir, 'processed.json'), 'utf-8')); |
| 147 | |
| 148 | const parsed = JSON.parse(extractJSON(structureJson)); |
| 149 | const structFrames = pDoc.frames || pDoc.children; |
| 150 | postProcessStructure(parsed, structFrames); |
| 151 | |
| 152 | const protocol = Array.isArray(parsed) ? parsed[0] : parsed; |
| 153 | fs.writeFileSync(path.join(processDir, 'protocol.json'), JSON.stringify(protocol, null, 2)); |
| 154 | console.log('Structure saved to process/protocol.json'); |
| 155 | break; |
| 156 | } |
| 157 |
no test coverage detected