nori-ai-cli 0.0.1 → 0.0.5
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
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Nori CLI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/tilework-tech/nori-cli/actions/workflows/rust-ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/nori-ai-cli)
|
|
5
|
+
[](https://www.npmjs.com/package/nori-ai-cli)
|
|
6
|
+
[](https://github.com/tilework-tech/nori-cli/blob/dev/LICENSE)
|
|
7
|
+
[](https://github.com/tilework-tech/nori-cli/releases/latest)
|
|
8
|
+
|
|
9
|
+
A multi-provider AI coding agent that runs locally on your computer.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g nori-ai-cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Nori CLI is a fork of [OpenAI Codex CLI](https://github.com/openai/codex) with support for multiple AI providers. Switch between Claude, Gemini, and OpenAI seamlessly.
|
|
20
|
+
|
|
21
|
+
## Quickstart
|
|
22
|
+
|
|
23
|
+
### Installation
|
|
24
|
+
|
|
25
|
+
Install globally via npm:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g nori-ai-cli
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For pre-release versions:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g nori-ai-cli@next
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
You can also download platform-specific binaries from the [GitHub Releases](https://github.com/tilework-tech/nori-cli/releases/latest) page:
|
|
38
|
+
|
|
39
|
+
- **macOS**: `nori-*-darwin-arm64.tar.gz` (Apple Silicon) or `nori-*-darwin-x86_64.tar.gz` (Intel)
|
|
40
|
+
- **Linux**: `nori-*-linux-arm64.tar.gz` (ARM64) or `nori-*-linux-x86_64.tar.gz` (x86_64)
|
|
41
|
+
|
|
42
|
+
### Running Nori
|
|
43
|
+
|
|
44
|
+
Simply run `nori` to get started:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
nori
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Supported Providers
|
|
51
|
+
|
|
52
|
+
Nori supports multiple AI providers via the Agent Context Protocol:
|
|
53
|
+
|
|
54
|
+
| Provider | Model | Setup |
|
|
55
|
+
| -------- | ---------------- | ----------------------------------------------- |
|
|
56
|
+
| Claude | Anthropic Claude | `npx @zed-industries/claude-code-acp` (default) |
|
|
57
|
+
| Gemini | Google Gemini | `npx @google/gemini-cli --experimental-acp` |
|
|
58
|
+
| Codex | OpenAI | `npx @zed-industries/codex-acp` |
|
|
59
|
+
|
|
60
|
+
Switch providers during a session with the `/agent` command.
|
|
61
|
+
|
|
62
|
+
## Key Features
|
|
63
|
+
|
|
64
|
+
- **Multi-Provider Support**: Switch between Claude, Gemini, and OpenAI via ACP
|
|
65
|
+
- **MCP Integration**: Connect to Model Context Protocol servers for extended capabilities
|
|
66
|
+
- **Sandboxed Execution**: Commands run in a security sandbox (Seatbelt on macOS, Landlock on Linux)
|
|
67
|
+
- **Session Management**: Save and resume conversations
|
|
68
|
+
|
|
69
|
+
## Configuration
|
|
70
|
+
|
|
71
|
+
Configuration is stored in `~/.codex/`:
|
|
72
|
+
|
|
73
|
+
- `config.toml` - Main configuration file
|
|
74
|
+
- `auth.json` - Authentication tokens
|
|
75
|
+
- `sessions/` - Saved conversations
|
|
76
|
+
|
|
77
|
+
## Attribution
|
|
78
|
+
|
|
79
|
+
Nori CLI is a fork of [OpenAI Codex CLI](https://github.com/openai/codex), extended for multi-provider AI assistance.
|
|
80
|
+
|
|
81
|
+
## License
|
|
82
|
+
|
|
83
|
+
This repository is licensed under the [Apache-2.0 License](LICENSE).
|
package/bin/nori.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Unified entry point for the
|
|
2
|
+
// Unified entry point for the Nori CLI.
|
|
3
3
|
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { existsSync } from "fs";
|
|
@@ -18,10 +18,10 @@ switch (platform) {
|
|
|
18
18
|
case "android":
|
|
19
19
|
switch (arch) {
|
|
20
20
|
case "x64":
|
|
21
|
-
targetTriple = "x86_64-unknown-linux-
|
|
21
|
+
targetTriple = "x86_64-unknown-linux-gnu";
|
|
22
22
|
break;
|
|
23
23
|
case "arm64":
|
|
24
|
-
targetTriple = "aarch64-unknown-linux-
|
|
24
|
+
targetTriple = "aarch64-unknown-linux-gnu";
|
|
25
25
|
break;
|
|
26
26
|
default:
|
|
27
27
|
break;
|
|
@@ -61,8 +61,8 @@ if (!targetTriple) {
|
|
|
61
61
|
|
|
62
62
|
const vendorRoot = path.join(__dirname, "..", "vendor");
|
|
63
63
|
const archRoot = path.join(vendorRoot, targetTriple);
|
|
64
|
-
const
|
|
65
|
-
const binaryPath = path.join(archRoot, "
|
|
64
|
+
const noriBinaryName = process.platform === "win32" ? "nori.exe" : "nori";
|
|
65
|
+
const binaryPath = path.join(archRoot, "nori", noriBinaryName);
|
|
66
66
|
|
|
67
67
|
// Use an asynchronous spawn instead of spawnSync so that Node is able to
|
|
68
68
|
// respond to signals (e.g. Ctrl-C / SIGINT) while the native binary is
|
|
@@ -81,7 +81,7 @@ function getUpdatedPath(newDirs) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
|
-
* Use heuristics to detect the package manager that was used to install
|
|
84
|
+
* Use heuristics to detect the package manager that was used to install Nori
|
|
85
85
|
* in order to give the user a hint about how to update it.
|
|
86
86
|
*/
|
|
87
87
|
function detectPackageManager() {
|
|
@@ -116,8 +116,8 @@ const updatedPath = getUpdatedPath(additionalDirs);
|
|
|
116
116
|
const env = { ...process.env, PATH: updatedPath };
|
|
117
117
|
const packageManagerEnvVar =
|
|
118
118
|
detectPackageManager() === "bun"
|
|
119
|
-
? "
|
|
120
|
-
: "
|
|
119
|
+
? "NORI_MANAGED_BY_BUN"
|
|
120
|
+
: "NORI_MANAGED_BY_NPM";
|
|
121
121
|
env[packageManagerEnvVar] = "1";
|
|
122
122
|
|
|
123
123
|
const child = spawn(binaryPath, process.argv.slice(2), {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nori-ai-cli",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Nori AI CLI",
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"description": "Nori AI CLI - An AI-powered coding assistant",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"bin": {
|
|
7
7
|
"nori": "bin/nori.js",
|
|
@@ -11,14 +11,21 @@
|
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=16"
|
|
13
13
|
},
|
|
14
|
+
"os": [
|
|
15
|
+
"darwin",
|
|
16
|
+
"linux"
|
|
17
|
+
],
|
|
18
|
+
"cpu": [
|
|
19
|
+
"x64",
|
|
20
|
+
"arm64"
|
|
21
|
+
],
|
|
14
22
|
"files": [
|
|
15
23
|
"bin",
|
|
16
24
|
"vendor"
|
|
17
25
|
],
|
|
18
26
|
"repository": {
|
|
19
27
|
"type": "git",
|
|
20
|
-
"url": "git+https://github.com/tilework-tech/nori-cli.git"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"cpu": ["x64"]
|
|
28
|
+
"url": "git+https://github.com/tilework-tech/nori-cli.git",
|
|
29
|
+
"directory": "codex-cli"
|
|
30
|
+
}
|
|
24
31
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|