@quantiya/codevibe 1.0.71 → 2.0.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/README.md +7 -7
- package/bin/codevibe +69 -16
- package/package.json +6 -10
- package/bin/codevibe-gemini +0 -70
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CodeVibe
|
|
2
2
|
|
|
3
|
-
**Control Claude Code,
|
|
3
|
+
**Control Claude Code, OpenAI Codex CLI, and Antigravity CLI from your iPhone and Android.**
|
|
4
4
|
|
|
5
5
|
See your agent's work in real time, approve file edits on the go, dictate prompts by voice, send screenshots — all from your phone, anywhere you are. End-to-end encrypted.
|
|
6
6
|
|
|
@@ -20,8 +20,8 @@ This installs everything automatically: Node.js, tmux, Claude Code, the CodeVibe
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
codevibe-claude # for Claude Code
|
|
23
|
-
codevibe-gemini # for Gemini CLI
|
|
24
23
|
codevibe-codex # for OpenAI Codex CLI
|
|
24
|
+
codevibe-agy # for Antigravity CLI
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Your session appears on your phone automatically.
|
|
@@ -52,7 +52,7 @@ codevibe --help # Show all commands
|
|
|
52
52
|
- **📷 Image attachments** — send screenshots or photos alongside messages
|
|
53
53
|
- **🔔 Push notifications** — never block on permission dialogs again
|
|
54
54
|
- **📬 Delivery confirmation** — checkmarks for sent, delivered, and executed
|
|
55
|
-
- **🧠 Multi-agent** — Claude Code,
|
|
55
|
+
- **🧠 Multi-agent** — Claude Code, Codex CLI, and Antigravity CLI sessions in one app, side-by-side
|
|
56
56
|
- **🔒 End-to-end encrypted** — AES-256-GCM; your prompts never pass through a server that can read them
|
|
57
57
|
- **📡 Offline queue** — messages queue when offline, auto-send on reconnect
|
|
58
58
|
- **🔓 Locked-screen support** — works even when your computer screen is locked, via tmux
|
|
@@ -66,7 +66,7 @@ codevibe --help # Show all commands
|
|
|
66
66
|
|
|
67
67
|
## Why CodeVibe
|
|
68
68
|
|
|
69
|
-
Long-running agents (Claude Code,
|
|
69
|
+
Long-running agents (Claude Code, Codex CLI, Antigravity CLI) need human-in-the-loop approvals for file edits, shell commands, and policy-sensitive actions. When you step away from your desk, those approvals block your agent indefinitely. CodeVibe moves the approval to your phone — same options, same semantics, with the bonus of voice prompts and image attachments from anywhere.
|
|
70
70
|
|
|
71
71
|
It's not a chat app. It's a remote control for the coding agents you already use.
|
|
72
72
|
|
|
@@ -87,11 +87,11 @@ It's not a chat app. It's a remote control for the coding agents you already use
|
|
|
87
87
|
`@quantiya/codevibe` is a meta-package that installs:
|
|
88
88
|
|
|
89
89
|
- The `codevibe` CLI (login, logout, update, status)
|
|
90
|
-
- Wrapper binaries: `codevibe-claude`, `codevibe-
|
|
91
|
-
-
|
|
90
|
+
- Wrapper binaries: `codevibe-claude`, `codevibe-codex`, `codevibe-agy`
|
|
91
|
+
- The plugin packages as dependencies:
|
|
92
92
|
- [`@quantiya/codevibe-claude-plugin`](https://www.npmjs.com/package/@quantiya/codevibe-claude-plugin)
|
|
93
|
-
- [`@quantiya/codevibe-gemini-plugin`](https://www.npmjs.com/package/@quantiya/codevibe-gemini-plugin)
|
|
94
93
|
- [`@quantiya/codevibe-codex-plugin`](https://www.npmjs.com/package/@quantiya/codevibe-codex-plugin)
|
|
94
|
+
- [`@quantiya/codevibe-antigravity-plugin`](https://www.npmjs.com/package/@quantiya/codevibe-antigravity-plugin)
|
|
95
95
|
- The shared [`@quantiya/codevibe-core`](https://www.npmjs.com/package/@quantiya/codevibe-core) library
|
|
96
96
|
|
|
97
97
|
You install this one package; it pulls in everything else.
|
package/bin/codevibe
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# codevibe - CodeVibe CLI
|
|
4
4
|
#
|
|
5
5
|
# Manages authentication, updates, and plugin lifecycle.
|
|
6
|
-
# Authentication is shared across all CodeVibe plugins (Claude, Codex,
|
|
6
|
+
# Authentication is shared across all CodeVibe plugins (Claude, Codex, Antigravity).
|
|
7
7
|
#
|
|
8
8
|
# Usage:
|
|
9
9
|
# codevibe login # Sign in via browser
|
|
@@ -53,10 +53,14 @@ show_help() {
|
|
|
53
53
|
echo " update Update all CodeVibe packages and Claude plugin"
|
|
54
54
|
echo " version Show installed package versions"
|
|
55
55
|
echo " reset-device Reset device identity (destructive)"
|
|
56
|
+
echo " orchestration Configure Quorum 2.0 reviewer policy (enable/disable/configure)"
|
|
57
|
+
echo ""
|
|
58
|
+
echo "Run 'codevibe' with no arguments to launch the orchestration shell"
|
|
59
|
+
echo "(Pro/Max only — Free tier hands off to Companion mode)."
|
|
60
|
+
echo "Use --mode {companion|orchestration} to override mode selection."
|
|
56
61
|
echo ""
|
|
57
62
|
echo "Agent wrappers:"
|
|
58
63
|
echo " codevibe-claude Start Claude Code with mobile sync"
|
|
59
|
-
echo " codevibe-gemini Start Gemini CLI with mobile sync"
|
|
60
64
|
echo " codevibe-codex Start Codex CLI with mobile sync"
|
|
61
65
|
echo " codevibe-agy Start Antigravity CLI with mobile sync"
|
|
62
66
|
echo ""
|
|
@@ -85,7 +89,7 @@ show_version() {
|
|
|
85
89
|
fi
|
|
86
90
|
|
|
87
91
|
# Plugin versions
|
|
88
|
-
for plugin in claude
|
|
92
|
+
for plugin in claude codex antigravity; do
|
|
89
93
|
PKG="$PACKAGE_DIR/node_modules/@quantiya/codevibe-${plugin}-plugin/package.json"
|
|
90
94
|
if [ -f "$PKG" ]; then
|
|
91
95
|
VER=$(node -p "require('$PKG').version" 2>/dev/null || echo "?")
|
|
@@ -107,11 +111,6 @@ show_version() {
|
|
|
107
111
|
_print_cli_section_header
|
|
108
112
|
echo -e " Claude Code ${GREEN}$CLAUDE_VER${NC}"
|
|
109
113
|
fi
|
|
110
|
-
if command -v gemini >/dev/null 2>&1; then
|
|
111
|
-
GEMINI_VER=$(gemini --version 2>/dev/null | head -1 || echo "?")
|
|
112
|
-
_print_cli_section_header
|
|
113
|
-
echo -e " Gemini CLI ${GREEN}$GEMINI_VER${NC}"
|
|
114
|
-
fi
|
|
115
114
|
if command -v codex >/dev/null 2>&1; then
|
|
116
115
|
CODEX_VER=$(codex --version 2>/dev/null | head -1 || echo "?")
|
|
117
116
|
_print_cli_section_header
|
|
@@ -317,8 +316,19 @@ do_update() {
|
|
|
317
316
|
|
|
318
317
|
# ─── Command routing ─────────────────────────────────────────────────
|
|
319
318
|
|
|
319
|
+
# CodeVibe 2.0 CP-1.a: when no recognized subcommand is provided AND
|
|
320
|
+
# argv either contains a mode flag (`--mode|--orchestration|--companion`)
|
|
321
|
+
# OR no args at all, dispatch to the orchestration-shell CLI bundled
|
|
322
|
+
# inside @quantiya/codevibe-core. Existing subcommands keep their Bash
|
|
323
|
+
# routing.
|
|
324
|
+
#
|
|
325
|
+
# The dispatch arm sits BELOW the existing case statement; the case
|
|
326
|
+
# statement falls through to the default `*` arm only when the first
|
|
327
|
+
# token is not recognized AND not "" (handled by --help arm). The
|
|
328
|
+
# 2.0-mode dispatch is checked BEFORE the unknown-command exit.
|
|
329
|
+
|
|
320
330
|
case "$1" in
|
|
321
|
-
--help|-h|help
|
|
331
|
+
--help|-h|help)
|
|
322
332
|
show_help
|
|
323
333
|
exit 0
|
|
324
334
|
;;
|
|
@@ -330,15 +340,58 @@ case "$1" in
|
|
|
330
340
|
do_update
|
|
331
341
|
exit $?
|
|
332
342
|
;;
|
|
333
|
-
login|logout|status|reset-device)
|
|
334
|
-
# Delegate to codevibe-core CLI
|
|
343
|
+
login|logout|status|reset-device|orchestration)
|
|
344
|
+
# Delegate to codevibe-core CLI. `orchestration` is a Quorum 2.0
|
|
345
|
+
# subcommand (2f.0.a.4) with its own sub-dispatch for
|
|
346
|
+
# enable/disable/status/configure — routed through runAuthCli's
|
|
347
|
+
# switch so core's CLI entry point stays the single Node entry.
|
|
335
348
|
CORE_CLI="$PACKAGE_DIR/node_modules/@quantiya/codevibe-core/bin/codevibe.js"
|
|
336
|
-
if [ -f "$CORE_CLI" ]; then
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
349
|
+
if [ ! -f "$CORE_CLI" ]; then
|
|
350
|
+
# Local-dev fallback: meta + core repos as workspace siblings, so
|
|
351
|
+
# `./bin/codevibe login` works when invoked directly from a checked-out
|
|
352
|
+
# codevibe repo without `npm install`. No effect on global install
|
|
353
|
+
# since the primary path resolves first.
|
|
354
|
+
WORKSPACE_CLI="$(dirname "$PACKAGE_DIR")/codevibe-core/bin/codevibe.js"
|
|
355
|
+
if [ -f "$WORKSPACE_CLI" ]; then
|
|
356
|
+
CORE_CLI="$WORKSPACE_CLI"
|
|
357
|
+
else
|
|
358
|
+
echo "Error: @quantiya/codevibe-core not found. Try reinstalling: npm install -g @quantiya/codevibe" >&2
|
|
359
|
+
exit 1
|
|
360
|
+
fi
|
|
341
361
|
fi
|
|
362
|
+
exec node "$CORE_CLI" "$@"
|
|
363
|
+
;;
|
|
364
|
+
model|""|--mode|--orchestration|--companion|--agent|--forget-agent|--)
|
|
365
|
+
# CodeVibe 2.0 CP-1.a: empty args OR any mode/agent/forget flag OR
|
|
366
|
+
# the POSIX `--` argv terminator → orchestration shell. The TS
|
|
367
|
+
# parser handles flag re-ordering + the `--` separator. Per
|
|
368
|
+
# Stage 2 r2 Codex MEDIUM-1.
|
|
369
|
+
#
|
|
370
|
+
# `model` (install/status/remove/health-check) also routes here: the
|
|
371
|
+
# orchestration-shell CLI owns the local Gemma runtime, so it dispatches
|
|
372
|
+
# the `model` subcommand rather than launching the shell. Without this,
|
|
373
|
+
# `codevibe model ...` fell through to the unknown-command arm on a real
|
|
374
|
+
# host install (it only worked in-container where cli.js is invoked
|
|
375
|
+
# directly).
|
|
376
|
+
SHELL_CLI=$(node -e "try { console.log(require.resolve('@quantiya/codevibe-core/dist/orchestration-shell/cli.js')) } catch(e) { process.exit(1) }" 2>/dev/null)
|
|
377
|
+
if [ -n "$SHELL_CLI" ] && [ -f "$SHELL_CLI" ]; then
|
|
378
|
+
exec node "$SHELL_CLI" "$@"
|
|
379
|
+
fi
|
|
380
|
+
# Fallback to a local lookup relative to this script.
|
|
381
|
+
SHELL_CLI_LOCAL="$PACKAGE_DIR/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js"
|
|
382
|
+
if [ -f "$SHELL_CLI_LOCAL" ]; then
|
|
383
|
+
exec node "$SHELL_CLI_LOCAL" "$@"
|
|
384
|
+
fi
|
|
385
|
+
# Workspace-sibling fallback: meta + core repos as siblings, so
|
|
386
|
+
# `./bin/codevibe --mode orchestration` works directly from a
|
|
387
|
+
# checked-out workspace without `npm install`. No effect on global
|
|
388
|
+
# install (primary path + node_modules fallback resolve first).
|
|
389
|
+
SHELL_CLI_WORKSPACE="$(dirname "$PACKAGE_DIR")/codevibe-core/dist/orchestration-shell/cli.js"
|
|
390
|
+
if [ -f "$SHELL_CLI_WORKSPACE" ]; then
|
|
391
|
+
exec node "$SHELL_CLI_WORKSPACE" "$@"
|
|
392
|
+
fi
|
|
393
|
+
echo "Error: codevibe-core orchestration-shell CLI not found. Try reinstalling: npm install -g @quantiya/codevibe" >&2
|
|
394
|
+
exit 1
|
|
342
395
|
;;
|
|
343
396
|
*)
|
|
344
397
|
echo "Unknown command: $1" >&2
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantiya/codevibe",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "CodeVibe — Control Claude Code,
|
|
3
|
+
"version": "2.0.3",
|
|
4
|
+
"description": "CodeVibe — Control Claude Code, Codex CLI, and Antigravity CLI from your iPhone and Android. Real-time sync, voice prompts, approve file edits, E2E encrypted.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"codevibe": "./bin/codevibe",
|
|
7
7
|
"codevibe-claude": "./bin/codevibe-claude",
|
|
8
|
-
"codevibe-gemini": "./bin/codevibe-gemini",
|
|
9
8
|
"codevibe-codex": "./bin/codevibe-codex",
|
|
10
9
|
"codevibe-agy": "./bin/codevibe-agy"
|
|
11
10
|
},
|
|
@@ -15,18 +14,15 @@
|
|
|
15
14
|
"LICENSE"
|
|
16
15
|
],
|
|
17
16
|
"dependencies": {
|
|
18
|
-
"@quantiya/codevibe-antigravity-plugin": "
|
|
19
|
-
"@quantiya/codevibe-claude-plugin": "
|
|
20
|
-
"@quantiya/codevibe-codex-plugin": "
|
|
21
|
-
"@quantiya/codevibe-core": "
|
|
22
|
-
"@quantiya/codevibe-gemini-plugin": "^1.0.39"
|
|
17
|
+
"@quantiya/codevibe-antigravity-plugin": "2.0.2",
|
|
18
|
+
"@quantiya/codevibe-claude-plugin": "2.0.2",
|
|
19
|
+
"@quantiya/codevibe-codex-plugin": "2.0.2",
|
|
20
|
+
"@quantiya/codevibe-core": "2.0.2"
|
|
23
21
|
},
|
|
24
22
|
"keywords": [
|
|
25
23
|
"codevibe",
|
|
26
24
|
"claude",
|
|
27
25
|
"claude-code",
|
|
28
|
-
"gemini",
|
|
29
|
-
"gemini-cli",
|
|
30
26
|
"codex",
|
|
31
27
|
"codex-cli",
|
|
32
28
|
"antigravity",
|
package/bin/codevibe-gemini
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Thin wrapper that delegates to @quantiya/codevibe-gemini-plugin
|
|
3
|
-
|
|
4
|
-
SOURCE="${BASH_SOURCE[0]}"
|
|
5
|
-
while [ -L "$SOURCE" ]; do
|
|
6
|
-
DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
|
|
7
|
-
SOURCE="$(readlink "$SOURCE")"
|
|
8
|
-
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
|
|
9
|
-
done
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
|
|
11
|
-
|
|
12
|
-
DELEGATE="$SCRIPT_DIR/../node_modules/@quantiya/codevibe-gemini-plugin/bin/codevibe-gemini"
|
|
13
|
-
|
|
14
|
-
if [ ! -f "$DELEGATE" ]; then
|
|
15
|
-
echo "Error: @quantiya/codevibe-gemini-plugin not found. Try reinstalling: npm install -g @quantiya/codevibe" >&2
|
|
16
|
-
exit 1
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
case "${1:-}" in
|
|
20
|
-
login|logout|help|--help|-h|version|--version|-v)
|
|
21
|
-
;;
|
|
22
|
-
*)
|
|
23
|
-
if ! command -v gemini >/dev/null 2>&1; then
|
|
24
|
-
cat >&2 <<'EOF'
|
|
25
|
-
|
|
26
|
-
Gemini CLI is not installed on this system.
|
|
27
|
-
|
|
28
|
-
CodeVibe attaches to the Gemini CLI — you need it installed first.
|
|
29
|
-
|
|
30
|
-
Install Gemini CLI:
|
|
31
|
-
npm install -g @google/gemini-cli
|
|
32
|
-
|
|
33
|
-
Then run codevibe-gemini again.
|
|
34
|
-
|
|
35
|
-
Learn more: https://quantiya.ai/codevibe
|
|
36
|
-
EOF
|
|
37
|
-
exit 1
|
|
38
|
-
fi
|
|
39
|
-
;;
|
|
40
|
-
esac
|
|
41
|
-
|
|
42
|
-
# Update check — show cached result from previous check, then refresh in background.
|
|
43
|
-
_CV_UPDATE_MSG="${TMPDIR:-/tmp}/.codevibe-update-msg"
|
|
44
|
-
_CV_UPDATE_CHECK="${TMPDIR:-/tmp}/.codevibe-update-check"
|
|
45
|
-
if [ -s "$_CV_UPDATE_MSG" ]; then
|
|
46
|
-
cat "$_CV_UPDATE_MSG" >&2
|
|
47
|
-
echo "" >&2
|
|
48
|
-
fi
|
|
49
|
-
if [ ! -f "$_CV_UPDATE_CHECK" ] || [ "$(find "$_CV_UPDATE_CHECK" -mmin +1440 2>/dev/null)" ]; then
|
|
50
|
-
(
|
|
51
|
-
_CURRENT=$(node -p "require('$SCRIPT_DIR/../package.json').version" 2>/dev/null)
|
|
52
|
-
_LATEST=$(npm view @quantiya/codevibe version 2>/dev/null)
|
|
53
|
-
if [ -n "$_CURRENT" ] && [ -n "$_LATEST" ] && [ "$_CURRENT" != "$_LATEST" ]; then
|
|
54
|
-
echo -e "\033[33m⚠️ CodeVibe update available ($_CURRENT → $_LATEST). Run: codevibe update\033[0m" > "$_CV_UPDATE_MSG" 2>/dev/null
|
|
55
|
-
else
|
|
56
|
-
rm -f "$_CV_UPDATE_MSG" 2>/dev/null
|
|
57
|
-
fi
|
|
58
|
-
touch "$_CV_UPDATE_CHECK" 2>/dev/null
|
|
59
|
-
) &
|
|
60
|
-
fi
|
|
61
|
-
|
|
62
|
-
# Activation telemetry (background, non-blocking, no PII)
|
|
63
|
-
_CID="$(echo "$(uname -n)-$(id -u)" | (sha256sum 2>/dev/null || shasum -a 256 2>/dev/null || echo "anonymous-fallback ") | cut -c1-36)"
|
|
64
|
-
_SRC="${CODEVIBE_TELEMETRY_SOURCE:-production}"
|
|
65
|
-
curl -s -X POST "https://www.google-analytics.com/mp/collect?measurement_id=G-GS74YEQTB8&api_secret=lAfOF6OxRzSQ-NsLBRjhAg" \
|
|
66
|
-
-H "Content-Type: application/json" \
|
|
67
|
-
-d "{\"client_id\":\"${_CID}\",\"events\":[{\"name\":\"wrapper_launched\",\"params\":{\"agent\":\"gemini\",\"platform\":\"$(uname -s)\",\"source\":\"${_SRC}\"}}]}" \
|
|
68
|
-
>/dev/null 2>&1 &
|
|
69
|
-
|
|
70
|
-
exec "$DELEGATE" "$@"
|