@slenderbuilds/niti 0.3.0 → 0.3.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 +45 -7
- package/package.json +8 -7
package/README.md
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
**A terminal CLI that runs multiple AI coding agents — from different LLM providers — concurrently on one project.**
|
|
4
|
-
|
|
5
|
-
Assign models to custom roles (Gemini = Frontend, Claude = Backend, GPT = Reviewer...), pick one as the **orchestrator** to plan the work into a task DAG, and watch the team build together, **talking to each other directly** to stay aligned — live in your terminal, or in an optional web dashboard.
|
|
1
|
+
<div align="center">
|
|
6
2
|
|
|
3
|
+
# <img src="assets/logo.png" alt="niti logo" width="90" valign="middle"> niti
|
|
7
4
|
[](#license)
|
|
8
5
|
[](#two-front-ends-one-core)
|
|
9
6
|
[](#two-front-ends-one-core)
|
|
10
7
|
|
|
8
|
+
**A terminal CLI that runs multiple AI coding agents — from different LLM providers — concurrently on one project.**
|
|
9
|
+
|
|
10
|
+
Assign models to custom roles, pick an **orchestrator** to plan the work into a task DAG, and watch the team build together. They talk to each other directly to stay aligned — live in your terminal, or in an optional web dashboard.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<br>
|
|
14
|
+
|
|
11
15
|
<img src="readme_images/CLI.png" alt="niti's terminal UI — team of 4 agents, live context/token sidebar" width="100%">
|
|
12
16
|
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
13
21
|
## Quickstart
|
|
14
22
|
|
|
15
23
|
```sh
|
|
@@ -73,8 +81,36 @@ Both pages retheme live with whatever theme (`ctrl+t` / `/theme`) the TUI has ac
|
|
|
73
81
|
hand-offs), not a flat queue; independent tasks run concurrently and the lead reviews at the end.
|
|
74
82
|
- **Agent-to-agent messaging** — any teammate can `ask_agent`/`send_message` another mid-task (e.g.
|
|
75
83
|
frontend asking backend about an API shape), rate-capped per pair as the loop guard.
|
|
76
|
-
- **Sandboxed tools** — `read_file` / `write_file` / `edit` / `shell
|
|
77
|
-
`
|
|
84
|
+
- **Sandboxed tools** — `read_file` / `write_file` / `edit` / `shell` plus read-only navigation
|
|
85
|
+
(`grep` / `glob` / `list_dir`), gated per-agent by `allowedTools` and a wildcard permission
|
|
86
|
+
policy; every path is jailed to the project root. Reads are line-numbered and paged, so `grep`'s
|
|
87
|
+
`path:line:` output and a read share one coordinate system; independent reads in a turn run
|
|
88
|
+
together rather than one round-trip at a time.
|
|
89
|
+
- **Project map + ranked context** — a generated outline of the repo (directory shape plus the
|
|
90
|
+
files most of the project imports, PageRank over the import graph) rides in the system prompt, so
|
|
91
|
+
an agent starts oriented instead of guessing. `repoMap: false` turns it off.
|
|
92
|
+
- **Working checklist** — agents write a `todo` list for multi-step tasks, re-stated to the model
|
|
93
|
+
whenever it changes so the plan stays recent context instead of something to reconstruct from a
|
|
94
|
+
transcript. Scoped to one task; never carried into the next.
|
|
95
|
+
- **Per-model steering** — each agent's prompt carries a short addendum for its model family
|
|
96
|
+
(`src/agent/steering.ts`). Mechanical only — verbosity, tool-call shape, when to stop. Anything
|
|
97
|
+
two agents must agree on stays in the shared guidance, since they message each other across
|
|
98
|
+
providers.
|
|
99
|
+
- **Reasoning effort** — `reasoning: off|low|medium|high|auto` per agent maps to Gemini's
|
|
100
|
+
`thinkingBudget` and OpenAI's `reasoning_effort`. Unset sends nothing; note that Flash and
|
|
101
|
+
Flash-Lite do not think at all unless you set it.
|
|
102
|
+
- **Verification before "done"** — an agent that changed files must pass the project's own checks
|
|
103
|
+
(a `typecheck`/`build` script, `go build`, `cargo check`, or whatever `verify:` names) before it
|
|
104
|
+
may report a task complete; failures go back to it as the real compiler output, twice at most.
|
|
105
|
+
A task whose checks never pass ends `unverified` rather than `done`, so the DAG never releases
|
|
106
|
+
dependents onto a tree that doesn't build.
|
|
107
|
+
- **Check-gaming guard** — a green result that arrived only because the agent edited the tests,
|
|
108
|
+
the lint config or the check script itself is refused, and the agent is told to revert it and fix
|
|
109
|
+
the code. Judged by content, not by touch, so reverting as instructed isn't flagged; and only
|
|
110
|
+
ever after a failure, so writing a test in a task that never failed is ordinary work.
|
|
111
|
+
- **Objective retry** — an `unverified` task is handed to a *different* model with the check output
|
|
112
|
+
attached, before any replan. Best-of-N where the selector is a compiler rather than a judge
|
|
113
|
+
model, and where the tasks that were right first time cost nothing extra.
|
|
78
114
|
- **Approval gates** — agents pause for `[y] approve · [n] deny · [a] always` before risky actions,
|
|
79
115
|
answered from the TUI or the web dashboard; dangerous shell patterns always prompt.
|
|
80
116
|
- **Persistence** — every turn checkpoints to SQLite (`.niti/niti.db`); `niti-core resume` picks up
|
|
@@ -153,3 +189,5 @@ cd tui && go build ./... && go vet ./... && go test ./... # Go TUI: build, ve
|
|
|
153
189
|
## License
|
|
154
190
|
|
|
155
191
|
MIT.
|
|
192
|
+
|
|
193
|
+
<img src="assets/logo.png" alt="niti logo" width="40">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slenderbuilds/niti",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "A terminal CLI that runs multiple AI coding agents from different LLM providers concurrently on one project.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
"serve": "bun run src/server/main.ts",
|
|
18
18
|
"build": "bun build --compile ./src/cli.ts --outfile niti-core",
|
|
19
19
|
"build:tui": "cd tui && go mod tidy && go build -o ../niti ./cmd/niti",
|
|
20
|
+
"build:desktop": "cd desktop && npm install && npm run build",
|
|
20
21
|
"build:all": "bun run build:tui && bun run build",
|
|
21
22
|
"build:release": "bun run scripts/build-release.ts",
|
|
22
|
-
"test": "bun test src web",
|
|
23
|
+
"test": "bun test ./src ./web",
|
|
23
24
|
"typecheck": "tsc --noEmit",
|
|
24
25
|
"gen:catalog": "bun run scripts/gen-catalog.ts"
|
|
25
26
|
},
|
|
@@ -52,11 +53,11 @@
|
|
|
52
53
|
"access": "public"
|
|
53
54
|
},
|
|
54
55
|
"optionalDependencies": {
|
|
55
|
-
"niti-darwin-arm64": "0.3.
|
|
56
|
-
"niti-darwin-x64": "0.3.
|
|
57
|
-
"niti-linux-arm64": "0.3.
|
|
58
|
-
"niti-linux-x64": "0.3.
|
|
59
|
-
"niti-win32-x64": "0.3.
|
|
56
|
+
"niti-darwin-arm64": "0.3.2",
|
|
57
|
+
"niti-darwin-x64": "0.3.2",
|
|
58
|
+
"niti-linux-arm64": "0.3.2",
|
|
59
|
+
"niti-linux-x64": "0.3.2",
|
|
60
|
+
"niti-win32-x64": "0.3.2"
|
|
60
61
|
},
|
|
61
62
|
"devDependencies": {
|
|
62
63
|
"@anthropic-ai/sdk": "^0.115.0",
|