Skip to content

Interface: KindPort

WHO — identity + composition role.

Core contract + the optional KindPresentation slice. Python's twin keeps the two apart at runtime (KindPort runtime_checkable Protocol + KindPresentation typing-only capability); TS folds the optional slice in via extends — structural typing has no isinstance gate to protect.

Extends

Properties

alias

readonly alias: string;

apiVersion

readonly apiVersion: string;

asciiIcon?

readonly optional asciiIcon?: string;

Single emoji or character for ASCII tree / compact views.

Inherited from

KindPresentation.asciiIcon


descriptionFallbackField?

readonly optional descriptionFallbackField?: string | null;

Spec field to derive metadata.description from when none was declared.

Inherited from

KindPresentation.descriptionFallbackField


displayLabel?

readonly optional displayLabel?: string;

Human-friendly plural label (e.g. "Agents" for Agent).

Inherited from

KindPresentation.displayLabel


docs?

readonly optional docs?: string;

Canonical prose documentation. May be overridden at load time by a DOCS.md file alongside the extension's source. Resolved prose is cached on _resolvedDocs.

Inherited from

KindPresentation.docs


flattenInContext

readonly flattenInContext: boolean;

graphStyle?

readonly optional graphStyle?: {
  fill: string;
  stroke: string;
  textColor: string;
};

Colors for mermaid diagrams, graph nodes, and other visualizations.

fill

fill: string;

stroke

stroke: string;

textColor

textColor: string;

Inherited from

KindPresentation.graphStyle


isOverlayable?

readonly optional isOverlayable?: boolean;

isPromptTarget

readonly isPromptTarget: boolean;

isRoot

readonly isRoot: boolean;

isRuntimeArtifact

readonly isRuntimeArtifact: boolean;

true for Kinds whose documents are produced by runtime workflows (eval engine, GAIA pipeline, autolab loop, evidence-capture hooks) rather than authored as source-of-truth. Tools that replicate "the inputs to the system" — filesystem→Postgres seed, catalog publish, manifest export — MUST skip Kinds where this is true so they don't re-inject historical execution data as canonical configuration. Default false (provided by KindBase) keeps existing extensions unchanged.


isSchemaAffecting?

readonly optional isSchemaAffecting?: boolean;

kind

readonly kind: string;

origin?

readonly optional origin?: string;

plane?

readonly optional plane?: "record" | "composition";

promptTargetPriority

readonly promptTargetPriority: number;

scope?

readonly optional scope?: TenantScope;

Optional tenant scope declaration. When unset (Phase 1 default), the kernel treats the kind permissively (back-compat). Phase 2 iterates through every Extension to set TENANTED or GLOBAL explicitly, flipping enforcement on per-Kind. See TenantScope.


scopeInheritable?

readonly optional scopeInheritable?: boolean;

storage

readonly storage: StorageDescriptor;

uiSchema?

readonly optional uiSchema?: Record<string, Record<string, unknown>>;

Per-field UI hints for Studio form rendering, keyed by spec field name (widget/label/help/language/height/order — see docs/KIND-UI-HINTS.md). When absent, consumers infer the widget from the value type.

Inherited from

KindPresentation.uiSchema


visibleInBackend?

readonly optional visibleInBackend?: boolean | null;

Explicit backend-visibility override; unset/null falls back to defaultVisibleInBackend(storage) — see resolveVisibleInBackend.

Inherited from

KindPresentation.visibleInBackend

Methods

dependencies()?

optional dependencies(): Record<string, string> | null;

Which spec fields reference other kinds by alias. Clearer name for depFilters().

Returns

Record\<string, string> | null


depFilters()

depFilters(): Record<string, string> | null;

Returns

Record\<string, string> | null


describe()

describe(doc): string | null;

Parameters

Parameter Type
doc Document

Returns

string | null


getDefaultAgentName()

getDefaultAgentName(doc): string | null;

Parameters

Parameter Type
doc Document

Returns

string | null


getLayerPolicies()

getLayerPolicies(doc): Record<string, string> | null;

Parameters

Parameter Type
doc Document

Returns

Record\<string, string> | null


graphMeta()?

optional graphMeta(doc): Record<string, unknown> | null;

Per-doc annotations for graph rendering and health checks. e.g. Guardrail returns {severity, scope, rules}. Agent returns {model, soul, skills_count}.

Parameters

Parameter Type
doc Document

Returns

Record\<string, unknown> | null

Inherited from

KindPresentation.graphMeta


parse()

parse(raw): unknown;

Parameters

Parameter Type
raw Record\<string, unknown>

Returns

unknown


preview()?

optional preview(doc): PreviewBlock[];

Optional: returns renderable blocks for the Studio's preview pane. Each extension implements this for its own kinds. When undefined, the kernel falls back to genericSpecDump from preview.ts.

Parameters

Parameter Type
doc Document

Returns

PreviewBlock[]

Inherited from

KindPresentation.preview


promptTemplate()

promptTemplate(): string | null;

Returns

string | null


schema()?

optional schema(): Record<string, unknown> | null;

JSON Schema for this kind's spec. Zod-based kinds convert their schema; declarative kinds return native JSON Schema.

Returns

Record\<string, unknown> | null


summary()

summary(doc): Record<string, unknown> | null;

Parameters

Parameter Type
doc Document

Returns

Record\<string, unknown> | null