opencode-router 0.11.77
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/.env.example +23 -0
- package/LICENSE +21 -0
- package/README.md +139 -0
- package/install.sh +147 -0
- package/package.json +58 -0
package/.env.example
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
OPENCODE_URL=http://127.0.0.1:4096
|
|
2
|
+
OPENCODE_DIRECTORY=
|
|
3
|
+
OPENCODE_SERVER_USERNAME=
|
|
4
|
+
OPENCODE_SERVER_PASSWORD=
|
|
5
|
+
|
|
6
|
+
TELEGRAM_BOT_TOKEN=
|
|
7
|
+
TELEGRAM_ENABLED=true
|
|
8
|
+
|
|
9
|
+
SLACK_BOT_TOKEN=
|
|
10
|
+
SLACK_APP_TOKEN=
|
|
11
|
+
SLACK_ENABLED=true
|
|
12
|
+
|
|
13
|
+
OPENCODE_ROUTER_DATA_DIR=~/.openwork/opencode-router
|
|
14
|
+
OPENCODE_ROUTER_DB_PATH=~/.openwork/opencode-router/opencode-router.db
|
|
15
|
+
OPENCODE_ROUTER_CONFIG_PATH=~/.openwork/opencode-router/opencode-router.json
|
|
16
|
+
# Alias for OPENCODE_ROUTER_HEALTH_PORT (preferred name)
|
|
17
|
+
OPENCODE_ROUTER_HEALTH_PORT=
|
|
18
|
+
OPENCODE_ROUTER_HEALTH_PORT=3005
|
|
19
|
+
TOOL_UPDATES_ENABLED=false
|
|
20
|
+
GROUPS_ENABLED=false
|
|
21
|
+
TOOL_OUTPUT_LIMIT=1200
|
|
22
|
+
PERMISSION_MODE=allow
|
|
23
|
+
LOG_LEVEL=info
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Different AI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# opencode-router
|
|
2
|
+
|
|
3
|
+
Simple Slack + Telegram bridge + directory router for a running `opencode` server.
|
|
4
|
+
|
|
5
|
+
## Install + Run
|
|
6
|
+
|
|
7
|
+
One-command install (recommended):
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/packages/opencode-router/install.sh | bash
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or install from npm:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g opencode-router
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Quick run without install:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx opencode-router
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then follow the guided setup (choose what to configure, start).
|
|
26
|
+
|
|
27
|
+
1) One-command setup (installs deps, builds, creates `.env` if missing):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm -C packages/opencode-router setup
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2) (Optional) Fill in `packages/opencode-router/.env` (see `.env.example`).
|
|
34
|
+
|
|
35
|
+
Required:
|
|
36
|
+
- `OPENCODE_URL`
|
|
37
|
+
- `OPENCODE_DIRECTORY`
|
|
38
|
+
|
|
39
|
+
Recommended:
|
|
40
|
+
- `OPENCODE_SERVER_USERNAME`
|
|
41
|
+
- `OPENCODE_SERVER_PASSWORD`
|
|
42
|
+
|
|
43
|
+
3) Run the router:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
opencode-router
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Telegram
|
|
50
|
+
|
|
51
|
+
Telegram support is configured via identities. You can either:
|
|
52
|
+
- Use env vars for a single bot: `TELEGRAM_BOT_TOKEN=...`
|
|
53
|
+
- Or add multiple bots to the config file (`opencode-router.json`) using the CLI:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
opencode-router telegram add <token> --id default
|
|
57
|
+
opencode-router telegram list
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Slack (Socket Mode)
|
|
61
|
+
|
|
62
|
+
Slack support uses Socket Mode and replies in threads when @mentioned in channels.
|
|
63
|
+
|
|
64
|
+
1) Create a Slack app.
|
|
65
|
+
2) Enable Socket Mode and generate an app token (`xapp-...`).
|
|
66
|
+
3) Add bot token scopes:
|
|
67
|
+
- `chat:write`
|
|
68
|
+
- `app_mentions:read`
|
|
69
|
+
- `im:history`
|
|
70
|
+
4) Subscribe to events (bot events):
|
|
71
|
+
- `app_mention`
|
|
72
|
+
- `message.im`
|
|
73
|
+
5) Set env vars (or save via `opencode-router slack add ...`):
|
|
74
|
+
- `SLACK_BOT_TOKEN=xoxb-...`
|
|
75
|
+
- `SLACK_APP_TOKEN=xapp-...`
|
|
76
|
+
- `SLACK_ENABLED=true`
|
|
77
|
+
|
|
78
|
+
To add multiple Slack apps:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
opencode-router slack add <xoxb> <xapp> --id default
|
|
82
|
+
opencode-router slack list
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Identity-Scoped Routing
|
|
86
|
+
|
|
87
|
+
The router routes messages based on `(channel, identityId, peerId) -> directory` bindings.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
opencode-router bindings set --channel telegram --identity default --peer <chatId> --dir /path/to/workdir
|
|
91
|
+
opencode-router bindings list
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Health Server (Local HTTP)
|
|
95
|
+
|
|
96
|
+
The router can expose a small local HTTP server for health/config and simple message dispatch.
|
|
97
|
+
|
|
98
|
+
- `OPENCODE_ROUTER_HEALTH_PORT` controls the port (OpenWork defaults to a random free port when using `openwork`).
|
|
99
|
+
- `PORT` is also accepted as a convenience if the above are unset.
|
|
100
|
+
- `OPENCODE_ROUTER_HEALTH_HOST` controls bind host (default: `127.0.0.1`).
|
|
101
|
+
|
|
102
|
+
Send a message to all peers bound to a directory:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
curl -sS "http://127.0.0.1:${OPENCODE_ROUTER_HEALTH_PORT:-3005}/send" \
|
|
106
|
+
-H 'Content-Type: application/json' \
|
|
107
|
+
-d '{"channel":"telegram","directory":"/path/to/workdir","text":"hello"}'
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Commands
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
opencode-router start
|
|
114
|
+
opencode-router status
|
|
115
|
+
|
|
116
|
+
opencode-router telegram list
|
|
117
|
+
opencode-router telegram add <token> --id default
|
|
118
|
+
|
|
119
|
+
opencode-router slack list
|
|
120
|
+
opencode-router slack add <xoxb> <xapp> --id default
|
|
121
|
+
|
|
122
|
+
opencode-router bindings list
|
|
123
|
+
opencode-router bindings set --channel telegram --identity default --peer <chatId> --dir /path/to/workdir
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Defaults
|
|
127
|
+
|
|
128
|
+
- SQLite at `~/.openwork/opencode-router/opencode-router.db` unless overridden.
|
|
129
|
+
- Config stored at `~/.openwork/opencode-router/opencode-router.json` (created by `opencode-router` or `pnpm -C packages/opencode-router setup`).
|
|
130
|
+
- Group chats are disabled unless `GROUPS_ENABLED=true`.
|
|
131
|
+
|
|
132
|
+
## Tests
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pnpm -C packages/opencode-router test:unit
|
|
136
|
+
pnpm -C packages/opencode-router test:smoke
|
|
137
|
+
pnpm -C packages/opencode-router test:cli
|
|
138
|
+
pnpm -C packages/opencode-router test:npx
|
|
139
|
+
```
|
package/install.sh
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
OPENCODE_ROUTER_REF="${OPENCODE_ROUTER_REF:-dev}"
|
|
5
|
+
OPENCODE_ROUTER_REPO="${OPENCODE_ROUTER_REPO:-https://github.com/different-ai/openwork.git}"
|
|
6
|
+
OPENCODE_ROUTER_INSTALL_DIR="${OPENCODE_ROUTER_INSTALL_DIR:-$HOME/.openwork/opencode-router/openwork}"
|
|
7
|
+
OPENCODE_ROUTER_BIN_DIR="${OPENCODE_ROUTER_BIN_DIR:-$HOME/.local/bin}"
|
|
8
|
+
OPENCODE_ROUTER_INSTALL_METHOD="${OPENCODE_ROUTER_INSTALL_METHOD:-npm}"
|
|
9
|
+
|
|
10
|
+
usage() {
|
|
11
|
+
cat <<'EOF'
|
|
12
|
+
opencode-router installer
|
|
13
|
+
|
|
14
|
+
Environment variables:
|
|
15
|
+
OPENCODE_ROUTER_INSTALL_DIR Install directory (default: ~/.openwork/opencode-router/openwork)
|
|
16
|
+
OPENCODE_ROUTER_REPO Git repo (default: https://github.com/different-ai/openwork.git)
|
|
17
|
+
OPENCODE_ROUTER_REF Git ref/branch (default: dev)
|
|
18
|
+
OPENCODE_ROUTER_BIN_DIR Bin directory for shims (default: ~/.local/bin)
|
|
19
|
+
OPENCODE_ROUTER_INSTALL_METHOD Install method: npm|git (default: npm)
|
|
20
|
+
|
|
21
|
+
Example:
|
|
22
|
+
OPENCODE_ROUTER_INSTALL_DIR=~/opencode-router curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/packages/opencode-router/install.sh | bash
|
|
23
|
+
EOF
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
|
27
|
+
usage
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
require_bin() {
|
|
32
|
+
if ! command -v "$1" >/dev/null 2>&1; then
|
|
33
|
+
echo "Missing $1. Please install it and retry." >&2
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
require_bin node
|
|
39
|
+
|
|
40
|
+
if [[ "$OPENCODE_ROUTER_INSTALL_METHOD" == "npm" ]]; then
|
|
41
|
+
echo "Installing opencode-router via npm..."
|
|
42
|
+
npm install -g opencode-router
|
|
43
|
+
else
|
|
44
|
+
require_bin git
|
|
45
|
+
if ! command -v pnpm >/dev/null 2>&1; then
|
|
46
|
+
if command -v corepack >/dev/null 2>&1; then
|
|
47
|
+
corepack enable >/dev/null 2>&1 || true
|
|
48
|
+
corepack prepare pnpm@10.27.0 --activate
|
|
49
|
+
else
|
|
50
|
+
echo "pnpm is required. Install pnpm or enable corepack, then retry." >&2
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
if [[ -d "$OPENCODE_ROUTER_INSTALL_DIR/.git" ]]; then
|
|
56
|
+
echo "Updating opencode-router source in $OPENCODE_ROUTER_INSTALL_DIR"
|
|
57
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" fetch origin --prune
|
|
58
|
+
if git -C "$OPENCODE_ROUTER_INSTALL_DIR" show-ref --verify --quiet "refs/remotes/origin/$OPENCODE_ROUTER_REF"; then
|
|
59
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" checkout -B "$OPENCODE_ROUTER_REF" "origin/$OPENCODE_ROUTER_REF"
|
|
60
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" pull --ff-only origin "$OPENCODE_ROUTER_REF"
|
|
61
|
+
else
|
|
62
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" checkout -f
|
|
63
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" pull --ff-only
|
|
64
|
+
fi
|
|
65
|
+
else
|
|
66
|
+
echo "Cloning opencode-router source to $OPENCODE_ROUTER_INSTALL_DIR"
|
|
67
|
+
mkdir -p "$OPENCODE_ROUTER_INSTALL_DIR"
|
|
68
|
+
git clone --depth 1 "$OPENCODE_ROUTER_REPO" "$OPENCODE_ROUTER_INSTALL_DIR"
|
|
69
|
+
if git -C "$OPENCODE_ROUTER_INSTALL_DIR" show-ref --verify --quiet "refs/remotes/origin/$OPENCODE_ROUTER_REF"; then
|
|
70
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" checkout -B "$OPENCODE_ROUTER_REF" "origin/$OPENCODE_ROUTER_REF"
|
|
71
|
+
fi
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" ]]; then
|
|
75
|
+
echo "opencode-router package not found on ref '$OPENCODE_ROUTER_REF'. Trying dev/main..." >&2
|
|
76
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" fetch origin --prune
|
|
77
|
+
if git -C "$OPENCODE_ROUTER_INSTALL_DIR" show-ref --verify --quiet refs/remotes/origin/dev; then
|
|
78
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" checkout -B dev origin/dev
|
|
79
|
+
elif git -C "$OPENCODE_ROUTER_INSTALL_DIR" show-ref --verify --quiet refs/remotes/origin/main; then
|
|
80
|
+
git -C "$OPENCODE_ROUTER_INSTALL_DIR" checkout -B main origin/main
|
|
81
|
+
fi
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" ]]; then
|
|
85
|
+
echo "opencode-router package not found after checkout. Aborting." >&2
|
|
86
|
+
exit 1
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
echo "Installing dependencies..."
|
|
90
|
+
pnpm -C "$OPENCODE_ROUTER_INSTALL_DIR" install
|
|
91
|
+
|
|
92
|
+
echo "Building opencode-router..."
|
|
93
|
+
pnpm -C "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" build
|
|
94
|
+
|
|
95
|
+
ENV_PATH="$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/.env"
|
|
96
|
+
ENV_EXAMPLE="$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/.env.example"
|
|
97
|
+
if [[ ! -f "$ENV_PATH" ]]; then
|
|
98
|
+
if [[ -f "$ENV_EXAMPLE" ]]; then
|
|
99
|
+
cp "$ENV_EXAMPLE" "$ENV_PATH"
|
|
100
|
+
echo "Created $ENV_PATH"
|
|
101
|
+
else
|
|
102
|
+
cat <<EOF > "$ENV_PATH"
|
|
103
|
+
OPENCODE_URL=http://127.0.0.1:4096
|
|
104
|
+
OPENCODE_DIRECTORY=
|
|
105
|
+
TELEGRAM_BOT_TOKEN=
|
|
106
|
+
SLACK_BOT_TOKEN=
|
|
107
|
+
SLACK_APP_TOKEN=
|
|
108
|
+
EOF
|
|
109
|
+
echo "Created $ENV_PATH (minimal)"
|
|
110
|
+
fi
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
mkdir -p "$OPENCODE_ROUTER_BIN_DIR"
|
|
114
|
+
cat <<EOF > "$OPENCODE_ROUTER_BIN_DIR/opencode-router"
|
|
115
|
+
#!/usr/bin/env bash
|
|
116
|
+
set -euo pipefail
|
|
117
|
+
node "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/dist/cli.js" "$@"
|
|
118
|
+
EOF
|
|
119
|
+
chmod 755 "$OPENCODE_ROUTER_BIN_DIR/opencode-router"
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
if ! echo ":$PATH:" | grep -q ":$OPENCODE_ROUTER_BIN_DIR:"; then
|
|
123
|
+
shell_name="$(basename "${SHELL:-}" 2>/dev/null || true)"
|
|
124
|
+
case "$shell_name" in
|
|
125
|
+
fish)
|
|
126
|
+
echo "Add to PATH (fish): set -Ux PATH $OPENCODE_ROUTER_BIN_DIR \$PATH"
|
|
127
|
+
;;
|
|
128
|
+
zsh)
|
|
129
|
+
echo "Add to PATH (zsh): echo 'export PATH=\"$OPENCODE_ROUTER_BIN_DIR:\$PATH\"' >> ~/.zshrc"
|
|
130
|
+
;;
|
|
131
|
+
bash)
|
|
132
|
+
echo "Add to PATH (bash): echo 'export PATH=\"$OPENCODE_ROUTER_BIN_DIR:\$PATH\"' >> ~/.bashrc"
|
|
133
|
+
;;
|
|
134
|
+
*)
|
|
135
|
+
echo "Add to PATH: export PATH=\"$OPENCODE_ROUTER_BIN_DIR:\$PATH\""
|
|
136
|
+
;;
|
|
137
|
+
esac
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
cat <<EOF
|
|
141
|
+
|
|
142
|
+
opencode-router installed.
|
|
143
|
+
|
|
144
|
+
Next steps:
|
|
145
|
+
1) Edit: $ENV_PATH
|
|
146
|
+
2) Run: opencode-router start
|
|
147
|
+
EOF
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-router",
|
|
3
|
+
"version": "0.11.77",
|
|
4
|
+
"description": "opencode-router: Slack + Telegram bridge + directory routing for a running opencode server",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"opencode-router": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/different-ai/openwork.git",
|
|
14
|
+
"directory": "packages/opencode-router"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"opencode",
|
|
18
|
+
"router",
|
|
19
|
+
"slack",
|
|
20
|
+
"telegram",
|
|
21
|
+
"bridge",
|
|
22
|
+
"bot"
|
|
23
|
+
],
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md",
|
|
27
|
+
".env.example",
|
|
28
|
+
"install.sh"
|
|
29
|
+
],
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@opencode-ai/sdk": "^1.1.31",
|
|
32
|
+
"@slack/socket-mode": "^2.0.5",
|
|
33
|
+
"@slack/web-api": "^7.13.0",
|
|
34
|
+
"commander": "^12.1.0",
|
|
35
|
+
"dotenv": "^16.4.7",
|
|
36
|
+
"grammy": "^1.39.3",
|
|
37
|
+
"pino": "^9.6.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.10.2",
|
|
41
|
+
"bun-types": "^1.3.6",
|
|
42
|
+
"typescript": "^5.6.3"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"dev": "bun src/cli.ts",
|
|
46
|
+
"build": "tsc -p tsconfig.json",
|
|
47
|
+
"build:bin": "bun ./script/build.ts --outdir dist/bin --filename opencode-router",
|
|
48
|
+
"build:bin:all": "bun ./script/build.ts --outdir dist/bin --filename opencode-router --target bun-darwin-arm64 --target bun-darwin-x64 --target bun-linux-x64 --target bun-linux-arm64 --target bun-windows-x64",
|
|
49
|
+
"build:binary": "bun ./script/build.ts --outdir dist/bin --filename opencode-router",
|
|
50
|
+
"start": "bun dist/cli.js start",
|
|
51
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
52
|
+
"setup": "bun scripts/setup.mjs",
|
|
53
|
+
"test:unit": "pnpm build && bun test test/*.test.js",
|
|
54
|
+
"test:smoke": "bun scripts/smoke.mjs",
|
|
55
|
+
"test:cli": "pnpm build && bun scripts/test-cli.mjs",
|
|
56
|
+
"test:npx": "bun scripts/test-npx.mjs"
|
|
57
|
+
}
|
|
58
|
+
}
|