symfonic.capabilities.prompting.onboarding¶
onboarding ¶
What the agent should collect from a new tenant, as a typed contribution.
domain.onboarding_checklist is neither observability nor an inert flag. Its
own docstring calls it "items the agent should collect during initial
conversations with a new tenant", and a scaffolded project fills it with
instructions — "Learn the store name and what it sells". That is model-facing
behaviour, so a migrated route that dropped it would answer differently from
the legacy one while reporting the field admitted.
The shape is :mod:~symfonic.capabilities.prompting.identity's, for the same
reason: the configuration field stays off every allowlist, the compatibility
adapter does the translation, and what arrives here is three strings' worth of
directive that knows nothing about DomainTemplate.
The cap belongs to the value. Legacy renders onboarding_checklist[:3]
under "CORE PREFERENCES", and the three is not arbitrary — a directive that
grew unbounded would push the rest of the prompt out under budget. Applying it
in :meth:OnboardingDirective.from_checklist rather than at the render keeps
the cap a property of what travels, so a reader of the value sees what the
model will see.
OnboardingDirective
dataclass
¶
The items an agent should collect, already capped and cleaned.
from_checklist
classmethod
¶
Legacy's own reading of the configured checklist, or None.
None for an absent or entirely blank checklist, because absence
means disabled — the rule the whole capability surface follows.
Source code in src/symfonic/capabilities/prompting/onboarding.py
OnboardingSource
dataclass
¶
OnboardingSource(directive: OnboardingDirective, untrusted: bool = False, offline_safe: bool = True, scope_aware: bool = False, options: dict[str, Any] = dict())
A ContributionSource that renders one :class:OnboardingDirective.
Not frozen for the reason the other sources are not: ContributionSource
declares offline_safe and scope_aware as settable attributes.