/** * Reading a great deal and changing nothing. * * A different shape from going in circles. The cycle detector looks for the same few actions * repeated, and answers "you are stuck on this"; this looks for a run that keeps gathering and * never acts, which reads as diligence right up until it becomes the whole session. * * ## The numbers came from real sessions * * Every session in one workspace, sorted by how many tool calls came before the first file was * written: * * session tools reads first write after * wrote something 89 12 23 calls * wrote something 290 30 26 calls * wrote something 33 14 27 calls * wrote something 49 17 39 calls * read for an hour 95 72 never * read for an hour 83 73 never * asked a question 20 6 never * asked a question 8 7 never * * Two groups with a gap between them. Everything that was going to write had written by its * thirty-ninth call; the two runs that never wrote reached eighty-three and ninety-five. And the * sessions that legitimately never write — a question about the code — are small, so a threshold * counted in tool calls separates them without needing to know what was asked. */ /** * How many tool calls without a single write is worth mentioning. * * Forty-five. The latest first write in any session that wrote was call thirty-nine, and the runs * that never wrote were still going at eighty-three — so this sits in the gap, with a margin above * the honest case rather than halfway between. Answering a question about a codebase takes twenty * calls at the top end and never reaches this. */ export declare const READING_TOO_LONG = 45; export interface ReadingWithoutActing { calls: number; reads: number; /** The files looked at more than once, most repeated first. */ revisited: Array<{ what: string; times: number; }>; } /** * Whether this run has been gathering without acting, or null when it has not. * * Null the moment anything has been written: a run that has changed something is working, however * much it read on the way, and the reading was evidently in service of it. */ export declare function readingWithoutActing(history: readonly { name: string; detail: string; }[], threshold?: number): ReadingWithoutActing | null; /** * What to say about it. * * Deliberately does not insist on writing. A question about a codebase is answered by reading it, * and telling somebody who asked one that they must now edit a file would be KONECK inventing a * task. Both readings are named and the model is asked to pick, which is the honest form of a * signal that cannot tell the two apart. */ export declare function describeReading(found: ReadingWithoutActing): string; //# sourceMappingURL=reading.d.ts.map