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/dotnet-identity-intake.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/python-identity-intake.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
attribute. (Keep the element-form version out of comments: the sync regex
replaces the first element-form match in the file.) -->
<PackageId>SmooAI.SmoothOperator.Server.AspNetCore</PackageId>
<Version>1.55.1</Version>
<Version>1.55.2</Version>
<Authors>SmooAI</Authors>
<PackageTags>ai;agent;llm;chat;smooth-operator;server;aspnetcore;websocket;smooai</PackageTags>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
attribute. (Keep the element-form version out of comments: the sync regex
replaces the first element-form match in the file.) -->
<PackageId>SmooAI.SmoothOperator.Server.Postgres</PackageId>
<Version>1.55.1</Version>
<Version>1.55.2</Version>
<Authors>SmooAI</Authors>
<PackageTags>ai;agent;llm;chat;smooth-operator;server;postgres;pgvector;smooai</PackageTags>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
2 changes: 1 addition & 1 deletion dotnet/server/src/SmooAI.SmoothOperator.Server.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
scripts/sync-versions.mjs (do NOT confuse with the SmooAI.SmoothOperator.Core
PackageReference version below, which tracks the separately-published engine). -->
<PackageId>SmooAI.SmoothOperator.Server</PackageId>
<Version>1.55.1</Version>
<Version>1.55.2</Version>
<Authors>SmooAI</Authors>
<PackageTags>ai;agent;llm;chat;smooth-operator;server;websocket;smooai</PackageTags>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
7 changes: 7 additions & 0 deletions examples/web-chat/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# @smooai/smooth-operator-web-chat-example

## 0.0.100

### Patch Changes

- Updated dependencies [6120535]
- @smooai/smooth-operator@1.55.2

## 0.0.99

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion examples/web-chat/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@smooai/smooth-operator-web-chat-example",
"version": "0.0.99",
"version": "0.0.100",
"private": true,
"description": "A smooth-web-like Vite + React chat client that drives a running smooth-operator server over its WebSocket protocol β€” token streaming, inline tool-call/result blocks, a conversation sidebar, and oldest-first history, all on top of the published @smooai/smooth-operator SDK.",
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion go/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ package e2e
// language artifacts. The real Go "publish" is a git tag (go/v<Version>); this
// constant is the anchor that scripts/sync-versions.mjs keeps in sync with the
// canonical npm version on every changeset release.
const Version = "1.55.1"
const Version = "1.55.2"
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "smooai-smooth-operator"
version = "1.55.1"
version = "1.55.2"
description = "Python protocol types and native async WebSocket client for the smooth-operator protocol. Generated from the language-neutral JSON Schemas in spec/."
readme = "README.md"
license = { text = "MIT" }
Expand Down
2 changes: 1 addition & 1 deletion python/server/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "smooai-smooth-operator-server"
version = "1.55.1"
version = "1.55.2"
description = "Native async WebSocket server for the smooth-operator protocol β€” parity with the Rust and C# reference servers, consuming the in-process smooai-smooth-operator-core engine."
readme = "README.md"
license = { text = "MIT" }
Expand Down
16 changes: 8 additions & 8 deletions rust/Cargo.lock

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

2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ smooai-smooth-operator-core = "1.10.0"
# Intra-workspace dep on the reference lib carries its version so the adapters /
# ingestion / server that depend on it are publishable (path = local dev,
# version = the crates.io requirement).
smooth-operator = { package = "smooai-smooth-operator", path = "smooth-operator", version = "1.55.1" }
smooth-operator = { package = "smooai-smooth-operator", path = "smooth-operator", version = "1.55.2" }

