Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: quicknode/agent-plugins
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 66d55fa
Choose a base ref
...
head repository: quicknode/agent-plugins
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 5cdecbf
Choose a head ref
  • 4 commits
  • 2 files changed
  • 1 contributor

Commits on Sep 4, 2026

  1. [CON-906] Correct CLI and SDK reference against the live product

    Audited cli-reference.md and sdk-reference.md against qn 0.6.0 and
    @quicknode/sdk 3.8.2. 14 confirmed defects. Every claim was executed,
    not read.
    
    Wrong values and enums:
    - Chain vocabularies were conflated. `qn chain list` returns 76 short
      slugs (`eth`), not long names (`ethereum`). Added a vocabulary table
      for short slugs, long names, and network keys.
    - `generatePaymentWallet` accepts "evm" | "svm" | "tempo". "tempo" was
      missing.
    
    Examples that could never run:
    - `eth_getBalance` used the placeholder `0xabc...`, which fails -32602.
      Replaced with a real EOA.
    - The `eth_call` stdin literal was not valid JSON. Replaced with a real
      USDC totalSupply() call.
    - The webhook example pointed `--template evm-wallet` at the USDC
      contract, not a wallet. Replaced with an EOA.
    
    Silent failures (a 2xx or an exit 0 that returns nothing usable):
    - `stream test-filter` returns `result` as a JSON string. The SDK
      example read fields off it directly, which yields undefined. Added
      JSON.parse and documented the shape.
    - `logs` from test-filter can never be observed. The API sends objects,
      both clients decode string[], so any console.log in a filter fails
      the whole call. Documented, and warned against console.log.
    - The SQL example read `result.rows`, which is a count. The rows are in
      `result.data`. The example ran a billed query and discarded it.
    - "Lists store ordered values" is false. Lists sort lexicographically.
      Added a warning against using a list as a queue or cursor log.
    
    Omissions:
    - `supported-payments` can omit `asset` and can return a raw CAIP-2 id.
    - `endpoint logs` and `log-details` are Enterprise-only, and report the
      gate as "unauthorized. Check your API key". Documented the -v
      diagnosis.
    - Added the default output format (json when piped, table on a TTY) and
      the scope of --wide.
    - Added an exit-code table. Every code was verified live.
    - Added the nine typed SDK errors. Only the payment errors were listed.
    
    Command coverage was already complete: a recursive --help walk found
    126 leaf commands and 0 were missing.
    
    Verification: 22/22 SDK assertions pass, and every corrected CLI
    example was re-executed. Findings in the audit workspace.
    
    Version bumps for the three plugin manifests land in the CON-905 PR,
    the last of this set to merge.
    0xsergen committed Sep 4, 2026
    Configuration menu
    Copy the full SHA
    03dadfc View commit details
    Browse the repository at this point in the history
  2. [CON-906] Add Test: lines for the re-verified CLI and SDK examples

    CON-901 asks for a Test: line on every example. Added them for the
    five examples re-verified live in this session, in PR #8's format.
    
    CLI:
    - RPC params block. eth_getBalance returns a hex quantity, and the
      piped eth_call returns USDC totalSupply() as one 32-byte hex word.
    - stream test-filter on block 17811625. `result` is a JSON string and
      `logs` is [].
    
    SDK, against a freshly installed 3.8.2. 12 of 12 assertions pass:
    - RPC block. eth_getBalance returns a hex quantity; the truncated
      placeholder throws RpcError with code -32602.
    - testFilter. typeof test.result is "string", test.logs is [], and a
      filter calling console.log throws DecodeError.
    - generatePaymentWallet. evm and tempo give a 42-character 0x address,
      svm a base58 address, and any other value throws ConfigError naming
      all three.
    
    The remaining examples in these two files carry no Test: line yet.
    Two reasons, both recorded in the report:
    - Account-scoped examples (`endpoint list`, `kv set list`, `stream
      list`) can only assert this account's counts. A reader on another
      account cannot compare against them, so the line would mislead.
    - Mutating and paid paths were never executed, so there is no measured
      value to assert.
    
    Also confirmed and unchanged: the published package's `types` entry is
    sdk.d.ts, the documented class is QuicknodeSdk, the documented env var
    is QN_SDK__API_KEY, and `dataset` takes the StreamDataset enum rather
    than a raw string. Three drafts of the verification script got those
    wrong; the reference had all four right.
    
    Version bumps for the three plugin manifests land in the CON-905 PR,
    the last of this set to merge.
    0xsergen committed Sep 4, 2026
    Configuration menu
    Copy the full SHA
    fa51da2 View commit details
    Browse the repository at this point in the history
  3. [CON-906] Add three more CLI Test: lines and the --yes requirement

    CON-901 asks for a Test: line on every runnable example. These three were
    assertable with a value any reader can reproduce, and all three are free
    reads that create nothing.
    
    - `qn agent context` returns 370 lines of Markdown titled
      "# qn — usage guide for agents", with 9 `##` sections. Verified with
      QN_API_KEY empty, which is how the "needs no authentication" claim in
      that section is actually proved rather than asserted.
    - `qn endpoint list | head -c 1` prints `{`. Piped output defaults to
      json, not table, so a script never needs `-o json`. This is the claim
      the Output Formats defect was about.
    - `qn kv set list` returns `data` as an array of {key, value};
      `qn kv list list` returns `data` as an object wrapping `keys`. The two
      commands do not share a response shape.
    
    Also documented: every delete command needs `--yes` when no terminal is
    attached. Without it the command exits non-zero and deletes nothing. Hit
    while scripting this audit's own resource cleanup.
    
    Checked and found correct, so not changed: `qn kv list list` is the
    canonical subcommand, with `ls` as its alias. It is not a typo for `ls`.
    0xsergen committed Sep 4, 2026
    Configuration menu
    Copy the full SHA
    b4640c0 View commit details
    Browse the repository at this point in the history
  4. [CON-906] Close the three free RPC Test: gaps, and one wrong claim

    These were the three remaining assertable and free examples in
    cli-reference.md. All three now carry a Test: line. Coverage goes from
    5 of 33 runnable blocks to 8.
    
    Two live findings, both response-shape defects that fail silently.
    
    `qn rpc call -o json` prints the JSON-RPC result unwrapped. There is no
    jsonrpc, id, or result field. Code that reads `.result` on it gets
    undefined.
    
    `qn rpc list-networks -o json` returns `{"networks": [...]}`. That is a
    sixth distinct CLI response shape and it is not the `data` envelope the
    other list commands use, so `.data` is undefined.
    
    Also corrects a claim this branch added in b4640c0. The piped-output
    default is not universal. `qn rpc list-networks` prints a bare
    newline-separated list even when piped, with no JSON, so a script that
    pipes it and parses JSON fails. Verified: endpoint list, chain list and
    kv set list all print `{` when piped; rpc list-networks prints `0`. The
    Test: line now names all four commands and the exception.
    
    The asserted network count is dated in the line and marked as growing,
    because it drifts. The block-object assertion names the key range and
    the missing envelope rather than a field count, for the same reason.
    
    Verified live against account 464482. All calls read-only and free. No
    resource created.
    0xsergen committed Sep 4, 2026
    Configuration menu
    Copy the full SHA
    5cdecbf View commit details
    Browse the repository at this point in the history
Loading