Skip to content

chore: update dependencies from Staging#1392

Merged
cristiam86 merged 365 commits intomainfrom
staging
Mar 5, 2026
Merged

chore: update dependencies from Staging#1392
cristiam86 merged 365 commits intomainfrom
staging

Conversation

@cristiam86
Copy link
Copy Markdown
Contributor

@cristiam86 cristiam86 commented Jan 16, 2026

Fixes #issue-number-here

What

  • changed thing a for b
  • also did this other unrelated thing in my path

Why

  • to fix a bug
  • to add more value to the user

Testing done

  • tested the new feature
  • tested the bug fix

Decisions made

Checks

  • I have tested this code
  • I have reviewed my own PR
  • I have created an issue for this PR
  • I have set a descriptive PR title compliant with conventional commits

Reviewing tips

User facing release notes

Summary by CodeRabbit

  • Chores

    • Updated CI workflows and action versions; upgraded Node runtime to v24 in frontend jobs.
    • Bumped many backend/frontend dependencies and updated several Docker image tags.
    • Removed inclusion of local .env from some container builds.
  • Style

    • Reworked frontend linting config and applied small immutability refinements in UI components.
  • Tests

    • Adjusted unit tests and test env setup for more reliable/local test behavior.

renovate Bot added 30 commits February 20, 2025 16:43
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate Bot and others added 6 commits March 2, 2026 22:09
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…1499)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix: resolve dependency conflicts and adapt to FastAPI 0.133.0

- Downgrade websockets 16.0 -> 15.0.1 to fix conflict with web3 (<16.0.0)
- Update solve_dependencies call for FastAPI 0.133.0 API changes
  (AsyncExitStack, scope keys, SolvedDependency dataclass)
- Force TEST_WITH_MOCK_LLMS=true in unit tests before .env loading
  to prevent integration test config from breaking consensus timing

* fixed dependencies
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#1504)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@cristiam86 cristiam86 changed the title Staging chore: update dependencies from Staging Mar 4, 2026
@cristiam86 cristiam86 marked this pull request as ready for review March 4, 2026 10:24
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
backend/protocol_rpc/endpoints.py (1)

493-525: ⚠️ Potential issue | 🔴 Critical

get_contract_schema currently references undefined runtime symbols.

The function uses session and genvm_manager without defining or receiving them, so this path will fail when invoked.

🐛 Suggested fix
 async def get_contract_schema(
     accounts_manager: AccountsManager,
-    msg_handler: MessageHandler,
+    genvm_manager: GenVMManager,
+    msg_handler: IMessageHandler,
     contract_address: str,
 ) -> dict:
-    contract_snapshot = ContractSnapshot(contract_address, session)
+    contract_snapshot = ContractSnapshot(contract_address, accounts_manager.session)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/protocol_rpc/endpoints.py` around lines 493 - 525,
get_contract_schema references undefined symbols session and genvm_manager;
update the function signature to accept these dependencies (e.g., add parameters
session and genvm_manager) and use them when constructing ContractSnapshot and
Node respectively, or otherwise obtain them from a passed-in manager; update all
call sites to pass the new session and genvm_manager arguments so
ContractSnapshot(contract_address, session) and Node(..., manager=genvm_manager)
have defined values.
docker/Dockerfile.frontend (1)

19-21: ⚠️ Potential issue | 🟡 Minor

Potential Node version mismatch between build and runtime stages.

The final stage installs Node via apk add --no-cache nodejs npm from alpine:latest, which may provide a different Node version than the 24.1.0 used in the build stage. This could cause subtle runtime issues if there are version-specific behaviors.

Consider using a consistent Node base image for the final stage or pinning the Alpine Node package version.

Suggested fix using consistent base image
-FROM alpine:latest AS final
-RUN apk add --no-cache nodejs npm && \
+FROM node:24.1.0-alpine3.20 AS final
+RUN \
     addgroup --system frontend-user && adduser --system --ingroup frontend-user frontend-user && \
     mkdir /app && chown -R frontend-user:frontend-user /app
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docker/Dockerfile.frontend` around lines 19 - 21, The final stage in the
Dockerfile installs Node from alpine:latest which can differ from the
build-stage Node 24.1.0; update the final stage to use the same Node runtime as
the build (or pin the Alpine node package) so versions match: replace the apk
install approach in the final stage with a consistent base (e.g., the same Node
image used in the build stage) or explicitly pin the nodejs/npm package version,
and ensure the changes are applied in the final stage definition (the "final"
stage and its RUN that currently references alpine:latest and apk add --no-cache
nodejs npm).
🧹 Nitpick comments (4)
explorer/package.json (1)

