|
79 | 79 | (let [msg (nth messages i) |
80 | 80 | role (:role msg)] |
81 | 81 | (cond |
| 82 | + (= "compact_marker" role) |
| 83 | + {:pruned-messages result |
| 84 | + :freed-tokens freed-tokens} |
| 85 | + |
82 | 86 | (= "tool_call_output" role) |
83 | 87 | (let [text (tool-output-text msg) |
84 | 88 | tokens (estimate-tokens text)] |
|
192 | 196 | {:role :assistant |
193 | 197 | :content {:type :reasonFinished |
194 | 198 | :id (:id message-content) |
195 | | - :total-time-ms (:total-time-ms message-content)}}])) |
| 199 | + :total-time-ms (:total-time-ms message-content)}}] |
| 200 | + "compact_marker" [{:role :system |
| 201 | + :content {:type :text |
| 202 | + :text (if (:auto? message-content) |
| 203 | + "── Chat auto-compacted ──" |
| 204 | + "── Chat compacted ──")}}])) |
196 | 205 |
|
197 | 206 | (defn ^:private send-chat-contents! [messages chat-ctx] |
198 | 207 | (doseq [message messages] |
|
444 | 453 | modify-allowed? (= source-type :prompt-message) |
445 | 454 | run-hooks? (#{:prompt-message :eca-command :mcp-prompt} source-type) |
446 | 455 | user-messages (if run-hooks? |
447 | | - (let [past-messages (get-in @db* [:chats chat-id :messages] []) |
| 456 | + (let [past-messages (shared/messages-after-last-compact-marker |
| 457 | + (get-in @db* [:chats chat-id :messages] [])) |
448 | 458 | {:keys [final-prompt additional-contexts stop?]} |
449 | 459 | (run-pre-request-hooks! (assoc chat-ctx :message original-text |
450 | 460 | :all-messages (into past-messages user-messages)))] |
|
538 | 548 | :model-capabilities model-capabilities |
539 | 549 | :user-messages user-messages |
540 | 550 | :instructions instructions |
541 | | - :past-messages (get-in @db* [:chats chat-id :messages] []) |
| 551 | + :past-messages (shared/messages-after-last-compact-marker |
| 552 | + (get-in @db* [:chats chat-id :messages] [])) |
542 | 553 | :config config |
543 | 554 | :tools all-tools |
544 | 555 | :provider-auth provider-auth |
|
643 | 654 | (do |
644 | 655 | (consume-steer-message! chat-id db* chat-ctx add-to-history!) |
645 | 656 | {:tools tc-all-tools |
646 | | - :new-messages (get-in @db* [:chats chat-id :messages])}))))) |
| 657 | + :new-messages (shared/messages-after-last-compact-marker |
| 658 | + (get-in @db* [:chats chat-id :messages]))}))))) |
647 | 659 | received-msgs* add-to-history! user-messages) |
648 | 660 | :on-reason (fn [{:keys [status id text external-id delta-reasoning? redacted? data]}] |
649 | 661 | (lifecycle/assert-chat-not-stopped! chat-ctx) |
|
0 commit comments