Conversation
…alues
Replace `DirectiveScope` with `ToggleScope` throughout the design, and
switch `allow_toggle` from a bool to a string enum: `"any"` (formerly
`true` / `Always`) and `"never"` (formerly `false` / `Never`). The
`"any"` spelling is deliberate — it cannot be confused with the legacy
`enable = "always"` shorthand, which means the opposite (locked-on).
Clarify that `Serialize` operates on stored optional fields rather than
`effective_enable()`, and that the bool shorthand is only emitted when
both fields are set and `allow_toggle` is `Always`. A `{ state:
Some(true), allow_toggle: None }` therefore serializes as `{ state =
true }`, never `true`.
Expand the `apply_tool_use` validation note to explain this is a
config-eligibility check, not a delivery guarantee, and that runtime
mismatches (tool absent from the resolved list after MCP startup) are
left to the runtime access-control track.
Move the `assistant.tool_choice` locked-off validation from
config-resolution time to `AppConfig::validate`, which is the only
validator that sees both `assistant` and `conversation.tools`.
Add a Phase 1 task to make `deep_merge_toml` recurse into inline tables
(`as_table_like_mut` / `as_table_like`), fixing the case where `jp
config set conversation.tools.foo.enable.state ...` against an inline
`enable = { ... }` would silently drop `allow_toggle`.
Update the RFD cross-reference tasks to include RFD 056, 057, and 083
updates in Phase 4, and clarify that existing bool/string payloads
written to `conversation.tools.*.enable` remain valid under the new
deserializer.
Signed-off-by: Jean Mertz <git@jeanmertz.com>
…ggle` values Signed-off-by: Jean Mertz <git@jeanmertz.com>
…ggle` values Signed-off-by: Jean Mertz <git@jeanmertz.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace
DirectiveScopewithToggleScopethroughout the design, and switchallow_togglefrom a bool to a string enum:"any"(formerlytrue/Always) and"never"(formerlyfalse/Never). The"any"spelling is deliberate — it cannot be confused with the legacyenable = "always"shorthand, which means the opposite (locked-on).Clarify that
Serializeoperates on stored optional fields rather thaneffective_enable(), and that the bool shorthand is only emitted when both fields are set andallow_toggleisAlways. A{ state: Some(true), allow_toggle: None }therefore serializes as{ state = true }, nevertrue.Expand the
apply_tool_usevalidation note to explain this is a config-eligibility check, not a delivery guarantee, and that runtime mismatches (tool absent from the resolved list after MCP startup) are left to the runtime access-control track.Move the
assistant.tool_choicelocked-off validation from config-resolution time toAppConfig::validate, which is the only validator that sees bothassistantandconversation.tools.Add a Phase 1 task to make
deep_merge_tomlrecurse into inline tables (as_table_like_mut/as_table_like), fixing the case wherejp config set conversation.tools.foo.enable.state ...against an inlineenable = { ... }would silently dropallow_toggle.Update the RFD cross-reference tasks to include RFD 056, 057, and 083 updates in Phase 4, and clarify that existing bool/string payloads written to
conversation.tools.*.enableremain valid under the new deserializer.