Skip to content
Merged
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
237 changes: 164 additions & 73 deletions README.md

Large diffs are not rendered by default.

440 changes: 439 additions & 1 deletion apps/website/src/lib/public-copy.spec.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion libs/a2ui/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @threadplane/a2ui

The A2UI (Agent-to-UI) protocol type system and parsing/resolution utilities for TypeScript, targeting the **A2UI v0.9.1 stable release**. Defines the wire format agents use to drive generative UI surfaces — framework-agnostic, no Angular dependency, runs in any TypeScript environment.
The A2UI (Agent-to-UI) protocol layer behind generative UI in [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular, targeting the **A2UI v0.9.1 stable release**. It defines the wire format an agent uses to drive a UI surface, plus the parser and resolver that read it — framework-agnostic, pure TypeScript, no Angular dependency, usable in any TypeScript environment.

<p align="center">
<a href="https://www.npmjs.com/package/@threadplane/a2ui">
Expand Down
1 change: 1 addition & 0 deletions libs/a2ui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@threadplane/a2ui",
"version": "0.0.65",
"description": "A2UI protocol types, streaming parser, and dynamic-value resolver for agent-generated UI. Pure TypeScript.",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
4 changes: 2 additions & 2 deletions libs/ag-ui/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @threadplane/ag-ui

Adapter that wraps an [AG-UI](https://github.com/ag-ui-protocol/ag-ui) `AbstractAgent` into the runtime-neutral `Agent` contract from `@threadplane/chat`. Works with any AG-UI-compatible backend.
The AG-UI adapter for [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular. Wraps an [AG-UI](https://github.com/ag-ui-protocol/ag-ui) `AbstractAgent` into the runtime-neutral `Agent` contract that `@threadplane/chat` consumes, so any AG-UI-compatible backend drives the same chat surface.

<p align="center">
<a href="https://www.npmjs.com/package/@threadplane/ag-ui">
Expand Down Expand Up @@ -32,7 +32,7 @@ Part of [Threadplane](https://github.com/cacheplane/angular-agent-framework).
## Install

```bash
npm install @threadplane/ag-ui @threadplane/chat @ag-ui/client @ag-ui/core marked
npm install @threadplane/chat @threadplane/ag-ui @ag-ui/client @ag-ui/core marked
```

**Peer dependencies:** `@threadplane/chat: *`, `@angular/core: ^20.0.0 || ^21.0.0 || ^22.0.0`, `@ag-ui/client: *`, `@ag-ui/core: *`, `rxjs: ~7.8.0`
Expand Down
2 changes: 1 addition & 1 deletion libs/ag-ui/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@threadplane/ag-ui",
"version": "0.0.65",
"description": "AG-UI protocol adapter for @threadplane/chat — works with any AG-UI-compatible backend.",
"description": "AG-UI adapter for the Angular AI agent UI — connect any AG-UI-compatible backend to the same chat surface.",
"keywords": [
"angular",
"ag-ui",
Expand Down
4 changes: 1 addition & 3 deletions libs/chat/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# @threadplane/chat

Drop-in agent chat UI for Angular 20–22. Headless UI primitives plus opinionated compositions that read a runtime-neutral `Agent` contract — ship a production chat surface in days without coupling to a specific backend.

Part of [Threadplane](https://github.com/cacheplane/angular-agent-framework).
The chat surface of [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular. Headless primitives plus opinionated compositions read a runtime-neutral `Agent` contract, so the UI is built once and runs over LangGraph or AG-UI without changes. Angular 20–22, on Signals and DI.

<p>
<a href="https://www.npmjs.com/package/@threadplane/chat">
Expand Down
1 change: 1 addition & 0 deletions libs/chat/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@threadplane/chat",
"version": "0.0.65",
"description": "The Angular AI agent chat UI: <chat>, headless primitives, interrupts, subagents, and generative UI on Signals.",
"exports": {
"./chat.css": "./chat.css",
"./themes/default-dark.css": "./themes/default-dark.css",
Expand Down
6 changes: 4 additions & 2 deletions libs/langgraph/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @threadplane/langgraph

Adapter that wraps a LangGraph agent into the runtime-neutral `Agent` contract from `@threadplane/chat`. The Angular equivalent of LangGraph's React `useStream()` hook signal-driven access to messages, status, tool calls, interrupts, subagents, branch history, and thread persistence.
The LangGraph adapter for [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular. Wraps a LangGraph agent into the runtime-neutral `Agent` contract that `@threadplane/chat` consumes — the Angular counterpart to LangGraph's React `useStream()` hook, with signal-driven access to messages, status, tool calls, interrupts, subagents, branch history, and thread persistence.

<p align="center">
<a href="https://www.npmjs.com/package/@threadplane/langgraph">
Expand All @@ -27,7 +27,7 @@ Adapter that wraps a LangGraph agent into the runtime-neutral `Agent` contract f
## Install

```bash
npm install @threadplane/langgraph @threadplane/chat @langchain/core @langchain/langgraph-sdk
npm install @threadplane/chat @threadplane/langgraph @langchain/core @langchain/langgraph-sdk marked
```

**Peer dependencies:**
Expand All @@ -40,6 +40,8 @@ npm install @threadplane/langgraph @threadplane/chat @langchain/core @langchain/
rxjs ~7.8.0
```

`marked` is the markdown parser peer that `@threadplane/chat` requires when assistant messages are rendered through `<chat>`.

## Quick start

Configure the LangGraph endpoint once in `app.config.ts`:
Expand Down
2 changes: 1 addition & 1 deletion libs/langgraph/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@threadplane/langgraph",
"version": "0.0.65",
"description": "LangGraph adapter for @threadplane/chat — Angular bindings for LangGraph Platform.",
"description": "LangGraph adapter for the Angular AI agent UI — provideAgent()/injectAgent() expose a run as Angular Signals.",
"keywords": [
"angular",
"langgraph",
Expand Down
5 changes: 3 additions & 2 deletions libs/middleware/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# @threadplane/middleware

Backend middleware for the [Threadplane](https://github.com/cacheplane/angular-agent-framework)
client-tools capability — frontend-declared tools the model calls and the browser executes.
The backend half of client tools in [Threadplane](https://github.com/cacheplane/angular-agent-framework),
the AI agent UI framework for Angular. Client tools are declared in the browser: the model
calls them, and the browser executes them.

The `@threadplane/middleware/langgraph` entrypoint is the LangGraph.js twin of the Python
`threadplane-middleware` package: it binds client-declared tool stubs onto your model and
Expand Down
2 changes: 1 addition & 1 deletion libs/middleware/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@threadplane/middleware",
"version": "0.0.2",
"description": "Backend middleware for the Threadplane client-tools capability. The /langgraph entrypoint targets LangGraph.js.",
"description": "Backend middleware for Threadplane client tools — the model calls, the browser executes. LangGraph.js entrypoint.",
"keywords": ["langgraph", "agent", "client-tools", "middleware", "threadplane"],
"license": "MIT",
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion libs/render/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @threadplane/render

`@json-render/core`-backed Angular render engine — maps JSON specs to Angular components via a registry, used internally by `@threadplane/chat` for generative-UI rendering.
The generative-UI render engine of [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular. `@json-render/core`-backed: it maps a JSON spec to Angular components through a registry you define, so agent-generated UI can only render the design-system components you registered. `@threadplane/chat` uses it for generative UI.

<p>
<a href="https://www.npmjs.com/package/@threadplane/render">
Expand Down
1 change: 1 addition & 0 deletions libs/render/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@threadplane/render",
"version": "0.0.65",
"description": "Angular render engine for agent-generated UI: maps JSON specs onto your own design-system components.",
"peerDependencies": {
"@angular/core": "^20.0.0 || ^21.0.0 || ^22.0.0",
"@angular/common": "^20.0.0 || ^21.0.0 || ^22.0.0",
Expand Down
25 changes: 15 additions & 10 deletions libs/telemetry/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# @threadplane/telemetry

Explicit, opt-in telemetry helpers for Threadplane applications. Installing this
package does not execute telemetry code or make network requests.
Explicit capture helpers for applications built with
[Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI
agent UI framework for Angular. Every send is one the application asked for:
this package has no ambient collection path.

<p align="center">
<a href="https://www.npmjs.com/package/@threadplane/telemetry">
Expand All @@ -15,19 +17,22 @@ package does not execute telemetry code or make network requests.
</a>
</p>

## Trust contract
## How sending works

- **Installation is inert.** The package has no install lifecycle scripts.
- **Browser telemetry is opt-in.** It stays disabled unless an application calls
`provideThreadplaneTelemetry({ enabled: true })`.
- **Node telemetry is explicit.** An event is sent only when application code
- **No install lifecycle scripts.** The manifest declares none, so `npm install`
runs no code from this package.
- **The browser service starts disabled.** It sends nothing until an application
calls `provideThreadplaneTelemetry({ enabled: true })`.
- **Node capture is explicit.** An event is sent only where application code
calls a capture helper.
- **Disable controls win.** `TPLANE_TELEMETRY_DISABLED`, `DO_NOT_TRACK`, CI
detection, or `disableTelemetry()` prevent sends before a network call.
- **Point it anywhere.** `TPLANE_TELEMETRY_INGEST_URL`, or an `endpoint` or
`sink` on the browser provider, routes events to infrastructure you control.

Threadplane telemetry never collects message content, prompts, completions, tool
inputs or outputs, credentials, project paths, raw environment variables, or
personally identifiable information.
The event categories, purposes, and retention that apply to Threadplane's own
properties are described at
[threadplane.ai/privacy](https://threadplane.ai/privacy).

## Install

Expand Down
1 change: 1 addition & 0 deletions libs/telemetry/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@threadplane/telemetry",
"version": "0.0.65",
"description": "Explicit Node and browser capture helpers for Angular AI agent applications that choose to send events.",
"license": "MIT",
"publishConfig": {
"access": "public"
Expand Down
4 changes: 4 additions & 0 deletions libs/telemetry/scripts/assemble-dist.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ export function createCanonicalPackageJson(srcPkg) {
const out = {
name: srcPkg.name,
version: srcPkg.version,
// The npm page's subtitle. This manifest is an allowlist, so a field left
// out here is a field that never ships, however carefully it is authored
// in libs/telemetry/package.json.
description: srcPkg.description,
license: srcPkg.license,
publishConfig: srcPkg.publishConfig,
repository: srcPkg.repository,
Expand Down
Loading