fix(extension): bypass 10-item limit of GetAllCascadeTrajectories by utilizing GetDiagnostics

This commit is contained in:
Variet Worker
2026-04-10 16:52:12 +09:00
parent e745744636
commit 300338d5d3
5 changed files with 74 additions and 4 deletions

View File

@@ -208,10 +208,44 @@ function setupMonitor() {
ctx.logToFile(`[POLL#${pollCount}] alive`);
}
try {
// Fix (v0.5.14): Reverted 100-limit DoS but restored descending: true with a safe limit of 30
const allTraj = await ctx.sdk.ls.rawRPC('GetAllCascadeTrajectories', { limit: 30, descending: true });
if (!allTraj?.trajectorySummaries) {
if (pollCount <= 3) ctx.logToFile('[POLL] no trajectorySummaries');
// Fix (v0.5.15): Bypass 10-Item Hard Limit of GetAllCascadeTrajectories.
// We fetch GetDiagnostics to discover ALL recent sessions regardless of pagination.
let allTraj: any = { trajectorySummaries: {} };
try {
// Primary: Try fetching 100 trajectories (backend might ignore this and give 10)
const apiResult = await ctx.sdk.ls.rawRPC('GetAllCascadeTrajectories', { limit: 100, maxResults: 100, pageSize: 100, page_size: 100, descending: true });
if (apiResult?.trajectorySummaries) {
allTraj.trajectorySummaries = { ...apiResult.trajectorySummaries };
}
} catch (e: any) {
if (pollCount <= 3) ctx.logToFile(`[POLL] GetAllCascadeTrajectories failed: ${e.message}`);
}
try {
// Fallback / Augment: GetDiagnostics provides ALL recent sessions bypassing the hard limit
const diagRaw = await ctx.sdk.ls.rawRPC('GetDiagnostics', {});
const diag = typeof diagRaw === 'string' ? JSON.parse(diagRaw) : diagRaw;
const recent = diag.recentTrajectories || [];
for (const entry of recent) {
const sid = entry.googleAgentId;
if (sid && !allTraj.trajectorySummaries[sid]) {
allTraj.trajectorySummaries[sid] = {
status: entry.status || '',
stepCount: entry.lastStepIndex || 0,
lastModifiedTime: entry.lastModifiedTime || '',
summary: entry.summary || 'Untitled',
trajectoryMetadata: entry.trajectoryMetadata || {
workspaces: [{ workspaceFolderAbsoluteUri: entry.workspaceUri || '' }]
}
};
}
}
} catch (e: any) {
if (pollCount <= 3) ctx.logToFile(`[POLL] GetDiagnostics fallback failed: ${e.message}`);
}
if (!allTraj?.trajectorySummaries || Object.keys(allTraj.trajectorySummaries).length === 0) {
if (pollCount <= 3) ctx.logToFile('[POLL] no trajectorySummaries found from any source');
return;
}