22-26: Declare engines.node to match upgraded toolchain requirements.

Line 15 (next@16.1.6 requiring node >=20.9.0) and Line 25 (eslint@10.0.0 requiring node ^20.19.0 || ^22.13.0 || >=24) both impose Node minimums. Without an engines field, unsupported Node versions can still install and fail later during lint/build.

💡 Proposed change
 {
   "name": "studio-explorer",
   "version": "0.1.0",
   "private": true,
+  "engines": {
+    "node": ">=20.19.0"
+  },
   "scripts": {
     "dev": "next dev",
     "build": "next build",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@explorer/package.json` around lines 22 - 26, Add a top-level "engines": {
"node": ">=20.19.0" } field to package.json so the declared Node version meets
the upgraded toolchain (Next 16.1.6 and ESLint 10) requirements; update the JSON
in the package.json root (where dependencies like "@types/node" and "eslint" are
listed) to include the engines.node constraint and then re-run
install/lint/build to verify compatibility.
backend/protocol_rpc/endpoints.py (1)

1410-1421: Add an explicit return type to register_all_rpc_endpoints.

Please annotate this function with -> None to satisfy repository typing rules.

As per coding guidelines **/*.py: Include type hints in all Python code.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/protocol_rpc/endpoints.py` around lines 1410 - 1421, The function
register_all_rpc_endpoints is missing an explicit return type; update its
signature to include an explicit return annotation (-> None) so it complies with
the repository typing rules and coding guidelines; locate the
register_all_rpc_endpoints definition in backend/protocol_rpc/endpoints.py and
add the -> None return type to the function signature while leaving the existing
parameters (jsonrpc, msg_handler, request_session, accounts_manager,
transactions_processor, validators_registry, llm_provider_registry, consensus,
consensus_service, transactions_parser) unchanged.
frontend/eslint.config.js (1)

15-15: Migrate to the recommended v14.3.0+ ESLint config API.

The current vueTsEslintConfig() callable export is the deprecated legacy API kept for backwards compatibility with v≤14.2.x. In v14.7.0, use defineConfigWithVueTs + vueTsConfigs.recommended instead:

Recommended migration
import pluginVue from 'eslint-plugin-vue'
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'

export default defineConfigWithVueTs(
  {
    name: 'app/files-to-lint',
    files: ['**/*.{ts,mts,tsx,vue}'],
  },
  {
    name: 'app/files-to-ignore',
    ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
  },
  pluginVue.configs['flat/essential'],
  vueTsConfigs.recommended,
  {
    rules: {
      'vue/multi-word-component-names': 'off',
      'vue/block-lang': 'off',
      '@typescript-eslint/no-explicit-any': 'off',
      '@typescript-eslint/no-unused-expressions': 'off',
      '@typescript-eslint/no-unused-vars': 'off',
      '@typescript-eslint/no-empty-object-type': 'off',
      '@typescript-eslint/no-unsafe-function-type': 'off',
    },
  },
  skipFormatting,
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/eslint.config.js` at line 15, The config is using the deprecated
vueTsEslintConfig() legacy API; replace it with the new defineConfigWithVueTs
call and include vueTsConfigs.recommended (and optional
pluginVue.configs['flat/essential'] plus skipFormatting) as shown in the
migration guidance. Update the export to call defineConfigWithVueTs(...) with
your existing name/files/ignores and rules, and include vueTsConfigs.recommended
in the config list instead of vueTsEslintConfig so the project uses the v14.3.0+
API.
frontend/package.json (1)

19-19: Prefer non-mutating lint and a separate lint:fix script.

The lint script currently runs with --fix, which auto-mutates files in the pre-commit hook. This is problematic as it modifies files silently on commit. Splitting into separate lint (check-only) and lint:fix (auto-fix) scripts provides clearer intent and prevents unexpected mutations.

Suggested script split
-    "lint": "eslint --fix",
+    "lint": "eslint .",
+    "lint:fix": "eslint . --fix",

Update .pre-commit-config.yaml to use lint:fix if auto-fixing on commit is desired, or keep lint for check-only behavior in the hook.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/package.json` at line 19, Change the package.json scripts so "lint"
is check-only (remove the --fix flag) and add a new "lint:fix" script that runs
the linter with --fix; then update .pre-commit-config.yaml to call "npm run
lint:fix" only if you want auto-fixing on commit, otherwise keep it calling "npm
run lint" for check-only behavior. Ensure you modify the existing "lint" script
name and add "lint:fix" (referencing the "lint" and "lint:fix" script symbols)
so hooks and CI clearly distinguish between non-mutating checks and auto-fix
operations.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/.pre-commit.yml:
- Line 18: Update the CI workflows so the yaml key python-version uses "3.12"
instead of "3.14"/"3.14.x" in all workflow files (the pre-commit workflow, the
backend_integration_tests_pr workflow, and the unit-tests-pr workflow); search
each workflow for the python-version key and replace the version string with
"3.12" to match the project's declared language_version in
.pre-commit-config.yaml and AGENTS.md.

In @.github/workflows/load-test-oha.yml:
- Around line 41-60: The workflow contains a duplicated "Install oha" step that
repeats apt-get, curl and oha download logic (variables OHA_VERSION and
LATEST_VERSION, the curl fallback logic and chmod/mv/oha --version); remove the
duplicate block so only one "Install oha" step remains, keeping the correct
version-resolution logic (use OHA_VERSION fallback to latest via LATEST_VERSION
and the curl fallback) and ensure any callers or subsequent steps still
reference the single step.

In `@backend/protocol_rpc/endpoints.py`:
- Around line 1429-1534: Several RPC registrations pass arguments in the wrong
order or reference undefined callables; update each register_rpc_endpoint
partial to match the actual handler signatures and replace any undefined names.
Specifically: fix partial(fund_account, accounts_manager,
transactions_processor) to supply parameters in the same order as the
fund_account function signature; update partial(get_contract_schema_for_code,
msg_handler) to call the actual function that expects (msg_handler, <other
args?>) or reorder/add missing dependencies to match
get_contract_schema_for_code; correct partial(send_raw_transaction,
transactions_processor, accounts_manager, transactions_parser,
consensus_service) to match send_raw_transaction's parameter order/types; locate
and replace any registrations using undefined callables like call and
set_transaction_appeal with the correct handler functions (e.g., eth_call should
partial the actual eth_call handler with request_session, accounts_manager,
msg_handler, transactions_parser in correct order). Ensure all partial(...)
argument ordering and presence exactly mirror the target functions' signatures
(validators_registry, accounts_manager, llm_provider_registry, msg_handler,
transactions_processor, request_session, transactions_parser, consensus_service,
etc.) before re-registering.
- Around line 1410-1423: The register_all_rpc_endpoints function uses
undefined/incorrect symbols: replace the undefined JSONRPC type import with the
correct type used in the codebase (or import/alias it), import the concrete
MessageHandler type (the code currently only imports IMessageHandler), and stop
calling generate_rpc_endpoint as a standalone function—instantiate
FastAPIEndpointRegistry with msg_handler and call its instance method
generate_rpc_endpoint; update the function signature/types to reference the
correct JSONRPC symbol and MessageHandler, create registry =
FastAPIEndpointRegistry(msg_handler) and use registry.generate_rpc_endpoint(...)
where needed, and add any missing imports for FastAPIEndpointRegistry,
MessageHandler and the correct JSONRPC type.

In `@backend/requirements.txt`:
- Line 1: contract_linter.py currently imports JSONRPCError from
flask_jsonrpc.exceptions which is incompatible with Flask-JSONRPC 4.0.0; update
the import to use the internal wrapper by replacing any from
flask_jsonrpc.exceptions import JSONRPCError with from
backend.protocol_rpc.exceptions import JSONRPCError, and ensure all usages in
contract_linter.py (e.g., where JSONRPCError is raised or instantiated) follow
the internal wrapper's constructor signature so no direct dependency on the
upstream constructor behavior remains.

In `@docker-compose.yml`:
- Line 238: The docker image was bumped to "image: postgres:18-alpine" but
major-version upgrades require data migration for existing postgres_data
volumes; do not reuse the old volume in-place—either reinitialize the new PG18
cluster with matching checksum settings (initialize with initdb flag
--no-data-checksums) or perform a proper pg_upgrade from the PG16 cluster (or
dump/restore) to migrate data; ensure you run pg_upgrade with both clusters
available and matching checksum settings and update any deployment scripts/docs
to call pg_upgrade or a dump/restore workflow instead of simply switching to
image: postgres:18-alpine.

In `@docker/Dockerfile.database-migration`:
- Line 2: The base image in Dockerfile.database-migration uses "FROM
python:3.14.3-slim" which mismatches the backend and project target; change the
FROM image tag to the project's target Python version (match the backend
Dockerfile’s Python 3.12 image, e.g. use "python:3.12-slim") so migrations run
with the same runtime as the backend and AGENTS.md.

In `@docker/Dockerfile.frontend`:
- Line 1: The Dockerfile uses "FROM node:24.1.0-alpine3.20" (a Current release)
and mixes that build stage with a final stage using "alpine:latest" plus "nodejs
npm", which can cause runtime Node version mismatches and expose breaking
changes (OpenSSL/TLS, native addon rebuilds, npm lifecycle differences); update
the Dockerfile.frontend to pin and align Node versions across stages by either
switching to the current LTS image (e.g., Node 18/20 LTS) or using a matching
node:<version>-alpine image for both build and final stages, remove use of
alpine:latest and avoid installing nodejs via distro packages, and add a note to
rebuild/native-module steps (e.g., sharp/bcrypt) and CI tests for
fetch/AbortSignal/TLS behavior to verify compatibility before production.

In `@frontend/eslint.config.js`:
- Line 8: Update the files glob in the eslint config (the files:
['**/*.{ts,mts,tsx,vue}'] entry) to include JS variants (e.g.
'**/*.{js,mjs,cjs,ts,mts,tsx,vue}') and remove the global disabling of
TypeScript safety rules in the top-level rules/overrides block (the section that
currently turns off several `@typescript-eslint` checks); instead re-enable those
critical rules (for example `@typescript-eslint/strict-boolean-expressions`,
`@typescript-eslint/no-explicit-any`, `@typescript-eslint/ban-ts-comment`) or
restrict exceptions to narrowly targeted overrides for specific files only, and
ensure parserOptions/project is configured so TypeScript rules run correctly.

In `@tests/unit/__init__.py`:
- Line 3: Current import-time code force-sets the environment variable
TEST_WITH_MOCK_LLMS to "true", overriding explicit CI/local settings; change it
to only set a default when the variable is not already present (e.g., use a
conditional or env.setdefault) so explicit TEST_WITH_MOCK_LLMS values provided
by CI or users are preserved; update the statement in tests/unit/__init__.py
that currently sets TEST_WITH_MOCK_LLMS to instead only assign a default if the
key is missing.

In `@tests/unit/consensus/test_base.py`:
- Around line 1606-1607: Remove the duplicated wait call to
check_contract_state_with_timeout that occurs immediately before the appeal;
specifically, delete the second invocation of
check_contract_state_with_timeout(contract_db, transaction.to_address, {}, {})
so the earlier call (the one that already awaited the state change) remains and
the appeal path does not consume the synchronization event; ensure only the
original check_contract_state_with_timeout call (associated with contract_db and
transaction.to_address) remains before performing the appeal and subsequent
assertions.

---

Outside diff comments:
In `@backend/protocol_rpc/endpoints.py`:
- Around line 493-525: get_contract_schema references undefined symbols session
and genvm_manager; update the function signature to accept these dependencies
(e.g., add parameters session and genvm_manager) and use them when constructing
ContractSnapshot and Node respectively, or otherwise obtain them from a
passed-in manager; update all call sites to pass the new session and
genvm_manager arguments so ContractSnapshot(contract_address, session) and
Node(..., manager=genvm_manager) have defined values.

In `@docker/Dockerfile.frontend`:
- Around line 19-21: The final stage in the Dockerfile installs Node from
alpine:latest which can differ from the build-stage Node 24.1.0; update the
final stage to use the same Node runtime as the build (or pin the Alpine node
package) so versions match: replace the apk install approach in the final stage
with a consistent base (e.g., the same Node image used in the build stage) or
explicitly pin the nodejs/npm package version, and ensure the changes are
applied in the final stage definition (the "final" stage and its RUN that
currently references alpine:latest and apk add --no-cache nodejs npm).

---

Nitpick comments:
In `@backend/protocol_rpc/endpoints.py`:
- Around line 1410-1421: The function register_all_rpc_endpoints is missing an
explicit return type; update its signature to include an explicit return
annotation (-> None) so it complies with the repository typing rules and coding
guidelines; locate the register_all_rpc_endpoints definition in
backend/protocol_rpc/endpoints.py and add the -> None return type to the
function signature while leaving the existing parameters (jsonrpc, msg_handler,
request_session, accounts_manager, transactions_processor, validators_registry,
llm_provider_registry, consensus, consensus_service, transactions_parser)
unchanged.

In `@explorer/package.json`:
- Around line 22-26: Add a top-level "engines": { "node": ">=20.19.0" } field to
package.json so the declared Node version meets the upgraded toolchain (Next
16.1.6 and ESLint 10) requirements; update the JSON in the package.json root
(where dependencies like "@types/node" and "eslint" are listed) to include the
engines.node constraint and then re-run install/lint/build to verify
compatibility.

In `@frontend/eslint.config.js`:
- Line 15: The config is using the deprecated vueTsEslintConfig() legacy API;
replace it with the new defineConfigWithVueTs call and include
vueTsConfigs.recommended (and optional pluginVue.configs['flat/essential'] plus
skipFormatting) as shown in the migration guidance. Update the export to call
defineConfigWithVueTs(...) with your existing name/files/ignores and rules, and
include vueTsConfigs.recommended in the config list instead of vueTsEslintConfig
so the project uses the v14.3.0+ API.

In `@frontend/package.json`:
- Line 19: Change the package.json scripts so "lint" is check-only (remove the
--fix flag) and add a new "lint:fix" script that runs the linter with --fix;
then update .pre-commit-config.yaml to call "npm run lint:fix" only if you want
auto-fixing on commit, otherwise keep it calling "npm run lint" for check-only
behavior. Ensure you modify the existing "lint" script name and add "lint:fix"
(referencing the "lint" and "lint:fix" script symbols) so hooks and CI clearly
distinguish between non-mutating checks and auto-fix operations.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e3ae7ef6-04e0-432a-965e-c8fbe3a12a25

📥 Commits

Reviewing files that changed from the base of the PR and between 8f47ed1 and 7548e35.

⛔ Files ignored due to path filters (1)
  • frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (41)
  • .github/workflows/.pre-commit.yml
  • .github/workflows/backend_integration_tests_pr.yml
  • .github/workflows/docker-build-and-push-image.yml
  • .github/workflows/docker-build-test-native-arm.yml
  • .github/workflows/frontend-unit-tests.yml
  • .github/workflows/load-test-oha.yml
  • .github/workflows/manual-docker-release.yml
  • .github/workflows/release-from-main.yml
  • .github/workflows/scan-codeql.yml
  • .github/workflows/test-semgrep.yml
  • .github/workflows/unit-tests-pr.yml
  • backend/database_handler/migration/requirements.txt
  • backend/protocol_rpc/endpoints.py
  • backend/requirements.txt
  • docker-compose.yml
  • docker/Dockerfile.database-migration
  • docker/Dockerfile.explorer
  • docker/Dockerfile.frontend
  • explorer/package.json
  • frontend/.eslintrc.cjs
  • frontend/.nvmrc
  • frontend/eslint.config.js
  • frontend/package.json
  • frontend/src/components/JsonViewer/json-box.vue
  • frontend/src/components/JsonViewer/types/json-array.vue
  • frontend/src/components/JsonViewer/types/json-object.vue
  • frontend/src/components/JsonViewer/types/json-regexp.vue
  • frontend/src/components/JsonViewer/types/json-string.vue
  • frontend/src/components/Simulator/AccountItem.vue
  • frontend/src/components/Simulator/ConfigField.vue
  • frontend/src/components/Simulator/ContractItem.vue
  • frontend/src/components/Simulator/ContractTab.vue
  • frontend/src/components/Tutorial/TutorialContainer.vue
  • frontend/src/components/Tutorial/TutorialStep.vue
  • frontend/src/constants/pythonSyntax.ts
  • frontend/tsconfig.node.json
  • hardhat/package.json
  • requirements.test.txt
  • requirements.txt
  • tests/unit/__init__.py
  • tests/unit/consensus/test_base.py
💤 Files with no reviewable changes (3)
  • frontend/src/constants/pythonSyntax.ts
  • frontend/.eslintrc.cjs
  • frontend/src/components/JsonViewer/types/json-regexp.vue

Comment thread .github/workflows/.pre-commit.yml Outdated
Comment thread .github/workflows/load-test-oha.yml Outdated
Comment thread backend/protocol_rpc/endpoints.py Outdated
Comment thread backend/protocol_rpc/endpoints.py Outdated
Comment thread backend/requirements.txt
Comment thread docker/Dockerfile.database-migration Outdated
Comment thread docker/Dockerfile.frontend
Comment thread frontend/eslint.config.js Outdated
Comment thread tests/unit/__init__.py Outdated
Comment thread tests/unit/consensus/test_base.py Outdated
cristiam86 added a commit that referenced this pull request Mar 4, 2026
- Align Python version to 3.12 across CI workflows and DB migration Dockerfile
- Rollback PostgreSQL from 18-alpine to 16-alpine to avoid major version migration
- Fix Flask-JSONRPC 4.0 breaking import in contract_linter.py
- Re-enable TypeScript safety rules in ESLint config (as warnings)
- Remove unused register_all_rpc_endpoints function with broken partials
- Remove duplicate check_contract_state_with_timeout call in test
- Remove duplicate "Install oha" step in load test workflow
- Use setdefault for TEST_WITH_MOCK_LLMS env var
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- Align Python version to 3.12 across CI workflows and DB migration Dockerfile
- Rollback PostgreSQL from 18-alpine to 16-alpine to avoid major version migration
- Fix Flask-JSONRPC 4.0 breaking import in contract_linter.py
- Re-enable TypeScript safety rules in ESLint config (as warnings)
- Remove unused register_all_rpc_endpoints function with broken partials
- Remove duplicate check_contract_state_with_timeout call in test
- Remove duplicate "Install oha" step in load test workflow
- Use setdefault for TEST_WITH_MOCK_LLMS env var
- Restore 6 functions removed from endpoints.py: get_contract_deployer,
  get_contract_nonce, admin_upgrade_contract_code, dev_get_pool_status,
  admin_create_tier, admin_list_tiers, admin_create_api_key,
  admin_deactivate_api_key
- Fix FastAPI solve_dependencies compatibility in rpc_endpoint_manager.py
  (AsyncExitStack, scope keys, SolvedDependency attributes)
- Fix test_leader_appeal race condition by setting finality_window_time=60
- Remove cosmetic print warnings from test_helpers.py
bake-action v6 defaults to git source instead of local checkout,
causing COPY .env to fail since .env is gitignored. Adding source: .
uses the local checkout where .env was already copied from .env.example.
The build context is ./ (repo root), so COPY ../.env resolved to /.env
(filesystem root) which doesn't exist. Changed to COPY .env . which
correctly references the file at the build context root. The old path
worked with bake-action v5 due to lenient BuildKit path resolution.
bake-action v6 uses git context by default, where .env doesn't exist
(gitignored). The COPY .env was redundant anyway:
- consensus-worker: docker-compose mounts .env as a volume at runtime
- database-migration: uses environment vars from docker-compose
- backend Dockerfile (jsonrpc) never had COPY .env and works fine

Also removes ineffective source: . from bake-action config (v6 converts
'.' to empty string, which fails the truthiness check in the action code
and silently falls back to git context).
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
frontend/eslint.config.js (1)

20-24: ⚠️ Potential issue | 🟠 Major

Restore TypeScript safety rules to blocking severity.

Keeping these as warn weakens strict lint enforcement and allows unsafe patterns through CI. Please set them to error (or narrowly scope exceptions to specific files only).

♻️ Suggested adjustment
   {
     rules: {
       'vue/multi-word-component-names': 'off',
       'vue/block-lang': 'off',
-      '@typescript-eslint/no-explicit-any': 'warn',
-      '@typescript-eslint/no-unused-expressions': 'warn',
-      '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
-      '@typescript-eslint/no-empty-object-type': 'warn',
-      '@typescript-eslint/no-unsafe-function-type': 'warn',
+      '@typescript-eslint/no-explicit-any': 'error',
+      '@typescript-eslint/no-unused-expressions': 'error',
+      '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
+      '@typescript-eslint/no-empty-object-type': 'error',
+      '@typescript-eslint/no-unsafe-function-type': 'error',
     },
   },

As per coding guidelines: **/*.{js,ts,tsx} must use ESLint and Prettier with strict mode enabled.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/eslint.config.js` around lines 20 - 24, Update the listed TypeScript
ESLint rules from 'warn' to 'error' to restore strict lint enforcement: change
'@typescript-eslint/no-explicit-any',
'@typescript-eslint/no-unused-expressions', '@typescript-eslint/no-unused-vars'
(keep argsIgnorePattern: '^_' option),
'@typescript-eslint/no-empty-object-type', and
'@typescript-eslint/no-unsafe-function-type' to severity 'error' in the ESLint
config (frontend/eslint.config.js); if any true positives require exceptions,
scope them via overrides for specific files rather than lowering these global
severities.
🧹 Nitpick comments (1)
backend/protocol_rpc/rpc_endpoint_manager.py (1)

356-361: Remove duplicated msg_handler override.

msg_handler is set twice in the same merge path. Keep a single override after all merges to reduce noise and avoid drift.

Refactor diff
-            call_kwargs = dict(values)
-            if "msg_handler" in call_kwargs:
-                call_kwargs["msg_handler"] = session_logger
-            call_kwargs.update(bound_arguments)
-            if "msg_handler" in call_kwargs:
-                call_kwargs["msg_handler"] = session_logger
+            call_kwargs = dict(values)
+            call_kwargs.update(bound_arguments)
+            if "msg_handler" in call_kwargs:
+                call_kwargs["msg_handler"] = session_logger
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/protocol_rpc/rpc_endpoint_manager.py` around lines 356 - 361, The
duplicate msg_handler override in the call argument assembly should be removed:
in rpc_endpoint_manager.py where call_kwargs is built from dict(values) and then
merged with bound_arguments (symbols: call_kwargs, dict(values),
bound_arguments, session_logger), eliminate the first (or the earlier)
conditional block that sets call_kwargs["msg_handler"] = session_logger so that
only a single override remains after all merges (i.e., keep the conditional that
sets msg_handler only once after call_kwargs.update(bound_arguments)).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@frontend/eslint.config.js`:
- Around line 20-24: Update the listed TypeScript ESLint rules from 'warn' to
'error' to restore strict lint enforcement: change
'@typescript-eslint/no-explicit-any',
'@typescript-eslint/no-unused-expressions', '@typescript-eslint/no-unused-vars'
(keep argsIgnorePattern: '^_' option),
'@typescript-eslint/no-empty-object-type', and
'@typescript-eslint/no-unsafe-function-type' to severity 'error' in the ESLint
config (frontend/eslint.config.js); if any true positives require exceptions,
scope them via overrides for specific files rather than lowering these global
severities.

---

Nitpick comments:
In `@backend/protocol_rpc/rpc_endpoint_manager.py`:
- Around line 356-361: The duplicate msg_handler override in the call argument
assembly should be removed: in rpc_endpoint_manager.py where call_kwargs is
built from dict(values) and then merged with bound_arguments (symbols:
call_kwargs, dict(values), bound_arguments, session_logger), eliminate the first
(or the earlier) conditional block that sets call_kwargs["msg_handler"] =
session_logger so that only a single override remains after all merges (i.e.,
keep the conditional that sets msg_handler only once after
call_kwargs.update(bound_arguments)).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 57d6655b-689a-4167-864c-63679cab2a3d

📥 Commits

Reviewing files that changed from the base of the PR and between 2190018 and 258cad3.

📒 Files selected for processing (14)
  • .github/workflows/.pre-commit.yml
  • .github/workflows/backend_integration_tests_pr.yml
  • .github/workflows/load-test-oha.yml
  • .github/workflows/unit-tests-pr.yml
  • backend/protocol_rpc/contract_linter.py
  • backend/protocol_rpc/endpoints.py
  • backend/protocol_rpc/rpc_endpoint_manager.py
  • docker-compose.yml
  • docker/Dockerfile.consensus-worker
  • docker/Dockerfile.database-migration
  • frontend/eslint.config.js
  • tests/unit/__init__.py
  • tests/unit/consensus/test_base.py
  • tests/unit/consensus/test_helpers.py
💤 Files with no reviewable changes (4)
  • docker/Dockerfile.consensus-worker
  • tests/unit/consensus/test_helpers.py
  • docker/Dockerfile.database-migration
  • backend/protocol_rpc/endpoints.py
🚧 Files skipped from review as they are similar to previous changes (4)
  • docker-compose.yml
  • .github/workflows/.pre-commit.yml
  • .github/workflows/load-test-oha.yml
  • .github/workflows/backend_integration_tests_pr.yml

@cristiam86 cristiam86 merged commit 925f041 into main Mar 5, 2026
18 of 19 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 9, 2026

🎉 This PR is included in version 0.106.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants