aven-ai 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -132
- package/package.json +77 -71
package/README.md
CHANGED
|
@@ -1,171 +1,96 @@
|
|
|
1
1
|
# Aven AI
|
|
2
2
|
|
|
3
|
-
A terminal-native coding agent built with TypeScript, React, Ink, and [Anvia](https://anvia.dev).
|
|
3
|
+
A terminal-native AI coding agent built with TypeScript, React, Ink, and [Anvia](https://anvia.dev).
|
|
4
4
|
|
|
5
|
-
Aven
|
|
5
|
+
Aven lets you chat with AI models, inspect tool calls, edit files, run commands, and resume project sessions without leaving the terminal.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Install
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Thirteen model providers with in-app credential setup and model selection
|
|
11
|
-
- Built-in `Read`, `Edit`, and `Write` tools with stale-read protection and inline diffs
|
|
12
|
-
- Real PTY command execution for agent tools and direct shell commands
|
|
13
|
-
- Project-scoped sessions and local conversation memory backed by SQLite
|
|
14
|
-
- Searchable prompts, transcripts, commands, sessions, and model lists
|
|
15
|
-
- Mouse scrolling and text selection with OSC 52 clipboard support
|
|
16
|
-
|
|
17
|
-
## Requirements
|
|
18
|
-
|
|
19
|
-
- Node.js 22 or newer
|
|
20
|
-
- pnpm 11 or newer
|
|
21
|
-
- An interactive terminal with ANSI and Unicode support
|
|
22
|
-
|
|
23
|
-
## Quick start
|
|
24
|
-
|
|
25
|
-
```sh
|
|
26
|
-
pnpm install
|
|
27
|
-
pnpm dev
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Once Aven AI opens, run `/setup` to choose a provider and add its credentials. Aven AI supports OpenAI, OpenRouter, DeepSeek, Fireworks AI, GitHub Models, Hugging Face, Devscale AI, Sumopod, Databricks, Anthropic, OpenCode Go, Xiaomi MiMo, and MiniMax.
|
|
31
|
-
|
|
32
|
-
Credentials are read exclusively from `config.toml`; provider environment variables are not used. Dynamic provider keys are verified through model discovery before they are saved. Xiaomi MiMo and MiniMax use curated model lists, so their keys are verified by the provider on the first request. Databricks setup asks for the workspace URL before the API token.
|
|
33
|
-
|
|
34
|
-
## Local installation
|
|
35
|
-
|
|
36
|
-
Install the published CLI globally:
|
|
9
|
+
Requires Node.js 22 or newer.
|
|
37
10
|
|
|
38
11
|
```sh
|
|
39
12
|
npm install --global aven-ai
|
|
40
13
|
aven
|
|
41
14
|
```
|
|
42
15
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```sh
|
|
46
|
-
pnpm install:local
|
|
47
|
-
aven
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Set `AVEN_BIN_DIR` to install the symlink elsewhere. Reinstalling refreshes stale build links from the same checkout, but the installer will not overwrite regular files or symlinks owned by another project.
|
|
16
|
+
On first launch, run `/setup` to choose a provider and add its API key.
|
|
51
17
|
|
|
52
|
-
|
|
18
|
+
## Features
|
|
53
19
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
20
|
+
- Full-screen terminal interface with Markdown rendering
|
|
21
|
+
- File reading, editing, and writing with inline diffs
|
|
22
|
+
- PTY-backed shell command execution
|
|
23
|
+
- Project-scoped sessions and searchable history
|
|
24
|
+
- Mouse scrolling, text selection, and clipboard support
|
|
25
|
+
- Multiple model providers, including OpenAI, Anthropic, OpenRouter, DeepSeek, GitHub Models, and more
|
|
57
26
|
|
|
58
|
-
##
|
|
27
|
+
## Usage
|
|
59
28
|
|
|
60
|
-
Type a prompt and press `Enter
|
|
61
|
-
|
|
62
|
-
Prefix an input with `!` to run it directly in the project shell:
|
|
29
|
+
Type a prompt and press `Enter`. Prefix a command with `!` to run it directly in the project shell:
|
|
63
30
|
|
|
64
31
|
```text
|
|
65
32
|
!git status
|
|
66
33
|
```
|
|
67
34
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
| Command | Description |
|
|
71
|
-
| -------------- | -------------------------------------- |
|
|
72
|
-
| `/setup` | Add or replace provider credentials |
|
|
73
|
-
| `/connect` | Connect a configured provider |
|
|
74
|
-
| `/model` | View or change the active model |
|
|
75
|
-
| `/new` | Start a new project session |
|
|
76
|
-
| `/resume` | Search and resume project sessions |
|
|
77
|
-
| `/resume-last` | Resume the most recent project session |
|
|
78
|
-
| `/history` | Search local prompt history |
|
|
79
|
-
| `/search` | Search the visible transcript |
|
|
80
|
-
| `/commands` | Browse available commands |
|
|
81
|
-
| `/help` | Show keyboard and interaction help |
|
|
82
|
-
| `/theme` | Preview the current terminal theme |
|
|
83
|
-
|
|
84
|
-
### Keyboard and mouse controls
|
|
85
|
-
|
|
86
|
-
| Input | Action |
|
|
87
|
-
| --------------------------- | -------------------------------------------------------- |
|
|
88
|
-
| `Enter` | Submit a prompt |
|
|
89
|
-
| `Shift+Enter` / `Alt+Enter` | Insert a newline |
|
|
90
|
-
| `\` then `Enter` | Insert a newline in terminals without modifier support |
|
|
91
|
-
| `Ctrl+O` | Toggle transcript navigation and tool output |
|
|
92
|
-
| `Page Up` / `Page Down` | Scroll the transcript |
|
|
93
|
-
| `Ctrl+Home` / `Ctrl+End` | Jump to the start or end |
|
|
94
|
-
| `↑` / `↓` or `j` / `k` | Scroll one line while transcript navigation is active |
|
|
95
|
-
| `g` / `G` or `Home` / `End` | Jump to either end while transcript navigation is active |
|
|
96
|
-
| `Ctrl+R` | Open prompt history |
|
|
97
|
-
| Mouse wheel | Scroll the transcript |
|
|
98
|
-
| Mouse drag | Select transcript text |
|
|
99
|
-
| Double-click / triple-click | Select a word or line |
|
|
100
|
-
| `Ctrl+Shift+C` | Copy selected text through OSC 52 |
|
|
101
|
-
| `Esc` | Close or cancel the current UI context |
|
|
102
|
-
| `Ctrl+C` | Interrupt active work; press twice while idle to exit |
|
|
103
|
-
| `Ctrl+D` | Delete forward; press twice on empty input to exit |
|
|
104
|
-
|
|
105
|
-
Typing `?` or `!` into an empty composer opens help or direct command mode. Session changes are disabled while a turn is active or prompts are queued.
|
|
106
|
-
|
|
107
|
-
## Sessions and local data
|
|
108
|
-
|
|
109
|
-
Sessions are scoped to the directory where Aven AI starts. Each launch begins a fresh session; use `/resume-last` or `/resume` to continue earlier work for the same project.
|
|
110
|
-
|
|
111
|
-
Local data lives under `${XDG_CONFIG_HOME:-~/.config}/aven-ai`:
|
|
112
|
-
|
|
113
|
-
| File | Contents |
|
|
114
|
-
| ----------------- | -------------------------------------------- |
|
|
115
|
-
| `config.toml` | Provider settings, model cache, and API keys |
|
|
116
|
-
| `memory.sqlite` | Agent conversation memory |
|
|
117
|
-
| `sessions.sqlite` | Project and session metadata |
|
|
118
|
-
|
|
119
|
-
Configuration files are written with owner-only permissions. Existing `config.json` files are migrated automatically. Provider credentials must be added through `/setup`; environment variables are intentionally ignored. Aven AI does not create session metadata inside your project.
|
|
35
|
+
Common slash commands:
|
|
120
36
|
|
|
121
|
-
|
|
37
|
+
| Command | Action |
|
|
38
|
+
| -------------- | ------------------------------------ |
|
|
39
|
+
| `/setup` | Configure provider credentials |
|
|
40
|
+
| `/connect` | Connect to a configured provider |
|
|
41
|
+
| `/model` | Change the active model |
|
|
42
|
+
| `/new` | Start a new session |
|
|
43
|
+
| `/resume` | Find and resume a previous session |
|
|
44
|
+
| `/resume-last` | Resume the most recent session |
|
|
45
|
+
| `/history` | Search prompt history |
|
|
46
|
+
| `/commands` | Browse all available commands |
|
|
47
|
+
| `/help` | Show controls and keyboard shortcuts |
|
|
122
48
|
|
|
123
|
-
|
|
49
|
+
Useful controls:
|
|
124
50
|
|
|
125
|
-
|
|
51
|
+
| Input | Action |
|
|
52
|
+
| --------------------------- | ---------------------------- |
|
|
53
|
+
| `Enter` | Submit a prompt |
|
|
54
|
+
| `Shift+Enter` / `Alt+Enter` | Insert a newline |
|
|
55
|
+
| `Ctrl+O` | Toggle transcript navigation |
|
|
56
|
+
| `Page Up` / `Page Down` | Scroll the transcript |
|
|
57
|
+
| `Ctrl+R` | Open prompt history |
|
|
58
|
+
| `Esc` | Close or cancel |
|
|
59
|
+
| `Ctrl+C` | Interrupt active work |
|
|
126
60
|
|
|
127
|
-
##
|
|
61
|
+
## Local data
|
|
128
62
|
|
|
129
|
-
|
|
63
|
+
Aven stores configuration and project-scoped session data under:
|
|
130
64
|
|
|
131
65
|
```text
|
|
132
|
-
|
|
133
|
-
index.ts CLI entrypoint
|
|
134
|
-
libs/ config, SDK, PTY, storage, and terminal adapters
|
|
135
|
-
modules/
|
|
136
|
-
agent/ runtime, prompts, tools, and events
|
|
137
|
-
app/ application composition and state
|
|
138
|
-
commands/ slash-command registry
|
|
139
|
-
composer/ editor and input behavior
|
|
140
|
-
conversation/ transcript rendering and selection
|
|
141
|
-
overlays/ searchable overlay models and views
|
|
142
|
-
providers/ provider connections and model selection
|
|
143
|
-
sessions/ project-session lifecycle
|
|
144
|
-
utils/ dependency-free shared helpers
|
|
145
|
-
test/
|
|
146
|
-
integration/ cross-feature integration tests
|
|
147
|
-
support/ shared test fakes and helpers
|
|
66
|
+
${XDG_CONFIG_HOME:-~/.config}/aven-ai
|
|
148
67
|
```
|
|
149
68
|
|
|
150
|
-
|
|
69
|
+
Provider credentials are stored locally in `config.toml` with owner-only permissions. Add or replace credentials through `/setup`.
|
|
151
70
|
|
|
152
|
-
|
|
71
|
+
Commands run with the same permissions as the Aven process and are not sandboxed. Review commands and file changes before accepting them.
|
|
153
72
|
|
|
154
73
|
## Development
|
|
155
74
|
|
|
75
|
+
```sh
|
|
76
|
+
pnpm install
|
|
77
|
+
pnpm dev
|
|
78
|
+
```
|
|
79
|
+
|
|
156
80
|
Useful commands:
|
|
157
81
|
|
|
158
82
|
```sh
|
|
159
|
-
pnpm
|
|
160
|
-
pnpm
|
|
161
|
-
pnpm
|
|
162
|
-
pnpm
|
|
163
|
-
pnpm
|
|
164
|
-
pnpm lint # Run ESLint
|
|
165
|
-
pnpm build # Build the production CLI
|
|
166
|
-
pnpm check # Run the complete local quality gate
|
|
83
|
+
pnpm test # Run tests
|
|
84
|
+
pnpm typecheck # Check TypeScript
|
|
85
|
+
pnpm lint # Run ESLint
|
|
86
|
+
pnpm build # Build the CLI
|
|
87
|
+
pnpm check # Run the complete quality gate
|
|
167
88
|
```
|
|
168
89
|
|
|
169
|
-
|
|
90
|
+
Install a development build as the `aven` command:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
pnpm install:local
|
|
94
|
+
```
|
|
170
95
|
|
|
171
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
96
|
+
See [ARCHITECTURE.md](./ARCHITECTURE.md) and [CONTRIBUTING.md](./CONTRIBUTING.md) for project details.
|
package/package.json
CHANGED
|
@@ -1,72 +1,78 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
2
|
+
"name": "aven-ai",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "A full-screen, multi-provider Anvia coding agent terminal with PTY tools.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/indrazm/aven-ai.git"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"bin": {
|
|
14
|
+
"aven": "dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public",
|
|
18
|
+
"registry": "https://registry.npmjs.org/"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=22"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@anvia/anthropic": "^0.3.14",
|
|
25
|
+
"@anvia/core": "^0.13.0",
|
|
26
|
+
"@anvia/memory-sqlite": "^0.2.2",
|
|
27
|
+
"@anvia/openai": "^0.3.17",
|
|
28
|
+
"@inkjs/ui": "^2.0.0",
|
|
29
|
+
"diff": "^9.0.0",
|
|
30
|
+
"fuse.js": "^7.4.2",
|
|
31
|
+
"ink": "^7.1.0",
|
|
32
|
+
"marked": "^18.0.6",
|
|
33
|
+
"node-pty": "^1.1.0",
|
|
34
|
+
"react": "^19.2.0",
|
|
35
|
+
"smol-toml": "^1.7.0",
|
|
36
|
+
"string-width": "^8.2.2",
|
|
37
|
+
"strip-ansi": "^7.1.2",
|
|
38
|
+
"zod": "^4.4.3",
|
|
39
|
+
"zustand": "^5.0.14"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@babel/core": "^8.0.1",
|
|
43
|
+
"@babel/eslint-parser": "^8.0.1",
|
|
44
|
+
"@babel/preset-typescript": "^8.0.1",
|
|
45
|
+
"@changesets/cli": "^2.31.0",
|
|
46
|
+
"@eslint/js": "^10.0.1",
|
|
47
|
+
"@types/node": "^24.0.0",
|
|
48
|
+
"@types/react": "^19.2.0",
|
|
49
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
50
|
+
"eslint": "^10.7.0",
|
|
51
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
52
|
+
"ink-testing-library": "^4.0.0",
|
|
53
|
+
"prettier": "^3.9.5",
|
|
54
|
+
"tsx": "^4.23.0",
|
|
55
|
+
"typescript": "^7.0.2",
|
|
56
|
+
"vitest": "^4.1.10"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"dev": "tsx src/index.ts",
|
|
60
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
61
|
+
"build": "pnpm clean && tsc -p tsconfig.build.json && node scripts/mark-cli-executable.mjs",
|
|
62
|
+
"start": "node dist/index.js",
|
|
63
|
+
"install:local": "pnpm build && node scripts/install-local.mjs",
|
|
64
|
+
"uninstall:local": "node scripts/install-local.mjs --uninstall",
|
|
65
|
+
"changeset": "changeset",
|
|
66
|
+
"changeset:status": "changeset status",
|
|
67
|
+
"version-packages": "changeset version",
|
|
68
|
+
"release": "changeset publish",
|
|
69
|
+
"format": "prettier --write .",
|
|
70
|
+
"format:check": "prettier --check .",
|
|
71
|
+
"typecheck": "tsc --noEmit",
|
|
72
|
+
"lint": "eslint .",
|
|
73
|
+
"test": "vitest run",
|
|
74
|
+
"test:coverage": "vitest run --coverage",
|
|
75
|
+
"test:watch": "vitest",
|
|
76
|
+
"check": "pnpm format:check && pnpm typecheck && pnpm lint && pnpm test:coverage && pnpm build"
|
|
77
|
+
}
|
|
78
|
+
}
|