Skip to content

Chore/nx agents ci#633

Open
nartc wants to merge 71 commits into
mainfrom
chore/nx-agents-ci
Open

Chore/nx agents ci#633
nartc wants to merge 71 commits into
mainfrom
chore/nx-agents-ci

Conversation

@nartc

@nartc nartc commented Jun 26, 2026

Copy link
Copy Markdown
Owner

No description provided.

nartc and others added 30 commits June 19, 2026 15:18
- add .nvmrc (node 22) and packageManager field
- fixes toolchain drift: global pnpm 11 needs node >=22.13 but active
  node was 20, and repo pinned nothing
- pnpm 8.15.9 matches existing lockfileVersion 6.1; pre-9.0 lift keeps
  pnpm 8, full stack bump comes next step

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- @nrwl/* -> @nx/* package rename (devkit, jest, js, linter, nest, rollup,
  web, workspace); nx-cloud runner + package rename
- nx 16 migration scripts: project.json executors, nx.json, eslint plugin
- gate green: 8 packages build, 114 integration tests + unit suites pass

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- nx 16->19 migration scripts (@nx/linter -> @nx/eslint, .nx/cache dir,
  target-defaults, nx.json plugin/defaultBase moves)
- fix transformer-plugin for TS 5: visitNode needs an isSourceFile type
  guard to narrow Node|undefined back to SourceFile (model-visitor.ts)
- transformer-plugin specs: set experimentalDecorators explicitly (TS 5.0+
  defaults to stage-3 decorators; @automapper/classes uses legacy ones)
- regen one fixture for TS 5.4 commonjs emit order (exports before __decorate)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
nx 19 -> 22 migration: jest 29 -> 30, nestjs 10.4.x, reflect-metadata 0.2.2,
target-defaults/gitignore updates.

Replace the @nx/rollup package build with tsdown (tools/scripts/build-packages.mjs):
@nx/rollup 22 regressed the published format for these type:module packages
(main -> ESM, orphaned index.cjs.js that can't load as CJS). tsdown emits a
correct dual build per package:
- index.cjs + index.d.cts (CommonJS), index.mjs + index.d.mts (ESM)
- proper exports map (import/require + types), main -> cjs preserved
- externals derived from root + per-package deps so nothing third-party bundles

Contract verified vs 8.8.1 baseline: attw clean (node10 / node16-cjs / node16-esm
/ bundler) for all 6 packages incl. all 3 @automapper/classes subpaths; publint
clean. Also fixes the latent 8.8.1 bug where the transformer-plugin types entry
pointed at a missing index.d.ts. 'package' script now runs the build script.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- each published package has its own 'package' target running
  'node tools/scripts/build-packages.mjs <name>'; root 'package' script runs
  'nx run-many --target=package' so the root builds all of them
- classes target builds main + mapped-types + transformer-plugin subpaths + the
  frontend shim (shim/index.js, bare tsc) in one step
- removed the now-dead @nx/rollup dep and all package-lib/package-all targets
- mapped-types/transformer-plugin no longer have standalone package targets
  (built as subpaths by the classes target)

note: zod (unpublished, not in package flow) still references @nx/rollup in its
build target — left for the Step 2 executor cleanup.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
set() recursed with path.slice(1) (fresh array per level) and Object.assign(
object, {[base]: value}) (1-key temp object per level) on the default member
return path. Walk the original path by index and write the leaf directly,
mirroring setMutate. Behavior-preserving (set.spec + full suite green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per mapped member, map() did metadataMap.get(dest) + Array.find(...) === null.
Array.prototype.find returns an element or undefined, never null, so the result
was structurally always false -- an O(members^2) scan computing a constant.
Deleted (behavior-preserving), along with the now-unused getMetadataMap/
metadataMap, isPrimitiveArrayEqual and MetadataClassId imports.

note: the '=== null' may have been intended as 'metaFn() == null' (cf. the
'treat as-is' comment). That would be a behavior change, not folded in here --
flagged for separate investigation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Object.getPrototypeOf(null|undefined) throws. isDateConstructor is called
before the primitive check in @automapper/classes get-metadata-list, so a user
type factory returning nullish or [] (-> meta[0] undefined) crashed with a
cryptic 'Cannot convert undefined or null to object'. Return false for nullish.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 4 primitive/date predicate calls ran eagerly for every forMember member but
are only read in the Condition/NullSubstitution/UndefinedSubstitution cases.
Moved inside that case behind the existing value != null guard, so MapFrom/
FromValue/MapWith/ConvertUsing/MapWithArguments/MapDefer skip them. The ||
ordering is preserved (isPrimitiveConstructor short-circuits before isDate).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- introduce pnpm-workspace.yaml (packages/*) to enable workspace:* references
- packages/benchmark-core: node app benchmarking the core map/mapArray hot path
  via the pojos strategy + mitata (flat 8-prop and nested+array fixtures)
- references @automapper/core and @automapper/pojos with workspace:*
- core/pojos source package.json expose exports -> ./src/index.ts for workspace
  dev resolution (benchmark runs through tsx). build-packages overwrites exports
  for the published dist -- verified dist exports unchanged, attw clean, 114 tests green
- run: pnpm --filter @automapper/benchmark-core bench

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- benchmark-core now benchmarks both pojos and classes strategies (classes uses
  explicit @AutoMap(() => Type) since tsx/esbuild has no emitDecoratorMetadata)
- align reflect-metadata to 0.2.x across the repo (root ~0.2.2; classes/mikro/
  sequelize peers ^0.2.0) + pnpm overrides pinning rxjs 7.8.1 and reflect-metadata
  0.2.2 so the workspace resolves a single consistent version of each
- scope pnpm-workspace.yaml to the 4 packages the benchmark needs (avoids pulling
  docusaurus's ancient deps, which fanned out conflicting @nestjs/rxjs versions)
- classes source exports -> ./src/index.ts for workspace dev resolution (build
  overwrites for dist; attw still clean)
- jest-setup: polyfill TextEncoder/TextDecoder (jest 30 jsdom env lacks them,
  broke the nestjs controller specs at import)
- gitignore: ignore nested node_modules (was /node_modules, root-only) and
  packages/*/dist; untrack node_modules symlinks committed earlier

114 tests green; build + attw clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- all published packages -> 9.0.0-alpha.0
- engines node >=16 -> >=20 (declared major-version floor bump)
- inter-package peers 'latest' -> ^9.0.0-alpha.0 (prerelease-correct caret)

114 tests green; build + attw clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- target/lib es2020 -> es2022
- moduleResolution node -> bundler (fits the tsdown build; ts-jest tolerates it)

note: verbatimModuleSyntax / isolatedModules deferred — both conflict with the
pervasive const-enum usage (and emitDecoratorMetadata), needing a const-enum ->
enum conversion first (post-alpha).

114 tests green; build + attw clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TS 6.0 is blocked by ts-jest@29 (peer typescript <6) — it breaks the ts-jest
unit suites. Staying on the latest 5.x that the test toolchain supports.

note: TS 6 is unblocked by migrating Jest -> Vitest (goal #5), but Vitest needs
an swc transform for the classes emitDecoratorMetadata specs — a focused
follow-up. Flagged for post-alpha.

114 tests green; build + attw clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- set.ts assignEmpty: Object.prototype.hasOwnProperty.call (no-prototype-builtins)
- for-member.ts: drop 7 unused imports (createMap, getMetadataMap, MetadataClassId,
  NestedMappingPair, getFlatteningPaths, getPath, isPrimitiveArrayEqual)

lint green for 9 projects; core tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- replace retired nrwl/ci@v0.8 reusable workflow with a self-contained CI:
  lint · build · test on a node 20/22 matrix, corepack pnpm, frozen install
- add package-contract job: publint + attw on every built package
  (tools/scripts/check-packages.mjs, 'pnpm run check:packages')
- add root 'lint' script
- remove unit-test.yml (tested node 14)
- docusaurus.yml: actions @v2 -> @v4, node 16 -> 20, corepack; docs install is
  standalone now (--ignore-workspace) since docs aren't a workspace member

validated locally: lint (10 projects), build (6), check:packages all clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- add AutoMapperError base + MappingNotFoundError + MapMemberError (errors.ts,
  exported); consumers can now catch mapper errors selectively
- get-mapping throws MappingNotFoundError (carries sourceName/destinationName)
- map() member-error path throws MapMemberError and DROPS JSON.stringify(
  destination) from the message (it crashed on circular refs / flooded logs)
- errorHandler still receives the message; existing toThrow tests unaffected

115 tests green (incl. new typed-errors spec); build + lint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- dispose(): replace the 'why can metadata not be clear?' TODO with the actual
  reason (strategy metadata caches would desync if metadataMap were cleared)
- postMap calls: the 'seal destination' comments described sealing that never
  happens — corrected to 'returned as-is, intentionally not sealed'

comment-only; no behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
npm publish defaults to the 'latest' tag; for the prerelease all publish targets
use --tag alpha so 9.0.0-alpha.0 doesn't land on 'latest' for existing users.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (code #4)

Per map() call (per element in mapArray), assertUnmappedProperties ran
Object.keys + getOwnPropertyDescriptor over the destinationMetadata and an
O(n^2) configuredKeys.some. The writable keys are fixed per metadata object —
cache them in a WeakMap; use a Set for configuredKeys. Behavior-preserving.

benchmark (M-series, node 22): mapArray x1000 ~3-5% faster (classes flat
1.75->1.67ms, classes nested 1.74->1.66ms); single map at noise. 10 projects green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
hasSameIdentifier (map.ts) and shouldRunImplicitMap (map-member.ts) ran 4
isPrimitiveConstructor/isDateConstructor calls per member per mapped object,
though the result is constant per identifier. Extracted isMappableIdentifier()
with a Map memo. Behavior-preserving (same booleans, cached).

benchmark vs prior commit: ~4-7% faster (pojos nested mapArray 1.72->1.60ms,
classes flat map 1.78->1.71us). 10 projects green; lint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…dispatch)

