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.
Files changed (2) hide show
  1. package/README.md +57 -132
  2. 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 AI keeps the entire coding workflow in your terminal: chat with an AI model, inspect streamed tool calls, edit files, run commands, search conversation history, and resume project-specific sessions without leaving the keyboard.
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
- ## Highlights
7
+ ## Install
8
8
 
9
- - Full-screen, responsive terminal interface with Markdown and fenced code-block rendering
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
- To install from a source checkout instead, build the CLI and add an `aven` symlink to `~/.local/bin`:
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
- To remove the local symlink:
18
+ ## Features
53
19
 
54
- ```sh
55
- pnpm uninstall:local
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
- ## Using Aven AI
27
+ ## Usage
59
28
 
60
- Type a prompt and press `Enter` to start a turn. Responses and tool activity stream into the transcript as they happen.
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
- Slash commands open searchable overlays or perform session actions:
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
- ## Tools and permissions
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
- The agent can read and modify UTF-8 and UTF-16LE text files. A file must be read before it can be edited or overwritten, and Aven AI rejects the mutation if the file changed after that read. Successful changes appear as a before-and-after diff in the transcript.
49
+ Useful controls:
124
50
 
125
- Command execution is intentionally powerful: `ExecCommand` tool calls and direct `!` commands run with the same permissions as the Aven AI process. They are not sandboxed. Commands do not receive interactive input, time out after 120 seconds, and return up to 64 KiB of output.
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
- ## Architecture
61
+ ## Local data
128
62
 
129
- The application is split into focused modules under `src/modules`, with process, persistence, SDK, and terminal adapters under `src/libs`:
63
+ Aven stores configuration and project-scoped session data under:
130
64
 
131
65
  ```text
132
- src/
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
- The UI depends on a small `AgentRuntime` contract, which keeps alternate runtimes and deterministic tests isolated from the production Anvia implementation. Cross-module imports go through public `index.ts` files, and architecture tests enforce dependency direction and reject circular source dependencies.
69
+ Provider credentials are stored locally in `config.toml` with owner-only permissions. Add or replace credentials through `/setup`.
151
70
 
152
- See [ARCHITECTURE.md](./ARCHITECTURE.md) for module responsibilities and boundary rules.
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 dev # Run from source
160
- pnpm test # Run the test suite
161
- pnpm test:watch # Run tests in watch mode
162
- pnpm format # Format the repository
163
- pnpm typecheck # Check TypeScript
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
- `pnpm check` runs formatting checks, type checking, linting, coverage tests, and a production build. The tracked pre-push hook runs the same gate after `pnpm install` configures it.
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) before making structural changes or adding dependencies.
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
- "name": "aven-ai",
3
- "version": "0.0.1",
4
- "description": "A full-screen, multi-provider Anvia coding agent terminal with PTY tools.",
5
- "type": "module",
6
- "files": [
7
- "dist"
8
- ],
9
- "bin": {
10
- "aven": "dist/index.js"
11
- },
12
- "publishConfig": {
13
- "access": "public",
14
- "registry": "https://registry.npmjs.org/"
15
- },
16
- "engines": {
17
- "node": ">=22"
18
- },
19
- "packageManager": "pnpm@11.9.0",
20
- "scripts": {
21
- "dev": "tsx src/index.ts",
22
- "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
23
- "build": "pnpm clean && tsc -p tsconfig.build.json && node scripts/mark-cli-executable.mjs",
24
- "start": "node dist/index.js",
25
- "install:local": "pnpm build && node scripts/install-local.mjs",
26
- "uninstall:local": "node scripts/install-local.mjs --uninstall",
27
- "prepare": "node scripts/install-git-hooks.mjs",
28
- "prepack": "pnpm build",
29
- "format": "prettier --write .",
30
- "format:check": "prettier --check .",
31
- "typecheck": "tsc --noEmit",
32
- "lint": "eslint .",
33
- "test": "vitest run",
34
- "test:coverage": "vitest run --coverage",
35
- "test:watch": "vitest",
36
- "check": "pnpm format:check && pnpm typecheck && pnpm lint && pnpm test:coverage && pnpm build"
37
- },
38
- "dependencies": {
39
- "@anvia/anthropic": "^0.3.14",
40
- "@anvia/core": "^0.13.0",
41
- "@anvia/memory-sqlite": "^0.2.2",
42
- "@anvia/openai": "^0.3.17",
43
- "@inkjs/ui": "^2.0.0",
44
- "diff": "^9.0.0",
45
- "fuse.js": "^7.4.2",
46
- "ink": "^7.1.0",
47
- "marked": "^18.0.6",
48
- "node-pty": "^1.1.0",
49
- "react": "^19.2.0",
50
- "smol-toml": "^1.7.0",
51
- "string-width": "^8.2.2",
52
- "strip-ansi": "^7.1.2",
53
- "zod": "^4.4.3",
54
- "zustand": "^5.0.14"
55
- },
56
- "devDependencies": {
57
- "@babel/core": "^8.0.1",
58
- "@babel/eslint-parser": "^8.0.1",
59
- "@babel/preset-typescript": "^8.0.1",
60
- "@eslint/js": "^10.0.1",
61
- "@types/node": "^24.0.0",
62
- "@types/react": "^19.2.0",
63
- "@vitest/coverage-v8": "4.1.10",
64
- "eslint": "^10.7.0",
65
- "eslint-plugin-react-hooks": "^7.1.1",
66
- "ink-testing-library": "^4.0.0",
67
- "prettier": "^3.9.5",
68
- "tsx": "^4.23.0",
69
- "typescript": "^7.0.2",
70
- "vitest": "^4.1.10"
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
+ }