Skip to content

Migrate from Python/ADK to Node.js/Bun with TypeScript#13

Merged
elicollinson merged 7 commits intosolenoid-nodefrom
claude/migrate-to-bun-aSyyo
Jan 27, 2026
Merged

Migrate from Python/ADK to Node.js/Bun with TypeScript#13
elicollinson merged 7 commits intosolenoid-nodefrom
claude/migrate-to-bun-aSyyo

Conversation

@elicollinson
Copy link
Copy Markdown
Owner

Summary

This PR represents a major architectural shift, migrating the entire codebase from a Python-based Google ADK agent system to a Node.js/Bun runtime with TypeScript. The Python agent framework, memory management, code execution, and related infrastructure have been removed in favor of a modern JavaScript/TypeScript stack.

Key Changes

Removed Components

  • Python Agent Framework: Removed all Google ADK agent implementations (user_proxy_agent, code_executor_agent, chart_generator_agent)
  • Memory System: Removed SQLite-based memory service, memory callbacks, and LLM-based memory extraction
  • Code Execution: Removed WASM sandbox executor wrapper and Python code execution infrastructure
  • Configuration: Removed Python-based YAML configuration loader and agent prompt management
  • Context Compaction: Removed the context compaction system for managing conversation history

Added Components

  • CI/CD Pipeline: Added .github/workflows/test-node.yml with:
    • Bun test execution with coverage reporting
    • TypeScript type checking
    • Biome linting
    • Build step with dependency ordering
    • Triggers on changes to src/, tests/, and config files
  • Node.js Tooling:
    • package.json for dependency management
    • tsconfig.json for TypeScript configuration
    • biome.json for code formatting/linting
  • Git Configuration: Updated .gitignore to exclude node_modules/ and added a new .gitignore template with Node.js-specific patterns

Migration Path

The codebase is transitioning from:

  • Python 3.x → Node.js with Bun runtime
  • Google ADK agents → TypeScript-based agent system
  • YAML configuration → TypeScript/JSON configuration
  • SQLite memory → TBD (new memory implementation)
  • Python WASM execution → TBD (new code execution strategy)

Implementation Details

  • Bun is configured as the primary runtime (latest version)
  • TypeScript is the primary language for type safety
  • Biome handles both linting and formatting
  • Test coverage is tracked via Bun's built-in coverage tool
  • Build process depends on successful test and lint jobs

Notes

  • This is a foundational migration; new implementations for memory management and code execution will follow
  • The workflow ensures code quality through type checking, linting, and test coverage before builds

https://claude.ai/code/session_01LALSEnt9kehERfr2Kgw886

elicollinson and others added 3 commits January 23, 2026 19:39
…w-6isc7

Add Claude code configuration and verification workflow guide
This commit migrates the solenoid-node branch from Node.js/npm to Bun:

Package Changes:
- Replace npm with bun for package management
- Remove vitest in favor of Bun's native test runner
- Remove eslint in favor of Biome for linting
- Remove pino in favor of custom JSON logger
- Remove better-sqlite3 in favor of Bun's native bun:sqlite
- Remove tsx since Bun runs TypeScript natively
- Add bun-types for TypeScript support

Database Changes:
- Migrate from better-sqlite3 to bun:sqlite
- Maintain sqlite-vec extension support for vector search
- Update all database operations to use Bun's SQLite API

Test Changes:
- Convert all tests from vitest to bun:test
- Replace vi.mock() with mock.module()
- Replace vi.fn() with mock()
- Update test assertions to use Bun's expect API

Configuration Changes:
- Update tsconfig.json for Bun compatibility
- Add biome.json for linting/formatting
- Remove vitest.config.ts and .eslintrc.cjs
- Update GitHub workflow to use Bun

https://claude.ai/code/session_01LALSEnt9kehERfr2Kgw886
@elicollinson elicollinson changed the base branch from main to solenoid-node January 27, 2026 00:28
@claude
Copy link
Copy Markdown

claude bot commented Jan 27, 2026

Code Review - CLAUDE.md Compliance Issue

Issue Found: claude.md contains outdated verification commands

The CLAUDE.md file still references Python/Poetry commands that no longer work after the migration to Node.js/Bun:

  • Line 26: poetry run pytest tests/
  • Line 34: poetry run python -m tests.eval.run_eval

These commands should be updated to:

bun test
bun test tests/e2e/harness-integration.test.tsx

Reference:

Solenoid/claude.md

Lines 22 to 35 in 598437b

Execute the test suite to ensure all tests pass:
```bash
poetry run pytest tests/
```
### 3. Functional Testing with Agent Harness
Use the agent harness to functionally test your changes before pushing:
```bash
poetry run python -m tests.eval.run_eval
```

- Add type annotations to fix noImplicitAnyLet errors in agent files
- Change bracket notation to dot notation for useLiteralKeys compliance
- Fix parameter reassignment in test-harness.tsx
- Auto-format code with Biome (import organization, string templates)
- Configure noArrayIndexKey as warning for stable React list patterns

https://claude.ai/code/session_01LALSEnt9kehERfr2Kgw886
Replace outdated Python/Poetry commands with Bun equivalents:
- poetry run pytest tests/ → bun test
- poetry run python -m tests.eval.run_eval → bun test tests/e2e/harness-integration.test.tsx

https://claude.ai/code/session_01LALSEnt9kehERfr2Kgw886
ink requires react-devtools-core for its devtools functionality.
Adding it as a devDependency fixes the build error.

https://claude.ai/code/session_01LALSEnt9kehERfr2Kgw886
@elicollinson elicollinson merged commit 5937f4e into solenoid-node Jan 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants