Goal
Define and validate the .conductor/profile.yml schema in one place, used by both the orchestrator (Phase 2 TS) and the plugin (Phase 0+ bash).
Acceptance criteria
packages/shared/src/profile-schema.ts exports a Zod schema for the full profile (see docs/profile-reference.md)
- All sensitive fields are
*_env only (validator rejects literal channel_id, tenant_id, etc.)
loadProfile(path: string): Profile reads + validates + returns typed object
- Unit tests covering: valid profile loads cleanly, invalid profile (missing required field) fails with a clear error, profile with a literal sensitive value fails with a pointer to the offending field
Notes
This is the source-of-truth schema. The shell lib/profile.sh reader is a parallel implementation for yq-based access; both must stay consistent with what this Zod schema accepts.
Dependencies: #1
semver: minor
Goal
Define and validate the
.conductor/profile.ymlschema in one place, used by both the orchestrator (Phase 2 TS) and the plugin (Phase 0+ bash).Acceptance criteria
packages/shared/src/profile-schema.tsexports a Zod schema for the full profile (seedocs/profile-reference.md)*_envonly (validator rejects literalchannel_id,tenant_id, etc.)loadProfile(path: string): Profilereads + validates + returns typed objectNotes
This is the source-of-truth schema. The shell
lib/profile.shreader is a parallel implementation foryq-based access; both must stay consistent with what this Zod schema accepts.Dependencies: #1
semver: minor