Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
82a3f0c
feat: add Maven to Elide converter script
rjwalters Nov 15, 2025
5496ff6
feat: add `elide adopt maven` command and fix GraalVM native build
rjwalters Nov 16, 2025
2536c79
Merge branch 'main' into robb/elide-convert
rjwalters Nov 18, 2025
b191f46
feat: add advanced Maven adoption features
rjwalters Nov 18, 2025
ccfb0c1
feat(cli): enhance Maven adoption with plugins, property defaults, an…
rjwalters Nov 18, 2025
5e8f0ca
test(cli): add comprehensive test suite for Maven adoption features
rjwalters Nov 18, 2025
28762f1
test(cli): add Apache Commons Lang integration test
rjwalters Nov 18, 2025
79bf8a6
test(cli): add Jackson Databind integration test
rjwalters Nov 18, 2025
b8a91cc
test(cli): add Spring Cloud multi-module integration test
rjwalters Nov 18, 2025
f12a6fe
feat(cli): enhance Maven adopter UX with colorized output
rjwalters Nov 18, 2025
7d60e79
feat(cli): add Gradle adopter with enhanced UX
rjwalters Nov 18, 2025
bb2104b
test(cli): add OkHttp integration test for Gradle adopter
rjwalters Nov 19, 2025
825c805
docs: add comprehensive migration guides for Maven, Gradle, and Bazel
rjwalters Nov 19, 2025
3695939
feat(cli): add Gradle version catalog support
rjwalters Nov 19, 2025
800e9db
feat(cli): add Bazel and Node.js adopters
rjwalters Nov 19, 2025
f2e01cf
test(cli): add comprehensive tests for Bazel and Node.js adopters
rjwalters Nov 19, 2025
fb412e4
chore: remove legacy Python script
rjwalters Nov 19, 2025
bc35064
feat(cli): add auto-detection for `elide adopt` command
rjwalters Nov 19, 2025
d2e5f59
feat(cli): add auto-detection for adopt command
rjwalters Nov 19, 2025
09a47c5
feat(cli): add polyglot monorepo support to adopt command
rjwalters Nov 19, 2025
b4ad11e
feat(cli): add Python project adopter with pyproject.toml and require…
rjwalters Nov 19, 2025
fe6c0a4
test(cli): add Python adopter real-world integration tests
rjwalters Nov 19, 2025
c5a6d11
docs(cli): update Bazel adopter status to complete
rjwalters Nov 19, 2025
18e06a0
refactor(cli): improve PKL generator output with headers, sections, a…
rjwalters Nov 19, 2025
71335ed
feat(cli): add real-world integration testing framework for Python ad…
rjwalters Nov 19, 2025
3f72c60
fix(cli): add graceful error handling for real-world Python integrati…
rjwalters Nov 19, 2025
7985a8f
feat(cli): integrate ktoml fork with empty line parsing fix
rjwalters Nov 20, 2025
4fa37c2
Merge remote-tracking branch 'origin/main' into robb/elide-convert
rjwalters Nov 20, 2025
394d99b
fix: restore gradle/verification-metadata.xml
rjwalters Nov 20, 2025
0fddf33
chore: remove accidentally committed build artifacts
rjwalters Nov 20, 2025
3ca6db6
feat(build-arena): add terminal testing page with Claude Code API key…
rjwalters Nov 7, 2025
352663e
feat(build-arena): add Claude Code integration with auto-run capability
rjwalters Nov 7, 2025
57d9b0d
feat(build-arena): configure Claude Code for non-interactive headless…
rjwalters Nov 7, 2025
75a2db5
feat(build-arena): add view-only terminal with build timer
rjwalters Nov 7, 2025
3cff518
feat(build-arena): implement WebSocket recording infrastructure
rjwalters Nov 7, 2025
a3d738f
feat(build-arena): integrate WebSocket recording into terminal server
rjwalters Nov 7, 2025
fda7402
feat(build-arena): add countdown timer and robust auto-approval for m…
rjwalters Nov 7, 2025
00144c0
feat(build-arena): improve Elide and Maven instructions for autonomou…
rjwalters Nov 7, 2025
d4e6b2a
feat(build-arena): add comprehensive status API and race reconnection…
rjwalters Nov 14, 2025
04efe1c
feat(build-arena): add closed-loop observability for race debugging
rjwalters Nov 15, 2025
42444c7
fix(build-arena): disable Claude Code auto-updater in Docker images
rjwalters Nov 15, 2025
fd90a5c
feat(build-arena): add token tracking and shared bell detection
rjwalters Nov 15, 2025
7f4159f
chore(build-arena): add recordings directory to .gitignore
rjwalters Nov 15, 2025
014dd93
feat(build-arena): fix Elide installation and standardize CLAUDE file…
rjwalters Nov 15, 2025
3e8876d
fix(build-arena): correct Docker build context for maven-to-elide.py
rjwalters Nov 15, 2025
8e964a7
feat(build-arena): build Docker images for native platform on ARM64 Mac
rjwalters Nov 15, 2025
2690576
feat(build-arena): add artifact verification to Elide runner instruct…
rjwalters Nov 15, 2025
49d227f
feat(build-arena): replace Python converter with 'elide adopt' command
rjwalters Nov 20, 2025
6741358
feat(build-arena): add dynamic instructions and remote Linux build su…
rjwalters Nov 20, 2025
d8c0091
fix(build): remove Java 23 incompatible JVM flags
rjwalters Nov 20, 2025
9a09fdc
feat(build): automatically initialize git submodules before build
rjwalters Nov 20, 2025
93b2610
feat(build): add native build dependency checking with helpful error …
rjwalters Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"permissions": {
"allow": [
"Bash(fi)",
"Bash(xargs:*)",
"Bash(docker container prune:*)",
"Bash(open:*)",
"Bash(killall:*)",
"Bash(chmod:*)",
"Bash(/Users/rwalters/GitHub/elide/tools/build-arena/scripts/check-resources.sh:*)",
"Bash(../scripts/check-resources.sh)",
"Bash(docker image prune:*)",
"Bash(docker build:*)",
"Bash(docker logs:*)",
"Bash(lsof:*)",
"Bash(pnpm dev)",
"Bash(curl:*)",
"Bash(docker ps:*)",
"Bash(./build-images.sh:*)",
"Bash(docker exec:*)",
"Bash(docker:*)",
"Bash(pnpm --version:*)",
"Bash(node --version:*)",
"Bash(/dev/null)",
"Bash(pnpm install:*)",
"Bash(timeout 5 docker images:*)",
"Bash(timeout 10 curl:*)",
"WebFetch(domain:code.claude.com)",
"WebSearch",
"WebFetch(domain:github.com)",
"WebFetch(domain:support.claude.com)",
"Bash(npm info:*)",
"Bash(source backend/.env)",
"Bash(npm view:*)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(source /Users/rwalters/GitHub/elide/tools/build-arena/backend/.env)",
"Bash(sqlite3:*)",
"Bash(pnpm drizzle-kit push:*)",
"Bash(cd:*)",
"Bash(cat:*)",
"Bash(pkill:*)",
"Bash(paste:*)",
"Bash(pnpm -s --filter backend dev:*)",
"Bash(pnpm exec tsx:*)"
],
"deny": [],
"ask": []
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"elide"
]
}
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.venv/
.DS_Store
TODO.md
.dev/cache
.dev/dependencies
.dev/coverage
Expand Down Expand Up @@ -60,3 +61,8 @@ README.md.br
node_modules
.intellijPlatform/
cosign.key

