@quikit/quikpilot-runner 9.0.0 → 9.2.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,6 +26,33 @@ Releases follow [SemVer](https://semver.org/): a major version bump means the wo
26
26
  shape changed (inputs, permissions) and requires a new pull request regardless of this package's
27
27
  version; minor/patch releases are runner-logic fixes safe to pick up on the next re-bootstrap.
28
28
 
29
+ **9.2.0 — the AI can look at the code before it chooses which files to change (off by default).** Set
30
+ `QUIKPILOT_TARGETING_MODE: loop` in the runner step's `env:` and the targeting step stops guessing from the file listing
31
+ alone: over a few short turns it may use three read-only tools, `list_files`, `read_file` and `grep` (a plain-text
32
+ search, not a pattern), and then gives the same answer as before, which goes through the same checks. A denied path is
33
+ never read, listed, searched or counted; nothing outside the checkout and no symbolic link is followed; every limit
34
+ (turns, calls, characters read) is told to the AI as an ordinary answer, never an error. Each turn's
35
+ request is also kept under a ceiling of 90,000 tokens (counted conservatively: a path listing and non-ASCII text cost
36
+ far more than characters divided by four): a result that would push the next request over it is not sent, the AI is told
37
+ to answer with what it has, and if even that would not fit the run falls back to the single call. Characters read per run
38
+ are capped at 60,000. If the loop cannot finish
39
+ for an ordinary reason (an older runtime, a timeout, a malformed reply) the run falls back to the single call and says
40
+ so in its warnings; a protected path in the answer, or the runtime refusing the run itself, is never retried. The log
41
+ gains `targeting.loop_start`, `targeting.loop_turn`, `targeting.loop_refused`, `targeting.loop_done` and
42
+ `targeting.loop_fallback` lines, and the targeting record gains an optional `loop` field listing what was read (paths
43
+ and counts only, never content). Without the variable nothing changes. The workflow file is unchanged; the `env:` line
44
+ is the only edit, and it is optional.
45
+
46
+ **9.1.0 — the code-writing step sees the files the changed file imports.** For every existing file a run changes (code or
47
+ test), the runner now reads that file's own imports (JavaScript and TypeScript, one hop, never what those files import)
48
+ and sends the repository files they point to as extra context. They come after the files targeting named and never in
49
+ place of them. Packages, path aliases (`@/…`), stylesheets and images are not followed; a denied path is never read; the
50
+ extra files share the existing size limits, and if the runtime still finds the context too large the call is retried
51
+ without them. The `codegen.context` log line now also carries `importedPaths`, what was skipped and why (`import: too
52
+ large`, `import: over budget`, `import: unreadable`, `import: denied`, `import: not in workspace`) and how many path
53
+ aliases were not followed. The workflow file is unchanged, so a repository on 9.0.0 picks this up with its next
54
+ "runner version" pull request.
55
+
29
56
  **9.0.0 — a failed run keeps its files.** When a run fails after code generation, the runner writes the files it
30
57
  generated, a copy of the last test report and a short `manifest.json` (run, targets, files, the reason it stopped;
31
58
  no credentials) to `quikpilot-failure/`, and the workflow's new `Keep the files of a failed run` step uploads that folder