async-trait = "0.1"
anyhow = "1"
Expand Down
2 changes: 1 addition & 1 deletion rust/adapters/backplane-nats/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-adapter-backplane-nats"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion rust/adapters/backplane-redis/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-adapter-backplane-redis"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down
4 changes: 2 additions & 2 deletions rust/adapters/dynamodb/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-adapter-dynamodb"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand All @@ -19,7 +19,7 @@ s3-vectors = ["dep:aws-sdk-s3vectors", "dep:aws-smithy-types"]
smooth-operator = { workspace = true }
smooai-smooth-operator-core = { workspace = true }
# IndexingStore / IndexingRun for the persistent admin indexing-runs store.
smooai-smooth-operator-ingestion = { path = "../../ingestion", version = "1.55.1" }
smooai-smooth-operator-ingestion = { path = "../../ingestion", version = "1.55.2" }
async-trait = { workspace = true }
anyhow = { workspace = true }
chrono = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion rust/adapters/in-memory/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-adapter-memory"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down
4 changes: 2 additions & 2 deletions rust/adapters/postgres/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-adapter-postgres"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand All @@ -15,7 +15,7 @@ smooth-operator = { workspace = true }
# `postgres` feature pulls in PostgresCheckpointStore (sync r2d2 path).
smooai-smooth-operator-core = { workspace = true, features = ["postgres"] }
# IndexingStore / IndexingRun for the persistent admin indexing-runs store.
smooai-smooth-operator-ingestion = { path = "../../ingestion", version = "1.55.1" }
smooai-smooth-operator-ingestion = { path = "../../ingestion", version = "1.55.2" }
async-trait = { workspace = true }
anyhow = { workspace = true }
chrono = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion rust/ingestion/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-ingestion"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down
14 changes: 7 additions & 7 deletions rust/smooth-operator-server/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator-server"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down Expand Up @@ -35,22 +35,22 @@ smooth-operator = { workspace = true }
smooai-smooth-operator-core = { workspace = true }
# In-memory storage + backplane β€” ALWAYS included. The local-flavor default and
# the lean (`--no-default-features`) build run entirely on these.
smooai-smooth-operator-adapter-memory = { path = "../adapters/in-memory", version = "1.55.1" }
smooai-smooth-operator-adapter-memory = { path = "../adapters/in-memory", version = "1.55.2" }
# Persistent storage + admin-store backends, selected at runtime to match the
# configured storage backend (Postgres / DynamoDB; default in-memory). Optional:
# gated behind the `postgres` / `dynamodb` features so a lean local/embed build
# can exclude tokio-postgres / the AWS SDK. The `postgres` crate also provides the
# gateway-backed embedder/reranker, so the `postgres` feature additionally enables
# the semantic-retrieval path in `embedder.rs` / `reranker.rs`.
smooai-smooth-operator-adapter-postgres = { path = "../adapters/postgres", version = "1.55.1", optional = true }
smooai-smooth-operator-adapter-dynamodb = { path = "../adapters/dynamodb", version = "1.55.1", optional = true }
smooai-smooth-operator-adapter-postgres = { path = "../adapters/postgres", version = "1.55.2", optional = true }
smooai-smooth-operator-adapter-dynamodb = { path = "../adapters/dynamodb", version = "1.55.2", optional = true }
# Distributed Backplane backends for horizontal scale-out, selected at runtime
# via SMOOTH_AGENT_BACKPLANE (default in-memory / single-process). Optional: gated
# behind the `redis` / `nats` features so a lean build excludes their drivers.
smooai-smooth-operator-adapter-backplane-redis = { path = "../adapters/backplane-redis", version = "1.55.1", optional = true }
smooai-smooth-operator-adapter-backplane-nats = { path = "../adapters/backplane-nats", version = "1.55.1", optional = true }
smooai-smooth-operator-adapter-backplane-redis = { path = "../adapters/backplane-redis", version = "1.55.2", optional = true }
smooai-smooth-operator-adapter-backplane-nats = { path = "../adapters/backplane-nats", version = "1.55.2", optional = true }
# Admin API surfaces indexing-run status via the ingestion crate's IndexingStore.
smooai-smooth-operator-ingestion = { path = "../ingestion", version = "1.55.1" }
smooai-smooth-operator-ingestion = { path = "../ingestion", version = "1.55.2" }

