Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
20de8a8
add session-level auto-approve for AI file read operations
programista-wordpress Mar 21, 2026
03ae5bd
fix: handle Windows path separators in directory extraction
programista-wordpress Mar 21, 2026
0ab2969
fix: block sensitive directories from session auto-approval
programista-wordpress Mar 21, 2026
42a16e7
fix: canonicalize paths with symlink resolution to prevent bypass
programista-wordpress Mar 21, 2026
12f4861
feat: add MCP (Model Context Protocol) client package
programista-wordpress Mar 22, 2026
85eb4b0
feat: integrate MCP with AI chat pipeline
programista-wordpress Mar 22, 2026
f7f72c6
feat: MCP Context toggle and auto-detect in AI panel
programista-wordpress Mar 22, 2026
69c7e84
feat: MCP Client widget with tools panel and call log
programista-wordpress Mar 22, 2026
92c9603
feat: web content tools - read text, read HTML, SEO audit
programista-wordpress Mar 22, 2026
0e6a6bc
feat: session history - persist and display previous AI sessions
programista-wordpress Mar 22, 2026
dd7f3d8
feat: AI execution plans with progress tracking
programista-wordpress Mar 22, 2026
b4c8402
feat: project instructions reader (WAVE.md, CLAUDE.md, .cursorrules)
programista-wordpress Mar 22, 2026
b02b7f6
perf: compress tool descriptions and consolidate utility tools
programista-wordpress Mar 22, 2026
df51b85
fix: syntax highlighting in AI diff viewer
programista-wordpress Mar 22, 2026
7a0db93
feat: Quick Add Model with BYOK presets
programista-wordpress Mar 22, 2026
f6d1e4f
feat: graceful shutdown for MCP clients and session history save
programista-wordpress Mar 22, 2026
7df705f
fix: improve AI message handling and shell command detection
programista-wordpress Mar 22, 2026
54da2fc
docs: update README with MCP, web tools, plans, session history, and …
programista-wordpress Mar 22, 2026
ce1f244
feat: improve AI quality - project stack context, detailed plans, pro…
programista-wordpress Mar 22, 2026
7c39a6b
security: sanitize WebSelector opts in RPC handler
programista-wordpress Mar 22, 2026
e2b0558
fix: use error banner instead of API key input for Ollama connection …
programista-wordpress Mar 22, 2026
e189c5a
fix: only send mcpcwd when MCP context is enabled
programista-wordpress Mar 22, 2026
d1532e5
a11y: add switch role and aria-label to toggle buttons
programista-wordpress Mar 22, 2026
776abcb
fix: prevent panic on missing step_id in plan_update
programista-wordpress Mar 22, 2026
5aa0c87
fix: remove hardcoded tool names and approval language from system pr…
programista-wordpress Mar 22, 2026
e17cc55
fix: kill MCP process on read timeout to prevent goroutine leak
programista-wordpress Mar 22, 2026
4b32276
brand: introduce Wove - AI-first terminal built on Wave engine
programista-wordpress Mar 22, 2026
669c647
brand: rename to Wove - AI-first terminal
programista-wordpress Mar 22, 2026
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
78 changes: 78 additions & 0 deletions MODIFICATIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Wove — Modifications from Wave Terminal

