f6a17bc5f7
## Why `LambdaDriver` (1.4k lines) and `LocalDriver` (709 lines) each mixed many unrelated concerns in a single class. ## What changed **This PR only moves code** — every line is byte-for-byte the same as `main` (same logic, same comments, same constants, same lock keys/TTLs, same error mapping). The drivers are now thin orchestrators wiring co-located sub-services + pure utils (each with unit tests). | File | Before | After | |---|---|---| | `lambda.driver.ts` | 1425 | 252 | | `local.driver.ts` | 709 | 231 | | Largest sub-service | — | 371 (`lambda-executor-manager`) | | Unit tests on these paths | 0 | 15 | Lambda split: `lambda-aws-client` / `lambda-tool-functions` / `lambda-layer-manager` / `lambda-executor-manager` + `constants` + `types` + 5 pure utils. Local split: `local-layer-manager` / `local-child-process-runner` / `local-prebuilt-bundle` + `constants` + `types` + 3 pure utils. No behavior change, no signature change, no public-API change.