Repository navigation
Apps/integration 0.1.10 - #1943
Merged
Merged
Conversation
…er keeps its own version) Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…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>
…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>
The terminal shows a Stop hook's hand-back reason as well as the reply, so a receipt handed back to the agent there was printed twice. In the terminal it is a message under the reply again; headless runs and IDEs, where a hook message may never reach the user, still have the agent end its reply with it. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
The terminal did not show the Stop hook's message, so the receipt disappeared there. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…t it went further (#1935) Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
Where the last build took 20 s or more, edits are batched and the Nth one starts the rebuild. Seven lets a typical multi-file change land before the graph rebuilds. The end of a turn, a prompt, a session start and every query still refresh at once, so an answer never waits on the batch. AXIOMCODE_REFRESH_BATCH still overrides it (1 = off). Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
It left the dispatcher when the surface was cut to the query verbs. It is back as a public verb, for the user rather than the agent: one page of directories, files, types and methods with the call edges between them, drawn from the existing graph (rebuilt first only when a source file changed) and its path printed last. It is not an MCP tool. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
At the front door (MCP, the installed command) impact, path and tests answer as ten numbered places built from the verb's --json document, and the verb's summary was prose only, so it never reached that view. `path main '*'` on a tree with 22 functions named `main` opened at a test script's row 1 and read as one start, with no total and no count per hop; `impact getCsvHeader` never said it was the union of 27 declarations. The verbs now write it as data: path a `closure` (label, declarations, methods, files, tests, by_hop) and, for a chain, `ends`; impact a `declarations` count on each target, read from the label every resolver already writes it into. ax_grep.head turns those into the opening lines of both the places view and --grep, with the graph named when several languages answer. A single declaration, a chain between single declarations and a document without the fields render exactly as before. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
plugin: the places view opens with what the question resolved to (#1939)
plugin: a slow graph rebuilds after 7 edits instead of 5
plugin: axiomcode graph draws the codebase as a page again
Both sides added a public verb in the same places: `report` here, `graph` on integration. Keep both, in the help block, the dispatch table, SKILL.md (both copies) and the surfaces audit's PUBLIC / NO_MCP lists. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
… under its build directory A library root was walked with the project skip list, so dist/, build/ and out/ were skipped. A package whose root .d.ts re-exports ./dist/... staged only the root files, and a package whose every declaration sits under dist/types/ was not detected as TypeScript at all. Every TypeScript call into such a package stayed ambiguous_unknown although it was passed with --library. The TypeScript analyzer now takes libraryRoot (as the JavaScript one does), and a library walk keeps the build-output directories. A library root that no detector calls TypeScript but whose package.json declares types (types/typings, or a types condition in exports) is analysed as one. The project under analysis is unchanged: dist/ stays skipped. Two discovery checks, each with a control: a re-exporting package as library vs as project, and a dist-only typed package vs an untyped one. Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
plugin: show the user, after each turn, where an AxiomCode answer verifiably helped the agent (#1935)
typescript: a dependency staged with --library keeps the declarations under its build directory
swapnilpaliwal-sd
requested review from
JaredHLZhang,
Whua689 and
suyashpaliwal26
as code owners
October 13, 2026 08:02
Closed
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.
Features
axiomcode graphis back: it draws the codebase as one interactive page (directories, files, types and methods, with the call edges between them and each edge's tier). It uses the graph the index already built and rebuilds first only when a source file changed, then prints the page's path. It's a page for you, not an MCP tool for the agent (a 1,304-method Python library draws in 0.1 s) graphaxiomcode reportrenders the record as an HTML page, andAXIOMCODE_ASSISTS=offturns it off pluginImprovements
path X '*'gives the total reached and the count per hop, and a name that matches N declarations says so instead of reading as one (path main '*'on a tree with 22mains) pluginAXIOMCODE_REFRESH_BATCHstill overrides it refreshBugs
--librarythat keeps its declarations in a build directory staged almost none of them (a root.d.tsre-exporting./dist: 78 → 8,238 methods; declarations only underdist/types: 0 → 218). Calls into such packages now resolve to the library typescript