From bba30142430f762a42e5d031a8cb76a98835e174 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 2 Feb 2026 00:15:09 +0800 Subject: [PATCH] enhance(agent): sandbox runtime integration --- .../src/logseq/db_sync/worker/agent/do.cljs | 48 +++++++++++++++++-- .../logseq/db_sync/worker/agent/sandbox.cljs | 47 ++++++++++++++++++ .../logseq/db_sync/agent_sandbox_test.cljs | 20 ++++++++ 3 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 deps/db-sync/src/logseq/db_sync/worker/agent/sandbox.cljs create mode 100644 deps/db-sync/test/logseq/db_sync/agent_sandbox_test.cljs diff --git a/deps/db-sync/src/logseq/db_sync/worker/agent/do.cljs b/deps/db-sync/src/logseq/db_sync/worker/agent/do.cljs index 5348cb3720..07018a8772 100644 --- a/deps/db-sync/src/logseq/db_sync/worker/agent/do.cljs +++ b/deps/db-sync/src/logseq/db_sync/worker/agent/do.cljs @@ -2,6 +2,7 @@ (:require [lambdaisland.glogi :as log] [logseq.db-sync.common :as common] [logseq.db-sync.platform.core :as platform] + [logseq.db-sync.worker.agent.sandbox :as sandbox] [logseq.db-sync.worker.agent.session :as session] [logseq.db-sync.worker.http :as http] [promesa.core :as p])) @@ -60,6 +61,38 @@ (broadcast-event! self event) {:session session :event event}))))) +(defn- sandbox-base [^js env] + (aget env "SANDBOX_AGENT_URL")) + +(defn- sandbox-token [^js env] + (aget env "SANDBOX_AGENT_TOKEN")) + +(defn- {:method method :headers headers} + (some? body) + (assoc :body (js/JSON.stringify (clj->js body))))] + (platform/request url (clj->js init)))) + +(defn clj json :keywordize-keys true)))) + +(defn clj json :keywordize-keys true)))) diff --git a/deps/db-sync/test/logseq/db_sync/agent_sandbox_test.cljs b/deps/db-sync/test/logseq/db_sync/agent_sandbox_test.cljs new file mode 100644 index 0000000000..cbd85a9b2b --- /dev/null +++ b/deps/db-sync/test/logseq/db_sync/agent_sandbox_test.cljs @@ -0,0 +1,20 @@ +(ns logseq.db-sync.agent-sandbox-test + (:require [cljs.test :refer [deftest is testing]] + [logseq.db-sync.worker.agent.sandbox :as sandbox])) + +(deftest normalize-base-url-test + (testing "normalizes sandbox base urls" + (is (= "https://sandbox.example" (sandbox/normalize-base-url "https://sandbox.example"))) + (is (= "https://sandbox.example" (sandbox/normalize-base-url "https://sandbox.example/"))) + (is (= "http://localhost:8787" (sandbox/normalize-base-url "http://localhost:8787//"))))) + +(deftest session-endpoint-test + (testing "builds sandbox session endpoints" + (let [base "https://sandbox.example" + session-id "sess-1"] + (is (= "https://sandbox.example/sandbox/sessions" + (sandbox/sessions-url base))) + (is (= "https://sandbox.example/sandbox/sessions/sess-1/messages" + (sandbox/messages-url base session-id))) + (is (= "https://sandbox.example/sandbox/sessions/sess-1/stream" + (sandbox/stream-url base session-id))))))