@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.
Files changed (4) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +42 -2
  3. package/bin/uno.js +62 -0
  4. 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
- # Temporary Holding Version
1
+ # unocode
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
+ }