Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions .changeset/chatfirst-bigsmooth.md

This file was deleted.

25 changes: 0 additions & 25 deletions .changeset/daemon-tool-hooks.md

This file was deleted.

15 changes: 0 additions & 15 deletions .changeset/named-th-tools.md

This file was deleted.

62 changes: 62 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
32 changes: 16 additions & 16 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 14 additions & 14 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
Loading