GitHub.searchIssues silently drops 'incomplete_results: true' from search responses
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- api
Direzione di ricerca
Start in src/prompt-generators/github/github.ts and trace the #query calls used by searchIssues, then run the minimal reproduction against the mocked GitHub response. Decide how the existing caller contract should surface incomplete_results and verify that a true flag on any page is no longer silent.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Observed behavior
The GitHub search API can respond with incomplete_results: true in its JSON body. From the GitHub docs:
The Search API has a maximum query timeout of 5 seconds and a maximum result set of 1000. The
incomplete_resultsfield will betruewhenever a response is returned before the timeout completes, and indicates that some results may be missing.
GitHubSearchReply already types this field:
export interface GitHubSearchReply {
readonly total_count: number;
readonly incomplete_results?: boolean;
readonly items: ReadonlyArray<GitHubIssue>;
}
However, GitHub.searchIssues in src/prompt-generators/github/github.ts never reads incomplete_results. When the field is true, the caller receives a ReadonlyArray<GitHubIssue> that silently omits matches, with no indication that the result is partial. The downstream GitHubPromptGenerator then yields prompts only for the partial set as if it were the full result. This matches the S1 description ("a consumer using the library according to its documented contract receives a result that is wrong, with no error or warning to indicate the problem") at the boundary, but in practice the failure mode is intermittent and recovers on retry, so it is in S3 territory.
Expected behavior
searchIssues should surface incomplete_results: true to the caller in some form. Reasonable options:
- Log a warning to
stderrwhen the flag is observed on any page, similar tologQuery. - Throw an error, requiring the caller to opt in to incomplete results.
- Return a richer result object (
{ issues, incomplete }) instead of a bare array.
A console warning is the lowest-friction fix and matches the existing logging style; an opt-in flag (for example, allowIncomplete) would be more rigorous and avoid silent partial results by default.
Minimal reproduction
import { GitHub } from 'loop-the-loop/prompt-generators/github/github';
import { vi } from 'vitest';
vi.stubGlobal(
'fetch',
vi.fn().mockResolvedValue({
ok: true,
status: 200,
text: () =>
Promise.resolve(
JSON.stringify({
total_count: 12345,
incomplete_results: true,
items: [
{ number: 1, title: 't', html_url: 'https://github.test/1', state: 'open' },
],
}),
),
}),
);
const github = new GitHub({ origin: 'https://api.test' });
const issues = await github.searchIssues({
repository: 'octocat/Hello-World',
query: 'is:open',
perPage: 1,
maxResults: 1,
});
// issues.length === 1, but the caller has no way to know the search was
// truncated by GitHub's 5-second timeout.
Suggested fix
At minimum, in src/prompt-generators/github/github.ts, check reply.incomplete_results after each #query call and emit a console.warn (or expose the flag through the return type). For example:
if (reply.incomplete_results) {
console.warn(
`GitHub search returned incomplete results for query: ${buildIssueSearchQuery(params)}`,
);
}
- Lingua principale
- TypeScript
- Stelle
- 2
- Fork
- 1
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di joewalker/loop-the-loop
-
bug S4
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
joewalker/loop-the-loop#88 ·
-
Git exec(): child killed by a signal rejects with new Error('') and loses the signal informationApertabug S3
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
joewalker/loop-the-loop#84 ·
-
bug S3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
joewalker/loop-the-loop#83 ·
-
bug S3
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
joewalker/loop-the-loop#82 ·
-
bug S4
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
joewalker/loop-the-loop#79 ·
Tutte le issue di joewalker/loop-the-loop
Issue simili
-
createAI: the ai peer range allows ai@6, which the provider cannot work withForse già presa @akhil9tiet l’ha presa oggi. Apertabug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
cloudflare/agents#2690 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[fullsend] E2E: theme — global-header ignores app.branding.fullLogo (RHDHBUGS-3670)Forse già presa @fullsend-ai-coder l’ha presa oggi. Apertae2e-failure ready-to-code
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
redhat-developer/rhdh-plugin-export-overlays#4503 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
needs triage 📥
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
ethereum/ethereum-org-website#19601 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
cloudscape-design/components#5184 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
agilepathway/label-checker#805 ·
I maintainer di solito rispondono entro 1 giorno