automatey 0.1.6 → 0.1.7
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 +33 -15
- package/package.json +3 -2
- package/scripts/postinstall.js +18 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<p align="center"><em>Yer lean & mean agentic helper — no fluff, all action, a touch o' pirate.</em></p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<img alt="tests" src="https://img.shields.io/badge/tests-
|
|
9
|
+
<img alt="tests" src="https://img.shields.io/badge/tests-189%20passing-brightgreen?style=flat-square">
|
|
10
10
|
<img alt="node" src="https://img.shields.io/badge/node-%3E%3D20-blue?style=flat-square">
|
|
11
11
|
<img alt="license" src="https://img.shields.io/badge/license-MIT-blue?style=flat-square">
|
|
12
12
|
</p>
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
## Features
|
|
34
34
|
|
|
35
35
|
- **Providers**: Nemotron (vLLM/OpenAI-compatible), OpenAI, Anthropic, Perplexity
|
|
36
|
-
- **MCP tools**: Any stdio or HTTP MCP server; auto-loaded from `./mcp.json
|
|
37
|
-
- **ReAct loop**: Up to
|
|
36
|
+
- **MCP tools**: Any stdio or HTTP MCP server; auto-loaded from `./mcp.json`, `~/.automatey/mcp.json`, or bundled `mcp.json`
|
|
37
|
+
- **ReAct loop**: Up to 50 tool-call rounds per message (configurable)
|
|
38
38
|
- **Chain-of-thought**: `/think` toggle for Nemotron / Anthropic reasoning tokens
|
|
39
39
|
- **Sandbox**: Isolated directory with timestamped subdirectories for agent file I/O and code execution; configurable via `--sandbox` or `SANDBOX_MODE` env var
|
|
40
40
|
- **Sub-agents**: `run_subagent` built-in tool spawns stateless nested ReAct loops with full MCP access; supports `AgentConfig` declarations for reusable agent definitions
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
- **Prompt refiner**: Rewrites agent instructions using judge feedback; enforces brevity constraints for smaller worker models
|
|
45
45
|
- **Sessions**: Save/load conversation sessions in `~/.automatey/sessions/`
|
|
46
46
|
- **Checkpoints**: `/checkpoint` — full conversation snapshots with BM25 keyword search
|
|
47
|
-
- **Auto-compact**: LLM summarises older context when usage ≥
|
|
47
|
+
- **Auto-compact**: LLM summarises older context when usage ≥ 90%
|
|
48
48
|
- **Skills**: Progressive SKILL.md loading from `.agents/skills/`
|
|
49
49
|
- **Eval system**: `/eval <file.jsonl>` runs MCQ, keyword, and regex benchmarks with per-category accuracy reports
|
|
50
50
|
- **Planner MCP**: Bundled `mcp/planner` — todos + plans, prompts for task breakdown
|
|
@@ -53,6 +53,23 @@
|
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
|
55
55
|
|
|
56
|
+
### Install from npm (recommended)
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install -g automatey
|
|
60
|
+
automatey chat
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Or run without installing:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx automatey chat
|
|
67
|
+
npx automatey "summarise this repo"
|
|
68
|
+
npx ay "what time is it?"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### From source
|
|
72
|
+
|
|
56
73
|
```bash
|
|
57
74
|
git clone https://github.com/automatey-org/automatey.git
|
|
58
75
|
cd automatey
|
|
@@ -186,8 +203,9 @@ ay "summarise this repo" # one-shot against the current directory
|
|
|
186
203
|
## MCP Config — `mcp.json`
|
|
187
204
|
|
|
188
205
|
The agent looks for MCP config in this order:
|
|
189
|
-
1. `./mcp.json` (current working directory / project root)
|
|
206
|
+
1. `./mcp.json` (current working directory / project root)
|
|
190
207
|
2. `~/.automatey/mcp.json` (global fallback)
|
|
208
|
+
3. Bundled `mcp.json` from the package install directory (npx / global install)
|
|
191
209
|
|
|
192
210
|
Copy `mcp.example.json` from this repo as your starting point:
|
|
193
211
|
|
|
@@ -237,7 +255,7 @@ Config lives in `~/.automatey/config.json` (auto-created on first run):
|
|
|
237
255
|
"provider": "nemotron",
|
|
238
256
|
"llm": {
|
|
239
257
|
"baseUrl": "http://localhost:8002",
|
|
240
|
-
"model": "nvidia/
|
|
258
|
+
"model": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4"
|
|
241
259
|
}
|
|
242
260
|
}
|
|
243
261
|
```
|
|
@@ -250,11 +268,11 @@ Environment variables (copy `.env.defaults` → `.env` to override):
|
|
|
250
268
|
| `LLM_MODEL` | Nemotron NVFP4 | Model ID |
|
|
251
269
|
| `LLM_BASE_URL` | `http://localhost:8002` | vLLM / OpenAI-compatible endpoint |
|
|
252
270
|
| `LLM_MAX_TOKENS` | `200000` | Context window budget (chars, ~4/token) |
|
|
253
|
-
| `LLM_MAX_OUTPUT_TOKENS` | `
|
|
254
|
-
| `TEMPERATURE` | `0.
|
|
255
|
-
| `AGENT_MAX_TOOL_ROUNDS` | `
|
|
271
|
+
| `LLM_MAX_OUTPUT_TOKENS` | `16384` | Per-call output limit |
|
|
272
|
+
| `TEMPERATURE` | `0.6` | Sampling temperature |
|
|
273
|
+
| `AGENT_MAX_TOOL_ROUNDS` | `50` | Max ReAct rounds |
|
|
256
274
|
| `AGENT_MAX_EMPTY_RETRIES` | `2` | Retries on empty LLM response |
|
|
257
|
-
| `AGENT_COMPACT_THRESHOLD` | `0.
|
|
275
|
+
| `AGENT_COMPACT_THRESHOLD` | `0.9` | Auto-compact at 90% context fill |
|
|
258
276
|
|
|
259
277
|
## Commands
|
|
260
278
|
|
|
@@ -277,7 +295,7 @@ Environment variables (copy `.env.defaults` → `.env` to override):
|
|
|
277
295
|
## Context Management
|
|
278
296
|
|
|
279
297
|
### Auto-compact
|
|
280
|
-
When estimated context usage reaches `AGENT_COMPACT_THRESHOLD` (default
|
|
298
|
+
When estimated context usage reaches `AGENT_COMPACT_THRESHOLD` (default 90%), the older portion of the conversation is automatically summarized by the LLM and replaced with a concise summary message. This keeps the token count manageable without discarding knowledge.
|
|
281
299
|
|
|
282
300
|
Disable per-session: the `/compact` command can be used to trigger compaction manually at any time.
|
|
283
301
|
|
|
@@ -345,7 +363,7 @@ All configuration comes from environment variables — zero hardcoded defaults:
|
|
|
345
363
|
| `LLM_PROVIDER` | ✅ | `nemotron` \| `openai` \| `anthropic` \| `perplexity` |
|
|
346
364
|
| `AUTOMATEY_TIMEOUT` | | Default task timeout in ms (default: 300000) |
|
|
347
365
|
|
|
348
|
-
The agent MCP server has its own test suite (
|
|
366
|
+
The agent MCP server has its own test suite (23 tests — unit, functional, e2e) in `mcp/agent/tests/`.
|
|
349
367
|
|
|
350
368
|
## Docker
|
|
351
369
|
|
|
@@ -450,7 +468,7 @@ DMR uses `llama.cpp` under the hood — CPU-only works, GPU (NVIDIA/Apple Silico
|
|
|
450
468
|
```bash
|
|
451
469
|
npm run dev # tsx watch (no build needed)
|
|
452
470
|
npm run build # tsc + build all MCP servers
|
|
453
|
-
npm test #
|
|
471
|
+
npm test # 189 tests (Vitest)
|
|
454
472
|
npm run test:watch # watch mode
|
|
455
473
|
```
|
|
456
474
|
|
|
@@ -464,7 +482,7 @@ npm run test:watch # watch mode
|
|
|
464
482
|
## Tests
|
|
465
483
|
|
|
466
484
|
```
|
|
467
|
-
Tests
|
|
485
|
+
Tests 189 passed | 2 skipped
|
|
468
486
|
├── unit/ chat-engine, coder-server, command-parser, config-manager,
|
|
469
487
|
│ context-manager, eval-runner, llm-client,
|
|
470
488
|
│ markdown-rendering, mcp-config-manager,
|
|
@@ -487,7 +505,7 @@ LLM writes `index.js`, executes it, output is verified. Results live in `sandbox
|
|
|
487
505
|
## Artwork
|
|
488
506
|
|
|
489
507
|
Logos in `extra/logo/` are from the [Automatey](https://github.com/top-5/automatey) terminal project,
|
|
490
|
-
licensed **CC BY 4.0** — Copyright © 2024–
|
|
508
|
+
licensed **CC BY 4.0** — Copyright © 2024–2026 Top-5 And Contributors.
|
|
491
509
|
Used here with attribution as permitted by the license.
|
|
492
510
|
|
|
493
511
|
## License
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "automatey",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Lean & mean MCP-powered CLI agent — Nemotron, OpenAI, Anthropic, Perplexity",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"mcp/coder/node_modules/",
|
|
29
29
|
"mcp/coder/package.json",
|
|
30
30
|
"mcp/coder/src/landlock-exec.c",
|
|
31
|
+
"scripts/postinstall.js",
|
|
31
32
|
"scripts/setup-bwrap-apparmor.sh",
|
|
32
33
|
"mcp.json",
|
|
33
34
|
"README.md",
|
|
@@ -58,7 +59,7 @@
|
|
|
58
59
|
},
|
|
59
60
|
"license": "MIT",
|
|
60
61
|
"scripts": {
|
|
61
|
-
"postinstall": "
|
|
62
|
+
"postinstall": "node scripts/postinstall.js",
|
|
62
63
|
"prepublishOnly": "npm run build",
|
|
63
64
|
"build": "tsc && npm run build:planner && npm run build:coder && npm run build:agent",
|
|
64
65
|
"build:planner": "npm run build --prefix mcp/planner",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Cross-platform postinstall: install deps for MCP sub-packages
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
|
|
7
|
+
const root = join(import.meta.dirname, '..');
|
|
8
|
+
const dirs = ['mcp/planner', 'mcp/coder'];
|
|
9
|
+
|
|
10
|
+
for (const d of dirs) {
|
|
11
|
+
const dir = join(root, d);
|
|
12
|
+
const pkg = join(dir, 'package.json');
|
|
13
|
+
const nm = join(dir, 'node_modules');
|
|
14
|
+
if (existsSync(pkg) && !existsSync(nm)) {
|
|
15
|
+
console.log(`postinstall: npm install --omit=dev --prefix ${d}`);
|
|
16
|
+
execSync('npm install --omit=dev', { cwd: dir, stdio: 'inherit' });
|
|
17
|
+
}
|
|
18
|
+
}
|