@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 +27 -0
- package/dist/index.js +1173 -56
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
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
|