Repository navigation
CI: Fix TS7016 by removing local TS path maps to @debugmcp/shared; rely on project references - #5
Merged
Merged
Conversation
…ly on project refs/project references
This fixes TS7016 errors by ensuring workspace packages are built during installation, aligning CI behavior with local development where npm install runs the prepare script automatically.
…deNext resolution TypeScript's NodeNext module resolution requires the types field to be nested under the import condition in the exports field, not alongside it. This aligns with Node.js ESM resolution rules and fixes the declaration file resolution issue in CI. Based on research findings from similar issues in react-oidc-context and other ESM packages using NodeNext resolution.
Changed build:packages script to use 'tsc -b' at the root instead of individual package builds. This leverages TypeScript's project references properly and should resolve type resolution issues in CI. TypeScript composite projects are designed to be built from the root with a single tsc -b command that follows the references and builds in dependency order.
The research showed the root cause - TypeScript couldn't find @debugmcp/shared because it wasn't being built before the packages that depend on it. Solution: Explicitly build shared first, then adapter-mock, then adapter-python. This ensures all .d.ts files exist when TypeScript tries to resolve them. The shared package already has: - Proper index.ts with all exports - Correct main and types fields in package.json - Properly configured exports field This should finally fix the TS2307 errors in CI.
According to TypeScript documentation for NodeNext resolution, the types field should be at the same level as import/require, not nested inside them. This changes the exports field structure to have types at the top level instead of nested under import condition. This should finally resolve the TS7016 errors in CI.
After 6 failed manual attempts to fix TS7016 errors, implementing Turborepo as the build orchestrator. Turborepo handles: - Automatic dependency ordering (shared builds before adapters) - Proper TypeScript project reference resolution - Build caching for faster CI runs Configuration: - Added turbo.json with build task configuration - Updated build:packages script to use 'turbo run build' - Added packageManager field to package.json Local test: All packages built successfully with Turborepo
After exhausting all npm-based solutions (7 attempts including Turborepo), migrating to pnpm which handles TypeScript module resolution better in monorepos. Key changes: - Replace npm with pnpm for dependency management - Add pnpm-workspace.yaml configuration - Update all package.json files to use workspace:* protocol - Update CI/CD workflows to use pnpm - Update build scripts to use pnpm commands Benefits: - Fixes TS7016 'Could not find declaration file' errors - Better symlink handling for TypeScript declarations - Faster installs with content-addressable storage - Stricter dependency resolution catches issues early Local test confirmed: All packages build successfully without type errors.
- Update .dockerignore to exclude pnpm-specific files - Update Dockerfile to install and use pnpm instead of npm - Exclude node_modules from Docker context (pnpm uses symlinks)
- Fixed TypeScript TS7016 errors by ensuring @debugmcp/shared exports declarations - Updated CI workflow to use pnpm v10 consistently across all jobs - Fixed Docker container adapter loading by replacing pnpm symlinks with actual files - Updated Dockerfile to properly handle pnpm monorepo structure - Ensured adapter packages are available in Docker runtime environment All container tests now pass successfully.
- Add prepare script to shared package to ensure types are always built - Add explicit paths mapping in adapter tsconfigs for better type resolution - Add comprehensive CI debugging to track build process - Ensure declaration files are generated for all packages
- Add emitDeclarationOnly: false to shared package tsconfig - Create ensure-declarations.cjs script as fallback mechanism - Update build script to verify and ensure .d.ts files exist - Fixes CI build failure where .d.ts.map was generated but not .d.ts
…ssue - Add platform, Node, and TypeScript version logging - List dist directory contents before and after attempts - Check for TypeScript errors explicitly - Try multiple fallback strategies including CommonJS - Add detailed file verification with sizes
- Switch shared package from tsc to tsc -b for proper project reference builds - Update CI to use Node 22.x instead of 20.x to match local environment - Based on research, the issue is TypeScript silently failing on TS2742 errors - Node 22 and build mode should surface or avoid the problematic type inference
The prepare script was creating tsbuildinfo during install, causing tsc -b to skip building on Linux CI
These build artifacts should not be in version control as they contain absolute paths and build state that differ between environments
These were added for debugging but are causing Windows CI to fail due to Linux-specific commands (ls -la)
debugmcpdev
pushed a commit
that referenced
this pull request
Mar 25, 2026
Audit: 369 findings triaged (172 TP, 127 FP, 38 downgraded), 135 fixed. Code fixes: - Fix JdiDapServer \u escape bounds check (StringIndexOutOfBoundsException) - Fix Go version parsing for pre-release suffixes (parseInt vs Number) - Fix shared package.json exports (broken CJS require on Node < 22) - Fix adapter-registry registeredAt returning current time, not registration time - Fix adapter-registry singleton silently ignoring config on subsequent calls - Fix minimal-dap cleanup using global setImmediate instead of injected timers - Fix mock adapter stepIn/stepOut not advancing currentLine - Fix type-guards validateProxyInitPayload missing type checks - Fix process-manager-impl silent cast on unexpected exec result - Implement handleAutoContinue (was stub) — auto-continues past entry breakpoints - Remove dead ProcessLauncherImpl + DebugTargetLauncherImpl chain (2 classes, 3 interfaces, DI wiring, 2 test files, ~23 test file updates) - Remove dead code: empty try/catch, unreachable null checks, redundant conditions, empty finally blocks, unused variables - Fix scripts: mkdir for log dirs, guard empty loop, exit code in catch Comment/doc fixes: - Fix 33 stale comments (wrong line refs, misleading descriptions, expired TODOs) - Fix 67 doc inaccuracies (wrong signatures, missing methods, stale versions) - Update version references 0.18.x → 0.19.0 across docs Doc rewrites (from scratch based on actual code): - Delete Roadmap.md (stale, duplicated git tags) - Delete docs/ai-integration.md (stale v0.12.0 content, duplicated elsewhere) - Rewrite packages/shared/README.md (91 exports documented) - Rewrite tests/README.md (accurate structure, all 30+ test scripts) - Rewrite docs/architecture/testing-architecture.md (full test architecture) - Rewrite docs/architecture/adapter-development-guide.md (real adapter-go code) - Rewrite docs/validation-script.md (matches actual script) Pipeline issues filed/updated on osojicode/osoji: #5, #6, #8, #14 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes TypeScript TS7016 errors in CI by removing local
pathsmappings to@debugmcp/sharedin adapter packages and relying on project references/workspace resolution.\n\nSummary:\n- Removed custompathsfrompackages/adapter-mock/tsconfig.jsonandpackages/adapter-python/tsconfig.jsonthat pointed to../shared/src.\n- Kept TypeScript project references (references: [{ path: \"../shared\" }]) sotsc -bbuilds shared first and dependents resolve declarations correctly.\n- Verified@debugmcp/sharedemits declarations (dist/index.d.ts) and local build succeeds.\n\nThis should unblock CI on GitHub Actions. Please merge after CI is green.