|
9 | 9 |
|
10 | 10 | triggerables %i[post_created_edited] |
11 | 11 |
|
12 | | - field :system_prompt, component: :message, required: false |
13 | | - field :search_for_text, component: :text, required: true |
14 | | - field :max_post_tokens, component: :text |
15 | | - field :stop_sequences, component: :text_list, required: false |
| 12 | + # TODO move to triggerables |
| 13 | + field :include_personal_messages, component: :boolean |
| 14 | + |
| 15 | + # Inputs |
16 | 16 | field :model, |
17 | 17 | component: :choices, |
18 | 18 | required: true, |
19 | 19 | extra: { |
20 | 20 | content: DiscourseAi::Automation.available_models, |
21 | 21 | } |
| 22 | + field :system_prompt, component: :message, required: false |
| 23 | + field :search_for_text, component: :text, required: true |
| 24 | + field :max_post_tokens, component: :text |
| 25 | + field :stop_sequences, component: :text_list, required: false |
| 26 | + field :temperature, component: :text |
| 27 | + |
| 28 | + # Actions |
22 | 29 | field :category, component: :category |
23 | 30 | field :tags, component: :tags |
24 | 31 | field :hide_topic, component: :boolean |
25 | 32 | field :flag_post, component: :boolean |
26 | | - field :include_personal_messages, component: :boolean |
27 | | - field :temperature, component: :text |
28 | 33 | field :flag_type, |
29 | 34 | component: :choices, |
30 | 35 | required: false, |
31 | 36 | extra: { |
32 | 37 | content: DiscourseAi::Automation.flag_types, |
33 | 38 | }, |
34 | 39 | default: "review" |
35 | | - field :canned_reply, component: :message |
36 | 40 | field :canned_reply_user, component: :user |
| 41 | + field :canned_reply, component: :message |
| 42 | + field :reply_persona, |
| 43 | + component: :choices, |
| 44 | + extra: { |
| 45 | + content: DiscourseAi::Automation.available_persona_choices, |
| 46 | + } |
| 47 | + field :whisper, component: :boolean |
37 | 48 |
|
38 | 49 | script do |context, fields| |
39 | 50 | post = context["post"] |
| 51 | + |
| 52 | + post = context["post"] |
| 53 | + next if post&.user&.bot? |
| 54 | + |
| 55 | + if post.topic.private_message? |
| 56 | + include_personal_messages = fields.dig("include_personal_messages", "value") |
| 57 | + next if !include_personal_messages |
| 58 | + end |
| 59 | + |
40 | 60 | canned_reply = fields.dig("canned_reply", "value") |
41 | 61 | canned_reply_user = fields.dig("canned_reply_user", "value") |
| 62 | + reply_persona_id = fields["reply_persona"]["value"] |
| 63 | + whisper = fields["whisper"]["value"] |
42 | 64 |
|
43 | 65 | # nothing to do if we already replied |
44 | 66 | next if post.user.username == canned_reply_user |
|
65 | 87 |
|
66 | 88 | stop_sequences = fields.dig("stop_sequences", "value") |
67 | 89 |
|
68 | | - if post.topic.private_message? |
69 | | - include_personal_messages = fields.dig("include_personal_messages", "value") |
70 | | - next if !include_personal_messages |
71 | | - end |
72 | | - |
73 | 90 | begin |
74 | 91 | RateLimiter.new( |
75 | 92 | Discourse.system_user, |
|
94 | 111 | tags: tags, |
95 | 112 | canned_reply: canned_reply, |
96 | 113 | canned_reply_user: canned_reply_user, |
| 114 | + reply_persona_id: reply_persona_id, |
| 115 | + whisper: whisper, |
97 | 116 | hide_topic: hide_topic, |
98 | 117 | flag_post: flag_post, |
99 | 118 | flag_type: flag_type.to_s.to_sym, |
|
0 commit comments