docs: AG Native bundle reverse engineering analysis — plannerResponse/Whi renderer structure, V8 cache fix, known-issues update
This commit is contained in:
75
scratch_bundle_deep3.js
Normal file
75
scratch_bundle_deep3.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const fs = require('fs');
|
||||
const bundlePath = String.raw`C:\Users\Variet-Worker\AppData\Local\Programs\Antigravity\resources\app\out\jetskiAgent\main.js`;
|
||||
const content = fs.readFileSync(bundlePath, 'utf-8');
|
||||
|
||||
// 1. Find how the main conversation content is rendered
|
||||
// Look around "ConversationView" component
|
||||
console.log('=== ConversationView component ===');
|
||||
let idx = content.indexOf('ConversationView');
|
||||
if (idx >= 0) {
|
||||
console.log(content.substring(Math.max(0, idx - 300), idx + 1500));
|
||||
}
|
||||
|
||||
// 2. Find the PlannerResponse rendering (this is the AI text response)
|
||||
console.log('\n\n=== PLANNER_RESPONSE rendering ===');
|
||||
idx = content.indexOf('PLANNER_RESPONSE');
|
||||
while (idx >= 0 && idx < content.length) {
|
||||
const ctx = content.substring(Math.max(0, idx - 200), idx + 500);
|
||||
if (ctx.includes('case') || ctx.includes('render') || ctx.includes('className')) {
|
||||
console.log(`\n--- @${idx} ---`);
|
||||
console.log(ctx.substring(0, 700));
|
||||
}
|
||||
idx = content.indexOf('PLANNER_RESPONSE', idx + 16);
|
||||
}
|
||||
|
||||
// 3. Find plannerResponse rendering
|
||||
console.log('\n\n=== "plannerResponse" patterns ===');
|
||||
for (const pat of ['plannerResponse', 'planner_response', 'PlannerResponse']) {
|
||||
let pos = 0;
|
||||
let c = 0;
|
||||
while ((pos = content.indexOf(pat, pos)) >= 0 && c < 3) {
|
||||
console.log(`\n--- "${pat}" @${pos} ---`);
|
||||
console.log(content.substring(Math.max(0, pos - 200), pos + 400).substring(0, 600));
|
||||
pos += pat.length;
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Find step.case rendering logic (how each step type renders)
|
||||
console.log('\n\n=== step.case rendering logic ===');
|
||||
idx = content.indexOf('step.case');
|
||||
let cnt = 0;
|
||||
while (idx >= 0 && cnt < 5) {
|
||||
const ctx = content.substring(Math.max(0, idx - 100), idx + 300);
|
||||
console.log(`\n--- step.case @${idx} ---`);
|
||||
console.log(ctx.substring(0, 400));
|
||||
idx = content.indexOf('step.case', idx + 9);
|
||||
cnt++;
|
||||
}
|
||||
|
||||
// 5. Find the MarkdownRenderer usage (how AI text gets rendered)
|
||||
console.log('\n\n=== MarkdownRenderer usage ===');
|
||||
idx = content.indexOf('MarkdownRenderer');
|
||||
cnt = 0;
|
||||
while (idx >= 0 && cnt < 5) {
|
||||
const ctx = content.substring(Math.max(0, idx - 200), idx + 300);
|
||||
if (ctx.includes('children') || ctx.includes('content') || ctx.includes('text')) {
|
||||
console.log(`\n--- MarkdownRenderer @${idx} ---`);
|
||||
console.log(ctx.substring(0, 500));
|
||||
}
|
||||
idx = content.indexOf('MarkdownRenderer', idx + 16);
|
||||
cnt++;
|
||||
}
|
||||
|
||||
// 6. Find what lHr component is (the Allow/Deny dialog)
|
||||
console.log('\n\n=== lHr component (Allow/Deny dialog) ===');
|
||||
idx = content.indexOf('lHr');
|
||||
if (idx >= 0) {
|
||||
// Search for its definition
|
||||
const defIdx = content.indexOf('function lHr');
|
||||
const def2 = content.indexOf('lHr=');
|
||||
const targetIdx = defIdx >= 0 ? defIdx : def2;
|
||||
if (targetIdx >= 0) {
|
||||
console.log(content.substring(targetIdx, targetIdx + 600));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user