Adapter SDK
Crate: parallax-adapter-sdk
Base trait
#![allow(unused)] fn main() { trait ParallaxAdapter { fn manifest(&self) -> AdapterManifest; fn detect(&self, context: &ProjectContext) -> DetectionResult; fn capabilities(&self) -> AdapterCapabilities; } }
Specialized markers: SourceLanguageAdapter, TargetLanguageAdapter, FrameworkAdapter, DependencyAdapter, BuildSystemAdapter, TestFrameworkAdapter, DatabaseAdapter, ConfigurationAdapter, DeploymentAdapter, VerificationAdapter.
Manifest
Every adapter exposes AdapterManifest:
id— stable (parallax.typescript.source)version— independently versioned with the product today; package distribution lateradapter_type— source-language, framework, orm, …languages/ecosystemsmaturity/conformance(Bronze / Silver / Gold)priority— conflict resolutionowns— semantic nodes this adapter transformspermissions— capability sandbox for third-party adapterssdk_version—ADAPTER_SDK_VERSION
Capabilities
Machine-readable flags (FULL / PARTIAL / UNSUPPORTED), e.g. TypeScript source:
parsing...................FULL
types.....................FULL
decorators................PARTIAL
dynamic_eval..............UNSUPPORTED
Detection
ProjectContext carries root, relative files, manifests, package names, language mix, and CLI hints (to).
DetectionResult includes confidence, evidence, and optional owns_nodes.
Developing an adapter
- Read examples/custom-adapter
- Implement
ParallaxAdapter(+ specialized trait) - Register via
AdapterRegistry::registeror ship under.parallax/adapters/(discovery planned) - Aim for Bronze → Silver → Gold conformance (conformance)
Scaffold command (plx adapter new) is stubbed; use the example tree as the template today.