Wove is built on the [Wave Terminal](https://github.com/wavetermdev/waveterm) engine (Apache 2.0).
This document lists all modifications and additions made in Wove.

## MCP (Model Context Protocol) Integration
- Full MCP client package (`pkg/mcpclient/`) — JSON-RPC 2.0 over stdio
- Auto-detect `.mcp.json` in terminal CWD with connect banner
- MCP tools registered as AI tools — model queries database, searches docs, reads logs
- MCP auto-context injection (database schema, application info)
- MCP Client widget in sidebar with tools list, call log, and Run button
- MCP Context toggle in AI panel header

## AI Planning System
- Multi-step execution plans with `wave_utils(action='plan_create')`
- Auto-append steps: lint, review against project conventions, write tests, run tests
- Live progress panel with expandable step results
- Plans persist to disk, survive restarts
- Detailed plan steps with file paths, conventions, and acceptance criteria

## Project Intelligence
- Reads WAVE.md, CLAUDE.md, .cursorrules, AGENTS.md automatically
- Project stack injection (tech stack in every request)
- Critical rules auto-extraction (must/always/never patterns)
- Project tree on first message (directory structure)
- Two-step project_instructions tool (table of contents → specific sections)
- Smart filtering by technology (PHP sections for .php files, etc.)

## Web Content Tools
- `web_read_text` — extract clean text by CSS selector
- `web_read_html` — extract innerHTML by CSS selector
- `web_seo_audit` — full SEO audit (JSON-LD, OG, meta, headings, alt text, links)
- `execJs` option for arbitrary JavaScript execution in webview
- Auto-refresh page before reading content
- AI Reading highlight animation on matched elements
- Page title tracking in block metadata

## Session History
- Chat history saved per tab at shutdown
- Previous Session banner in AI panel
- `session_history` tool for AI to read previous work
- Chat-to-tab mapping registry

## Auto-approve File Reading
- Session-level auto-approve for directories
- Sensitive path protection (~/.ssh, ~/.aws, .env)
- Symlink bypass prevention via canonical path resolution

## AI Model Management
- Quick Add Model menu (Claude, GPT, Gemini, MiniMax, Ollama, OpenRouter)
- Inline API key input with secure storage
- 10 built-in BYOK presets with endpoints
- Secret-based preset filtering (hide unconfigured models)
- Ollama connectivity check

## System Prompt Optimization
- "Senior software engineer" role for better code quality
- "Read sibling files before writing" pattern matching
- Self-review after each plan step
- Compressed tool descriptions (~60% fewer tokens)
- Consolidated wave_utils multi-action tool
- English-only code comments enforcement
- Terminal commands reference (grep, find, php -l, pint)

## Quality & Reliability
- Syntax highlighting fix in AI diff viewer (preserved file extensions)
- Language detection from filename (30+ extensions)
- New file diff: empty original, green additions
- Web page title in tab state (catches 500 errors)
- Default AI timeout: 90 seconds (was infinite)
- Default max output tokens: 16K (was 4K)
- Friendly error messages with Retry button
- MCP client: mutex protection, read timeout, graceful shutdown
- RPC handler input validation for WebSelector opts

## Based On
- [Wave Terminal](https://github.com/wavetermdev/waveterm) by Command Line Inc.
- Licensed under Apache License 2.0
8 changes: 7 additions & 1 deletion NOTICE
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
Copyright 2025, Command Line Inc.
Wove
Copyright 2025-2026 MITS Sp. z o.o.

Built on Wave Terminal
Copyright 2025 Command Line Inc.
Licensed under Apache License 2.0
https://github.com/wavetermdev/waveterm
238 changes: 137 additions & 101 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,117 +1,153 @@
<p align="center">
<a href="https://www.waveterm.dev">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./assets/wave-dark.png">
<source media="(prefers-color-scheme: light)" srcset="./assets/wave-light.png">
<img alt="Wave Terminal Logo" src="./assets/wave-light.png" width="240">
</picture>
</a>
<br/>
</p>
# Wove

# Wave Terminal
**The AI-first terminal for developers who code, not click.**

<div align="center">
Built on the [Wave Terminal](https://github.com/wavetermdev/waveterm) engine. Wove adds deep project intelligence, MCP integration, execution planning, and multi-model support — turning your terminal into an AI development environment.

[English](README.md) | [한국어](README.ko.md)
## Why Wove?

</div>

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwavetermdev%2Fwaveterm.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fwavetermdev%2Fwaveterm?ref=badge_shield)

Wave is an open-source, AI-integrated terminal for macOS, Linux, and Windows. It works with any AI model. Bring your own API keys for OpenAI, Claude, or Gemini, or run local models via Ollama and LM Studio. No accounts required.

Wave also supports durable SSH sessions that survive network interruptions and restarts, with automatic reconnection. Edit remote files with a built-in graphical editor and preview files inline without leaving the terminal.

![WaveTerm Screenshot](./assets/wave-screenshot.webp)
| Feature | Standard terminals | Warp | Wove |
|---|---|---|---|
| AI chat in terminal | Some | Yes | Yes |
| AI reads your database schema | No | No | **Yes (MCP)** |
| AI reads project conventions | No | Partial | **Yes (CLAUDE.md, WAVE.md)** |
| AI creates execution plans | No | Basic | **Yes (with auto-tests, lint, review)** |
| SEO audit tool | No | No | **Yes** |
| Session history across restarts | No | No | **Yes** |
| Web page content reading | No | No | **Yes (text, HTML, JS)** |
| Multi-model BYOK | Limited | Limited | **10 presets (3 clicks to add)** |
| Open source | Some | No | **Yes (Apache 2.0)** |

## Key Features

- Wave AI - Context-aware terminal assistant that reads your terminal output, analyzes widgets, and performs file operations
- Durable SSH Sessions - Remote terminal sessions survive connection interruptions, network changes, and Wave restarts with automatic reconnection
- Flexible drag & drop interface to organize terminal blocks, editors, web browsers, and AI assistants
- Built-in editor for editing remote files with syntax highlighting and modern editor features
- Rich file preview system for remote files (markdown, images, video, PDFs, CSVs, directories)
- Quick full-screen toggle for any block - expand terminals, editors, and previews for better visibility, then instantly return to multi-block view
- AI chat widget with support for multiple models (OpenAI, Claude, Azure, Perplexity, Ollama)
- Command Blocks for isolating and monitoring individual commands
- One-click remote connections with full terminal and file system access
- Secure secret storage using native system backends - store API keys and credentials locally, access them across SSH sessions
- Rich customization including tab themes, terminal styles, and background images
- Powerful `wsh` command system for managing your workspace from the CLI and sharing data between terminal sessions
- Connected file management with `wsh file` - seamlessly copy and sync files between local and remote SSH hosts

## Wave AI

Wave AI is your context-aware terminal assistant with access to your workspace:

- **Terminal Context**: Reads terminal output and scrollback for debugging and analysis
- **File Operations**: Read, write, and edit files with automatic backups and user approval
- **CLI Integration**: Use `wsh ai` to pipe output or attach files directly from the command line
- **BYOK Support**: Bring your own API keys for OpenAI, Claude, Gemini, Azure, and other providers
- **Local Models**: Run local models with Ollama, LM Studio, and other OpenAI-compatible providers
- **Free Beta**: Included AI credits while we refine the experience
- **Coming Soon**: Command execution (with approval)

Learn more in our [Wave AI documentation](https://docs.waveterm.dev/waveai) and [Wave AI Modes documentation](https://docs.waveterm.dev/waveai-modes).
### MCP Integration
Connect to any [Model Context Protocol](https://modelcontextprotocol.io/) server. Wove auto-detects `.mcp.json` in your project and gives AI direct access to your database, documentation, and logs.

```json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["mcp-server.js"]
}
}
}
```

AI automatically queries your database schema before writing SQL, checks framework docs before suggesting patterns, and reads error logs before debugging.

### AI Planning System
For code tasks, Wove creates detailed execution plans with:
- Concrete file paths and pattern references
- Auto-appended steps: lint, review against project conventions, write tests, run tests
- Live progress panel in the AI sidebar
- Plans survive restarts — pick up where you left off

### Project Intelligence
Wove reads your project's coding conventions (WAVE.md, CLAUDE.md, .cursorrules) and enforces them:
- Tech stack injected into every request (AI knows it's Inertia, not axios)
- Critical rules auto-extracted and always present
- Project structure on first message
- Smart section filtering by technology

### Web Content Tools
AI can navigate, read, and audit web pages:
- **web_read_text** — clean text by CSS selector
- **web_read_html** — raw HTML for structure inspection
- **web_seo_audit** — JSON-LD, Open Graph, meta tags, headings, alt text, links
- Visual highlight animation when AI reads page elements

### Multi-Model Support (BYOK)
Bring your own API keys. Quick Add in 3 clicks:

| Provider | Models |
|---|---|
| Anthropic | Claude Sonnet 4.6, Opus 4.6 |
| OpenAI | GPT-5 Mini, GPT-5.1 |
| Google | Gemini 3.0 Flash, Pro |
| MiniMax | M2.7 |
| Ollama | Any local model |
| OpenRouter | Any model |

### Session History
AI remembers what you did in previous sessions. Chat history persists per tab, with a visual banner showing previous work.

### Auto-approve File Reading
Approve a directory once — AI reads files without asking each time. Sensitive paths (~/.ssh, ~/.aws, .env) are never auto-approved.

## Installation

Wave Terminal works on macOS, Linux, and Windows.

Platform-specific installation instructions can be found [here](https://docs.waveterm.dev/gettingstarted).

You can also install Wave Terminal directly from: [www.waveterm.dev/download](https://www.waveterm.dev/download).

### Minimum requirements

Wave Terminal runs on the following platforms:

- macOS 11 or later (arm64, x64)
- Windows 10 1809 or later (x64)
- Linux based on glibc-2.28 or later (Debian 10, RHEL 8, Ubuntu 20.04, etc.) (arm64, x64)

The WSH helper runs on the following platforms:

- macOS 11 or later (arm64, x64)
- Windows 10 or later (x64)
- Linux Kernel 2.6.32 or later (x64), Linux Kernel 3.1 or later (arm64)

## Roadmap

Wave is constantly improving! Our roadmap will be continuously updated with our goals for each release. You can find it [here](./ROADMAP.md).

Want to provide input to our future releases? Connect with us on [Discord](https://discord.gg/XfvZ334gwU) or open a [Feature Request](https://github.com/wavetermdev/waveterm/issues/new/choose)!

## Links

- Homepage &mdash; https://www.waveterm.dev
- Download Page &mdash; https://www.waveterm.dev/download
- Documentation &mdash; https://docs.waveterm.dev
- X &mdash; https://x.com/wavetermdev
- Discord Community &mdash; https://discord.gg/XfvZ334gwU

## Building from Source

See [Building Wave Terminal](BUILD.md).
Wove works on macOS, Linux, and Windows.

### Build from source

```bash
git clone https://github.com/woveterm/wove.git
cd wove
task init
task dev
```

### Requirements
- macOS 11+, Windows 10 1809+, or Linux (glibc-2.28+)
- Node.js 22 LTS
- Go 1.25+

## Configuration

### AI Modes
Configure in `~/.config/woveterm/waveai.json`:
```json
{
"my-model": {
"display:name": "My Model",
"ai:apitype": "anthropic-messages",
"ai:model": "claude-sonnet-4-6",
"ai:endpoint": "https://api.anthropic.com/v1/messages",
"ai:apitokensecretname": "my_api_key",
"ai:capabilities": ["tools", "images", "pdfs"]
}
}
```

### Project Instructions
Create `WAVE.md` in your project root:
```markdown
## Project
My App — Laravel 11, Inertia.js, Vue 3

## Conventions
- Always use Form Request classes for validation
- Use Eloquent scopes, not raw queries
- Run vendor/bin/pint after changes
```

## How It Works

```
User message
|
v
[Project Stack] -> AI knows: "Laravel + Inertia + Vue"
[Critical Rules] -> AI knows: "must write tests, must use PHPDoc"
[Project Tree] -> AI knows: file structure
[MCP Context] -> AI knows: database schema, app info
[Active Plan] -> AI knows: what step to execute next
|
v
AI creates plan -> reads sibling files -> writes code -> reviews -> tests -> lint
```

## Built On

Wove is built on [Wave Terminal](https://github.com/wavetermdev/waveterm) by [Command Line Inc.](https://www.commandline.dev/), licensed under Apache License 2.0.

See [MODIFICATIONS.md](MODIFICATIONS.md) for a complete list of changes from upstream.

## Contributing

Wave uses GitHub Issues for issue tracking.

Find more information in our [Contributions Guide](CONTRIBUTING.md), which includes:

- [Ways to contribute](CONTRIBUTING.md#contributing-to-wave-terminal)
- [Contribution guidelines](CONTRIBUTING.md#before-you-start)

### Sponsoring Wave ❤️

If Wave Terminal is useful to you or your company, consider sponsoring development.

Sponsorship helps support the time spent building and maintaining the project.

- https://github.com/sponsors/wavetermdev
Issues and PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).

## License

Wave Terminal is licensed under the Apache-2.0 License. For more information on our dependencies, see [here](./ACKNOWLEDGEMENTS.md).
Apache License 2.0. See [LICENSE](LICENSE).
28 changes: 14 additions & 14 deletions cmd/generatego/main-generatego.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import (
"reflect"
"strings"

"github.com/wavetermdev/waveterm/pkg/gogen"
"github.com/wavetermdev/waveterm/pkg/util/utilfn"
"github.com/wavetermdev/waveterm/pkg/waveobj"
"github.com/wavetermdev/waveterm/pkg/wconfig"
"github.com/wavetermdev/waveterm/pkg/wshrpc"
"github.com/woveterm/wove/pkg/gogen"
"github.com/woveterm/wove/pkg/util/utilfn"
"github.com/woveterm/wove/pkg/waveobj"
"github.com/woveterm/wove/pkg/wconfig"
"github.com/woveterm/wove/pkg/wshrpc"
)

const WshClientFileName = "pkg/wshrpc/wshclient/wshclient.go"
Expand All @@ -24,15 +24,15 @@ func GenerateWshClient() error {
fmt.Fprintf(os.Stderr, "generating wshclient file to %s\n", WshClientFileName)
var buf strings.Builder
gogen.GenerateBoilerplate(&buf, "wshclient", []string{
"github.com/wavetermdev/waveterm/pkg/aiusechat/uctypes",
"github.com/wavetermdev/waveterm/pkg/baseds",
"github.com/wavetermdev/waveterm/pkg/telemetry/telemetrydata",
"github.com/wavetermdev/waveterm/pkg/vdom",
"github.com/wavetermdev/waveterm/pkg/waveobj",
"github.com/wavetermdev/waveterm/pkg/wconfig",
"github.com/wavetermdev/waveterm/pkg/wps",
"github.com/wavetermdev/waveterm/pkg/wshrpc",
"github.com/wavetermdev/waveterm/pkg/wshutil",
"github.com/woveterm/wove/pkg/aiusechat/uctypes",
"github.com/woveterm/wove/pkg/baseds",
"github.com/woveterm/wove/pkg/telemetry/telemetrydata",
"github.com/woveterm/wove/pkg/vdom",
"github.com/woveterm/wove/pkg/waveobj",
"github.com/woveterm/wove/pkg/wconfig",
"github.com/woveterm/wove/pkg/wps",
"github.com/woveterm/wove/pkg/wshrpc",
"github.com/woveterm/wove/pkg/wshutil",
})
wshDeclMap := wshrpc.GenerateWshCommandDeclMap()
for _, key := range utilfn.GetOrderedMapKeys(wshDeclMap) {
Expand Down
6 changes: 3 additions & 3 deletions cmd/generateschema/main-generateschema.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import (
"reflect"

"github.com/invopop/jsonschema"
"github.com/wavetermdev/waveterm/pkg/util/utilfn"
"github.com/wavetermdev/waveterm/pkg/waveobj"
"github.com/wavetermdev/waveterm/pkg/wconfig"
"github.com/woveterm/wove/pkg/util/utilfn"
"github.com/woveterm/wove/pkg/waveobj"
"github.com/woveterm/wove/pkg/wconfig"
)

const WaveSchemaSettingsFileName = "schema/settings.json"
Expand Down
Loading