@slenderbuilds/niti 0.3.1 → 0.3.3

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 +45 -7
  2. package/package.json +8 -7
package/README.md CHANGED
@@ -1,15 +1,23 @@
1
- # niti
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: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](#license)
8
5
  [![Bun](https://img.shields.io/badge/core-Bun%20%2F%20TypeScript-f9f1e1)](#two-front-ends-one-core)
9
6
  [![Go](https://img.shields.io/badge/TUI-Go%20%2F%20Bubbletea-00add8)](#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`, gated per-agent by
77
- `allowedTools` and a wildcard permission policy; every path is jailed to the project root.
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.1",
3
+ "version": "0.3.3",
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.1",
56
- "niti-darwin-x64": "0.3.1",
57
- "niti-linux-arm64": "0.3.1",
58
- "niti-linux-x64": "0.3.1",
59
- "niti-win32-x64": "0.3.1"
56
+ "niti-darwin-arm64": "0.3.3",
57
+ "niti-darwin-x64": "0.3.3",
58
+ "niti-linux-arm64": "0.3.3",
59
+ "niti-linux-x64": "0.3.3",
60
+ "niti-win32-x64": "0.3.3"
60
61
  },
61
62
  "devDependencies": {
62
63
  "@anthropic-ai/sdk": "^0.115.0",