Definition Files (Services and Language Ecosystems)

DevCentr uses definition files (SDL and similar) to drive discovery, install offers, and documentation links. They are split so that services and language ecosystems are maintained separately.

Services

  • Location (app): app/src/modules/services/descriptions.sdl

  • Purpose: Infra and platform services (e.g. OpenTofu, AWS, GitHub Actions, Cloud Run). Not tied to a single language.

  • Used by: Infra discovery, installation workflow (IaC and service white-boxes), and docs links (homepage, native docs, DevCentr doc page).

Each service entry typically has: id, name, shortDescription, homepage, docs, devcentrDoc. Keep all service definitions in this file (or in that folder); do not mix in language runtimes or frameworks.

AI client profiles

  • Location (app): app/src/modules/services/ai_client_profiles.json5

  • Purpose: Profiles for AI-capable editors, coding agents, and CLIs that DevCentr can guide through MCP and skills setup.

  • Used by: The future AI Config interface and editor manager workflows for Context7/MCP setup, skills links, config file hints, launch commands, and issue-reporting links.

Each client entry can include:

  • Display name and category

  • Launch command

  • Context7 docs URL

  • Context7 config section URL

  • Source page URL for extracting snippets

  • Config file path hints

  • Easy setup commands

  • Manual setup requirements

  • Skills/rules support notes

Agent shell registry

  • Location (app): app/src/modules/services/agent_shell_registry.sdl

  • Purpose: Living catalog of standalone agent execution shells, fleet orchestrators, agent runtimes, IDE-hosted peers, inference hosts, and network-local interconnects — for detect / shop / set up / launch. Not a substitute for implementing those UIs inside DevCentr.

  • Used by: Future shopping/detection UI; human and agent maintainers keeping pace with the ecosystem. Cross-links to ai_client_profiles via aiClientProfile when MCP setup applies.

  • Spec: Agent Shell Registry

  • Companion: Agent control planes and compute topologies

  • Setup UI: Role Topology Composer + AI Workflow Arrangement (ai-stack canvas + guided add; arrangements = layout recipes)

Keep MCP/skills setup data in the JSON5 profiles. Keep control-plane shopping, topology arrangements, and framework-tax notes in the SDL registry.

AI stack domain pack

  • Location (app): app/src/modules/services/ai_stack_domain_pack.sdl

  • Purpose: Layer spine (ordered roles / memory bins), between-layer edge kinds, layout-recipe refs, and explicit orthogonal attach list for the Role Topology Composer ai-stack instance.

  • Used by: AI Workflow Arrangement canvas + guided add (when implemented); must not grow fake roles for MCP/skills/features.

Language ecosystems

  • Location (app): app/src/modules/languages/<ecosystem>.sdl (e.g. node.sdl, flutter.sdl, python.sdl)

  • Purpose: Runtimes and frameworks for that ecosystem (e.g. Node.js, pnpm, Bun, Next.js; Flutter SDK, FVM; Python, Poetry, FastAPI). Used when installing or bootstrapping project technologies into a repo, and by per-ecosystem management modules.

  • Package manager fields: id, name, optional status (preferred, active, bundled, closed-aspirational, …), notes, homepage. Node’s catalog includes Orogene as closed-aspirational inspiration and Bun as a practical OSS alternative; narrative: npm package managers.

  • Used by: Installation workflow when the user chooses to add a language or framework to a repository; ecosystem management UI for versions, health summary, and Toolchain Management / control-plane advisories.

Frameworks are split by ecosystem so that editing one language does not touch others or the services list. This keeps file operations and ownership clear.

unifiedControlPlane block

Each language ecosystem file may include a unifiedControlPlane block. DevCentr uses it to decide whether to show a Toolchain Management advisory (gap vs official control plane) at the top of that ecosystem’s management module.

Field Meaning

status

missing — no first-party plane and weak community story; community — community version managers exist but are not the official entrypoint; official — ecosystem owns pin/resolve (and ideally health/repair) in the main workflow.

entrypoint

Official CLI or shim name when status is official (e.g. rustup, flutter). Empty when missing/community.

communityTools

Bridge tools DevCentr may offer for setup (e.g. fvm, puro, mise).

advisory

When true (or when status is not official), show the top-of-module advisory linking to the Toolchain Management Pattern philosophy.

Example (Flutter — community bridges, no official plane yet):

flutter {
    unifiedControlPlane {
        status "community"
        entrypoint ""
        communityTools "fvm" "puro" "mise"
        advisory true
    }
    runtime { id "flutter"; name "Flutter SDK"; }
}

Philosophy: Toolchain Management Pattern. Product behavior: Ecosystem Management.

Content create types

  • Location (app): app/src/modules/content_create/content-types.sdl

  • Purpose: Top-level asset classifications (docs, config, schema, code, data, plaintext), nested subtype trees, stub templates, metadata (invented year, last updated, homepage/repo/spec URLs, vitality), and orthogonal lineage graphs for the Create… dialog.

  • Used by: Repository browser right-click Create… (modules.content_create).

  • Spec: Content Create

Do not mix content-type advice into language-ecosystem or services SDL files. Job trees and lineage edges stay in this catalog so the create UI can load one file.

Relation to installation workflow

  • Org node: Can offer IaC setup (e.g. create or link an infrastructure repo, install OpenTofu). Uses service definitions (e.g. OpenTofu) and the IaC docs.

  • Repo node: Can offer project technologies (from language-ecosystem files) or per-project IaC (with the decision flow and patterns from the IaC doc). See Installation Workflow.