From 5e915a0f865a08759ad32c18f15a13f9f590b445 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 02:25:01 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=8B=20New=20version=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/chatfirst-bigsmooth.md | 27 -------------- .changeset/daemon-tool-hooks.md | 25 ------------- .changeset/named-th-tools.md | 15 -------- CHANGELOG.md | 62 +++++++++++++++++++++++++++++++ Cargo.lock | 32 ++++++++-------- Cargo.toml | 28 +++++++------- package.json | 2 +- 7 files changed, 93 insertions(+), 98 deletions(-) delete mode 100644 .changeset/chatfirst-bigsmooth.md delete mode 100644 .changeset/daemon-tool-hooks.md delete mode 100644 .changeset/named-th-tools.md diff --git a/.changeset/chatfirst-bigsmooth.md b/.changeset/chatfirst-bigsmooth.md deleted file mode 100644 index 7fe204248..000000000 --- a/.changeset/chatfirst-bigsmooth.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -"@smooai/smooth": minor ---- - -Big Smooth is now the chat-first daemon on the smooth-operator LocalServer engine -(th-7225f9 / epic th-c89c2a) — a showcase of `../smooth-operator`. - -- **Chat-first UI**: `crates/smooth-web` swapped from the multi-page dashboard to - the chat-first SPA (`App.tsx` + `BigSmoothFace`, same-origin token injection). - `th daemon run` launches it; `th up` now boots the same chat-first daemon - (via `SMOOTH_ADDR`) instead of the old in-process server. -- **Engine migration** `b43c04fe` → `d03fa10` (0.16.0): the whole workspace pins - the core rev that `smooth-operator-server`/`svc` @ `487d10bc` are built on, so - the daemon links the canonical LocalServer + SEP extension host (env-gated by - `SMOOTH_EXTENSIONS_ALLOW`, discovered from `~/.smooth/extensions`, installed - via `th ext`). All engine deps are git-revs (CI-buildable) — no path-deps. -- **New crates**: `smooth-daemon` (the daemon), `smooth-tools` (sandboxed - fs/grep/bash tools), `smooth-goalie`. -- **Dropped old cast**: `smooth-bigsmooth`, `smooth-narc`, `smooth-scribe`, - `smooth-archivist`, `smooth-operative`, `smooth-bench`, `smooth-tunnel` — the - microVM-era Big Smooth and its old-signature engine hooks. `th bench` and - `th tunnel` are removed with their backing crates. -- The narc LLM-judge and auto-mode permission cards (previously in the dropped - crates / the `th code` TUI) re-home onto the new engine's `NarcHook` / - `ToolHook` seam in a follow-up (th-3119e3). Every other `th` CLI feature - (crm, agents, knowledge, crawl, search, files, widgets, booking, …) is - unchanged. diff --git a/.changeset/daemon-tool-hooks.md b/.changeset/daemon-tool-hooks.md deleted file mode 100644 index 4c5ab9f0c..000000000 --- a/.changeset/daemon-tool-hooks.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@smooai/smooth": minor ---- - -Big Smooth gains an intelligent `th` tool + re-homed auto-mode & narc-judge safety -hooks on the smooth-operator engine (th-3119e3 / th-1f694a / th-515a13). - -- **Engine**: bumped to core `0.16.2` (crates.io) + `smooth-operator-server`/`svc` - @ the new `.tool_hooks(…)` builder seam on `LocalServer` (th-1f694a upstream). -- **Intelligent `th` tool** (`smooth-tools`): a native agent tool that teaches Big - Smooth its own CLI surface — web search, knowledge retrieval, crawl, `th api …`, - pearls — so it uses `th` deliberately instead of blind bash. Resolves the `th` - binary, runs it with structured argv (no shell interpolation), caps output. -- **auto-mode `ToolHook`** (`smooth-daemon`): permission gate via the in-tree - `smooth_policy::auto_mode` rule engine (allow/deny/ask). `SMOOTH_AUTO_MODE` - selects posture; the daemon defaults to `bypass` (usable out of the box, narc - still guards) until the interactive approval queue lands (th-1f7fd7). -- **narc `ToolHook`** (`smooth-daemon`): tool-call surveillance — secret/dangerous- - CLI/prompt-injection detectors (recovered from the old smooth-narc crate) with an - LLM-judge escalation via the daemon gateway (FAST_MODEL), fail-closed on - block/timeout, and `post_call` secret redaction through the `&mut ToolResult` - seam. Degrades to regex-only + redaction when no gateway key is configured. -- Both hooks install via `.tool_hooks([auto_mode, narc])` — auto-mode first - (permission), narc second (surveillance) — gating every tool call, including - SEP extension tools. diff --git a/.changeset/named-th-tools.md b/.changeset/named-th-tools.md deleted file mode 100644 index 8b9689b54..000000000 --- a/.changeset/named-th-tools.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@smooai/smooth": minor ---- - -Big Smooth: promote the demo-critical `th` capabilities to first-class named -tools so the model reaches for them reliably (it selects tools by name + schema, -not buried prose). - -- **`web_search { query, answer? }`** → `th search` — open-web search. -- **`knowledge_search { query }`** → `th knowledge search` — the org's own KB. -- **`crawl { url }`** → `th crawl scrape` — read a specific page as markdown. - -Each is a thin typed wrapper over the shared `th` resolver (argv only, no shell) -— they reach nothing new, they're just findable. The general `th` tool stays as -the catch-all for the long tail (`th api …`, `th pearls …`, config). diff --git a/CHANGELOG.md b/CHANGELOG.md index b7a320adc..257187427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,67 @@ # @smooai/smooth +## 0.23.0 + +### Minor Changes + +- 053f0c1: Big Smooth is now the chat-first daemon on the smooth-operator LocalServer engine + (th-7225f9 / epic th-c89c2a) — a showcase of `../smooth-operator`. + + - **Chat-first UI**: `crates/smooth-web` swapped from the multi-page dashboard to + the chat-first SPA (`App.tsx` + `BigSmoothFace`, same-origin token injection). + `th daemon run` launches it; `th up` now boots the same chat-first daemon + (via `SMOOTH_ADDR`) instead of the old in-process server. + - **Engine migration** `b43c04fe` → `d03fa10` (0.16.0): the whole workspace pins + the core rev that `smooth-operator-server`/`svc` @ `487d10bc` are built on, so + the daemon links the canonical LocalServer + SEP extension host (env-gated by + `SMOOTH_EXTENSIONS_ALLOW`, discovered from `~/.smooth/extensions`, installed + via `th ext`). All engine deps are git-revs (CI-buildable) — no path-deps. + - **New crates**: `smooth-daemon` (the daemon), `smooth-tools` (sandboxed + fs/grep/bash tools), `smooth-goalie`. + - **Dropped old cast**: `smooth-bigsmooth`, `smooth-narc`, `smooth-scribe`, + `smooth-archivist`, `smooth-operative`, `smooth-bench`, `smooth-tunnel` — the + microVM-era Big Smooth and its old-signature engine hooks. `th bench` and + `th tunnel` are removed with their backing crates. + - The narc LLM-judge and auto-mode permission cards (previously in the dropped + crates / the `th code` TUI) re-home onto the new engine's `NarcHook` / + `ToolHook` seam in a follow-up (th-3119e3). Every other `th` CLI feature + (crm, agents, knowledge, crawl, search, files, widgets, booking, …) is + unchanged. + +- cc43483: Big Smooth gains an intelligent `th` tool + re-homed auto-mode & narc-judge safety + hooks on the smooth-operator engine (th-3119e3 / th-1f694a / th-515a13). + + - **Engine**: bumped to core `0.16.2` (crates.io) + `smooth-operator-server`/`svc` + @ the new `.tool_hooks(…)` builder seam on `LocalServer` (th-1f694a upstream). + - **Intelligent `th` tool** (`smooth-tools`): a native agent tool that teaches Big + Smooth its own CLI surface — web search, knowledge retrieval, crawl, `th api …`, + pearls — so it uses `th` deliberately instead of blind bash. Resolves the `th` + binary, runs it with structured argv (no shell interpolation), caps output. + - **auto-mode `ToolHook`** (`smooth-daemon`): permission gate via the in-tree + `smooth_policy::auto_mode` rule engine (allow/deny/ask). `SMOOTH_AUTO_MODE` + selects posture; the daemon defaults to `bypass` (usable out of the box, narc + still guards) until the interactive approval queue lands (th-1f7fd7). + - **narc `ToolHook`** (`smooth-daemon`): tool-call surveillance — secret/dangerous- + CLI/prompt-injection detectors (recovered from the old smooth-narc crate) with an + LLM-judge escalation via the daemon gateway (FAST_MODEL), fail-closed on + block/timeout, and `post_call` secret redaction through the `&mut ToolResult` + seam. Degrades to regex-only + redaction when no gateway key is configured. + - Both hooks install via `.tool_hooks([auto_mode, narc])` — auto-mode first + (permission), narc second (surveillance) — gating every tool call, including + SEP extension tools. + +- 6437a06: Big Smooth: promote the demo-critical `th` capabilities to first-class named + tools so the model reaches for them reliably (it selects tools by name + schema, + not buried prose). + + - **`web_search { query, answer? }`** → `th search` — open-web search. + - **`knowledge_search { query }`** → `th knowledge search` — the org's own KB. + - **`crawl { url }`** → `th crawl scrape` — read a specific page as markdown. + + Each is a thin typed wrapper over the shared `th` resolver (argv only, no shell) + — they reach nothing new, they're just findable. The general `th` tool stays as + the catch-all for the long tail (`th api …`, `th pearls …`, config). + ## 0.22.0 ### Minor Changes diff --git a/Cargo.lock b/Cargo.lock index bd3a6716b..d893884ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4722,7 +4722,7 @@ dependencies = [ [[package]] name = "smooai-smooth-api-client" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "async-trait", @@ -4750,7 +4750,7 @@ dependencies = [ [[package]] name = "smooai-smooth-cast" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "dirs-next", @@ -4766,7 +4766,7 @@ dependencies = [ [[package]] name = "smooai-smooth-cli" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "atty", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "smooai-smooth-code" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "async-trait", @@ -4842,7 +4842,7 @@ dependencies = [ [[package]] name = "smooai-smooth-daemon" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "async-trait", @@ -4882,7 +4882,7 @@ dependencies = [ [[package]] name = "smooai-smooth-diver" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "axum 0.8.8", @@ -4902,7 +4902,7 @@ dependencies = [ [[package]] name = "smooai-smooth-goalie" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "bytes", @@ -4923,7 +4923,7 @@ dependencies = [ [[package]] name = "smooai-smooth-operator" -version = "1.22.13" +version = "0.23.0" source = "git+https://github.com/SmooAI/smooth-operator.git?rev=56617729#56617729ec1c1f21cefa096aa6da229b58e3c96c" dependencies = [ "anyhow", @@ -4953,7 +4953,7 @@ dependencies = [ [[package]] name = "smooai-smooth-operator-adapter-memory" -version = "1.22.13" +version = "0.23.0" source = "git+https://github.com/SmooAI/smooth-operator.git?rev=56617729#56617729ec1c1f21cefa096aa6da229b58e3c96c" dependencies = [ "anyhow", @@ -4993,7 +4993,7 @@ dependencies = [ [[package]] name = "smooai-smooth-operator-ingestion" -version = "1.22.13" +version = "0.23.0" source = "git+https://github.com/SmooAI/smooth-operator.git?rev=56617729#56617729ec1c1f21cefa096aa6da229b58e3c96c" dependencies = [ "anyhow", @@ -5014,7 +5014,7 @@ dependencies = [ [[package]] name = "smooai-smooth-operator-server" -version = "1.22.13" +version = "0.23.0" source = "git+https://github.com/SmooAI/smooth-operator.git?rev=56617729#56617729ec1c1f21cefa096aa6da229b58e3c96c" dependencies = [ "anyhow", @@ -5039,7 +5039,7 @@ dependencies = [ [[package]] name = "smooai-smooth-pearls" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "async-trait", @@ -5058,7 +5058,7 @@ dependencies = [ [[package]] name = "smooai-smooth-policy" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "chrono", @@ -5074,7 +5074,7 @@ dependencies = [ [[package]] name = "smooai-smooth-tmux" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "tempfile", @@ -5083,7 +5083,7 @@ dependencies = [ [[package]] name = "smooai-smooth-tools" -version = "0.22.0" +version = "0.23.0" dependencies = [ "anyhow", "async-trait", @@ -5102,7 +5102,7 @@ dependencies = [ [[package]] name = "smooai-smooth-web" -version = "0.22.0" +version = "0.23.0" dependencies = [ "axum 0.8.8", "axum-extra", diff --git a/Cargo.toml b/Cargo.toml index f6653c029..29338081c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = ["crates/*"] exclude = ["crates/smooth-bigsmooth/tests/fixtures"] [workspace.package] -version = "0.22.0" +version = "0.23.0" edition = "2021" license = "MIT" repository = "https://github.com/SmooAI/smooth" @@ -208,22 +208,22 @@ prost-types = "0.13" # `post_call(&mut ToolResult)` redaction seam). narc-judge + auto-mode re-home # onto this engine as ToolHooks via the new `.tool_hooks(…)` seam (th-3119e3). smooth-operator = { version = "0.16.2", package = "smooai-smooth-operator-core" } -smooth-operator-server = { git = "https://github.com/SmooAI/smooth-operator.git", rev = "56617729", package = "smooai-smooth-operator-server", default-features = false } -smooth-operator-svc = { git = "https://github.com/SmooAI/smooth-operator.git", rev = "56617729", package = "smooai-smooth-operator", default-features = false } +smooth-operator-server = { version = "0.23.0", git = "https://github.com/SmooAI/smooth-operator.git", rev = "56617729", package = "smooai-smooth-operator-server", default-features = false } +smooth-operator-svc = { version = "0.23.0", git = "https://github.com/SmooAI/smooth-operator.git", rev = "56617729", package = "smooai-smooth-operator", default-features = false } # smooth-owned coding-harness extensions to the generic engine (re-homed from # the engine when it went generic at 0.14.0). See crates/smooth-cast. -smooth-cast = { version = "0.22.0", path = "crates/smooth-cast", package = "smooai-smooth-cast" } -smooth-policy = { path = "crates/smooth-policy", version = "0.22.0", package = "smooai-smooth-policy" } -smooth-web = { version = "0.22.0", path = "crates/smooth-web", package = "smooai-smooth-web" } -smooth-code = { version = "0.22.0", path = "crates/smooth-code", package = "smooai-smooth-code" } -smooth-pearls = { path = "crates/smooth-pearls", version = "0.22.0", package = "smooai-smooth-pearls" } -smooth-diver = { version = "0.22.0", path = "crates/smooth-diver", package = "smooai-smooth-diver" } -smooth-tmux = { version = "0.22.0", path = "crates/smooth-tmux", package = "smooai-smooth-tmux" } -smooth-api-client = { version = "0.22.0", path = "crates/smooth-api-client", package = "smooai-smooth-api-client" } +smooth-cast = { version = "0.23.0", path = "crates/smooth-cast", package = "smooai-smooth-cast" } +smooth-policy = { path = "crates/smooth-policy", version = "0.23.0", package = "smooai-smooth-policy" } +smooth-web = { version = "0.23.0", path = "crates/smooth-web", package = "smooai-smooth-web" } +smooth-code = { version = "0.23.0", path = "crates/smooth-code", package = "smooai-smooth-code" } +smooth-pearls = { path = "crates/smooth-pearls", version = "0.23.0", package = "smooai-smooth-pearls" } +smooth-diver = { version = "0.23.0", path = "crates/smooth-diver", package = "smooai-smooth-diver" } +smooth-tmux = { version = "0.23.0", path = "crates/smooth-tmux", package = "smooai-smooth-tmux" } +smooth-api-client = { version = "0.23.0", path = "crates/smooth-api-client", package = "smooai-smooth-api-client" } # Chat-first Big Smooth daemon on the smooth-operator LocalServer engine (th-7225f9). -smooth-daemon = { version = "0.22.0", path = "crates/smooth-daemon", package = "smooai-smooth-daemon" } -smooth-tools = { version = "0.22.0", path = "crates/smooth-tools", package = "smooai-smooth-tools" } -smooth-goalie = { version = "0.22.0", path = "crates/smooth-goalie", package = "smooai-smooth-goalie" } +smooth-daemon = { version = "0.23.0", path = "crates/smooth-daemon", package = "smooai-smooth-daemon" } +smooth-tools = { version = "0.23.0", path = "crates/smooth-tools", package = "smooai-smooth-tools" } +smooth-goalie = { version = "0.23.0", path = "crates/smooth-goalie", package = "smooai-smooth-goalie" } # Cross-runtime client shared library (github.com/SmooAI/client-shared). # SMOODEV-1464: switched from a local `path = "../client-shared/rust"` dep to # a rev-pinned git dep. The path form only resolved on a dev laptop, so every diff --git a/package.json b/package.json index 6f38c5b6b..a6c461452 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@smooai/smooth", - "version": "0.22.0", + "version": "0.23.0", "description": "Security-first AI agent orchestration platform", "homepage": "https://github.com/SmooAI/smooth#readme", "bugs": {