async-trait = { workspace = true }
anyhow = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion rust/smooth-operator/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "smooai-smooth-operator"
version = "1.55.1"
version = "1.55.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
Expand Down
28 changes: 28 additions & 0 deletions typescript/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
# @smooai/smooth-operator

## 1.55.2

### Patch Changes

- 6120535: dotnet-server: port the `identity_intake` Rich Interaction kind + add the kind-routed host-effect seam.

The .NET server now hosts a second Rich Interaction kind alongside `choices`:
`identity_intake` (structured name/email/phone lead capture, capability `identity_form`).
It mirrors the Rust reference: the `request_identity_intake` raise tool, a server-side
validator (required-field presence, email shape, phone β†’ E.164 normalization, per-field
errors reported one-pass), and the conversational fallback directive for text-only channels.

This wave also adds the one framework piece the `choices` wave omitted: a **kind-agnostic
host-effect seam**. `IInteractionKind` gains an optional `ApplyEffect` hook (no-op default,
so `choices` is unaffected); the caller resolves the kind from the DI-provided
`InteractionCatalog` and runs its effect without knowing which kind it is. It fires on BOTH
submit paths β€” the rich `submit_interaction` frame (`FrameDispatcher`) and the generic
`submit_interaction` tool (the conversational fallback, wired through the turn runner).
`identity_intake`'s effect stamps the captured, normalized contact onto a session-keyed
in-memory overlay (`SessionIdentityRegistry`) β€” the C# analog of the Rust reference's
in-memory session metadata (`userName` / `contactEmail` / `contactPhone`) β€” which the OTP
contact seam now reads alongside the create-session email, so a captured email/phone (phone β†’
SMS) becomes OTP-contactable on the next turn.

Tests: validator unit tests (+ shared-fixture cross-check against the Rust reference) and WS
park/resume integration tests on both the rich and conversational-fallback paths that assert
the host effect stamped the session and left it OTP-contactable.

## 1.55.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion typescript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@smooai/smooth-operator",
"version": "1.55.1",
"version": "1.55.2",
"description": "TypeScript SDK for the smooth-operator WebSocket protocol: the native client (`.`), React bindings (`./react`), and the embeddable web-component chat widget (`./widget`). Generated from the language-neutral JSON Schemas in spec/.",
"license": "MIT",
"type": "module",
Expand Down
10 changes: 10 additions & 0 deletions typescript/server/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# @smooai/smooth-operator-server

## 1.15.1

### Patch Changes

- af092bf: Port the `identity_intake` Rich Interaction kind to the Python server, plus the kind-routed host-effect seam the `choices` wave omitted.

`identity_intake` is structured name/email/phone lead capture β€” the second interaction kind (after `choices`), mirroring the Rust reference. Its `request_identity_intake` raise tool (`{ fields, reason }`) parks the turn on channels that declare the `identity_form` capability and degrades to a conversational directive on text-only channels; both paths run one server-side validator (required fields present, email shape, phone normalized to E.164, per-field errors) and resume with the same canonical payload.

New framework piece: a kind-agnostic **host effect** (`InteractionKind.host_effect`, a no-op by default) fires on a valid submit on BOTH paths β€” the dispatcher's `submit_interaction` action and the conversational-fallback `submit_interaction` tool. `identity_intake` overrides it to stamp the captured contacts onto the session (`user_name` / `contact_email` / `contact_phone` β€” the same keys the pre-chat create path stashes and the OTP contact seam reads), so a captured contact is immediately OTP-verifiable (email and/or SMS). `choices` is unaffected. Registered in the default interaction catalog alongside `choices`.

## 1.15.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion typescript/server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@smooai/smooth-operator-server",
"version": "1.15.0",
"version": "1.15.1",
"private": true,
"description": "Native TypeScript smooth-operator server: a WebSocket service that speaks the smooth-operator wire protocol and runs the @smooai/smooth-operator-core engine in-process per turn. The TS sibling of the Rust (rust/smooth-operator-server) and C# (dotnet/server) servers; the client lives in ../src and is untouched.",
"license": "MIT",
Expand Down
Loading