@vex-chat/cli 0.1.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.
- package/CLA.md +38 -0
- package/LICENSE +661 -0
- package/LICENSE-COMMERCIAL +10 -0
- package/LICENSING.md +15 -0
- package/README.md +62 -0
- package/package.json +53 -0
- package/src/vex-chat.js +4100 -0
- package/theme.yaml +36 -0
package/LICENSING.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Licensing
|
|
2
|
+
|
|
3
|
+
## Open source (default)
|
|
4
|
+
|
|
5
|
+
The default **public** license is the **GNU Affero General Public License v3.0** — see the full text in [`LICENSE`](./LICENSE). The SPDX identifier in `package.json` may use **AGPL-3.0-or-later**; either way, the grant is at least AGPL v3.
|
|
6
|
+
|
|
7
|
+
## Commercial licensing
|
|
8
|
+
|
|
9
|
+
Commercial licenses are offered by **Vex Heavy Industries LLC**. See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) for contact details ([vex.wtf](https://vex.wtf), **licensing@vex.wtf**).
|
|
10
|
+
|
|
11
|
+
If you need terms **other than the AGPL** (for example, a proprietary product or a deployment where AGPL obligations are not acceptable), inquire there.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
_This file summarizes how we intend licensing to work. It is not legal advice. For binding terms, rely on the written agreement or license grant you receive from the copyright holders._
|
package/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# @vex-chat/cli
|
|
2
|
+
|
|
3
|
+
Terminal chat client for Vex backed by `@vex-chat/libvex`.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
pnpm vex
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
On first run, `vex` prompts for a username and registers a local device key.
|
|
10
|
+
After that it opens straight into a live chat session.
|
|
11
|
+
|
|
12
|
+
By default the CLI connects to production at `api.vex.wtf`. For local Spire development, pass `--local` to use `127.0.0.1:16777` over http/ws. Custom targets can use `--api-url <url>` to set both the host and protocol, or `--host <host:port> --http` to set them separately.
|
|
13
|
+
|
|
14
|
+
Inside the app:
|
|
15
|
+
|
|
16
|
+
- `/accounts` lists local users on this machine
|
|
17
|
+
- `/nav` opens a channel or DM
|
|
18
|
+
- `/join [server]` chooses a server, then asks which channel to open
|
|
19
|
+
- `/servers` browses your available servers, then opens a channel
|
|
20
|
+
- `/channels` chooses a channel
|
|
21
|
+
- `/window` lists open chats
|
|
22
|
+
- `/window <number>` switches to an open chat
|
|
23
|
+
- `/user <username-or-user-id>` opens a DM conversation
|
|
24
|
+
- `/inbox` shows DMs, unread counts, and recent senders
|
|
25
|
+
- `/dm` also opens the inbox
|
|
26
|
+
- `/dm <username-or-user-id>` opens a DM conversation
|
|
27
|
+
- `/dm <username-or-user-id> <message>` sends a DM and opens that conversation
|
|
28
|
+
- `/to <username-or-user-id>` opens a DM conversation
|
|
29
|
+
- `/create` asks for a server name and selects its `#general`
|
|
30
|
+
- `/invite` asks for duration and creates a pasteable `vex://invite/...` link
|
|
31
|
+
- `/invite <username-or-user-id>` sends an invite link by DM
|
|
32
|
+
- Incoming `vex://invite/...` links show a server preview and ask whether to join
|
|
33
|
+
- `redeem <code-or-link>` previews a server invite, asks you to confirm, then opens its first channel
|
|
34
|
+
- Plain text sends to the selected DM/channel
|
|
35
|
+
- `/create server <name>` creates a server and selects its `#general`
|
|
36
|
+
- `/invite [duration]` creates a pasteable `vex://invite/...` link for the current server
|
|
37
|
+
- `/members` lists people in the current channel
|
|
38
|
+
- `/whoami`
|
|
39
|
+
- `/quit`
|
|
40
|
+
|
|
41
|
+
Scriptable helpers still exist:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
pnpm vex auth register alice
|
|
45
|
+
pnpm vex auth register bob
|
|
46
|
+
pnpm vex alice
|
|
47
|
+
pnpm vex bob
|
|
48
|
+
pnpm vex auth accounts
|
|
49
|
+
pnpm vex dm send bob "hello"
|
|
50
|
+
pnpm vex server create team
|
|
51
|
+
pnpm vex invite redeem <invite-id>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Incoming messages play a small sound by default. Use `--sound off` to disable it, `--sound Glass` for a macOS system sound name, or `--sound /path/to/file.wav` for a custom audio file. `VEX_CHAT_SOUND` works too.
|
|
55
|
+
|
|
56
|
+
For delivery debugging, run chat with `--debug`:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
pnpm --silent vex --debug alice
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Debug mode writes CLI send/receive/routing decisions to a log file under the CLI data directory. Use `--debug-file ./alice-debug.log` to choose a path. Use `--debug-level trace` only when you also need noisy libvex mail diagnostics.
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vex-chat/cli",
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Terminal client for vex-chat.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"vex-chat": "./src/vex-chat.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"src",
|
|
11
|
+
"theme.yaml",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"LICENSE-COMMERCIAL",
|
|
14
|
+
"LICENSING.md",
|
|
15
|
+
"CLA.md"
|
|
16
|
+
],
|
|
17
|
+
"author": "Extra <extrahash@protonmail.com>",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/vex-protocol/vex-protocol.git",
|
|
21
|
+
"directory": "apps/vex-cli"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/vex-protocol/vex-protocol/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/vex-protocol/vex-protocol/tree/master/apps/vex-cli#readme",
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"registry": "https://registry.npmjs.org/"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"better-sqlite3": "11.10.0",
|
|
33
|
+
"msgpackr": "^1.11.9",
|
|
34
|
+
"@vex-chat/libvex": "^6.6.1"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^25.6.0",
|
|
38
|
+
"publint": "0.3.18"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=24.0.0"
|
|
42
|
+
},
|
|
43
|
+
"license": "AGPL-3.0-or-later",
|
|
44
|
+
"scripts": {
|
|
45
|
+
"vex": "pnpm --dir ../.. --filter @vex-chat/types --filter @vex-chat/crypto --filter @vex-chat/libvex --if-present build && node src/vex-chat.js",
|
|
46
|
+
"start": "pnpm --dir ../.. --filter @vex-chat/types --filter @vex-chat/crypto --filter @vex-chat/libvex --if-present build && node src/vex-chat.js",
|
|
47
|
+
"dev": "pnpm --dir ../.. --filter @vex-chat/types --filter @vex-chat/crypto --filter @vex-chat/libvex --if-present build && node scripts/dev-watch.mjs",
|
|
48
|
+
"watch": "pnpm --dir ../.. --filter @vex-chat/types --filter @vex-chat/crypto --filter @vex-chat/libvex --if-present build && node scripts/dev-watch.mjs",
|
|
49
|
+
"diagnose": "node scripts/diagnose-three-clients.mjs",
|
|
50
|
+
"smoke": "node scripts/smoke-three-clients.mjs",
|
|
51
|
+
"lint:pkg": "publint --strict"
|
|
52
|
+
}
|
|
53
|
+
}
|