# External submodule build artifacts
external/ktoml/build/
external/ktoml/.gradle/
external/ktoml/kotlin-js-store/
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@
url = [email protected]:google/boringssl.git
ignore = dirty

[submodule "external/ktoml"]
path = external/ktoml
url = https://github.com/rjwalters/ktoml.git
100 changes: 100 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,106 @@ fun forceDisableNpmTasks() {
tasks.findByName("setupNodeJs")?.let { forceDisableTask(it) }
}

// --- Tasks: Git Submodule Initialization
//
// Automatically initialize git submodules if they're not present.
// This ensures external/ktoml is available without manual intervention.
//
val initSubmodules by tasks.registering(Exec::class) {
description = "Initialize git submodules if not already initialized"
group = "build setup"

val ktomlDir = file("external/ktoml")
onlyIf { !ktomlDir.exists() || ktomlDir.list()?.isEmpty() != false }

commandLine("git", "submodule", "update", "--init", "--recursive")

doFirst {
logger.lifecycle("Initializing git submodules...")
}
}

// Make all projects depend on submodule initialization
allprojects {
tasks.matching { it.name != "initSubmodules" }.configureEach {
dependsOn(initSubmodules)
}
}

// --- Tasks: Build Dependency Checking
//
// Check for required build tools before attempting native builds.
// Provides helpful error messages with installation instructions.
//
val checkNativeBuildDeps by tasks.registering {
description = "Check for required native build dependencies (make, gcc, etc.)"
group = "build setup"

doLast {
val isLinux = System.getProperty("os.name").lowercase().contains("linux")
val isMac = System.getProperty("os.name").lowercase().contains("mac")

if (!isLinux && !isMac) {
logger.warn("Native build dependency checking only supported on Linux and macOS")
return@doLast
}

val missingTools = mutableListOf<String>()

// Check for make
try {
exec {
commandLine("which", "make")
standardOutput = java.io.ByteArrayOutputStream()
errorOutput = java.io.ByteArrayOutputStream()
isIgnoreExitValue = true
}.apply {
if (exitValue != 0) missingTools.add("make")
}
} catch (e: Exception) {
missingTools.add("make")
}

// Check for gcc/clang
val hasCompiler = try {
exec {
commandLine("which", "gcc")
standardOutput = java.io.ByteArrayOutputStream()
errorOutput = java.io.ByteArrayOutputStream()
isIgnoreExitValue = true
}.exitValue == 0 || exec {
commandLine("which", "clang")
standardOutput = java.io.ByteArrayOutputStream()
errorOutput = java.io.ByteArrayOutputStream()
isIgnoreExitValue = true
}.exitValue == 0
} catch (e: Exception) {
false
}

if (!hasCompiler) {
missingTools.add("gcc/clang")
}

if (missingTools.isNotEmpty()) {
val installCmd = when {
isLinux -> "sudo apt-get install -y build-essential"
isMac -> "xcode-select --install"
else -> "install build tools for your platform"
}

logger.warn("")
logger.warn("⚠️ Missing native build dependencies: ${missingTools.joinToString(", ")}")
logger.warn(" These are required for building native libraries (SQLite, BoringSSL, etc.)")
logger.warn("")
logger.warn(" To install: $installCmd")
logger.warn("")
logger.warn(" Alternatively, skip native builds with: -x buildThirdPartyNatives")
logger.warn("")
}
}
}

