hyperdx/packages/api
Warren Lee dea1b669e6
Fix dev env port resolution and improve multi-worktree support (#2025)
## Summary

- Fix dev environment port isolation so OTel collector, MongoDB, and ClickHouse resolve to the correct worktree-specific ports
- Add slot-specific session cookies so multiple worktrees on localhost don't interfere with each other's login sessions
- Share NX build cache across worktrees for faster builds
- Add worktrunk project config for automated worktree lifecycle management

## Changes

### Port resolution fix

**Root `.env`**: Replace self-referential `HDX_DEV_*` vars (e.g. `HDX_DEV_OTEL_HTTP_PORT=${HDX_DEV_OTEL_HTTP_PORT:-4318}`) with plain default values. The `${VAR:-default}` syntax caused `dotenv-expand` infinite recursion, preventing `dev-env.sh` port overrides from taking effect.

**`packages/api/.env.development`**: Remove redundant self-referential port declarations and `:-default` fallbacks from `${HDX_DEV_*}` references. Ports now come exclusively from `dev-env.sh` exports or root `.env` defaults.

**`packages/app/.env.development`**: Set `HYPERDX_API_KEY` to `super-secure-ingestion-api-key` (matching the API/collector) instead of a placeholder. Remove self-referential port declarations.

**`packages/app/src/config.ts`**: Add `process.env.OTEL_EXPORTER_OTLP_ENDPOINT` as fallback for `HDX_COLLECTOR_URL` so the browser OTel SDK picks up the correct collector endpoint.

### Session cookie isolation

**`packages/api/src/api-app.ts`**: Use `connect.sid.<slot>` as the session cookie name in dev mode so multiple worktrees on `localhost` maintain independent sessions. Guarded behind `config.IS_DEV && process.env.HDX_DEV_SLOT` — production uses the default `connect.sid`.

### Shared NX build cache

**`scripts/dev-env.sh`**: Set `NX_CACHE_DIRECTORY=~/.config/hyperdx/nx-cache` so all worktrees share a single content-hash-based build cache. Unchanged packages get cache hits regardless of worktree; changed packages rebuild correctly.

### Worktrunk project config

**`.config/wt.toml`**: New project config for [worktrunk](https://worktrunk.dev) (`wt`) worktree lifecycle hooks:
- `pre-start`: Symlink `node_modules/` from primary worktree (instant, no copy)
- `post-start`: Copy `.env.local` from primary worktree
- `post-remove`: Tear down Docker stacks (`dev-down`, `dev-int-down`, `dev-e2e-down`) for the removed worktree's slot
2026-04-01 20:53:09 +00:00
..
bin [HDX-2712] Unified hyperdx entrypoint script for API and tasks (#1951) 2026-03-20 18:27:40 +00:00
docs/auto_provision feat: Set up default sources/connections with env var in server mode (#817) 2025-05-16 23:17:37 +00:00
migrations feat: support sample-weighted aggregations for sampled trace data (#1963) 2026-03-30 19:52:18 +00:00
scripts chore: Add automatic api doc generation (#1397) 2025-11-21 21:14:02 +00:00
src Fix dev env port resolution and improve multi-worktree support (#2025) 2026-04-01 20:53:09 +00:00
.Dockerignore first commit 2023-09-12 20:08:05 -07:00
.env.development Fix dev env port resolution and improve multi-worktree support (#2025) 2026-04-01 20:53:09 +00:00
.env.e2e feat: isolate dev environment for multi-agent worktree support (#1994) 2026-03-31 18:24:24 +00:00
.env.test Enable parallel integration testing across multiple worktrees (#1917) 2026-03-16 19:42:08 +00:00
.spectral.yaml ci: Add linting for openapi specs (#1945) 2026-03-20 15:13:19 +00:00
CHANGELOG.md Release HyperDX (#1955) 2026-03-27 13:26:45 -07:00
Dockerfile ci: Replace QEMU with native ARM64 runners for release builds (#1952) 2026-03-20 23:04:49 +00:00
eslint.config.mjs chore(eslint): add @typescript-eslint/no-unsafe-type-assertion rule (#1534) 2025-12-30 16:01:11 +00:00
jest.config.js Enable parallel integration testing across multiple worktrees (#1917) 2026-03-16 19:42:08 +00:00
jest.setup.ts fix: Adjust CI logs verbosity (#1888) 2026-03-11 20:32:02 +00:00
migrate-mongo-config.ts feat: setup clickhouse migration tool + update metrics schema (add is_delta + is_monotonic fields) (#138) 2023-12-03 14:06:50 -08:00
nodemon.json Improve common-utils build performance and add support for .env.local (#1466) 2025-12-11 23:07:16 +00:00
openapi.json feat: Add conditions to Dashboard filters; Support filter multi-select (#1969) 2026-03-24 18:05:41 +00:00
package.json chore(deps): bump handlebars from 4.7.8 to 4.7.9 (#1996) 2026-04-01 04:29:51 +00:00
tsconfig.build.json fix: Update tsconfigs to resolve IDE type errors (#1150) 2025-09-11 08:55:14 -04:00
tsconfig.json Clean Up Integration Test Console Output (#1566) 2026-01-07 17:38:01 +00:00