Repository navigation
plugin: show the user, after each turn, where an AxiomCode answer verifiably helped the agent (#1935) - #1936
Open
swapnilpaliwal-sd wants to merge 9 commits into
Open
swapnilpaliwal-sd wants to merge 9 commits into
swapnilpaliwal-sd wants to merge 9 commits into
Conversation
…ifiably helped the agent (#1935) Agents finish a task with and without the graph and rarely credit the answer they acted on. A Stop hook (hooks/assist.py) now reads the session's transcript at the end of each turn and prints, under the reply, one line per chain an answer started: ◆ AxiomCode this turn • Helped: `impact _proxy_to_logger` showed _base.py (first seen there); edited it, read _native.py, twisted.py; both picked test files pass Labels, strongest first: Redirected (the work moved from files left behind to one the answer showed), Helped (a file first seen in the answer was edited and the edit is kept, or a test verb's picked tests passed), Useful (it was read, or its picked tests ran). "First seen" means no earlier prompt, tool call, tool result or hook context named the file. Nothing comes from the agent's text: its reply is on screen before a Stop hook runs. Every link is read from tool calls and results and the working-tree diff, and an unchecked link is not printed. A shell line that batches the query with grep or cat credits only rows shaped like an answer's. A shell edit counts only for the file the line writes, and a test run is credited once. Turns where nothing came of a query print nothing. Chains go to .axiomcode/assists.jsonl, which only the hook writes. A chain prints once, and again only when it gets stronger. `axiomcode report` renders them as .axiomcode/assists.html. AXIOMCODE_ASSISTS=off turns it off. tests/assists.py: 32 checks over synthetic transcripts, a case each rule must credit and a near case it must not, plus the hook end to end. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
swapnilpaliwal-sd
requested review from
JaredHLZhang,
Whua689 and
suyashpaliwal26
as code owners
October 12, 2026 09:10
…e files and tests behind each (#1935) Each chain now reads cause → action → effect with the concrete files edited or read and the picked test files that passed. The header counts the answers that led the agent's work; answers that led nowhere are never counted or shown, and a label no chain earned gets no tile in the report. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…eipt (#1935) Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…s and from shell edits (#1935) - A graph note the plugin's own hooks put in front of the agent (the callers an edit reaches, where a task lands) is an answer like a tool call's; its hook_success copy no longer marks its files seen first. - A shell line that edits files and also runs axiomcode keeps its edits, and a helper the script defines and calls with a path (def sub(path, ...): ...write_text...) writes that path. - A row about a name the task already gave is the task's lead, not the answer's (the name asked about is exempt: it is on every caller's line); a note credits a file:line, not a file summary. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
… with every action inspectable (#1935) - The report opens on the outcome (sessions, answers acted on, previously unseen files edited, selected tests passing), then the three ways answers showed, featured timelines, every answer expandable to its recorded actions by sequence number, and the rules each label is assigned by. - Receipts and report say what happened: the agent acted on N answers; an answer pointed the agent to a file directly, before it had come across it. - camelCase names a task gives are the task's lead; a runner config under test/ is not a test file; a run that exits 0 but reports failures is not a pass. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…record, and the receipt links it (#1935) Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…ent with a query are not credited to it (#1935) The Stop hook hands the receipt back to the agent once (decision "block"), which ends its reply with it, so it is part of the answer in every client. The second stop checks the reply carries every line and shows it as a message when it does not. Gemini keeps the message. A file the agent read in the same message as a query was named before the answer came back; it is no longer credited to that answer. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…est run (#1935) A test line exits 0 when it ends in `| tail` or `; ruff check`, including a run that never started (a missing module, a collection error, every test deselected), so exit 0 was counted as a pass. A pass now needs the runner's own pass line with no failure or error beside it, and a test file passes when its latest run does. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…ests (#1935) A follow-up turn that asks `tests` again and runs what it picked was credited to the first turn's answer, so the turn that acted on it printed nothing. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1935.
What
A Stop hook (
plugins/axiomcode/hooks/assist.py) shows the user, under the agent's reply, where an AxiomCode answer verifiably led the work in that turn:Every link is read from the transcript (tool calls and results) and the working-tree diff, never from the agent's text, which is already on screen when Stop runs. An unchecked link is not printed, and a turn where no query led anywhere prints nothing. Chains accumulate in
.axiomcode/assists.jsonl;axiomcode reportrenders them as HTML.AXIOMCODE_ASSISTS=offdisables it.Validation
tests/assists.py: 32 checks on synthetic transcripts, a credit case and a near no-credit control per rule, plus the hook end to end.--plugin-dir:Also
skills/axiomcode/SKILL.mdhad drifted from its source on the base (tests/manifests.pyfailed there).packaging/copies.pyresynced it.tests/surfaces.pystill fails on the base's README--freshmention. That predates this PR and is unrelated.