forceDisableNpmTasks()

afterEvaluate {
Expand Down
121 changes: 0 additions & 121 deletions buildscript-gradle.lockfile

This file was deleted.

1 change: 1 addition & 0 deletions external/ktoml
Submodule ktoml added at dfc738
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ org.gradle.jvmargs = -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -Xmx24g --add-opens=
base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.\
util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.\
lang.ref=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED \
--enable-native-access=ALL-UNNAMED --illegal-native-access=allow --sun-misc-unsafe-memory-access=allow
--enable-native-access=ALL-UNNAMED
org.gradle.unsafe.isolated-projects = false
org.gradle.configuration-cache = false
org.gradle.configuration-cache.parallel = false
Expand All @@ -79,7 +79,7 @@ versions.java.language = 21
versions.java.toolchain = 25
versions.java.minimum = 21
versions.java.target = 21
versions.kotlin.sdk = 2.2.21
versions.kotlin.sdk = 2.3.0-Beta2
versions.kotlin.language = 2.1
versions.android.sdk.target = 33

Expand Down
2 changes: 1 addition & 1 deletion gradle/elide.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ kover-plugin = "0.9.1"
ksp = "2.2.21-2.0.4"
ktor = "3.3.1"
ktlint = "1.1.1"
ktoml = "0.7.1"
ktoml = "0.8.9-rjwalters"
larray = "0.2.1"
lettuce = "6.2.5.RELEASE"
lmaxDisruptor = "4.0.0"
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-rc-2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
13 changes: 0 additions & 13 deletions package-lock.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -772,14 +772,6 @@ dependencies{
"@types/node" ">=0.0.0"
}
}
pkg "@types/conventional-commits-parser" "@types/node"{
version "24.8.1"
resolved "https://registry.npmjs.org/@types/node/-/node-24.8.1.tgz"
integrity "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q=="
dependencies{
undici-types ">=7.14.0 <7.15.0-0"
}
}
pkg "@types/debug"{
version "4.1.12"
resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
Expand Down Expand Up @@ -4318,11 +4310,6 @@ version "5.9.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz"
integrity "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="
}
pkg undici-types{
version "7.14.0"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz"
integrity "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="
}
pkg unicorn-magic{
version "0.1.0"
resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz"
Expand Down
Loading
Loading