Skip to content

Commit cfa4282

Browse files
branchseerclaude
andcommitted
feat(runner): runner-aware tools IPC + cache integration
Squashed rebase of 51 commits from runner-aware-tools branch onto feat/output-restoration. Original commit history preserved on the ras-backup ref for reference. Key features bundled: - vite_task_ipc_shared: shared protocol (Request/GetEnvResponse, NativeStr) - vite_task_server: per-task IPC server (Handler trait + Recorder) - vite_task_client: sync Rust client - vite_task_client_napi + @voidzero-dev/vite-task-client: node addon + JS wrapper - vite_task: wire IPC server into spawn; inject VP_IPC + VP_RUN_NODE_CLIENT_PATH; bundle with fspy via Tracking struct; materialize .node addon on first use - consume runner-aware tool reports for cache decisions: * disableCache() short-circuits via ToolRequested * ignoreInput / ignoreOutput filter fspy reads/writes * tracked: true env / env-glob records folded into PostRunFingerprint - IPC server failure surfaces via IpcServerError; cache update is skipped - schema bumped to user_version = 13 (CacheEntryKey carries output_config, CacheEntryValue carries output_archive + tracked envs) Conflicts resolved against post-rebase main (#352 cfg(fspy) gating, #321 output archiving, input-negative reads-only filter): TrackingOutcome post-run summary preserved alongside Tracking pre-run handle; auto-input reads gated on input_config.includes_auto and filtered by input negatives + ignoreInput; auto-output writes filtered by negatives + ignoreOutput. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 3a8b605 commit cfa4282

85 files changed

Lines changed: 4912 additions & 161 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.typos.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ extend-exclude = [
99
# Intentional typos for testing fuzzy matching and "did you mean" suggestions
1010
"crates/vite_select/src/fuzzy.rs",
1111
"crates/vite_task_bin/tests/e2e_snapshots/fixtures/task_select",
12+
# pnpm patch files — hunk context includes third-party code we don't own
13+
"patches",
1214
]

CLAUDE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ All code must work on both Unix and Windows without platform skipping:
148148
- Platform differences should be handled gracefully, not skipped
149149
- After major changes to `fspy*` or platform-specific crates, run `just lint-linux` and `just lint-windows`
150150

151+
## New Crates and Packages
152+
153+
When creating a new Rust crate or npm package, add a concise `README.md` stating its goal in one or two sentences. Do not include implementation details, API docs, or links to other docs — those belong in source comments or the design docs.
154+
151155
## Changelog
152156

153157
When a change is user-facing (new feature, changed behavior, bug fix, removal, or perf improvement), run `/update-changelog` to add an entry to `CHANGELOG.md`. Do not add entries for internal refactors, CI, dep bumps, test fixes, or docs changes.

Cargo.lock

Lines changed: 180 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ fspy_shared = { path = "crates/fspy_shared" }
8282
fspy_shared_unix = { path = "crates/fspy_shared_unix" }
8383
futures = "0.3.31"
8484
futures-util = "0.3.31"
85+
interprocess = "2"
8586
jsonc-parser = { version = "0.32.0", features = ["serde"] }
8687
libc = "0.2.185"
8788
libtest-mimic = "0.8.2"
@@ -161,15 +162,23 @@ widestring = "1.2.0"
161162
winapi = "0.3.9"
162163
winsafe = { version = "0.0.27", features = ["kernel"] }
163164
xxhash-rust = { version = "0.8.15", features = ["const_xxh3"] }
165+
napi = "3"
166+
napi-build = "2"
167+
napi-derive = "3"
164168
ntest = "0.9.5"
165169
terminal_size = "0.4"
170+
vite_task_client = { path = "crates/vite_task_client" }
171+
vite_task_client_napi = { path = "crates/vite_task_client_napi", artifact = "cdylib", target = "target" }
172+
vite_task_ipc_shared = { path = "crates/vite_task_ipc_shared" }
173+
vite_task_server = { path = "crates/vite_task_server" }
166174
zstd = "0.13"
167175

168176
[workspace.metadata.cargo-shear]
169177
ignored = [
170178
# These are artifact dependencies. They are not directly `use`d in Rust code.
171179
"fspy_preload_unix",
172180
"fspy_preload_windows",
181+
"vite_task_client_napi",
173182
]
174183

175184
[profile.dev]

crates/fspy/build.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ fn register_preload_cdylib() -> anyhow::Result<()> {
158158
}
159159

160160
fn main() -> anyhow::Result<()> {
161-
println!("cargo:rerun-if-changed=build.rs");
162161
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
163162
fetch_macos_binaries(&out_dir).context("Failed to fetch macOS binaries")?;
164163
register_preload_cdylib().context("Failed to register preload cdylib")?;

0 commit comments

Comments
 (0)