Parent
#1
What to build
First module of the prompt pipeline. Resolves the prompt input: either an inline prompt (passed through to the agent as-is) or a prompt template (file loaded from disk; substitution + expansion happen in later slices). Validates mutual exclusion and the inline-prompt-bypass contract (per ADR 0008).
Vocabulary: this module is the PromptResolver per the project's module map.
Acceptance criteria
Blocked by
Parent
#1
What to build
First module of the prompt pipeline. Resolves the prompt input: either an inline prompt (passed through to the agent as-is) or a prompt template (file loaded from disk; substitution + expansion happen in later slices). Validates mutual exclusion and the inline-prompt-bypass contract (per ADR 0008).
Vocabulary: this module is the
PromptResolverper the project's module map.Acceptance criteria
PromptResolveraccepts{ prompt }or{ promptFile }and returns a tagged result indicating which path the prompt came from (so downstream stages can decide whether to substitute/expand)promptandpromptFileare mutually exclusive at the type level (already enforced in [Types] Public types, interfaces, entry-point stubs (no implementation) #3); runtime check throws if both are passed (defense in depth)promptArgscombined with inlinepromptthrows (per CONTEXT.md and ADR 0008)promptFileresolves relative paths againstprocess.cwd()(caller's perspective, NOT the run'scwdoption)promptFilethrows an actionable error naming the resolved absolute pathpromptArgs+ inline, missing filebun testandbun run typecheckpassBlocked by