{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-spec-workbench",
    "name": "mbarbine__platphorm-spec-workbench",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-spec-workbench",
    "relative_path": "github-recent/mbarbine__platphorm-spec-workbench",
    "remote_url": "git@github.com:mbarbine/platphorm-spec-workbench.git",
    "default_branch": "main",
    "current_commit": "92129356f0a519b6096f50d1564cba653bc0e527"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 219,
      "bytes": 726590
    },
    {
      "language": "JSON",
      "files": 6,
      "bytes": 254515
    },
    {
      "language": "YAML",
      "files": 2,
      "bytes": 192870
    },
    {
      "language": "SQL",
      "files": 1,
      "bytes": 17276
    },
    {
      "language": "Markdown",
      "files": 7,
      "bytes": 16466
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 10317
    },
    {
      "language": "XML",
      "files": 1,
      "bytes": 428
    },
    {
      "language": "JavaScript",
      "files": 2,
      "bytes": 325
    }
  ],
  "frameworks": [
    {
      "name": "Next.js",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "React",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Tailwind CSS",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Vitest",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "spec-workbench",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev",
          "build": "next build",
          "start": "next start",
          "lint": "eslint .",
          "test": "vitest run",
          "test:e2e": "playwright test",
          "typecheck": "tsc --noEmit",
          "db:migrate": "psql $DATABASE_URL -f scripts/001-create-tables.sql"
        },
        "dependencies": {
          "@codemirror/lang-json": "^6.0.2",
          "@codemirror/lang-yaml": "^6.1.2",
          "@codemirror/theme-one-dark": "^6.1.3",
          "@hookform/resolvers": "^3.10.0",
          "@monaco-editor/react": "^4.7.0",
          "@neondatabase/serverless": "github:neondatabase/serverless",
          "@paralleldrive/cuid2": "^2.3.1",
          "@radix-ui/react-accordion": "1.2.12",
          "@radix-ui/react-alert-dialog": "1.1.15",
          "@radix-ui/react-aspect-ratio": "1.1.8",
          "@radix-ui/react-avatar": "1.1.11",
          "@radix-ui/react-checkbox": "1.3.3",
          "@radix-ui/react-collapsible": "1.1.12",
          "@radix-ui/react-context-menu": "2.2.16",
          "@radix-ui/react-dialog": "1.1.15",
          "@radix-ui/react-dropdown-menu": "2.1.16",
          "@radix-ui/react-hover-card": "1.1.15",
          "@radix-ui/react-label": "2.1.8",
          "@radix-ui/react-menubar": "1.1.16",
          "@radix-ui/react-navigation-menu": "1.2.14",
          "@radix-ui/react-popover": "1.1.15",
          "@radix-ui/react-progress": "1.1.8",
          "@radix-ui/react-radio-group": "1.3.8",
          "@radix-ui/react-scroll-area": "1.2.10",
          "@radix-ui/react-select": "2.2.6",
          "@radix-ui/react-separator": "1.1.8",
          "@radix-ui/react-slider": "1.3.6",
          "@radix-ui/react-slot": "1.2.4",
          "@radix-ui/react-switch": "1.2.6",
          "@radix-ui/react-tabs": "1.1.13",
          "@radix-ui/react-toast": "1.2.15",
          "@radix-ui/react-toggle": "1.1.10",
          "@radix-ui/react-toggle-group": "1.1.11",
          "@radix-ui/react-tooltip": "1.2.8",
          "@vercel/analytics": "1.6.1",
          "@vercel/speed-insights": "^1.3.1",
          "autoprefixer": "^10.4.27",
          "botid": "^1.5.11",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.1.1",
          "codemirror": "^6.0.2",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.6.0",
          "input-otp": "1.4.2",
          "jszip": "^3.10.1",
          "lucide-react": "^0.564.0",
          "monaco-editor": "^0.55.1",
          "neon": "^2.0.0",
          "next": "16.1.6",
          "next-themes": "^0.4.6",
          "react": "19.2.4",
          "react-day-picker": "9.13.2",
          "react-dom": "19.2.4",
          "react-hook-form": "^7.71.2",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.0",
          "sonner": "^1.7.4",
          "tailwind-merge": "^3.5.0",
          "vaul": "^1.1.2",
          "yaml": "^2.8.2",
          "zod": "^3.25.76"
        },
        "dev_dependencies": {
          "@playwright/test": "^1.59.1",
          "@tailwindcss/postcss": "^4.2.1",
          "@testing-library/jest-dom": "^6.9.1",
          "@testing-library/react": "^16.3.2",
          "@types/node": "^22.19.15",
          "@types/react": "19.2.14",
          "@types/react-dom": "19.2.3",
          "@vitejs/plugin-react": "^6.0.1",
          "@vitest/ui": "^4.1.0",
          "jsdom": "^29.0.1",
          "node-mocks-http": "^1.17.2",
          "postcss": "^8.5.8",
          "tailwindcss": "^4.2.1",
          "tw-animate-css": "1.3.3",
          "typescript": "^5.7.3",
          "vitest": "^4.1.0"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/health",
        "source_path": "app/api/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/mcp",
        "source_path": "app/api/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/nodeinfo/2.1",
        "source_path": "app/api/nodeinfo/2.1/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/diff-runs/[id]",
        "source_path": "app/api/v1/diff-runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/diff-runs",
        "source_path": "app/api/v1/diff-runs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/diff",
        "source_path": "app/api/v1/diff/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/feeds",
        "source_path": "app/api/v1/feeds/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/feeds/sync",
        "source_path": "app/api/v1/feeds/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/generate/client",
        "source_path": "app/api/v1/generate/client/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/generate/examples",
        "source_path": "app/api/v1/generate/examples/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/generate/mcp",
        "source_path": "app/api/v1/generate/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/generate/tests",
        "source_path": "app/api/v1/generate/tests/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/generation-runs/[id]/artifacts",
        "source_path": "app/api/v1/generation-runs/[id]/artifacts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/generation-runs/[id]",
        "source_path": "app/api/v1/generation-runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/import/probe",
        "source_path": "app/api/v1/import/probe/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/import",
        "source_path": "app/api/v1/import/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/imports/[id]",
        "source_path": "app/api/v1/imports/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/graph",
        "source_path": "app/api/v1/network/graph/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/route-compliance",
        "source_path": "app/api/v1/network/route-compliance/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network",
        "source_path": "app/api/v1/network/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/sites",
        "source_path": "app/api/v1/network/sites/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/spec-coverage",
        "source_path": "app/api/v1/network/spec-coverage/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/spec-sources",
        "source_path": "app/api/v1/network/spec-sources/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/network/spec-sources/sync",
        "source_path": "app/api/v1/network/spec-sources/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/network/trusted-domains",
        "source_path": "app/api/v1/network/trusted-domains/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/repair-runs/[id]",
        "source_path": "app/api/v1/repair-runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/repair",
        "source_path": "app/api/v1/repair/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/reports/decks",
        "source_path": "app/api/v1/reports/decks/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/reports/docs",
        "source_path": "app/api/v1/reports/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/reports/sheets",
        "source_path": "app/api/v1/reports/sheets/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/sitemaps/sync",
        "source_path": "app/api/v1/sitemaps/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/specs/[id]/repair",
        "source_path": "app/api/v1/specs/[id]/repair/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/specs/[id]",
        "source_path": "app/api/v1/specs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/v1/specs/[id]/validate",
        "source_path": "app/api/v1/specs/[id]/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/specs/[id]/versions",
        "source_path": "app/api/v1/specs/[id]/versions/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/specs/diff",
        "source_path": "app/api/v1/specs/diff/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/specs/repair",
        "source_path": "app/api/v1/specs/repair/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/specs",
        "source_path": "app/api/v1/specs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/specs/validate",
        "source_path": "app/api/v1/specs/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/templates/[id]/instantiate",
        "source_path": "app/api/v1/templates/[id]/instantiate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/templates/[id]",
        "source_path": "app/api/v1/templates/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/templates",
        "source_path": "app/api/v1/templates/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/traces/[traceId]",
        "source_path": "app/api/v1/traces/[traceId]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/traces",
        "source_path": "app/api/v1/traces/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/validate",
        "source_path": "app/api/v1/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/validation-runs/[id]",
        "source_path": "app/api/v1/validation-runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/validation-runs",
        "source_path": "app/api/v1/validation-runs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/changelog",
        "source_path": "app/changelog/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/diff",
        "source_path": "app/diff/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/docs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/generate",
        "source_path": "app/generate/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/import",
        "source_path": "app/import/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/privacy",
        "source_path": "app/privacy/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/roadmap",
        "source_path": "app/roadmap/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/status",
        "source_path": "app/status/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/terms",
        "source_path": "app/terms/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/validate",
        "source_path": "app/validate/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "site-breadcrumbs.test",
      "kind": "ui-component",
      "source_path": "__tests__/components/site-breadcrumbs.test.tsx"
    },
    {
      "name": "app-sidebar",
      "kind": "ui-component",
      "source_path": "components/layout/app-sidebar.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/layout/footer.tsx"
    },
    {
      "name": "site-breadcrumbs",
      "kind": "ui-component",
      "source_path": "components/layout/site-breadcrumbs.tsx"
    },
    {
      "name": "top-bar",
      "kind": "ui-component",
      "source_path": "components/layout/top-bar.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "accordion",
      "kind": "ui-component",
      "source_path": "components/ui/accordion.tsx"
    },
    {
      "name": "alert-dialog",
      "kind": "ui-component",
      "source_path": "components/ui/alert-dialog.tsx"
    },
    {
      "name": "alert",
      "kind": "ui-component",
      "source_path": "components/ui/alert.tsx"
    },
    {
      "name": "aspect-ratio",
      "kind": "ui-component",
      "source_path": "components/ui/aspect-ratio.tsx"
    },
    {
      "name": "avatar",
      "kind": "ui-component",
      "source_path": "components/ui/avatar.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "breadcrumb",
      "kind": "ui-component",
      "source_path": "components/ui/breadcrumb.tsx"
    },
    {
      "name": "button-group",
      "kind": "ui-component",
      "source_path": "components/ui/button-group.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "calendar",
      "kind": "ui-component",
      "source_path": "components/ui/calendar.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "carousel",
      "kind": "ui-component",
      "source_path": "components/ui/carousel.tsx"
    },
    {
      "name": "chart",
      "kind": "ui-component",
      "source_path": "components/ui/chart.tsx"
    },
    {
      "name": "checkbox",
      "kind": "ui-component",
      "source_path": "components/ui/checkbox.tsx"
    },
    {
      "name": "collapsible",
      "kind": "ui-component",
      "source_path": "components/ui/collapsible.tsx"
    },
    {
      "name": "command",
      "kind": "ui-component",
      "source_path": "components/ui/command.tsx"
    },
    {
      "name": "context-menu",
      "kind": "ui-component",
      "source_path": "components/ui/context-menu.tsx"
    },
    {
      "name": "dialog",
      "kind": "ui-component",
      "source_path": "components/ui/dialog.tsx"
    },
    {
      "name": "drawer",
      "kind": "ui-component",
      "source_path": "components/ui/drawer.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "empty",
      "kind": "ui-component",
      "source_path": "components/ui/empty.tsx"
    },
    {
      "name": "field",
      "kind": "ui-component",
      "source_path": "components/ui/field.tsx"
    },
    {
      "name": "form",
      "kind": "ui-component",
      "source_path": "components/ui/form.tsx"
    },
    {
      "name": "hover-card",
      "kind": "ui-component",
      "source_path": "components/ui/hover-card.tsx"
    },
    {
      "name": "input-group",
      "kind": "ui-component",
      "source_path": "components/ui/input-group.tsx"
    },
    {
      "name": "input-otp",
      "kind": "ui-component",
      "source_path": "components/ui/input-otp.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "item",
      "kind": "ui-component",
      "source_path": "components/ui/item.tsx"
    },
    {
      "name": "kbd",
      "kind": "ui-component",
      "source_path": "components/ui/kbd.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "menubar",
      "kind": "ui-component",
      "source_path": "components/ui/menubar.tsx"
    },
    {
      "name": "navigation-menu",
      "kind": "ui-component",
      "source_path": "components/ui/navigation-menu.tsx"
    },
    {
      "name": "pagination",
      "kind": "ui-component",
      "source_path": "components/ui/pagination.tsx"
    },
    {
      "name": "popover",
      "kind": "ui-component",
      "source_path": "components/ui/popover.tsx"
    },
    {
      "name": "progress",
      "kind": "ui-component",
      "source_path": "components/ui/progress.tsx"
    },
    {
      "name": "radio-group",
      "kind": "ui-component",
      "source_path": "components/ui/radio-group.tsx"
    },
    {
      "name": "resizable",
      "kind": "ui-component",
      "source_path": "components/ui/resizable.tsx"
    },
    {
      "name": "scroll-area",
      "kind": "ui-component",
      "source_path": "components/ui/scroll-area.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "sheet",
      "kind": "ui-component",
      "source_path": "components/ui/sheet.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/ui/sidebar.tsx"
    },
    {
      "name": "skeleton",
      "kind": "ui-component",
      "source_path": "components/ui/skeleton.tsx"
    },
    {
      "name": "slider",
      "kind": "ui-component",
      "source_path": "components/ui/slider.tsx"
    },
    {
      "name": "sonner",
      "kind": "ui-component",
      "source_path": "components/ui/sonner.tsx"
    },
    {
      "name": "spinner",
      "kind": "ui-component",
      "source_path": "components/ui/spinner.tsx"
    },
    {
      "name": "status-badge",
      "kind": "ui-component",
      "source_path": "components/ui/status-badge.tsx"
    },
    {
      "name": "switch",
      "kind": "ui-component",
      "source_path": "components/ui/switch.tsx"
    },
    {
      "name": "table",
      "kind": "ui-component",
      "source_path": "components/ui/table.tsx"
    },
    {
      "name": "tabs",
      "kind": "ui-component",
      "source_path": "components/ui/tabs.tsx"
    },
    {
      "name": "textarea",
      "kind": "ui-component",
      "source_path": "components/ui/textarea.tsx"
    },
    {
      "name": "toast",
      "kind": "ui-component",
      "source_path": "components/ui/toast.tsx"
    },
    {
      "name": "toaster",
      "kind": "ui-component",
      "source_path": "components/ui/toaster.tsx"
    },
    {
      "name": "toggle-group",
      "kind": "ui-component",
      "source_path": "components/ui/toggle-group.tsx"
    },
    {
      "name": "toggle",
      "kind": "ui-component",
      "source_path": "components/ui/toggle.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    },
    {
      "name": "use-mobile",
      "kind": "ui-component",
      "source_path": "components/ui/use-mobile.tsx"
    },
    {
      "name": "action-bar",
      "kind": "ui-component",
      "source_path": "components/workbench/action-bar.tsx"
    },
    {
      "name": "format-selector",
      "kind": "ui-component",
      "source_path": "components/workbench/format-selector.tsx"
    },
    {
      "name": "keyboard-shortcuts",
      "kind": "ui-component",
      "source_path": "components/workbench/keyboard-shortcuts.tsx"
    },
    {
      "name": "lightweight-editor",
      "kind": "ui-component",
      "source_path": "components/workbench/lightweight-editor.tsx"
    },
    {
      "name": "output-panel",
      "kind": "ui-component",
      "source_path": "components/workbench/output-panel.tsx"
    },
    {
      "name": "spec-editor",
      "kind": "ui-component",
      "source_path": "components/workbench/spec-editor.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [],
    "migrations": []
  },
  "tests": [
    {
      "name": "docs.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/docs.test.ts"
    },
    {
      "name": "health.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/health.test.ts"
    },
    {
      "name": "phase1-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/phase1-routes.test.ts"
    },
    {
      "name": "platform-contract.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/platform-contract.test.ts"
    },
    {
      "name": "well-known.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/well-known/well-known.test.ts"
    },
    {
      "name": "page.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/app/faq/page.test.tsx"
    },
    {
      "name": "page.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/app/roadmap/page.test.tsx"
    },
    {
      "name": "site-breadcrumbs.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/components/site-breadcrumbs.test.tsx"
    },
    {
      "name": "schema.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/db/schema.test.ts"
    },
    {
      "name": "mcp.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/generators/mcp.test.ts"
    },
    {
      "name": "network-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/platphorm/network-client.test.ts"
    },
    {
      "name": "validator.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/spec-engine/validator.test.ts"
    },
    {
      "name": "middleware.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/middleware.test.ts"
    },
    {
      "name": "route.ts",
      "kind": "unit-or-integration",
      "source_path": "app/api/v1/network/spec-coverage/route.ts"
    },
    {
      "name": "route.ts",
      "kind": "unit-or-integration",
      "source_path": "app/api/v1/network/spec-sources/route.ts"
    },
    {
      "name": "route.ts",
      "kind": "unit-or-integration",
      "source_path": "app/api/v1/network/spec-sources/sync/route.ts"
    },
    {
      "name": "spec-editor.tsx",
      "kind": "unit-or-integration",
      "source_path": "components/workbench/spec-editor.tsx"
    },
    {
      "name": "network-spec-sources.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/network-spec-sources.ts"
    },
    {
      "name": "diff.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-engine/diff.ts"
    },
    {
      "name": "parser.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-engine/parser.ts"
    },
    {
      "name": "repair.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-engine/repair.ts"
    },
    {
      "name": "types.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-engine/types.ts"
    },
    {
      "name": "validator.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-engine/validator.ts"
    },
    {
      "name": "spec-runs.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/spec-runs.ts"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "test-well-known.ts",
      "kind": "unit-or-integration",
      "source_path": "test-well-known.ts"
    },
    {
      "name": "workbench.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/workbench.spec.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "ALLOW_DB_IN_TESTS",
        "source_paths": [
          "lib/db/client.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          ".env.example",
          "lib/db/client.ts",
          "lib/generators/mcp/deployment.ts",
          "vitest.setup.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "ENABLE_MCP_GENERATION",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "ENABLE_NETWORK_IMPORT",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "ENABLE_SPEC_PERSISTENCE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_LEVEL",
        "source_paths": [
          "lib/generators/mcp/deployment.ts",
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MCP_ENDPOINT",
        "source_paths": [
          "lib/generators/mcp/index.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MCP_REGISTRY_TOKEN",
        "source_paths": [
          "lib/generators/mcp/deployment.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXT_PUBLIC_BASE_URL",
        "source_paths": [
          "app/feed.xml/route.ts",
          "app/llms-full.txt/route.ts",
          "app/robots.ts",
          "app/sitemap.ts",
          "lib/platphorm/identity.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "lib/db/client.ts",
          "lib/logger.ts",
          "lib/network-spec-sources.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          ".env.example",
          "lib/platform-contract.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_MCP_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "SPEC_EXTERNAL_IMPORT_ALLOWLIST",
        "source_paths": [
          "lib/platform-contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "TEST_BASE_URL",
        "source_paths": [
          "lib/generators/clients/tests.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_ANALYTICS_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_DEPLOYMENT_ID",
        "source_paths": [
          "lib/generators/mcp/tracing.ts",
          "lib/platphorm/fingerprint.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "__tests__/api/platform-contract.test.ts",
          "lib/generators/mcp/deployment.ts",
          "lib/generators/mcp/index.ts",
          "lib/logger.ts",
          "lib/platphorm/identity.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_REGION",
        "source_paths": [
          "lib/generators/mcp/deployment.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_URL",
        "source_paths": [
          "__tests__/api/platform-contract.test.ts",
          "lib/generators/mcp/deployment.ts",
          "lib/generators/mcp/identity.ts",
          "lib/platphorm/identity.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/ROADMAP.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      }
    ],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/agents.json/route.ts"
      },
      {
        "path": "app/.well-known/ai-plugin.json/route.ts"
      },
      {
        "path": "app/.well-known/change-password/route.ts"
      },
      {
        "path": "app/.well-known/dnt-policy.txt/route.ts"
      },
      {
        "path": "app/.well-known/hosting-provider/route.ts"
      },
      {
        "path": "app/.well-known/mcp.json/route.ts"
      },
      {
        "path": "app/.well-known/nodeinfo/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      },
      {
        "path": "app/.well-known/trust.json/route.ts"
      },
      {
        "path": "app/.well-known/webfinger/route.ts"
      }
    ],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "Neon",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/lib/generators/mcp.test.ts",
        "app/api/v1/generate/mcp/route.ts",
        "app/llms-full.txt/route.ts",
        "lib/db/client.ts",
        "lib/generators/mcp/deployment.ts",
        "lib/generators/mcp/index.ts",
        "lib/generators/mcp/persistence.ts",
        "lib/generators/mcp/registry.ts",
        "package.json"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/api/phase1-routes.test.ts",
        "__tests__/api/platform-contract.test.ts",
        ".env.example",
        "app/.well-known/agents.json/route.ts",
        "app/.well-known/mcp.json/route.ts",
        "app/.well-known/trust.json/route.ts",
        "app/api/v1/network/spec-sources/route.ts",
        "app/api/v1/templates/[id]/instantiate/route.ts",
        "package.json"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "ARCHITECTURE.md",
        "lib/db/client.ts",
        "lib/generators/mcp/deployment.ts",
        "package.json",
        "vitest.setup.ts"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/api/platform-contract.test.ts",
        ".env.example",
        "app/layout.tsx",
        "ARCHITECTURE.md",
        "lib/generators/mcp/deployment.ts",
        "lib/generators/mcp/identity.ts",
        "lib/generators/mcp/index.ts",
        "lib/generators/mcp/tracing.ts",
        "lib/logger.ts",
        "lib/platphorm/fingerprint.ts",
        "lib/platphorm/identity.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": "MIT",
    "paths": [
      {
        "path": "LICENSE"
      }
    ]
  },
  "comments": [
    {
      "kind": "security",
      "source_path": "__tests__/api/well-known/well-known.test.ts",
      "line": 3,
      "text": "import { GET as getSecurity } from '@/app/.well-known/security.txt/route'"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api/well-known/well-known.test.ts",
      "line": 20,
      "text": "it('should return valid security.txt', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api/well-known/well-known.test.ts",
      "line": 23,
      "text": "expect(text).toContain('Contact: mailto:security@platphormnews.com')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api/well-known/well-known.test.ts",
      "line": 91,
      "text": "expect(res.headers.get('Location')).toContain('/settings/security')"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/change-password/route.ts",
      "line": 5,
      "text": "return NextResponse.redirect(`${platphormIdentity.canonicalUrl}/settings/security`, 301)"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/dnt-policy.txt/route.ts",
      "line": 8,
      "text": "We only retain logs necessary for security, abuse prevention, and debugging, which are purged regularly."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 5,
      "text": "const securityTxt = `Contact: mailto:security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 6,
      "text": "Contact: https://platphormnews.com/security"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 8,
      "text": "Acknowledgments: https://platphormnews.com/security/acknowledgments"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 10,
      "text": "Canonical: ${platphormIdentity.canonicalUrl}/.well-known/security.txt"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 11,
      "text": "Policy: https://platphormnews.com/security/policy"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 42,
      "text": "securityContact: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/llms-full.txt/route.ts",
      "line": 370,
      "text": "- Features: paths, components, security, servers"
    },
    {
      "kind": "security",
      "source_path": "app/privacy/page.tsx",
      "line": 40,
      "text": "<li>To maintain service security and performance</li>"
    },
    {
      "kind": "security",
      "source_path": "app/terms/page.tsx",
      "line": 65,
      "text": "but not limited to data loss, security vulnerabilities in generated code, or"
    },
    {
      "kind": "security",
      "source_path": "ARCHITECTURE.md",
      "line": 189,
      "text": "├── vercel.json                 # Headers, rewrites, security"
    },
    {
      "kind": "security",
      "source_path": "ARCHITECTURE.md",
      "line": 218,
      "text": "- Security headers (HSTS, X-Frame-Options, CSP-ready)"
    },
    {
      "kind": "security",
      "source_path": "docs/ROADMAP.md",
      "line": 6,
      "text": "- `security.txt`: Security contact information."
    },
    {
      "kind": "security",
      "source_path": "docs/ROADMAP.md",
      "line": 19,
      "text": "- [ ] Automate updating `security.txt` expiration date."
    },
    {
      "kind": "todo",
      "source_path": "lib/generators/mcp/core.ts",
      "line": 229,
      "text": "// TODO: Implement actual tool logic here"
    },
    {
      "kind": "todo",
      "source_path": "lib/generators/mcp/core.ts",
      "line": 250,
      "text": "// TODO: Implement resource handlers"
    },
    {
      "kind": "todo",
      "source_path": "lib/generators/mcp/core.ts",
      "line": 255,
      "text": "// TODO: Implement prompt handlers"
    },
    {
      "kind": "todo",
      "source_path": "lib/generators/mcp/observability.ts",
      "line": 182,
      "text": "// TODO: Implement actual event emission"
    },
    {
      "kind": "security",
      "source_path": "lib/platform-contract.ts",
      "line": 39,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/platform-contract.ts",
      "line": 237,
      "text": "security: [{ PlatPhormApiKey: [] }, { PlatPhormBearer: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/platform-contract.ts",
      "line": 253,
      "text": "security: endpoint.public ? [] : [{ PlatPhormApiKey: [] }, { PlatPhormBearer: [] }],"
    },
    {
      "kind": "security",
      "source_path": "test-well-known.ts",
      "line": 5,
      "text": "'app/.well-known/security.txt/route.ts',"
    },
    {
      "kind": "security",
      "source_path": "vercel.json",
      "line": 17,
      "text": "{ \"key\": \"Strict-Transport-Security\", \"value\": \"max-age=31536000; includeSubDomains\" },"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/layout.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/v1/specs/[id]/repair/route.ts",
          "app/api/v1/specs/[id]/route.ts",
          "app/api/v1/specs/[id]/validate/route.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "lib/platphorm/network-client.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/phase1-routes.test.ts",
          "__tests__/api/platform-contract.test.ts",
          ".env.example",
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/v1/network/spec-sources/route.ts",
          "app/api/v1/templates/[id]/instantiate/route.ts",
          "app/llms-index.json/route.ts",
          "app/llms.txt/route.ts",
          "lib/platform-contract.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/changelog/page.tsx",
          "app/diff/page.tsx",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/generate/page.tsx",
          "app/globals.css",
          "app/import/page.tsx",
          "app/layout.tsx",
          "app/page.tsx",
          "app/roadmap/page.tsx",
          "app/status/page.tsx",
          "app/validate/page.tsx",
          "components/ui/alert.tsx",
          "components/ui/calendar.tsx",
          "components/ui/card.tsx",
          "components/ui/hover-card.tsx",
          "lib/platphorm/metadata.ts",
          "lib/platphorm/network-client.ts",
          "package-lock.json",
          "package.json"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/ai-plugin.json/route.ts",
          "app/layout.tsx",
          "app/llms-full.txt/route.ts"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/v1/specs/route.ts",
          "app/llms-full.txt/route.ts",
          "ARCHITECTURE.md",
          "lib/generators/mcp/core.ts",
          "lib/generators/mcp/index.ts",
          "lib/generators/mcp/observability.ts",
          "lib/logger.ts",
          "lib/platphorm/fingerprint.ts",
          "lib/platphorm/metadata.ts",
          "scripts/001-create-tables.sql"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/docs.test.ts",
          "__tests__/api/health.test.ts",
          "__tests__/api/phase1-routes.test.ts",
          "__tests__/middleware.test.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts",
          "app/api/v1/traces/route.ts",
          "app/docs/page.tsx",
          "app/llms-full.txt/route.ts",
          "app/network-manifest.json/route.ts",
          "app/status/layout.tsx",
          "app/status/page.tsx",
          "ARCHITECTURE.md",
          "components/ui/status-badge.tsx",
          "lib/generators/clients/curl.ts",
          "lib/generators/clients/tests.ts",
          "lib/generators/mcp/deployment.ts",
          "lib/generators/mcp/identity.ts",
          "lib/generators/mcp/index.ts"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "app/.well-known/trust.json/route.ts",
          "app/privacy/page.tsx"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/well-known/well-known.test.ts",
          "ARCHITECTURE.md"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/well-known/well-known.test.ts",
          ".env.example",
          "docs/ROADMAP.md",
          "lib/generators/mcp/deployment.ts"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "package-lock.json",
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/trust.json/route.ts",
          "lib/generators/mcp/core.ts",
          "lib/generators/mcp/deployment.ts",
          "lib/generators/mcp/registry.ts",
          "package-lock.json",
          "pnpm-lock.yaml",
          "scripts/001-create-tables.sql"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:21.204Z"
}
