fix: use single-token ADD_SUGG_TOOL to avoid ADD keyword conflicts
Some checks failed
BotServer CI/CD / build (push) Failing after 4m0s
Some checks failed
BotServer CI/CD / build (push) Failing after 4m0s
- Replace ADD SUGGESTION TOOL with ADD_SUGG_TOOL (single token) - Replace ADD SUGGESTION TEXT with ADD_SUGG_TEXT - Replace ADD SUGGESTION with ADD_SUGG - Keep ADD_SUGGESTION_TOOL as legacy alias for backward compat - Preprocessor converts ADD SUGGESTION TOOL -> ADD_SUGG_TOOL automatically - Eliminates collision with ADD BOT, ADD MEMBER in Rhai parser Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
2f3dd957e3
commit
74ac734253
3 changed files with 37 additions and 80 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
USE_WEBSITE("https://salesianos.br", "30d")
|
USE_WEBSITE("https://salesianos.br", "30d")
|
||||||
|
|
||||||
USE KB "carta"
|
USE KB "cartas"
|
||||||
USE KB "proc"
|
USE KB "proc"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,58 +70,21 @@ pub fn add_suggestion_keyword(
|
||||||
let cache = state.cache.clone();
|
let cache = state.cache.clone();
|
||||||
let cache2 = state.cache.clone();
|
let cache2 = state.cache.clone();
|
||||||
let cache3 = state.cache.clone();
|
let cache3 = state.cache.clone();
|
||||||
let cache4 = state.cache.clone();
|
|
||||||
let cache5 = state.cache.clone();
|
|
||||||
let user_session2 = user_session.clone();
|
let user_session2 = user_session.clone();
|
||||||
let user_session3 = user_session.clone();
|
let user_session3 = user_session.clone();
|
||||||
let user_session4 = user_session.clone();
|
|
||||||
let user_session5 = user_session.clone();
|
|
||||||
|
|
||||||
// ADD SUGGESTION "context_name" AS "button text"
|
// ADD_SUGG_TOOL "tool_name" AS "button text" — single-token to avoid ADD conflicts
|
||||||
engine
|
engine
|
||||||
.register_custom_syntax(
|
.register_custom_syntax(
|
||||||
["ADD", "SUGGESTION", "$expr$", "AS", "$expr$"],
|
["ADD_SUGG_TOOL", "$expr$", "AS", "$expr$"],
|
||||||
true,
|
|
||||||
move |context, inputs| {
|
|
||||||
let context_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
|
||||||
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
|
||||||
|
|
||||||
add_context_suggestion(cache.as_ref(), &user_session, &context_name, &button_text)?;
|
|
||||||
|
|
||||||
Ok(Dynamic::UNIT)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.expect("valid syntax registration");
|
|
||||||
|
|
||||||
// ADD SUGGESTION TEXT "$expr$" AS "button text"
|
|
||||||
// Creates a suggestion that sends the text as a user message when clicked
|
|
||||||
engine
|
|
||||||
.register_custom_syntax(
|
|
||||||
["ADD", "SUGGESTION", "TEXT", "$expr$", "AS", "$expr$"],
|
|
||||||
true,
|
|
||||||
move |context, inputs| {
|
|
||||||
let text_value = context.eval_expression_tree(&inputs[0])?.to_string();
|
|
||||||
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
|
||||||
|
|
||||||
add_text_suggestion(cache4.as_ref(), &user_session4, &text_value, &button_text)?;
|
|
||||||
|
|
||||||
Ok(Dynamic::UNIT)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.expect("valid syntax registration");
|
|
||||||
|
|
||||||
// ADD_SUGGESTION_TOOL "tool_name" AS "button text" - underscore version to avoid syntax conflicts
|
|
||||||
engine
|
|
||||||
.register_custom_syntax(
|
|
||||||
["ADD_SUGGESTION_TOOL", "$expr$", "AS", "$expr$"],
|
|
||||||
true,
|
true,
|
||||||
move |context, inputs| {
|
move |context, inputs| {
|
||||||
let tool_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
let tool_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
||||||
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
||||||
|
|
||||||
add_tool_suggestion(
|
add_tool_suggestion(
|
||||||
cache5.as_ref(),
|
cache.as_ref(),
|
||||||
&user_session5,
|
&user_session,
|
||||||
&tool_name,
|
&tool_name,
|
||||||
None,
|
None,
|
||||||
&button_text,
|
&button_text,
|
||||||
|
|
@ -132,9 +95,10 @@ pub fn add_suggestion_keyword(
|
||||||
)
|
)
|
||||||
.expect("valid syntax registration");
|
.expect("valid syntax registration");
|
||||||
|
|
||||||
|
// ADD_SUGGESTION_TOOL — legacy alias, same handler
|
||||||
engine
|
engine
|
||||||
.register_custom_syntax(
|
.register_custom_syntax(
|
||||||
["ADD", "SUGGESTION", "TOOL", "$expr$", "AS", "$expr$"],
|
["ADD_SUGGESTION_TOOL", "$expr$", "AS", "$expr$"],
|
||||||
true,
|
true,
|
||||||
move |context, inputs| {
|
move |context, inputs| {
|
||||||
let tool_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
let tool_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
||||||
|
|
@ -153,45 +117,32 @@ pub fn add_suggestion_keyword(
|
||||||
)
|
)
|
||||||
.expect("valid syntax registration");
|
.expect("valid syntax registration");
|
||||||
|
|
||||||
|
// ADD_SUGG_TEXT "text_value" AS "button text" — single-token
|
||||||
engine
|
engine
|
||||||
.register_custom_syntax(
|
.register_custom_syntax(
|
||||||
[
|
["ADD_SUGG_TEXT", "$expr$", "AS", "$expr$"],
|
||||||
"ADD",
|
|
||||||
"SUGGESTION",
|
|
||||||
"TOOL",
|
|
||||||
"$expr$",
|
|
||||||
"WITH",
|
|
||||||
"$expr$",
|
|
||||||
"AS",
|
|
||||||
"$expr$",
|
|
||||||
],
|
|
||||||
true,
|
true,
|
||||||
move |context, inputs| {
|
move |context, inputs| {
|
||||||
let tool_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
let text_value = context.eval_expression_tree(&inputs[0])?.to_string();
|
||||||
let params_value = context.eval_expression_tree(&inputs[1])?;
|
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
||||||
let button_text = context.eval_expression_tree(&inputs[2])?.to_string();
|
|
||||||
|
|
||||||
let params = if params_value.is_array() {
|
add_text_suggestion(cache3.as_ref(), &user_session3, &text_value, &button_text)?;
|
||||||
params_value
|
|
||||||
.cast::<rhai::Array>()
|
|
||||||
.iter()
|
|
||||||
.map(|v| v.to_string())
|
|
||||||
.collect()
|
|
||||||
} else {
|
|
||||||
params_value
|
|
||||||
.to_string()
|
|
||||||
.split(',')
|
|
||||||
.map(|s| s.trim().to_string())
|
|
||||||
.collect()
|
|
||||||
};
|
|
||||||
|
|
||||||
add_tool_suggestion(
|
Ok(Dynamic::UNIT)
|
||||||
cache3.as_ref(),
|
},
|
||||||
&user_session3,
|
)
|
||||||
&tool_name,
|
.expect("valid syntax registration");
|
||||||
Some(params),
|
|
||||||
&button_text,
|
// ADD_SUGG "context_name" AS "button text" — single-token
|
||||||
)?;
|
engine
|
||||||
|
.register_custom_syntax(
|
||||||
|
["ADD_SUGG", "$expr$", "AS", "$expr$"],
|
||||||
|
true,
|
||||||
|
move |context, inputs| {
|
||||||
|
let context_name = context.eval_expression_tree(&inputs[0])?.to_string();
|
||||||
|
let button_text = context.eval_expression_tree(&inputs[1])?.to_string();
|
||||||
|
|
||||||
|
add_context_suggestion(cache4.as_ref(), &user_session4, &context_name, &button_text)?;
|
||||||
|
|
||||||
Ok(Dynamic::UNIT)
|
Ok(Dynamic::UNIT)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -2013,10 +2013,13 @@ impl ScriptService {
|
||||||
(r#"CLEAR\s+TOOLS"#, 0, 0, vec![]),
|
(r#"CLEAR\s+TOOLS"#, 0, 0, vec![]),
|
||||||
(r#"CLEAR\s+WEBSITES"#, 0, 0, vec![]),
|
(r#"CLEAR\s+WEBSITES"#, 0, 0, vec![]),
|
||||||
|
|
||||||
// ADD family - ADD_SUGGESTION_TOOL must come before ADD\s+SUGGESTION
|
// ADD family - single-token keywords to avoid ADD conflicts
|
||||||
|
(r#"ADD_SUGG_TOOL"#, 2, 2, vec!["tool", "text"]),
|
||||||
|
(r#"ADD_SUGG_TEXT"#, 2, 2, vec!["value", "text"]),
|
||||||
|
(r#"ADD_SUGG(?!\s+TOOL|\s+TEXT|_)"#, 2, 2, vec!["context", "text"]),
|
||||||
(r#"ADD_SUGGESTION_TOOL"#, 2, 2, vec!["tool", "text"]),
|
(r#"ADD_SUGGESTION_TOOL"#, 2, 2, vec!["tool", "text"]),
|
||||||
(r#"ADD\s+SUGGESTION\s+TEXT"#, 2, 2, vec!["value", "text"]),
|
(r#"ADD_SUGGESTION_TEXT"#, 2, 2, vec!["value", "text"]),
|
||||||
(r#"ADD\s+SUGGESTION(?!\s*TEXT|\s*TOOL|_TOOL)"#, 2, 2, vec!["context", "text"]),
|
(r#"ADD_SUGGESTION(?!\s+TOOL|\s+TEXT|_)"#, 2, 2, vec!["context", "text"]),
|
||||||
(r#"ADD\s+MEMBER"#, 2, 2, vec!["name", "role"]),
|
(r#"ADD\s+MEMBER"#, 2, 2, vec!["name", "role"]),
|
||||||
|
|
||||||
// CREATE family
|
// CREATE family
|
||||||
|
|
@ -2045,8 +2048,11 @@ impl ScriptService {
|
||||||
// Skip lines that already use underscore-style custom syntax
|
// Skip lines that already use underscore-style custom syntax
|
||||||
// These are registered directly with Rhai and should not be converted
|
// These are registered directly with Rhai and should not be converted
|
||||||
let trimmed_upper = trimmed.to_uppercase();
|
let trimmed_upper = trimmed.to_uppercase();
|
||||||
if trimmed_upper.contains("ADD_SUGGESTION_TOOL") ||
|
if trimmed_upper.contains("ADD_SUGG_TOOL") ||
|
||||||
|
trimmed_upper.contains("ADD_SUGG_TEXT") ||
|
||||||
|
trimmed_upper.contains("ADD_SUGGESTION_TOOL") ||
|
||||||
trimmed_upper.contains("ADD_SUGGESTION_TEXT") ||
|
trimmed_upper.contains("ADD_SUGGESTION_TEXT") ||
|
||||||
|
trimmed_upper.starts_with("ADD_SUGG_") ||
|
||||||
trimmed_upper.starts_with("ADD_SUGGESTION_") ||
|
trimmed_upper.starts_with("ADD_SUGGESTION_") ||
|
||||||
trimmed_upper.starts_with("ADD_MEMBER") ||
|
trimmed_upper.starts_with("ADD_MEMBER") ||
|
||||||
(trimmed_upper.starts_with("USE_") && trimmed.contains('(')) {
|
(trimmed_upper.starts_with("USE_") && trimmed.contains('(')) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue