@motiontic/uno 0.0.0-stage → 0.1.0
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/LICENSE +16 -0
- package/README.md +42 -2
- package/bin/uno.js +62 -0
- package/package.json +14 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
unocode
|
|
2
|
+
Copyright (c) 2026 Akash Munshi. All rights reserved.
|
|
3
|
+
|
|
4
|
+
You may download, install and run this program, for any purpose, free of charge, and
|
|
5
|
+
redistribute it unchanged.
|
|
6
|
+
|
|
7
|
+
You may not sell it, change it, or reverse-engineer it except as the law allows, and you
|
|
8
|
+
must keep this notice with every copy.
|
|
9
|
+
|
|
10
|
+
THE PROGRAM IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
11
|
+
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
12
|
+
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
13
|
+
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
|
14
|
+
OF OR IN CONNECTION WITH THE PROGRAM OR THE USE OR OTHER DEALINGS IN THE PROGRAM. YOU ARE
|
|
15
|
+
RESPONSIBLE FOR WHAT IT DOES ON YOUR MACHINE AND FOR THE MODEL PROVIDERS' CHARGES IT
|
|
16
|
+
INCURS.
|
package/README.md
CHANGED
|
@@ -1,3 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# unocode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Uno is a coding agent for the terminal. It reads your project, edits files and runs commands, asking before it changes anything. Shell commands run in a sandbox that cannot write outside the project, read your secrets or reach the network. Spending has a hard cap, and every file change can be undone.
|
|
4
|
+
|
|
5
|
+
Documentation: **https://unocode.motiontic.com**
|
|
6
|
+
|
|
7
|
+
This repository holds the releases and the documentation site. The source is not public.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl -fsSL https://unocode.motiontic.com/install.sh | sh
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
brew install motiontic/tap/uno
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm i -g @motiontic/uno
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
macOS and Linux, on arm64 and x86_64. Then run `uno` in a project folder.
|
|
24
|
+
|
|
25
|
+
`install.sh` puts `uno` in `~/.local/bin` (set `UNO_INSTALL_DIR` to change that, or `UNO_VERSION` to pick a version) and checks the download against the release's `SHA256SUMS`, and against its signature when [minisign](https://jedisct1.github.io/minisign/) is installed.
|
|
26
|
+
|
|
27
|
+
## Update
|
|
28
|
+
|
|
29
|
+
- Installed with `install.sh`: `uno update`
|
|
30
|
+
- Homebrew: `brew upgrade uno`
|
|
31
|
+
- npm: `npm i -g @motiontic/uno`
|
|
32
|
+
|
|
33
|
+
## Check a download yourself
|
|
34
|
+
|
|
35
|
+
Each program file has a minisign signature beside it. The public key is in [minisign.pub](minisign.pub):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
minisign -V -p minisign.pub -m uno-aarch64-apple-darwin
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Licence
|
|
42
|
+
|
|
43
|
+
Free to use; see [LICENSE](LICENSE).
|
package/bin/uno.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Starts uno from the package npm installed for this machine (@motiontic/uno-<os>-<cpu>).
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
const { spawn } = require("node:child_process");
|
|
6
|
+
const fs = require("node:fs");
|
|
7
|
+
const os = require("node:os");
|
|
8
|
+
const path = require("node:path");
|
|
9
|
+
|
|
10
|
+
const supported = {
|
|
11
|
+
"darwin arm64": "darwin-arm64",
|
|
12
|
+
"darwin x64": "darwin-x64",
|
|
13
|
+
"linux arm64": "linux-arm64",
|
|
14
|
+
"linux x64": "linux-x64",
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function fail(message) {
|
|
18
|
+
process.stderr.write(`uno: ${message}\n`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const machine = supported[`${process.platform} ${process.arch}`];
|
|
23
|
+
if (!machine) {
|
|
24
|
+
fail(`unocode runs on macOS and Linux, on arm64 and x64; this is ${process.platform} ${process.arch}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const pkg = `@motiontic/uno-${machine}`;
|
|
28
|
+
let program;
|
|
29
|
+
try {
|
|
30
|
+
program = path.join(path.dirname(require.resolve(`${pkg}/package.json`)), "uno");
|
|
31
|
+
} catch {
|
|
32
|
+
fail(`the package ${pkg} is missing; reinstall with: npm i -g @motiontic/uno`);
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
fs.accessSync(program, fs.constants.X_OK);
|
|
36
|
+
} catch {
|
|
37
|
+
try {
|
|
38
|
+
fs.chmodSync(program, 0o755);
|
|
39
|
+
} catch {
|
|
40
|
+
fail(`${program} cannot be run and its mode cannot be changed; reinstall with: npm i -g @motiontic/uno`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const child = spawn(program, process.argv.slice(2), { stdio: "inherit" });
|
|
45
|
+
|
|
46
|
+
// Ctrl-C, Ctrl-\ and a closed terminal reach uno from the terminal itself, so the launcher
|
|
47
|
+
// only has to stay alive until uno is done. A signal sent to the launcher alone is passed on.
|
|
48
|
+
for (const signal of ["SIGINT", "SIGQUIT", "SIGHUP"]) process.on(signal, () => {});
|
|
49
|
+
process.on("SIGTERM", () => child.kill("SIGTERM"));
|
|
50
|
+
|
|
51
|
+
child.on("error", (e) => fail(`cannot start ${program}: ${e.message}`));
|
|
52
|
+
child.on("exit", (code, signal) => {
|
|
53
|
+
if (signal) {
|
|
54
|
+
// End the same way uno did. Node ignores or handles some signals itself (SIGPIPE,
|
|
55
|
+
// SIGUSR1), so exit with the shell's code for that signal if this one returns.
|
|
56
|
+
process.removeAllListeners(signal);
|
|
57
|
+
process.kill(process.pid, signal);
|
|
58
|
+
process.exit(128 + (os.constants.signals[signal] ?? 0));
|
|
59
|
+
} else {
|
|
60
|
+
process.exit(code ?? 1);
|
|
61
|
+
}
|
|
62
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motiontic/uno",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Uno, the unocode coding agent for the terminal",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"homepage": "https://unocode.motiontic.com",
|
|
7
|
+
"bin": { "uno": "bin/uno.js" },
|
|
8
|
+
"files": ["bin/uno.js", "LICENSE", "README.md"],
|
|
9
|
+
"engines": { "node": ">=18" },
|
|
10
|
+
"optionalDependencies": {
|
|
11
|
+
"@motiontic/uno-darwin-arm64": "0.1.0",
|
|
12
|
+
"@motiontic/uno-darwin-x64": "0.1.0",
|
|
13
|
+
"@motiontic/uno-linux-arm64": "0.1.0",
|
|
14
|
+
"@motiontic/uno-linux-x64": "0.1.0"
|
|
15
|
+
}
|
|
16
|
+
}
|