| 167 | 167 | return message.extra.reasoning; |
| 168 | 168 | }, |
| 169 | 169 | })); |
| 170 | + |
| 171 | + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 172 | + name: 'reasoning-parse', |
| 173 | + returns: 'reasoning string', |
| 174 | + helpString: t`Extracts the reasoning block from a string using the Reasoning Formatting settings.`, |
| 175 | + unnamedArgumentList: [ |
| 176 | + SlashCommandArgument.fromProps({ |
| 177 | + description: 'input string', |
| 178 | + typeList: ARGUMENT_TYPE.STRING, |
| 179 | + }), |
| 180 | + ], |
| 181 | + callback: (_, value) => { |
| 182 | + if (!value) { |
| 183 | + return ''; |
| 184 | + } |
| 185 | + |
| 186 | + if (!power_user.reasoning.prefix || !power_user.reasoning.suffix) { |
| 187 | + toastr.warning(t`Both prefix and suffix must be set in the Reasoning Formatting settings.`); |
| 188 | + return value.toString(); |
| 189 | + } |
| 190 | + |
| 191 | + const parsedReasoning = parseReasoningFromString(value.toString()); |
| 192 | + |
| 193 | + if (!parsedReasoning) { |
| 194 | + return ''; |
| 195 | + } |
| 196 | + |
| 197 | + return getRegexedString(parsedReasoning.reasoning, regex_placement.REASONING); |
| 198 | + }, |
| 199 | + })); |
| 170 | 200 | } |
| 171 | 201 | |
| 172 | 202 | function registerReasoningMacros() { |