{
  "name": "@cfxlabsinc/b2b-services",
  "description": "CFX Platform Backend Services",
  "author": "cfxlabsinc",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "agents:reset": "rm -rf .claude/agents .claude/skills .claude/rules .kilo/agents .kilo/skills && sh scripts/link-agents.sh",
    "docs:serve": "nx run-many -t gen-specs && docker run -p 8080:8080 -v $PWD/dist/specs:/docs scalarapi/api-reference:latest",
    "fonts:subset": "bun tools/scripts/subset-fonts.ts",
    "postinstall": "test -f scripts/link-agents.sh && sh scripts/link-agents.sh || true",
    "setup": "sh scripts/setup.sh",
    "setup:check": "sh scripts/setup.sh --check",
    "jscpd": "jscpd packages/",
    "knip": "knip --exclude unlisted,dependencies",
    "knip:production": "knip --production",
    "todo-plz": "rg --line-number --glob '!{node_modules,dist,.next,bun.lock,migrations}/**' '\\bTODO\\b|\\bFIXME\\b' packages/ || true"
  },
  "dependencies": {
    "@anthropic-ai/claude-agent-sdk": "^0.3.232",
    "@aws-crypto/sha256-js": "^5.2.0",
    "@aws-lambda-powertools/idempotency": "^2.31.0",
    "@aws-lambda-powertools/logger": "^2.31.0",
    "@aws-lambda-powertools/parameters": "^2.31.0",
    "@aws-sdk/client-api-gateway": "3.1103.0",
    "@aws-sdk/client-dynamodb": "3.1103.0",
    "@aws-sdk/client-kms": "3.1103.0",
    "@aws-sdk/client-lambda": "3.1103.0",
    "@aws-sdk/client-s3": "3.1103.0",
    "@aws-sdk/client-secrets-manager": "3.1103.0",
    "@aws-sdk/client-sns": "3.1103.0",
    "@aws-sdk/credential-provider-node": "^3.972.32",
    "@aws-sdk/lib-dynamodb": "3.1103.0",
    "@aws-sdk/lib-storage": "3.1103.0",
    "@aws-sdk/rds-signer": "3.1103.0",
    "@aws-sdk/s3-request-presigner": "3.1103.0",
    "@aws-sdk/util-format-url": "^3.972.10",
    "@bprogress/next": "^3.2.12",
    "@cfxlabsinc/account-sync-services": "workspace:*",
    "@cfxlabsinc/ach-lib": "workspace:*",
    "@cfxlabsinc/ach-services": "workspace:*",
    "@cfxlabsinc/admin-dashboard-services": "workspace:*",
    "@cfxlabsinc/aiprise-services": "workspace:*",
    "@cfxlabsinc/backoffice-services": "workspace:*",
    "@cfxlabsinc/bank-memo-services": "workspace:*",
    "@cfxlabsinc/bank-services": "workspace:*",
    "@cfxlabsinc/bank-transaction-reconciliation-services": "workspace:*",
    "@cfxlabsinc/bank-transaction-services": "workspace:*",
    "@cfxlabsinc/clients": "workspace:*",
    "@cfxlabsinc/controllers": "workspace:*",
    "@cfxlabsinc/customer-services": "workspace:*",
    "@cfxlabsinc/db": "workspace:*",
    "@cfxlabsinc/deposit-services": "workspace:*",
    "@cfxlabsinc/entity-services": "workspace:*",
    "@cfxlabsinc/escrow-client": "^2.1.0",
    "@cfxlabsinc/escrow-transfer-services": "workspace:*",
    "@cfxlabsinc/events": "workspace:*",
    "@cfxlabsinc/fed-directory-services": "workspace:*",
    "@cfxlabsinc/fee-services": "workspace:*",
    "@cfxlabsinc/girasol-card-services": "workspace:*",
    "@cfxlabsinc/ledger-account-services": "workspace:*",
    "@cfxlabsinc/maintenance-services": "workspace:*",
    "@cfxlabsinc/metcap-services": "workspace:*",
    "@cfxlabsinc/mintfx-client": "^2.2.2",
    "@cfxlabsinc/notification-services": "workspace:*",
    "@cfxlabsinc/nx-biome": "workspace:*",
    "@cfxlabsinc/nx-docker": "workspace:*",
    "@cfxlabsinc/nx-doppler": "workspace:*",
    "@cfxlabsinc/nx-lambda": "workspace:*",
    "@cfxlabsinc/nx-open-next": "workspace:*",
    "@cfxlabsinc/nx-openapi": "workspace:*",
    "@cfxlabsinc/nx-pulumi": "workspace:*",
    "@cfxlabsinc/nx-sst": "workspace:*",
    "@cfxlabsinc/nx-temporal": "workspace:*",
    "@cfxlabsinc/onboarding-services": "workspace:*",
    "@cfxlabsinc/payment-instrument-services": "workspace:*",
    "@cfxlabsinc/product-services": "workspace:*",
    "@cfxlabsinc/quiltt-services": "workspace:*",
    "@cfxlabsinc/redemption-services": "workspace:*",
    "@cfxlabsinc/report-services": "workspace:*",
    "@cfxlabsinc/reward-services": "workspace:*",
    "@cfxlabsinc/s3": "workspace:*",
    "@cfxlabsinc/services": "workspace:*",
    "@cfxlabsinc/short-url-services": "workspace:*",
    "@cfxlabsinc/slack-customer-events": "workspace:*",
    "@cfxlabsinc/slack-services": "workspace:*",
    "@cfxlabsinc/solana-services": "workspace:*",
    "@cfxlabsinc/swap-services": "workspace:*",
    "@cfxlabsinc/token-services": "workspace:*",
    "@cfxlabsinc/transaction-services": "workspace:*",
    "@cfxlabsinc/ui": "workspace:*",
    "@cfxlabsinc/utila-services": "workspace:*",
    "@cfxlabsinc/virtual-account-services": "workspace:*",
    "@cfxlabsinc/wire-email-services": "workspace:*",
    "@cfxlabsinc/withdrawal-services": "workspace:*",
    "@date-fns/tz": "^1.4.1",
    "@dopplerhq/node-sdk": "^1.3.0",
    "@hookform/resolvers": "^5.2.2",
    "@internationalized/date": "^3.12.0",
    "@interval/sdk": "^2.0.0",
    "@js-temporal/polyfill": "^0.5.1",
    "@mapbox/search-js-core": "^1.5.1",
    "@metaplex-foundation/mpl-token-metadata-kit": "^0.0.3",
    "@noble/hashes": "^2.2.0",
    "@propelauth/nextjs": "0.3.17",
    "@quiltt/react": "^6.1.0",
    "@react-aria/datepicker": "^3.16.1",
    "@react-aria/numberfield": "^3.12.5",
    "@react-aria/utils": "^3.33.1",
    "@react-email/components": "1.0.12",
    "@react-email/render": "2.1.0",
    "@react-stately/datepicker": "^3.16.1",
    "@react-stately/numberfield": "^3.11.0",
    "@sentry/aws-serverless": "^10.46.0",
    "@sentry/nextjs": "^10.46.0",
    "@sentry/node": "^10.46.0",
    "@sentry/profiling-node": "^10.46.0",
    "@slack/bolt": "^5.0.0",
    "@slack/logger": "^5.0.0",
    "@slack/oauth": "^4.0.0",
    "@slack/web-api": "^8.0.0",
    "@smithy/protocol-http": "^5.3.14",
    "@smithy/signature-v4": "^5.3.14",
    "@solana-program/address-lookup-table": "^0.13.0",
    "@solana-program/compute-budget": "^0.17.0",
    "@solana-program/loader-v3": "^0.4.0",
    "@solana-program/memo": "^0.12.0",
    "@solana-program/program-metadata": "^0.9.1",
    "@solana-program/system": "^0.13.0",
    "@solana-program/token": "^0.15.0",
    "@solana-program/token-2022": "^0.14.1",
    "@solana/addresses": "^6.8.0",
    "@solana/kit": "^6.8.0",
    "@tanstack/react-query": "5.90.21",
    "@temporalio/activity": "1.22.0",
    "@temporalio/client": "1.22.0",
    "@temporalio/common": "1.22.0",
    "@temporalio/worker": "1.22.0",
    "@temporalio/workflow": "1.22.0",
    "@valkey/valkey-glide": "2.5.0",
    "@web3icons/react": "^4.1.17",
    "ably": "^2.19.0",
    "bcryptjs": "^3.0.3",
    "bignumber.js": "^11.1.5",
    "bs58": "^6.0.0",
    "cacheable": "^2.3.3",
    "canonicalize": "^3.0.0",
    "clabe-validator": "^3.1.2",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "cmdk": "^1.1.1",
    "csv": "^6.4.1",
    "date-fns": "^4.1.0",
    "docx-preview": "^0.4.0",
    "drizzle-orm": "1.0.0-rc.4",
    "env-schema": "^7.0.0",
    "exceljs": "^4.4.0",
    "fast-xml-parser": "^5.10.1",
    "fflate": "^0.8.3",
    "handlebars": "^4.7.8",
    "input-otp": "^1.4.2",
    "jose": "^6.2.8",
    "jsonwebtoken": "^9.0.3",
    "jsx-slack": "^6.1.2",
    "keyv": "^5.6.0",
    "libphonenumber-js": "^1.12.38",
    "lodash": "^4.17.23",
    "lucide-react": "^1.7.0",
    "lucide-static": "^1.28.0",
    "luxon": "^3.7.2",
    "mailparser": "^3.7.4",
    "memoizee": "^0.4.17",
    "moment": "^2.30.1",
    "motion": "^13.0.0",
    "ms": "^2.1.3",
    "nanoid": "^6.0.1",
    "next": "16.2.12",
    "next-themes": "^0.4.6",
    "openapi-fetch": "^0.17.0",
    "papaparse": "^5.5.3",
    "pg": "^8.16.3",
    "posthog-js": "^1.359.1",
    "radash": "^12.1.1",
    "radix-ui": "^1.4.3",
    "react": "19.2.8",
    "react-day-picker": "^9.14.0",
    "react-dom": "19.2.8",
    "react-hook-form": "7.84.0",
    "recharts": "^3.8.1",
    "serialize-error": "^13.0.1",
    "sharp": "^0.35.3",
    "sift": "^17.1.3",
    "strip-ansi": "^7.2.0",
    "tailwind-merge": "^3.5.0",
    "tslib": "^2.8.1",
    "typebox": "1.1.6",
    "ulid": "^3.0.1",
    "uuid": "^14.0.1",
    "xml2js": "^0.6.2",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@axe-core/playwright": "4.13.0",
    "@biomejs/biome": "2.5.7",
    "@cfxlabsinc/escrow-test-harness": "^2.1.0",
    "@cfxlabsinc/mintfx-test-harness": "^2.1.3",
    "@cfxlabsinc/nx-bun-test": "workspace:*",
    "@cfxlabsinc/pulumi-templates": "workspace:*",
    "@electric-sql/pglite": "^0.5.4",
    "@eslint/js": "^10.0.1",
    "@faker-js/faker": "^10.3.0",
    "@happy-dom/global-registrator": "^20.11.1",
    "@nx/devkit": "23.1.1",
    "@nx/esbuild": "23.1.1",
    "@nx/eslint": "23.1.1",
    "@nx/eslint-plugin": "23.1.1",
    "@nx/js": "23.1.1",
    "@nx/node": "23.1.1",
    "@nx/react": "23.1.1",
    "@nx/workspace": "23.1.1",
    "@opennextjs/aws": "^4.0.3",
    "@playwright/test": "1.62.1",
    "@pulumi/aws": "^7.38.0",
    "@pulumi/awsx": "^3.7.0",
    "@pulumi/cloudflare": "^6.18.0",
    "@pulumi/command": "^1.2.1",
    "@pulumi/doppler": "file:packages/pulumi/sdks/doppler",
    "@pulumi/hookdeck": "file:packages/pulumi/sdks/hookdeck",
    "@pulumi/postgresql": "^3.18.0",
    "@pulumi/pulumi": "^3.253.0",
    "@pulumi/random": "^4.21.1",
    "@pulumi/sentry": "file:packages/pulumi/sdks/sentry",
    "@pulumi/synced-folder": "^0.12.4",
    "@pulumi/temporalcloud": "file:packages/pulumi/sdks/temporalcloud",
    "@react-types/datepicker": "^3.13.5",
    "@react-types/numberfield": "^3.8.18",
    "@sentry/esbuild-plugin": "^5.1.1",
    "@swc-node/register": "1.12.1",
    "@swc/core": "1.15.47",
    "@swc/helpers": "0.5.23",
    "@tailwindcss/postcss": "^4.2.2",
    "@tanstack/react-query-devtools": "^5.91.3",
    "@temporalio/testing": "1.22.0",
    "@testcontainers/postgresql": "^12.1.0",
    "@testing-library/dom": "^10.4.1",
    "@testing-library/jest-dom": "^7.0.0",
    "@testing-library/react": "^16.3.0",
    "@types/aws-lambda": "^8.10.161",
    "@types/bun": "^1.3.14",
    "@types/express": "^5.0.6",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/lodash": "^4.17.24",
    "@types/luxon": "^3.7.1",
    "@types/mailparser": "^3.4.6",
    "@types/memoizee": "^0.4.12",
    "@types/ms": "^2.1.0",
    "@types/node": "^24.12.0",
    "@types/papaparse": "^5.5.2",
    "@types/pg": "^8.15.6",
    "@types/react": "19.2.18",
    "@types/react-dom": "19.2.4",
    "@types/xml2js": "^0.4.14",
    "@typescript/native-preview": "7.0.0-dev.20260707.2",
    "babel-plugin-react-compiler": "^1.0.0",
    "dbmate": "^2.31.0",
    "drizzle-kit": "1.0.0-rc.4",
    "esbuild": "^0.28.1",
    "eslint": "^10.0.3",
    "fast-check": "^4.7.0",
    "jiti": "2.7.0",
    "jscpd": "^5.0.14",
    "jsonc-eslint-parser": "^3.2.0",
    "knip": "^6.11.0",
    "mermaid": "^11.16.0",
    "nx": "23.1.1",
    "openapi-types": "^12.1.3",
    "openapi-typescript": "^7.13.0",
    "pglite-server": "^0.1.5",
    "postcss": "^8.5.8",
    "prettier": "3.9.6",
    "prettier-plugin-sql": "^0.20.0",
    "raw-loader": "^4.0.2",
    "rdme": "10.9.4",
    "sst": "^4.15.2",
    "syncpack": "^15.0.0",
    "tailwindcss": "4.3.3",
    "testcontainers": "^12.1.0",
    "ts-essentials": "^10.1.1",
    "tsconfig-paths-webpack-plugin": "4.2.0",
    "tsx": "^4.21.0",
    "tw-animate-css": "^1.4.0",
    "type-fest": "^5.4.4",
    "typedoc": "^0.28.18",
    "typedoc-plugin-mdn-links": "^5.1.1",
    "typescript": "6.0.2",
    "typescript-eslint": "^8.58.0",
    "vitepress": "^1.6.4",
    "vitepress-plugin-mermaid": "2.0.17",
    "webpack": "5.109.2",
    "wrangler": "^4.88.0"
  },
  "trustedDependencies": [
    "@parcel/watcher",
    "@pulumi/awsx",
    "@pulumi/command",
    "@pulumi/doppler",
    "@pulumi/hookdeck",
    "@pulumi/sentry",
    "@pulumi/temporalcloud",
    "@pulumi/docker",
    "@pulumi/docker-build",
    "@sentry/cli",
    "@sentry/profiling-node",
    "@swc/core",
    "@temporalio/core-bridge",
    "core-js",
    "cpu-features",
    "es5-ext",
    "esbuild",
    "less",
    "nx",
    "protobufjs",
    "sharp",
    "ssh2",
    "unrs-resolver",
    "workerd"
  ],
  "overrides": {
    "@aws-sdk/client-api-gateway": "3.1103.0",
    "@aws-sdk/client-dynamodb": "3.1103.0",
    "@aws-sdk/client-s3": "3.1103.0",
    "@aws-sdk/client-secrets-manager": "3.1103.0",
    "@aws-sdk/lib-dynamodb": "3.1103.0",
    "@aws-sdk/lib-storage": "3.1103.0",
    "@aws-sdk/rds-signer": "3.1103.0",
    "@aws-sdk/s3-request-presigner": "3.1103.0",
    "@types/node": "24.12.0",
    "enhanced-resolve": "5.20.1",
    "semver": "7.7.4",
    "sql-formatter": "15.7.2",
    "webpack": "5.109.2"
  },
  "patchedDependencies": {
    "@propelauth/nextjs@0.3.17": "patches/@propelauth%2Fnextjs@0.3.17.patch"
  },
  "nx": {
    "targets": {
      "typedoc": {
        "executor": "nx:run-commands",
        "dependsOn": [
          "^typecheck"
        ],
        "cache": true,
        "options": {
          "command": "bun typedoc --entryPoints $(bun nx show projects --type=lib --json 2>/dev/null | jq -r '.[] | \"packages/\" + .' | while read -r p; do [ -d \"$p/src\" ] && echo \"$p\"; done)"
        },
        "inputs": [
          "{workspaceRoot}/typedoc.json",
          "{workspaceRoot}/packages/*/typedoc.json",
          "{workspaceRoot}/packages/*/src/**/*",
          "{workspaceRoot}/packages/*/tsconfig.lib.json"
        ],
        "outputs": [
          "{workspaceRoot}/dist/docs"
        ]
      }
    }
  }
}
