From ed5da542146947dcfbc6e13e1d592d1bcd333fce Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Fri, 27 Feb 2026 21:35:42 +0800 Subject: [PATCH] enhance: record whether agent session has been created --- deps/db/src/logseq/db/frontend/property.cljs | 6 ++++++ deps/db/src/logseq/db/frontend/schema.cljs | 2 +- src/main/frontend/components/block.cljs | 6 ++++-- src/main/frontend/handler/agent.cljs | 10 ++++++++++ src/main/frontend/worker/db/migrate.cljs | 3 ++- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index 553bb5db90..f2261dd767 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -425,6 +425,12 @@ [[:logseq.property/agent.codex "Codex"] [:logseq.property/agent.claude-code "Claude Code"]]) :queryable? true} + :logseq.property/agent-session-created? + {:title "Agent session created?" + :schema {:type :checkbox + :public? false + :hide? true} + :queryable? false} :logseq.property/git-repo {:title "Git Repo" :schema {:type :url diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index c6b2582114..67ca58a7eb 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -30,7 +30,7 @@ (map (juxt :major :minor) [(parse-schema-version x) (parse-schema-version y)]))) -(def version (parse-schema-version "65.23")) +(def version (parse-schema-version "65.24")) (defn major-version "Return a number. diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index d74ea4c929..eb0d73ad66 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -2520,8 +2520,10 @@ ready? (agent-handler/task-ready? block) running? (contains? #{"running" "paused"} status) session-started? (boolean (:session-id session)) + session-created? (or session-started? + (true? (pu/get-block-property-value block :logseq.property/agent-session-created?))) btn-title (if ready? - (if session-started? "Open chat" "Run agent") + (if session-created? "Open chat" "Run agent") "Set Project + Agent + Git Repo")] [:div.flex.flex-row.items-center.gap-1 (shui/button @@ -2535,7 +2537,7 @@ (agent-chat/open-agent-chat-dialog! block))} (cond running? "Running" - session-started? "Thread" + session-created? "Thread" :else "Run"))]))) (rum/defc ^:large-vars/cleanup-todo block-content < rum/reactive diff --git a/src/main/frontend/handler/agent.cljs b/src/main/frontend/handler/agent.cljs index 00dd149cb0..1729d16275 100644 --- a/src/main/frontend/handler/agent.cljs +++ b/src/main/frontend/handler/agent.cljs @@ -211,6 +211,7 @@ "completed" :logseq.property/status.done "failed" :logseq.property/status.canceled "canceled" :logseq.property/status.canceled}) +(def ^:private task-session-created-property :logseq.property/agent-session-created?) (defn- terminal-status? [status] (contains? #{"completed" "failed" "canceled"} status)) @@ -246,6 +247,12 @@ (when (and desired (not= current desired)) (property-handler/set-block-property! block-uuid :logseq.property/status status-ident)))))) +(defn- mark-task-session-created! + [block-uuid] + (when-let [block (db/entity [:block/uuid block-uuid])] + (when-not (true? (pu/get-block-property-value block task-session-created-property)) + (property-handler/set-block-property! block-uuid task-session-created-property true)))) + (defn- update-session! [block-uuid f] (state/update-state! :agent/sessions @@ -475,6 +482,7 @@ (:session-id session) (do + (mark-task-session-created! block-uuid) (when-not (:streaming? session) (updates)))]