Initial commit: 小羚羚小程序 Axhub Make workspace.
Include xll-miniapp prototype, PRD resources, annotation directory sync, agent skills, and cloud publishing setup. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
46
.local/extract-annotation-source/extract.mjs
Normal file
46
.local/extract-annotation-source/extract.mjs
Normal file
@@ -0,0 +1,46 @@
|
||||
import { chromium } from 'playwright';
|
||||
import { writeFileSync } from 'node:fs';
|
||||
|
||||
const url = process.argv[2];
|
||||
if (!url) {
|
||||
console.error('Usage: node extract.mjs <url>');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
const errors = [];
|
||||
page.on('console', (m) => {
|
||||
if (m.type() === 'error') errors.push(m.text());
|
||||
});
|
||||
|
||||
await page.goto(url, { waitUntil: 'networkidle', timeout: 90000 });
|
||||
const title = await page.title();
|
||||
|
||||
let source = null;
|
||||
try {
|
||||
await page.waitForFunction(() => window.__AXHUB_ANNOTATION_SOURCE__, { timeout: 30000 });
|
||||
source = await page.evaluate(() => window.__AXHUB_ANNOTATION_SOURCE__);
|
||||
} catch {
|
||||
// fall through
|
||||
}
|
||||
|
||||
const out = { title, errors, source };
|
||||
writeFileSync('output.json', JSON.stringify(out, null, 2));
|
||||
console.log(
|
||||
JSON.stringify(
|
||||
{
|
||||
title,
|
||||
errorCount: errors.length,
|
||||
hasSource: !!source,
|
||||
nodeCount: source?.nodes?.length ?? 0,
|
||||
directoryNodeCount: source?.directory?.nodes?.length ?? 0,
|
||||
sourceRoot: source?.source?.root ?? null,
|
||||
sourceManifest: source?.source?.manifest ?? null,
|
||||
},
|
||||
null,
|
||||
2
|
||||
)
|
||||
);
|
||||
|
||||
await browser.close();
|
||||
Reference in New Issue
Block a user