forked from 1b-agent/fieldcraft-upstream
Schema: a problem carries its field and a structured kind, phrased by label or by key
schema::Problem now holds the &'static Field it is about and a ProblemKind
(Required, NotANumber, Below, Above, NotAChoice, UnknownVariant, ...).
Problem::for_form phrases it by the field's label, Problem::for_agents by
its JSON path, from the same data. The form no longer rewrites problem
text by string matching or re-walks the field tree; field_at moves to
schema.rs for the engine's own Param errors. The forms test matches
EngineError::Param { key, .. } directly.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
904dc3381b
commit
bdd84a491d
4 files changed
+219
-109
No files matched your search
@@ -476,7 +476,7 @@ impl ModelApp {
|
||||
let label = command_label(id);
|
||||
let r = self.session.execute(id, ¶ms).map_err(|e| match e {
|
||||
EngineError::Param { key, problem } => {
|
||||
let message = match fields.and_then(|f| form::field_at(f, &key)) {
|
||||
let message = match fields.and_then(|f| fieldcraft_engine::schema::field_at(f, &key)) {
|
||||
Some(f) => format!("{}: {problem}", f.label),
|
||||
None => format!("`{key}` {problem}"),
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user