{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-openclaw",
    "name": "mbarbine__platphorm-openclaw",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-openclaw",
    "relative_path": "github-recent/mbarbine__platphorm-openclaw",
    "remote_url": "git@github.com:mbarbine/platphorm-openclaw.git",
    "default_branch": "main",
    "current_commit": "ed8a5597b7f9ed05c89b85c072290f41f2dc7a0e"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 233,
      "bytes": 929543
    },
    {
      "language": "JSON",
      "files": 14,
      "bytes": 482610
    },
    {
      "language": "YAML",
      "files": 3,
      "bytes": 301905
    },
    {
      "language": "Markdown",
      "files": 21,
      "bytes": 92201
    },
    {
      "language": "JavaScript",
      "files": 5,
      "bytes": 41439
    },
    {
      "language": "SQL",
      "files": 2,
      "bytes": 16453
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 9261
    },
    {
      "language": "Dockerfile",
      "files": 1,
      "bytes": 1964
    }
  ],
  "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": "openclaw-integration-platform",
        "version": "0.1.1",
        "scripts": {
          "dev": "next dev",
          "build": "next build",
          "start": "next start",
          "lint": "eslint .",
          "test": "vitest",
          "test:ui": "vitest --ui",
          "test:run": "vitest run",
          "test:coverage": "vitest run --coverage",
          "cli:opendocs": "npx tsx scripts/opendocs-cli.ts"
        },
        "dependencies": {
          "@ai-sdk/openai": "^3.0.53",
          "@ai-sdk/react": "^3.0.170",
          "@ai-sdk/xai": "^3.0.83",
          "@hookform/resolvers": "^3.10.0",
          "@neondatabase/serverless": "^1.1.0",
          "@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",
          "@sinclair/typebox": "^0.32.35",
          "@upstash/redis": "^1.37.0",
          "@upstash/search": "^0.1.7",
          "@vercel/analytics": "1.6.1",
          "ai": "^6.0.168",
          "autoprefixer": "^10.5.0",
          "botid": "^1.5.11",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.1.1",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.6.0",
          "input-otp": "1.4.2",
          "lucide-react": "^0.564.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.73.1",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.0",
          "sonner": "^1.7.4",
          "swr": "^2.4.1",
          "tailwind-merge": "^3.5.0",
          "vaul": "^1.1.2",
          "zod": "^3.25.76",
          "zod-to-json-schema": "^3.25.2"
        },
        "dev_dependencies": {
          "@eslint/eslintrc": "^3.3.5",
          "@tailwindcss/postcss": "^4.2.4",
          "@testing-library/react": "^16.3.2",
          "@types/node": "^22.19.17",
          "@types/react": "19.2.14",
          "@types/react-dom": "19.2.3",
          "@typescript-eslint/eslint-plugin": "^8.59.0",
          "@typescript-eslint/parser": "^8.59.0",
          "@vitejs/plugin-react": "^4.7.0",
          "@vitest/coverage-v8": "^3.2.4",
          "@vitest/ui": "^3.2.4",
          "eslint": "^8.57.1",
          "eslint-config-next": "^14.2.35",
          "happy-dom": "^15.11.7",
          "msw": "^2.13.4",
          "postcss": "^8.5.10",
          "tailwindcss": "^4.2.4",
          "tsx": "^4.21.0",
          "tw-animate-css": "1.3.3",
          "typescript": "5.7.3",
          "vitest": "^3.2.4"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/[...path]",
        "source_path": "app/api/[...path]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/capabilities",
        "source_path": "app/api/capabilities/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat",
        "source_path": "app/api/chat/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/cron/queue",
        "source_path": "app/api/cron/queue/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/cron/webhooks",
        "source_path": "app/api/cron/webhooks/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "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": "/llms-full",
        "source_path": "app/api/llms-full/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/llms-index",
        "source_path": "app/api/llms-index/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/llms",
        "source_path": "app/api/llms/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"
        ]
      },
      {
        "route": "/network",
        "source_path": "app/api/network/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/rss",
        "source_path": "app/api/rss/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/search",
        "source_path": "app/api/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/stats",
        "source_path": "app/api/stats/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/tools/execute",
        "source_path": "app/api/tools/execute/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/tools",
        "source_path": "app/api/tools/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/agent",
        "source_path": "app/api/v1/agent/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/capabilities",
        "source_path": "app/api/v1/capabilities/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/docs",
        "source_path": "app/api/v1/docs/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/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/integrations/graph",
        "source_path": "app/api/v1/integrations/graph/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/integrations/gridnet",
        "source_path": "app/api/v1/integrations/gridnet/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/integrations/insights",
        "source_path": "app/api/v1/integrations/insights/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/integrations/platphormnews",
        "source_path": "app/api/v1/integrations/platphormnews/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/integrations/trace",
        "source_path": "app/api/v1/integrations/trace/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/mcp",
        "source_path": "app/api/v1/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/network/compliance",
        "source_path": "app/api/v1/network/compliance/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/graph/sync",
        "source_path": "app/api/v1/network/graph/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/network/health",
        "source_path": "app/api/v1/network/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/sites/[slug]",
        "source_path": "app/api/v1/network/sites/[slug]/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/openclaw/memory",
        "source_path": "app/api/v1/openclaw/memory/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/openclaw/session",
        "source_path": "app/api/v1/openclaw/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/openclaw/workspace",
        "source_path": "app/api/v1/openclaw/workspace/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "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",
        "source_path": "app/api/v1/sitemaps/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/sitemaps/sync",
        "source_path": "app/api/v1/sitemaps/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/tests/agentui",
        "source_path": "app/api/v1/tests/agentui/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/tests/browserops",
        "source_path": "app/api/v1/tests/browserops/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/tests/evals",
        "source_path": "app/api/v1/tests/evals/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/tests/sandbox",
        "source_path": "app/api/v1/tests/sandbox/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/tests/webhooklab",
        "source_path": "app/api/v1/tests/webhooklab/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/workflow-runs/[id]",
        "source_path": "app/api/v1/workflow-runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/workflow-runs",
        "source_path": "app/api/v1/workflow-runs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/workflows/[id]/dry-run",
        "source_path": "app/api/v1/workflows/[id]/dry-run/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/workflows/[id]",
        "source_path": "app/api/v1/workflows/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/workflows/[id]/run",
        "source_path": "app/api/v1/workflows/[id]/run/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/workflows",
        "source_path": "app/api/v1/workflows/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/webhooks",
        "source_path": "app/api/webhooks/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/agent",
        "source_path": "app/(dashboard)/agent/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/integrations/insights",
        "source_path": "app/(dashboard)/integrations/insights/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/integrations/trace",
        "source_path": "app/(dashboard)/integrations/trace/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/(dashboard)",
        "source_path": "app/(dashboard)/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat",
        "source_path": "app/chat/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/network",
        "source_path": "app/network/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/tools",
        "source_path": "app/tools/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "header",
      "kind": "ui-component",
      "source_path": "components/dashboard/header.tsx"
    },
    {
      "name": "nav",
      "kind": "ui-component",
      "source_path": "components/dashboard/nav.tsx"
    },
    {
      "name": "json-ld",
      "kind": "ui-component",
      "source_path": "components/seo/json-ld.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": "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"
    }
  ],
  "data_models": [
    {
      "name": "index",
      "kind": "model-file",
      "source_path": "lib/openclaw/schemas/index.ts"
    },
    {
      "name": "validate",
      "kind": "model-file",
      "source_path": "lib/openclaw/schemas/validate.ts"
    },
    {
      "name": "validate.test",
      "kind": "model-file",
      "source_path": "tests/lib/openclaw/schemas/validate.test.ts"
    },
    {
      "name": "schemas.test",
      "kind": "model-file",
      "source_path": "tests/schemas/schemas.test.ts"
    }
  ],
  "database": {
    "databases": [
      "redis"
    ],
    "schemas": [
      {
        "path": "scripts/01-init-schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "ai-plugin.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/.well-known/ai-plugin.test.ts"
    },
    {
      "name": "agent.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/agent.test.ts"
    },
    {
      "name": "queue.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/cron/queue.test.ts"
    },
    {
      "name": "webhooks.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/cron/webhooks.test.ts"
    },
    {
      "name": "health.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/health.test.ts"
    },
    {
      "name": "llms-index.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/llms-index.test.ts"
    },
    {
      "name": "platphormnews-tools.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/platphormnews-tools.test.ts"
    },
    {
      "name": "rss.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/rss.test.ts"
    },
    {
      "name": "search.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/search.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/search/route.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/v1/integrations/insights/route.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api/v1/integrations/trace/route.test.ts"
    },
    {
      "name": "trace.e2e.test.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/trace.e2e.test.ts"
    },
    {
      "name": "use-mobile.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/hooks/use-mobile.test.ts"
    },
    {
      "name": "use-toast.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/hooks/use-toast.test.ts"
    },
    {
      "name": "cache.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/cache.test.ts"
    },
    {
      "name": "index.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/cache/index.test.ts"
    },
    {
      "name": "crypto.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/crypto.test.ts"
    },
    {
      "name": "db.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/db.test.ts"
    },
    {
      "name": "gridnet.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/gridnet.test.ts"
    },
    {
      "name": "insights.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/insights.test.ts"
    },
    {
      "name": "mcp-server.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/mcp-server.test.ts"
    },
    {
      "name": "network-graph.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/network-graph.test.ts"
    },
    {
      "name": "discovery.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/network/discovery.test.ts"
    },
    {
      "name": "observability.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/observability.test.ts"
    },
    {
      "name": "openclaw-mcp.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw-mcp.test.ts"
    },
    {
      "name": "config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw/config.test.ts"
    },
    {
      "name": "docs.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw/integrations/docs.test.ts"
    },
    {
      "name": "mcp-tools.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw/mcp-tools.test.ts"
    },
    {
      "name": "validate.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw/schemas/validate.test.ts"
    },
    {
      "name": "workspace.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/openclaw/workspace.test.ts"
    },
    {
      "name": "queue.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/queue.test.ts"
    },
    {
      "name": "redis.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/redis.test.ts"
    },
    {
      "name": "schemas-validation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/schemas-validation.test.ts"
    },
    {
      "name": "schemas.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/schemas.test.ts"
    },
    {
      "name": "tools.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/tools.test.ts"
    },
    {
      "name": "trace.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/trace.test.ts"
    },
    {
      "name": "utils.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/utils.test.ts"
    },
    {
      "name": "validator-errors.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/validator-errors.test.ts"
    },
    {
      "name": "webhooks.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/lib/webhooks.test.ts"
    },
    {
      "name": "middleware.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/middleware.test.ts"
    },
    {
      "name": "config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/openclaw/config.test.ts"
    },
    {
      "name": "opendocs.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/opendocs.test.ts"
    },
    {
      "name": "robots.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/robots.test.ts"
    },
    {
      "name": "schemas.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/schemas/schemas.test.ts"
    },
    {
      "name": "client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/sdk/client.test.ts"
    },
    {
      "name": "timing-attack.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/security/timing-attack.test.ts"
    },
    {
      "name": "sitemap.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/sitemap.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [
      {
        "path": "Dockerfile"
      }
    ],
    "compose_files": [
      {
        "path": "docker-compose.yml"
      }
    ]
  },
  "env": {
    "example_files": [
      {
        "path": ".env.docker"
      }
    ],
    "variables": [
      {
        "name": "CLAWS_BROWSER_CLIENT_ENABLED",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "CLAWS_CHAT_ENABLED",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "CLAWS_WORKFLOWS_ENABLED",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "CRON_SECRET",
        "source_paths": [
          ".Jules/sentinel.md",
          "app/api/cron/queue/route.ts",
          "app/api/cron/webhooks/route.ts",
          "tests/api/cron/queue.test.ts",
          "tests/api/cron/webhooks.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          ".env.docker",
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts",
          "lib/db.ts",
          "lib/db/index.ts",
          "scripts/migrate.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DEBUG",
        "source_paths": [
          "lib/observability.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "FEED_SYNC_CONCURRENCY",
        "source_paths": [
          "app/api/v1/feeds/sync/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "GRIDNET_API_KEY",
        "source_paths": [
          "lib/openclaw/integrations/gridnet.ts",
          "lib/openclaw/mcp/client.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "GRIDNET_API_URL",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "INSIGHTS_API_KEY",
        "source_paths": [
          "lib/openclaw/integrations/insights.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "JA4MLAB_DB_OPTIONAL",
        "source_paths": [
          "app/api/rss/route.ts",
          "tests/api/rss.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4MLAB_DEGRADED_DEPENDENCIES",
        "source_paths": [
          "app/api/search/route.ts",
          "lib/cache/index.ts",
          "lib/redis.ts",
          "lib/search.ts",
          "lib/search/index.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "KV_REST_API_TOKEN",
        "source_paths": [
          "lib/cache/index.ts",
          "lib/redis.ts",
          "tests/lib/redis.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "KV_REST_API_URL",
        "source_paths": [
          "lib/cache/index.ts",
          "lib/redis.ts",
          "tests/lib/redis.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MCP_PROTOCOL_VERSION",
        "source_paths": [
          "app/.well-known/[...path]/route.ts",
          "app/api/[...path]/route.ts",
          "app/api/capabilities/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MCP_PUBLIC_READ_ENABLED",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_BASE_URL",
        "source_paths": [
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/.well-known/security.txt/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/llms-full/route.ts",
          "app/api/llms-index/route.ts",
          "app/api/rss/route.ts",
          "app/layout.tsx",
          "app/robots.ts",
          "app/sitemap.ts",
          "components/seo/json-ld.tsx",
          "lib/network/discovery.ts",
          "lib/openclaw/mcp/tools.ts",
          "scripts/automation.ts",
          "tests/api/rss.test.ts",
          "tests/setup.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_TELEMETRY_DISABLED",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          ".env.docker",
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENAI_API_KEY",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": true
      },
      {
        "name": "OPENCLAW_CACHE_TTL",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENCLAW_RATE_LIMIT_RPM",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENCLAW_WORKSPACE",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "app/api/v1/reports/decks/route.ts",
          "app/api/v1/reports/docs/route.ts",
          "app/api/v1/reports/sheets/route.ts",
          "app/api/v1/tests/agentui/route.ts",
          "app/api/v1/tests/browserops/route.ts",
          "app/api/v1/tests/evals/route.ts",
          "app/api/v1/tests/sandbox/route.ts",
          "app/api/v1/tests/webhooklab/route.ts",
          "lib/auth.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORMNEWS_API_KEY",
        "source_paths": [
          ".Jules/sentinel.md",
          "app/api/search/route.ts",
          "app/api/v1/integrations/gridnet/route.ts",
          "app/api/v1/integrations/trace/route.ts",
          "app/api/v1/openclaw/session/route.ts",
          "app/api/v1/openclaw/workspace/route.ts",
          "app/api/webhooks/route.ts",
          "lib/openclaw/integrations/network-graph.ts",
          "lib/openclaw/integrations/platphormnews.ts",
          "lib/openclaw/mcp/client.ts",
          "lib/sdk/client.ts",
          "scripts/automation.ts",
          "tests/api/search.test.ts",
          "tests/api/search/route.test.ts",
          "tests/api/v1/integrations/trace/route.test.ts",
          "tests/sdk/client.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORMNEWS_API_URL",
        "source_paths": [
          "lib/openclaw/config.ts",
          "tests/setup.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORMNEWS_DOCS_URL",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORMNEWS_GRAPH_URL",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORMNEWS_MCP_HUB_URL",
        "source_paths": [
          "lib/openclaw/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORMNEWS_MCP_URL",
        "source_paths": [
          "lib/openclaw/config.ts",
          "tests/setup.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PORT",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_DB",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_PASSWORD",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": true
      },
      {
        "name": "POSTGRES_USER",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "REDIS_URL",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "SERVICE_NAME",
        "source_paths": [
          "app/.well-known/[...path]/route.ts",
          "app/api/[...path]/route.ts",
          "app/api/capabilities/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SITEMAP_SYNC_CONCURRENCY",
        "source_paths": [
          "app/api/v1/sitemaps/sync/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SITEMAP_URL_LIMIT",
        "source_paths": [
          "app/api/v1/sitemaps/sync/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "TRACE_API_KEY",
        "source_paths": [
          "lib/openclaw/integrations/trace.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "TRACE_TELEMETRY_URL",
        "source_paths": [
          "app/api/v1/mcp/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "UPSTASH_REDIS_REST_TOKEN",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": true
      },
      {
        "name": "UPSTASH_REDIS_REST_URL",
        "source_paths": [
          ".env.docker"
        ],
        "likely_secret": false
      },
      {
        "name": "UPSTASH_SEARCH_REST_TOKEN",
        "source_paths": [
          "lib/search.ts",
          "lib/search/index.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "UPSTASH_SEARCH_REST_URL",
        "source_paths": [
          "lib/search.ts",
          "lib/search/index.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_GIT_COMMIT_SHA",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VITEST",
        "source_paths": [
          "lib/cache/index.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "XAI_API_KEY",
        "source_paths": [
          "app/api/chat/route.ts",
          "app/api/health/route.ts",
          "lib/ai/platphorm-agent.ts"
        ],
        "likely_secret": true
      }
    ]
  },
  "configs": [
    {
      "path": "docker-compose.yml"
    },
    {
      "path": "eslint.config.mjs"
    },
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "tsconfig.tsbuildinfo"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [
      {
        "path": "public/openapi.json"
      }
    ],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      }
    ],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/[...path]/route.ts"
      },
      {
        "path": "app/.well-known/agents.json/route.ts"
      },
      {
        "path": "app/.well-known/ai-plugin.json/route.ts"
      },
      {
        "path": "app/.well-known/mcp.json/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      },
      {
        "path": "app/.well-known/trust.json/route.ts"
      },
      {
        "path": "tests/.well-known/ai-plugin.test.ts"
      }
    ],
    "robots": [],
    "manifests": [
      {
        "path": "public/manifest.webmanifest"
      }
    ]
  },
  "integrations": [
    {
      "name": "AWS",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/v1/health/route.ts",
        "package.json"
      ]
    },
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        ".env.docker",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        ".Jules/sentinel.md",
        "app/.well-known/agents.json/route.ts",
        "app/.well-known/mcp.json/route.ts",
        "app/.well-known/trust.json/route.ts",
        "app/api/search/route.ts",
        "app/api/v1/feeds/route.ts",
        "app/api/v1/feeds/sync/route.ts",
        "app/api/v1/integrations/gridnet/route.ts",
        "app/api/v1/integrations/trace/route.ts",
        "app/api/v1/network/graph/sync/route.ts",
        "app/api/v1/openclaw/session/route.ts",
        "app/api/v1/openclaw/workspace/route.ts",
        "app/api/v1/reports/decks/route.ts",
        "app/api/v1/reports/docs/route.ts",
        "app/api/webhooks/route.ts",
        "lib/openclaw/config.ts",
        "lib/openclaw/integrations/network-graph.ts",
        "package.json",
        "sandbox.md",
        "tests/setup.ts"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        ".env.docker",
        "app/.well-known/trust.json/route.ts",
        "app/api/health/route.ts",
        "app/api/v1/feeds/sync/route.ts",
        "app/api/v1/health/route.ts",
        "app/api/v1/network/graph/sync/route.ts",
        "app/api/v1/sitemaps/sync/route.ts",
        "app/api/v1/workflow-runs/[id]/route.ts",
        "docker-compose.yml",
        "package.json"
      ]
    },
    {
      "name": "Redis",
      "confidence": "medium",
      "evidence_paths": [
        ".env.docker",
        "lib/cache/index.ts",
        "lib/redis.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "tests/lib/cache.test.ts",
        "tests/lib/cache/index.test.ts",
        "tests/lib/redis.test.ts"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/health/route.ts",
        "app/api/v1/health/route.ts",
        "app/layout.tsx",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 7,
      "text": "**Learning:** String interpolation of potentially undefined environment variables in security checks creates fail-open vulnerabilities. The application should fail securely if a required security secret is missing."
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 31,
      "text": "**Learning:** Using `Math.random()` for any form of security-sensitive identifier generation creates a vulnerability to prediction attacks."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 2,
      "text": "* /.well-known/security.txt"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 3,
      "text": "* Security contact and policy information."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 10,
      "text": "const securityTxt = `Contact: mailto:security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 11,
      "text": "Contact: https://platphormnews.com/security"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 14,
      "text": "Acknowledgments: https://platphormnews.com/security/acknowledgments"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 3,
      "text": "* Platform trust and security policy for Claws."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 53,
      "text": "`${baseUrl}/.well-known/security.txt`,"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 97,
      "text": "securityContact: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 98,
      "text": "securityPolicy: `${baseUrl}/.well-known/security.txt`,"
    },
    {
      "kind": "security",
      "source_path": "app/(dashboard)/integrations/insights/page.tsx",
      "line": 189,
      "text": "{/* Carbon & Security Row */}"
    },
    {
      "kind": "security",
      "source_path": "app/(dashboard)/integrations/insights/page.tsx",
      "line": 216,
      "text": "{result.security && ("
    },
    {
      "kind": "security",
      "source_path": "app/(dashboard)/integrations/insights/page.tsx",
      "line": 221,
      "text": "Security Headers"
    },
    {
      "kind": "security",
      "source_path": "app/(dashboard)/integrations/insights/page.tsx",
      "line": 226,
      "text": "<p className=\"text-2xl font-bold\">{result.security.score}/100</p>"
    },
    {
      "kind": "security",
      "source_path": "app/(dashboard)/integrations/insights/page.tsx",
      "line": 229,
      "text": "{Object.entries(result.security.headers || {}).slice(0, 5).map(([header, data]: [string, any]) => ("
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/network/graph/sync/route.ts",
      "line": 39,
      "text": "// TODO: persist snapshot to database (NetworkGraphSnapshot table)"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/openclaw/session/route.ts",
      "line": 13,
      "text": "// Security Enhancement: Ensure environment variable exists to prevent fail-open via 'Bearer undefined'"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/openclaw/session/route.ts",
      "line": 20,
      "text": "// Security Enhancement: Use constant-time comparison to prevent timing attacks"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/openclaw/session/route.ts",
      "line": 61,
      "text": "// Security Enhancement: Ensure environment variable exists to prevent fail-open via 'Bearer undefined'"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/openclaw/session/route.ts",
      "line": 68,
      "text": "// Security Enhancement: Use constant-time comparison to prevent timing attacks"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/workflow-runs/[id]/route.ts",
      "line": 13,
      "text": "// TODO: query database when DATABASE_URL is configured"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/workflow-runs/route.ts",
      "line": 9,
      "text": "// TODO: query database for runs when DATABASE_URL is configured"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/workflows/[id]/run/route.ts",
      "line": 56,
      "text": "// TODO: persist run to database and execute steps when DATABASE_URL is configured"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/workflows/route.ts",
      "line": 46,
      "text": "// TODO: persist to database when DATABASE_URL is configured"
    },
    {
      "kind": "security",
      "source_path": "CONTRIBUTING.md",
      "line": 109,
      "text": "hotfix/security-patch"
    },
    {
      "kind": "security",
      "source_path": "enhancement-plan.md",
      "line": 5,
      "text": "This end-to-end 7-phase enhancement plan outlines the integration of Cloudflare (for edge security, DNS, caching, and Zero Trust access) and Docker Compose (for containerized local development, reproducible environments, and scalable deploy"
    },
    {
      "kind": "security",
      "source_path": "enhancement-plan.md",
      "line": 22,
      "text": "## Phase 2: Edge Security & DNS Migration (Cloudflare)"
    },
    {
      "kind": "security",
      "source_path": "lib/openclaw/integrations/insights.ts",
      "line": 114,
      "text": "security: Type.Optional(SecurityAnalysisSchema),"
    },
    {
      "kind": "security",
      "source_path": "lib/openclaw/mcp/tools.ts",
      "line": 256,
      "text": "description: 'Get the platform trust and security policy',"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 215,
      "text": "// ── Security ─────────────────────────────────────────────────────────────"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 216,
      "text": "{ name: 'get_trust_policy', description: 'Get the platform trust and security policy', category: 'security', mutability: 'read', authRequired: false, webAccessible: true, browserRunnable: true },"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 217,
      "text": "{ name: 'validate_domain_allowlist', description: 'Validate a domain against the platform allowlist', category: 'security', mutability: 'read', authRequired: false, webAccessible: true, browserRunnable: true },"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 218,
      "text": "{ name: 'validate_discovery_security', description: 'Check a site for security in discovery files', category: 'security', mutability: 'read', authRequired: false, webAccessible: true, browserRunnable: true },"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 219,
      "text": "{ name: 'get_security_contacts', description: 'Get security contact information', category: 'security', mutability: 'read', authRequired: false, webAccessible: true, browserRunnable: true },"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 268,
      "text": "{ uri: 'claws://trust-policy', name: 'Trust Policy', description: 'Platform trust and security policy', mimeType: 'application/json', authRequired: false },"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/index.ts",
      "line": 329,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/search/index.ts",
      "line": 187,
      "text": "{ id: 'get_security_headers', name: 'get_security_headers', description: 'Analyze security headers', category: 'insights', server: 'insights-mcp' },"
    },
    {
      "kind": "security",
      "source_path": "next.config.mjs",
      "line": 36,
      "text": "// Headers for additional security"
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 1163,
      "text": "\"deprecated\": \"Use @eslint/config-array instead\","
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 1224,
      "text": "\"deprecated\": \"Use @eslint/object-schema instead\","
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 2015,
      "text": "\"deprecated\": \"Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by c"
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 7246,
      "text": "\"deprecated\": \"This version is no longer supported. Please see https://eslint.org/version-support for other options.\","
    },
    {
      "kind": "security",
      "source_path": "platphormnews-architecture.md",
      "line": 249,
      "text": "## Security Model"
    },
    {
      "kind": "security",
      "source_path": "platphormnews-architecture.md",
      "line": 273,
      "text": "### Security Headers"
    },
    {
      "kind": "security",
      "source_path": "platphormnews-architecture.md",
      "line": 282,
      "text": "'Content-Security-Policy': '...',"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 610,
      "text": "deprecated: Use @eslint/config-array instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 618,
      "text": "deprecated: Use @eslint/object-schema instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2732,
      "text": "deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2892,
      "text": "deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by cont"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2897,
      "text": "deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by cont"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2902,
      "text": "deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by cont"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2985,
      "text": "deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 3669,
      "text": "deprecated: Rimraf versions prior to v4 are no longer supported"
    },
    {
      "kind": "security",
      "source_path": "proxy.js",
      "line": 9,
      "text": "* - Security headers"
    },
    {
      "kind": "security",
      "source_path": "proxy.js",
      "line": 246,
      "text": "// Security headers"
    },
    {
      "kind": "security",
      "source_path": "proxy.js",
      "line": 255,
      "text": "response.headers.set('Content-Security-Policy', ["
    },
    {
      "kind": "unsafe",
      "source_path": "proxy.js",
      "line": 257,
      "text": "\"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com\","
    },
    {
      "kind": "unsafe",
      "source_path": "proxy.js",
      "line": 258,
      "text": "\"style-src 'self' 'unsafe-inline'\","
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 22,
      "text": "### Robots, security contact, and well-known placement"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 24,
      "text": "- `robots.txt` has been formalized as an IETF RFC (RFC 9309). Importantly, robots/REP rules are **not access authorization** and **not a substitute for real security controls**. This directly impacts scoring language: “blocked by robots” sh"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 25,
      "text": "- `security.txt` is an IETF RFC (RFC 9116) and is designed to be machine-discoverable at a predictable location, typically under `/.well-known/`. citeturn24search3turn24search4"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 68,
      "text": "### JA4+ as a cross-domain security/observability reference"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 70,
      "text": "JA4+ is published as a suite of network fingerprinting methods and is being incorporated into major platforms; for example, AWS WAF exposes JA4 fingerprint matching for requests. This is not a W3C/IETF web standard, but it is relevant as an"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 137,
      "text": "The standards claims embedded in these documents are grounded in authoritative specifications and documentation: RFC robots/REP guidance, RFC security.txt and well-known placement, sitemap protocol rules, W3C WCAG/ARIA/manifest specs, “INP "
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 238,
      "text": "- artifact_probe (robots, sitemaps, llms, humans, security.txt, etc.)"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 251,
      "text": "### Trust + security disclosure surfaces"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 252,
      "text": "- /.well-known/security.txt (IETF RFC security.txt)"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 363,
      "text": "- RFC 9116 — security.txt"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 385,
      "text": "- Content Security Policy Level 3 (W3C TR)"
    },
    {
      "kind": "security",
      "source_path": "standards-references.md",
      "line": 441,
      "text": "- Row-level security (RLS)"
    },
    {
      "kind": "security",
      "source_path": "tests/middleware.test.ts",
      "line": 194,
      "text": "describe('Security Headers', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/middleware.test.ts",
      "line": 195,
      "text": "it('should set correct security headers', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/security/timing-attack.test.ts",
      "line": 4,
      "text": "describe('Security: Timing-safe comparison', () => {"
    }
  ],
  "security": {
    "secret_risks": [
      {
        "kind": "openai-key",
        "source_path": ".env.docker",
        "line": 24,
        "redacted_sample": "OPENAI_API_KEY= [REDACTED]"
      }
    ],
    "unsafe_patterns": [
      {
        "name": "child-process-exec",
        "confidence": "medium",
        "evidence_paths": [
          "lib/cache/index.ts"
        ]
      },
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "components/seo/json-ld.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/webhooks/route.ts",
          "lib/openclaw/integrations/platphormnews.ts",
          "lib/search.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/(dashboard)/integrations/insights/page.tsx",
          "app/(dashboard)/integrations/trace/page.tsx",
          "app/(dashboard)/page.tsx",
          "app/api/v1/health/route.ts",
          "app/network/page.tsx",
          "app/page.tsx",
          "app/tools/page.tsx",
          "lib/openclaw/integrations/gridnet.ts",
          "lib/openclaw/integrations/network-graph.ts",
          "lib/openclaw/integrations/platphormnews.ts",
          "lib/sdk/client.ts",
          "lib/ssrf.ts",
          "lib/webhooks.ts",
          "tests/api/platphormnews-tools.test.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          ".env.docker",
          ".Jules/sentinel.md",
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/chat/route.ts",
          "app/api/health/route.ts",
          "app/api/search/route.ts",
          "app/api/v1/feeds/route.ts",
          "app/api/v1/feeds/sync/route.ts",
          "app/api/v1/integrations/gridnet/route.ts",
          "app/api/v1/integrations/trace/route.ts",
          "app/api/v1/network/graph/sync/route.ts",
          "app/api/v1/openclaw/session/route.ts",
          "app/api/v1/openclaw/workspace/route.ts",
          "app/api/v1/reports/decks/route.ts",
          "app/api/v1/reports/docs/route.ts",
          "app/api/v1/reports/sheets/route.ts",
          "app/api/v1/sitemaps/route.ts",
          "app/api/v1/sitemaps/sync/route.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/bolt.md",
          ".Jules/palette.md",
          "app/(dashboard)/agent/page.tsx",
          "app/(dashboard)/integrations/insights/page.tsx",
          "app/(dashboard)/integrations/trace/page.tsx",
          "app/(dashboard)/page.tsx",
          "app/chat/page.tsx",
          "app/globals.css",
          "app/layout.tsx",
          "app/network/page.tsx",
          "app/page.tsx",
          "app/tools/page.tsx",
          "components/ui/alert.tsx",
          "components/ui/calendar.tsx",
          "components/ui/card.tsx",
          "components/ui/hover-card.tsx",
          "CONTRIBUTING.md",
          "lib/cache/index.ts",
          "package-lock.json",
          "package.json"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/ai-plugin.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/api/llms-full/route.ts",
          "app/layout.tsx",
          "CODE_OF_CONDUCT.md",
          "CONTRIBUTING.md",
          "lib/network/discovery.ts",
          "lib/opendocs.ts",
          "platphormnews-architecture.md",
          "scripts/01-init-schema.sql",
          "scripts/02-seed-data.sql"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "app/api/search/route.ts",
          "lib/db/index.ts",
          "lib/observability.ts",
          "lib/utils.ts",
          "platphormnews-architecture.md",
          "proxy.js",
          "public/openapi.json",
          "public/schemas/item.schema.json",
          "public/schemas/realm.schema.json",
          "sandbox.md",
          "scripts/split-schemas.js",
          "standards-references.md",
          "tests/api/search.test.ts",
          "tests/api/search/route.test.ts",
          "tests/lib/utils.test.ts",
          "tests/middleware.test.ts"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          ".openclaw/skills/platphormnews/SKILL.md",
          ".openclaw/workspace/AGENTS.md",
          ".openclaw/workspace/BOOT.md",
          ".openclaw/workspace/HEARTBEAT.md",
          ".openclaw/workspace/memory/heartbeat-state.json",
          ".openclaw/workspace/TOOLS.md",
          "app/.well-known/[...path]/route.ts",
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/(dashboard)/integrations/trace/page.tsx",
          "app/(dashboard)/page.tsx",
          "app/api/chat/route.ts",
          "app/api/docs/route.ts",
          "app/api/health/route.ts",
          "app/api/llms-full/route.ts",
          "app/api/llms-index/route.ts",
          "app/api/stats/route.ts",
          "app/api/v1/health/route.ts",
          "app/api/v1/integrations/gridnet/route.ts"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          "lib/observability.ts",
          "tests/api/v1/integrations/insights/route.test.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/bolt.md",
          "lib/network/discovery.ts",
          "platphormnews-architecture.md",
          "proxy.js",
          "standards-references.md"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          ".env.docker",
          "docker-compose.yml",
          "scripts/01-init-schema.sql"
        ]
      },
      {
        "name": "password_hash",
        "confidence": "medium",
        "evidence_paths": [
          "scripts/01-init-schema.sql"
        ]
      },
      {
        "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": [
          ".env.docker",
          ".Jules/sentinel.md",
          ".openclaw/skills/platphormnews/SKILL.md",
          ".openclaw/workspace/TOOLS.md",
          "app/api/llms-full/route.ts",
          "app/api/llms-index/route.ts",
          "app/api/search/route.ts",
          "app/api/v1/integrations/gridnet/route.ts",
          "app/api/v1/integrations/trace/route.ts",
          "app/api/v1/openclaw/session/route.ts",
          "app/api/v1/openclaw/workspace/route.ts",
          "docker-compose.yml",
          "enhancement-plan.md",
          "lib/cache/index.ts",
          "lib/db/index.ts",
          "lib/observability.ts",
          "lib/redis.ts",
          "lib/search.ts",
          "lib/search/index.ts",
          "package-lock.json"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:16.797Z"
}
