{
  "generated_at": "2026-04-15T16:47:35.235Z",
  "system": {
    "id": "topolo-support",
    "name": "Topolo Support",
    "slug": "topolo-support",
    "kind": "application",
    "summary": "Tenant-scoped support platform for Topolo internal operations and customer-organization ticket workflows, with support-owned workflow persistence kept outside Topolo Auth.",
    "aliases": [],
    "lifecycle": "active",
    "last_verified": "2026-04-15",
    "owners": [
      "support-operations",
      "platform-experience"
    ],
    "repo_paths": [
      "PlatformApplications/TopoloSupport"
    ],
    "service_ids": [
      "svc_topolo_support"
    ],
    "visibility": "public",
    "api_contract": {
      "type": "curated",
      "source": "PlatformApplications/TopoloSupport/functions/api/support/[[path]].ts",
      "notes": "Topolo Support is a standalone Worker application with a support-owned /api/support/* route family for workspace context, ticket, message, notification-dispatch, and signed inbound webhook workflow. The browser app now consumes the canonical shared `PlatformApplications/packages/topolo-ui-kit` and `PlatformApplications/packages/topolo-auth-client` surfaces for its public landing/login pages, authenticated shell, launcher, local command palette, loading/auth transitions, and browser auth contract. Its signed desk should follow the same fixed responsive `TopoloShell` sidebar/header composition used by the other first-party apps rather than keeping a Support-local static layout inside the shell container. It uses the same-origin /api/auth/* gateway only for Auth-owned reads such as session, user, organization, and launcher-catalog context, with that gateway preserving the upstream Auth /api/* path instead of stripping it; callback completion must also rehydrate local auth state from the shared browser auth events before the signed workspace route continues. Support workflow state is persisted in the support-owned D1 schema instead of Auth, including explicit Support-owned workspaces and inboxes for tenant queue routing, checked-in schema ownership in `PlatformApplications/TopoloSupport/scripts/support-schema.sql`, a first-party ticket activity ledger plus notification outbox for reply and assignment workflow, first-party retry-state fields and scheduled backlog processing for unattended notification recovery, a first-party `support_webhook_events` audit and idempotency table for inbound provider callbacks, the same Worker serving the built frontend asset bundle, workspace-scoped macros, and signed API tenant-safe queue access so Topolo operators can switch across workspaces while org operators and requester-grade users stay confined to their own support scope. Outbound email delivery is delegated to Topolo Nexus rather than being sent directly from the Support worker, using a dedicated Support trusted service token when no caller bearer token is available."
    },
    "primary_hosts": [
      "https://support.topolo.app"
    ],
    "doc_paths": [
      "applications/support",
      "internal/apps/topolo-support"
    ],
    "dependencies": [
      "topolo-auth",
      "topolo-nexus"
    ],
    "public_hub_url": "/systems/topolo-support",
    "internal_hub_url": null,
    "application_api_url": "/reference/apps/topolo-support",
    "generated_openapi_url": null,
    "machine_urls": {
      "system": "/machine/systems/topolo-support.json",
      "application": "/machine/applications/topolo-support.json"
    }
  },
  "docs": {
    "public": [
      {
        "id": "applications/support.mdx",
        "title": "Topolo Support",
        "summary": "Public overview of the Topolo support platform for internal operations and customer-organization ticket workflows.",
        "audience": "public",
        "tags": [
          "support",
          "tickets",
          "auth"
        ],
        "url": "/applications/support.mdx",
        "last_verified": "2026-04-15"
      }
    ],
    "internal": [],
    "runbooks": []
  },
  "authority": {
    "owners": [
      "support-operations",
      "platform-experience"
    ],
    "repo_paths": [
      "PlatformApplications/TopoloSupport"
    ],
    "service_ids": [
      "svc_topolo_support"
    ],
    "dependencies": [
      "topolo-auth",
      "topolo-nexus"
    ],
    "aliases": []
  },
  "interfaces": {
    "contract_type": "curated",
    "contract_source": "PlatformApplications/TopoloSupport/functions/api/support/[[path]].ts",
    "contract_source_exists": true,
    "openapi": null,
    "readme": null
  },
  "auth": {
    "depends_on_topolo_auth": true,
    "api_key_scopes": [
      {
        "id": "aks_topolo_support_context_read",
        "name": "context.read",
        "description": "Look up Auth-owned user and organization context from the support workspace",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_topolo_support_macros_read",
        "name": "macros.read",
        "description": "View support macros",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_topolo_support_macros_write",
        "name": "macros.write",
        "description": "Create and manage support macros",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_topolo_support_tickets_read",
        "name": "tickets.read",
        "description": "View support tickets, queues, and ticket conversations",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_topolo_support_tickets_write",
        "name": "tickets.write",
        "description": "Create and update support tickets, assignments, and messages",
        "resourcePattern": null,
        "kind": "api_key_scope"
      }
    ],
    "service_permissions": [
      {
        "id": "perm_topolo_support_context_read",
        "name": "context:read",
        "description": "Look up Auth-owned user and organization context from the support workspace",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_topolo_support_macros_read",
        "name": "macros:read",
        "description": "View support macros",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_topolo_support_macros_write",
        "name": "macros:write",
        "description": "Create and manage support macros",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_topolo_support_tickets_read",
        "name": "tickets:read",
        "description": "View support tickets, queues, and ticket conversations",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_topolo_support_tickets_write",
        "name": "tickets:write",
        "description": "Create and update support tickets, assignments, and messages",
        "resourcePattern": null,
        "kind": "permission"
      }
    ]
  },
  "runtime": {
    "primary_hosts": [
      "https://support.topolo.app"
    ],
    "repo_entries": [
      "PlatformApplications/TopoloSupport/functions/",
      "PlatformApplications/TopoloSupport/index.html",
      "PlatformApplications/TopoloSupport/migrations/",
      "PlatformApplications/TopoloSupport/package-lock.json",
      "PlatformApplications/TopoloSupport/package.json",
      "PlatformApplications/TopoloSupport/packages/",
      "PlatformApplications/TopoloSupport/postcss.config.cjs",
      "PlatformApplications/TopoloSupport/scripts/",
      "PlatformApplications/TopoloSupport/src/",
      "PlatformApplications/TopoloSupport/tailwind.config.js",
      "PlatformApplications/TopoloSupport/test/",
      "PlatformApplications/TopoloSupport/topolo.cloudcontrol.json",
      "PlatformApplications/TopoloSupport/tsconfig.json",
      "PlatformApplications/TopoloSupport/tsconfig.node.json",
      "PlatformApplications/TopoloSupport/vite.config.ts",
      "PlatformApplications/TopoloSupport/wrangler.toml"
    ],
    "wrangler_surfaces": [
      {
        "path": "PlatformApplications/TopoloSupport/wrangler.toml",
        "observabilityEnabled": true,
        "environments": [],
        "routes": [],
        "vars": [
          "AUTH_API_URL",
          "TOPOLO_NEXUS_API_URL"
        ],
        "bindings": [
          {
            "kind": "d1",
            "binding": "SUPPORT_DB",
            "sourcePath": "PlatformApplications/TopoloSupport/wrangler.toml",
            "target": "b5455665-b792-4a79-b96d-fe558178aa64"
          }
        ],
        "cronTriggers": [
          "*/5 * * * *"
        ],
        "workerName": "topolo-support",
        "main": "src/worker.ts",
        "compatibilityDate": "2026-04-10",
        "assetsDirectory": "dist"
      }
    ],
    "packages": [
      {
        "path": "PlatformApplications/TopoloSupport/package.json",
        "name": "topolo-support",
        "description": "Internal support desk for the Topolo ecosystem",
        "scripts": [
          "dev",
          "build",
          "build:worker",
          "preview",
          "lint",
          "test",
          "check",
          "db:migrate",
          "db:migrate:remote",
          "clean"
        ],
        "scriptCommands": [
          {
            "name": "dev",
            "command": "vite"
          },
          {
            "name": "build",
            "command": "tsc && vite build --mode production"
          },
          {
            "name": "build:worker",
            "command": "wrangler deploy --dry-run --outdir .wrangler/deploy-build"
          },
          {
            "name": "preview",
            "command": "vite preview"
          },
          {
            "name": "lint",
            "command": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
          },
          {
            "name": "test",
            "command": "node --test"
          },
          {
            "name": "check",
            "command": "npm run lint && npm run build && npm run build:worker && npm run test"
          },
          {
            "name": "db:migrate",
            "command": "wrangler d1 migrations apply SUPPORT_DB"
          },
          {
            "name": "db:migrate:remote",
            "command": "wrangler d1 migrations apply SUPPORT_DB --remote"
          },
          {
            "name": "clean",
            "command": "rm -rf dist"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloSupport/packages/topolo-auth-client/package.json",
        "name": "@topolo/auth-client",
        "description": "Shared authentication client for Topolo applications",
        "scripts": [
          "build",
          "dev",
          "typecheck"
        ],
        "scriptCommands": [
          {
            "name": "build",
            "command": "tsup src/index.ts --format esm,cjs --dts"
          },
          {
            "name": "dev",
            "command": "tsup src/index.ts --format esm,cjs --dts --watch"
          },
          {
            "name": "typecheck",
            "command": "tsc --noEmit"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloSupport/packages/topolo-ui-kit/package.json",
        "name": "@topolo/ui-kit",
        "scripts": [
          "build",
          "update:build-meta",
          "update:consumer-graph",
          "fanout:plan",
          "fanout:dispatch-ci",
          "rollout:plan",
          "rollout:package",
          "rollout:deploy",
          "smoke:consumers",
          "report:consumers",
          "sync:first-party-browser-icons",
          "prepare"
        ],
        "scriptCommands": [
          {
            "name": "build",
            "command": "tsc -p tsconfig.json"
          },
          {
            "name": "update:build-meta",
            "command": "node ./scripts/update-build-meta.mjs"
          },
          {
            "name": "update:consumer-graph",
            "command": "node ./scripts/update-consumer-graph.mjs"
          },
          {
            "name": "fanout:plan",
            "command": "node ./scripts/fanout-consumers.mjs plan"
          },
          {
            "name": "fanout:dispatch-ci",
            "command": "node ./scripts/fanout-consumers.mjs dispatch-ci"
          },
          {
            "name": "rollout:plan",
            "command": "node ./scripts/rollout-consumers.mjs plan"
          },
          {
            "name": "rollout:package",
            "command": "node ./scripts/rollout-consumers.mjs package"
          },
          {
            "name": "rollout:deploy",
            "command": "node ./scripts/rollout-consumers.mjs deploy"
          },
          {
            "name": "smoke:consumers",
            "command": "node ./scripts/smoke-consumers.mjs"
          },
          {
            "name": "report:consumers",
            "command": "node ./scripts/report-consumers.mjs"
          },
          {
            "name": "sync:first-party-browser-icons",
            "command": "node ./scripts/sync-first-party-browser-icons.mjs"
          },
          {
            "name": "prepare",
            "command": "npm run build"
          }
        ]
      }
    ]
  },
  "data": {
    "env_vars": [
      "AUTH_API_URL",
      "TOPOLO_NEXUS_API_URL"
    ],
    "bindings": [
      {
        "kind": "d1",
        "binding": "SUPPORT_DB",
        "sourcePath": "PlatformApplications/TopoloSupport/wrangler.toml",
        "target": "b5455665-b792-4a79-b96d-fe558178aa64"
      }
    ],
    "queue_bindings": [],
    "storage_kinds": [
      "d1"
    ],
    "workflow_signals": [
      "cron */5 * * * *"
    ]
  },
  "deployment": {
    "commands": [
      {
        "name": "build",
        "command": "PlatformApplications/TopoloSupport/package.json :: tsc && vite build --mode production"
      },
      {
        "name": "build:worker",
        "command": "PlatformApplications/TopoloSupport/package.json :: wrangler deploy --dry-run --outdir .wrangler/deploy-build"
      },
      {
        "name": "preview",
        "command": "PlatformApplications/TopoloSupport/package.json :: vite preview"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloSupport/packages/topolo-auth-client/package.json :: tsup src/index.ts --format esm,cjs --dts"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloSupport/packages/topolo-ui-kit/package.json :: tsc -p tsconfig.json"
      },
      {
        "name": "update:build-meta",
        "command": "PlatformApplications/TopoloSupport/packages/topolo-ui-kit/package.json :: node ./scripts/update-build-meta.mjs"
      },
      {
        "name": "rollout:deploy",
        "command": "PlatformApplications/TopoloSupport/packages/topolo-ui-kit/package.json :: node ./scripts/rollout-consumers.mjs deploy"
      }
    ],
    "routes": [],
    "environments": [],
    "assets_directories": [
      "dist"
    ],
    "observability_enabled": true
  },
  "debugging": {
    "failure_modes": [
      "Neither OpenAPI nor README-derived interface detail was found."
    ],
    "entrypoints": [
      "PlatformApplications/TopoloSupport/wrangler.toml",
      "PlatformApplications/TopoloSupport/functions/api/support/[[path]].ts",
      "PlatformApplications/TopoloSupport/package.json",
      "PlatformApplications/TopoloSupport/packages/topolo-auth-client/package.json",
      "PlatformApplications/TopoloSupport/packages/topolo-ui-kit/package.json"
    ]
  }
}