createMapper returned a Proxy whose get-trap ran a ~15-branch if-chain and
allocated a fresh closure on every property access (map/mapArray/symbol reads),
defeating property-load inline caches. Now a plain object: eager state, lazy
STRATEGY getter, methods closing over the mapper, symbol state via
defineProperties. Real stack traces; stable method identity. Async wrappers cast
the forwarded union arg (getOptions normalizes at runtime; the old Proxy
receiver was typed any, which silently bypassed this typecheck).

benchmark: ~4-9% faster (pojos nested map 1.75 -> 1.59us, flat map 1.74 -> 1.67us).
Cumulative vs 8.8.1 ~44%. 10 projects green; lint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- widen @automapper/nestjs peer to include ^11.0.0 (also fixed a double-space
  typo in the @nestjs/core range)
- bump dev @nestjs/* to 11.1.27 so the integration tests exercise v11 (Express 5)
- add .npmrc public-hoist-pattern[]=@nestjs/platform-express so NestFactory's
  dynamic adapter loader resolves it under pnpm's strict node_modules
  (this was the v11-under-pnpm test failure seen earlier)

interceptor/pipe/decorator API is unchanged across v11. lint + build + 115 tests
green; frozen install in sync.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- @automapper/mikro peer @mikro-orm/core ^5.0.0 -> ^6.0.0; dev dep -> 6.6.15
- serialize-entity.ts builds clean against v6 (Utils/Reference/wrap +
  IWrappedEntityInternal from @mikro-orm/core/typings + __meta.properties are
  v6-compatible) — no source changes needed

(Sequelize stays on v6: v7 is still alpha and renames the package to
@sequelize/core — deferred until it's stable.)

lint + build + 10 projects green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (goal #8)

- nx.json release block: independent versioning of the 6 published packages,
  conventionalCommits-driven bumps, {projectName}@{version} tags, per-project
  GitHub changelogs/releases (validated via nx release version --dry-run:
  9.0.0-alpha.0 -> 9.0.0-alpha.1)
- per-project nx-release-publish target (@nx/js:release-publish) pointed at the
  built dist (dist/packages/<name>) so nx release publish ships the bundled
  artifacts, not the source
- publishConfig.provenance=true on all 6 published packages (flows through the
  build into dist; publint + attw still clean)
- .github/workflows/release.yml: manual-dispatch release with id-token:write for
  npm OIDC provenance — version+changelog+tag (--skip-publish), build, then
  nx release publish --tag=alpha with NPM_CONFIG_PROVENANCE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replaces the entire Jest stack with Vitest 4 driven by an swc transform.
swc handles legacy decorators + emitDecoratorMetadata (the @AutoMap/
reflect-metadata path), and is decoupled from the TypeScript version — which is
why this lands before the TS 6 bump (ts-jest was coupling tests to TS).

- vitest.shared.ts: one config factory for all packages — swc.vite() with
  legacyDecorator + decoratorMetadata + keepClassNames (the mapper keys off
  constructor.name), node env, globals, reflect-metadata setup, and @automapper/*
  -> source aliases mirroring the tsconfig paths ts-jest resolved
- per-package vitest.config.ts; nx test target -> nx:run-commands 'vitest run'
- node env everywhere (was jsdom by default) — nothing uses the DOM, and node
  gives native TextEncoder, so the jsdom dep + jest-setup polyfill are gone
- specs: jest.fn/spyOn -> vi.* (global); supertest namespace import -> default
  import (vite ESM interop; also inlined for integration-test)
- tsconfig.spec types jest -> vitest/globals; eslint: exempt vitest config files
  from enforce-module-boundaries; nx.json jest target-default -> test
- removed jest, ts-jest, @types/jest, jest-environment-jsdom, jest-util,
  @swc/jest, @nx/jest; bumped @types/node -> ^22 (vitest peer; we run Node 22)
- core snapshots regenerated in vitest format

all 10 projects green (lint/build/test); publint+attw clean; lockfile in sync.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tsdown now emits ESM only (index.mjs + index.d.mts); the dist package.json drops
`main`/`require` and the exports map carries only the import+types conditions.
`require('@automapper/...')` no longer resolves — an intentional break for the
major (the v8 line stays dual/CJS for consumers that need it).

- build-packages.mjs: --format esm (was cjs,esm); ESM-only exports map; delete
  main, types -> .d.mts
- check-packages.mjs: attw --ignore-rules cjs-resolves-to-esm (that warning IS
  the intended ESM-only contract); publint + attw otherwise clean on all 6
- nx.json: add tools/scripts/build-packages.mjs to the package target inputs so a
  change to the build script correctly invalidates the cache (it served a stale
  dual-format dist until this was added)

build + contract green (6 packages).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…#6)

The async map/mutate methods previously did the work synchronously then waited a
single setTimeout(0) macrotask — a fragile guess that 'usually' let an async
beforeMap/afterMap settle, with no actual await. Now the sync engine collects any
promise a before/after callback returns into a sink, and mapAsync/mapArrayAsync/
mutateAsync/mutateArrayAsync await those promises (Promise.all) before resolving
— a real, deterministic await instead of a timer race. With no async callbacks
the sink is empty and resolution is immediate (no pointless macrotask hop).

- map.ts: module-level async-hook sink + collectAsyncHooks/pushAsyncHook; the
  !isMapArray before/after calls feed it
- core.ts: array-level before/after calls feed it too; all four async methods
  wrap their work in collectAsyncHooks and await
- types.ts: JSDoc now states callbacks are awaited (member mapping stays sync)

(Member-level true-async resolvers are the separately-queued follow-up goal.)
10 projects green; lint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…al any (code #9)

- extraArguments (user-supplied data crossing the API boundary) is now
  Record<string, unknown> instead of Record<string, any> in MapCallback,
  MapOptions, the selector signature, and mapMember — callers narrow rather than
  getting unchecked any
- documented why the remaining `= any` generic defaults (Selector/ValueSelector/
  Resolver/Converter/ModelIdentifier/Constructor) are intentional: AutoMapper is a
  runtime identifier-driven mapper used without explicit generics; an any default
  keeps that ergonomic while concrete call sites still infer precise types.
  Return positions are already `unknown`, not `any`.

no `as any` casts exist in core. 6 build / 10 lint / 10 test green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@automapper/zod was a 'return "zod"' placeholder. It is now a working,
shippable integration:

- zod() strategy = pojos (Zod output is structurally a POJO)
- createMetadataMap(identifier, schema): introspects a Zod 4 schema via _zod.def
  (type/element/innerType/shape) and registers AutoMapper metadata — primitives
  (string/number/boolean/date/bigint), arrays, nested objects (recursive, under
  derived identifiers), and unwrapping optional/nullable/default/readonly/catch
- 4 vitest specs: flat, wrapper-unwrap, nested+arrays (deep copy), forMember
- package.json: ESM, peers @automapper/core+pojos ^9 and zod ^4, provenance
- wired into the published set: build PACKAGES, check-packages, nx.json release
  projects, project.json package/publish/nx-release-publish targets

build 7 / lint 10 / test 10 green; publint + attw clean on all 7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
nartc and others added 15 commits June 23, 2026 13:52
…check

- wide-mapping-size-gate: imported non-existent type PojosMetadata; the real
  export is PojoMetadata, and the metadata map is Record<string, PojoMetadata>
- issue 358: replace jest-style `done` callbacks (Vitest types the test arg as
  TestContext, not callable) with returned Promises that resolve in the rxjs
  next handler and reject on error — same assertions, no hang-to-timeout

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- make tsconfig.spec.json composite (declaration:true, unique out-tsc/<proj>/spec
  outDir) for the 5 projects that have specs (core, classes, classes/mapped-types,
  classes/transformer-plugin, integration-test) and re-add the spec reference to
  each tsconfig.json, so `nx typecheck` now covers test files too
- wire each spec config's project references to the libs its specs import
  (integration-test spec -> core/classes/transformer-plugin/nestjs/pojos libs)
- scope classes spec include to src + shim and exclude the nested subpackages;
  drop integration-test's vitest.config.ts from the spec include (runtime-only)
- pojos/nestjs/mikro/sequelize untouched (zero spec files — would hit TS18003)

typecheck 9/9 (incl specs), test/lint/package/sync:check green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- add `typecheck` (nx run-many --target=typecheck) and `sync:check` (nx sync:check)
  pnpm scripts
- run them in the verify job: sync:check right after install (fail fast on
  tsconfig project-reference drift), typecheck after lint, before package
- the repo had no standalone type-only gate before; now every PR typechecks all
  9 projects incl. specs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- @automapper/nestjs only consumes stable @nestjs/common DI/module/pipe primitives
  (Module, Inject, Optional, mixin, PipeTransform, DynamicModule, Provider, Type,
  ModuleMetadata, ArgumentMetadata) — none affected by nestjs 11 breaking changes
  (express 5, fastify 5, cache-manager, logger), so 10 and 11 both work; no hard
  11 cutover
- drop the untested ancient ^7/^8/^9 majors from the peer range (only 10/11 are
  realistically supported/tested for 9.0); the express v4->v5 concern is the
  nestjs app's, not this integration's

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- condFor now emits a `default` condition mirroring `import` (catch-all for
  non-standard resolvers that don't honor the `import` condition); order is
  types -> import -> default, still ESM-only (no `require`)
- export `./package.json` so tooling can resolve '<pkg>/package.json'
- publint + attw stay green (attw reports ./package.json as JSON); package 6/6

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- fe61c61 narrowed the @nestjs peer range but left pnpm-lock.yaml recording the
  old specifier; `pnpm install --frozen-lockfile` (CI default) failed with
  ERR_PNPM_OUTDATED_LOCKFILE. regenerate the lockfile so frozen install passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- certify the lower bound of @automapper/nestjs's ^10||^11 peer range: a job that
  downgrades @nestjs/{common,core,testing,platform-express} to v10 and runs the
  DI integration specs (Test.createTestingModule, mapper module, map pipe/
  interceptor, @InjectMapper)
- validated locally first (isolated worktree): nestjs 10.4.22 resolves cleanly,
  all 143 integration tests pass — nestjs 10 now proven, not just inferred
- nestjs 11 stays covered by the main verify job (installed version)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- packages/documentation (singular) is a stale near-duplicate of
  packages/documentations (plural); the Docusaurus CI workflow only builds/deploys
  the plural, and nothing references the singular project. The plural even has the
  docs/api tree the singular lacks. Removing the dead copy ahead of the Astro
  migration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3QKehd9vh9gn8obMVYo6G
- add structured logger interface with expanded levels
- make logger configuration overrideable and restorable
- document early logger setup for nestjs users
- widen reflect-metadata peer range
- add node 20 and 22 nx agent launch templates
- start agents for verify job after sync check
- keep package contract and nestjs compat jobs local
This commit sets up Nx Cloud for your Nx workspace, enabling distributed caching and the Nx Cloud GitHub integration for fast CI and improved developer experience.

You can access your Nx Cloud workspace by going to
https://cloud.nx.app/orgs/63ffb2b3138045000dc36fe6/workspaces/6a3e997e7427195a38f6bdbc

> [!TIP]
> Run `npx nx generate ci-workflow` if you don't have a CI script configured yet.

**Note:** This commit attempts to maintain formatting of the nx.json file, however you may need to correct formatting by running an nx format command and committing the changes.
@nx-cloud

nx-cloud Bot commented Jun 26, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit b1540d2

Command Status Duration Result
nx-cloud record -- pnpm run check:packages ✅ Succeeded 58s View ↗
nx run-many --target=package ✅ Succeeded 8s View ↗
nx run-many -t lint,typecheck,package,test ✅ Succeeded 51s View ↗
nx-cloud record -- nx sync:check ✅ Succeeded 2s View ↗
nx run integration-test:test ✅ Succeeded 45s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-06-26 18:31:21 UTC

@nx-cloud

nx-cloud Bot commented Jun 26, 2026

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix Eligible

An automatically generated fix could have helped fix failing tasks for this run, but Self-healing CI is disabled for this workspace. Visit workspace settings to enable it and get automatic fixes in future runs.

To disable these notifications, a workspace admin can disable them in workspace settings.


View your CI Pipeline Execution ↗ for commit d226089

Command Status Duration Result
nx run integration-test:test ❌ Failed 8s View ↗
nx run-many --all --target=test --parallel ✅ Succeeded 17s View ↗
nx run-many --target=package ✅ Succeeded <1s View ↗
nx run-many --target=typecheck --parallel ✅ Succeeded 15s View ↗
nx run-many --target=lint --parallel ✅ Succeeded 44s View ↗

💡 Dealing with memory or CPU issues? See memory and CPU details with the resource usage add-on ↗.


☁️ Nx Cloud last updated this comment at 2026-06-26 15:30:20 UTC

nartc added 12 commits June 26, 2026 12:21
- add verbose nx logging in ci
- print automapper package resolution from integration-test target
- run diagnostic before distributed test step
- run package resolution diagnostic after nestjs downgrade
- print automapper core dependency tree for compat job
- remove diagnostic from verify job
- print automapper resolution from inside vitest
- run diagnostic before self-reference compat repro
- isolate self-reference spec before full compat suite
- keep nestjs downgrade from resolving published automapper peers
- preserve workspace core/classes pairing for compat tests
- remove dynamic automapper imports from resolver diagnostic
- keep source path assertions without tripping nx boundaries
- drop temporary compat resolver checks
- remove debug-resolution target and script
- keep workspace package preference fix
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants