diff --git a/README.md b/README.md index 2616c47..06045be 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [中文说明](./README_zh.md)

- TIA Studio Claw Overview + TIA Studio assistants and channel bindings overview

@@ -26,29 +26,43 @@ TIA (short for "This Is AI") Studio is an Electron-based desktop app built to ma At the same time, TIA Studio is a full-featured assistant app. You can chat with a single assistant, coordinate a team of assistants, organize threaded work, and manage channels from one local-first desktop workspace. +It also gives you a dedicated operations layer for model providers, security and privacy guardrails, browsing automation, MCP servers, coding runtimes, cron jobs, and heartbeat-driven follow-up work. + Today, TIA Studio supports Discord, Lark, Telegram, WhatsApp, Wecom, and Wechat-KF channels, with more channels planned next. ### Channel Support -| Channel | Direct Chat | Group Chat | Group Trigger | -| ------- | ----------- | ---------- | ------------- | -| Discord | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | -| Lark | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | -| Telegram | ✅ | 🚫 | Group support is currently disabled | -| WhatsApp | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | -| Wecom | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | -| Wechat-KF | ✅ | 🚫 | Not applicable for relay-backed 1:1 customer sessions | +| Channel | Direct Chat | Group Chat | Group Trigger | +| --------- | ----------- | ---------- | ----------------------------------------------------- | +| Discord | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | +| Lark | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | +| Telegram | ✅ | 🚫 | Group support is currently disabled | +| WhatsApp | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | +| Wecom | ✅ | ✅ | Replies only when the bot is `@` mentioned by default | +| Wechat-KF | ✅ | 🚫 | Not applicable for relay-backed 1:1 customer sessions | For more, check [CHANNEL.md](./CHANNEL.md). -## Full Assistant Workspace +## Screenshot Tour + +When you want more than channel-connected automation, TIA Studio gives you a full desktop workspace for assistants, teams, threads, and local operations. + +### Configure assistants without leaving the workspace + +

+ TIA Studio assistant configuration with coding subagents +

-When you want more than channel-connected automation, TIA Studio also gives you the full desktop workspace for assistants, teams, threads, and operations. +Configure assistants in-place, including channels, tools, skills, activity, and workspace-backed coding subagents powered by Codex ACP or Claude Agent ACP. + +### Security and privacy controls

- TIA Studio Assistant Workspace + TIA Studio security and privacy settings

+Enable prompt injection detection, PII redaction, and a shared guardrail provider from the desktop settings surface when you need stronger controls around assistant traffic. + ## Architecture TIA Studio is built on a carefully selected stack that prioritizes developer experience and maintainability: @@ -110,16 +124,15 @@ That means adapting an assistant into a claw does **not** fork its identity: ## Features -- 🦾 Easy-to-run local claws when an assistant is paired with a channel -- 🤖 Full-featured AI assistant workspace with multiple assistants -- 👥 Teams for coordinating assistants in one workspace -- 📡 Channels that connect assistants to real conversations -- ✅ Discord, Lark, Telegram, WhatsApp, Wecom, and Wechat-KF support available today -- 🚧 More channels coming soon -- 💬 Thread-based conversation management -- 🎨 Clean, dark-themed interface -- 🔒 Local-first architecture -- ⚡ Fast, native desktop performance +- Assistant-first local workspace with thread-based chat, workspace roots, attachments, and in-place configuration +- Team workspaces with shared threads and live run status +- Claws surface for assistant creation, channel binding, pairing, setup, activation, heartbeat monitoring, and cron monitoring +- Channel adapters for Discord, Lark, Telegram, WhatsApp, Wecom, and Wechat-KF +- Provider management for OpenAI-compatible models, OpenAI Responses, OpenRouter, Gemini, Anthropic, Ollama, Codex ACP, and Claude Agent ACP +- Workspace-backed coding subagents using Codex ACP and Claude Agent ACP +- Built-in browser automation controls, browsing settings, and MCP server management +- Prompt injection detection and PII redaction guardrails with configurable provider selection +- Local-first Electron desktop app with no required cloud control plane ## Security diff --git a/docs/screenshots/assistant-coding.png b/docs/screenshots/assistant-coding.png new file mode 100644 index 0000000..a1f20fe Binary files /dev/null and b/docs/screenshots/assistant-coding.png differ diff --git a/docs/screenshots/claws-overview.png b/docs/screenshots/claws-overview.png new file mode 100644 index 0000000..5c3d065 Binary files /dev/null and b/docs/screenshots/claws-overview.png differ diff --git a/docs/screenshots/settings-security.png b/docs/screenshots/settings-security.png new file mode 100644 index 0000000..563203a Binary files /dev/null and b/docs/screenshots/settings-security.png differ diff --git a/src/main/mastra/model-resolver.test.ts b/src/main/mastra/model-resolver.test.ts index ce7a6a2..e927c3b 100644 --- a/src/main/mastra/model-resolver.test.ts +++ b/src/main/mastra/model-resolver.test.ts @@ -154,6 +154,8 @@ describe('resolveModel', () => { }) it('resolves codex-acp models with the workspace cwd', () => { + const acpWorkingDirectory = '/tmp/project' + const acpHomeDirectory = '/tmp/acp-home' const languageModel = { specificationVersion: 'v3' as const, provider: 'acp', @@ -177,8 +179,8 @@ describe('resolveModel', () => { }, factories, { - acpWorkingDirectory: '/tmp/project', - acpHomeDirectory: '/tmp/acp-home' + acpWorkingDirectory, + acpHomeDirectory } ) @@ -191,11 +193,11 @@ describe('resolveModel', () => { expect.objectContaining({ command: 'codex-acp', env: expect.objectContaining({ - CODEX_HOME: '/tmp/acp-home' + CODEX_HOME: path.resolve(acpHomeDirectory) }), persistSession: true, session: { - cwd: '/tmp/project', + cwd: acpWorkingDirectory, mcpServers: [] } })