Skip to content

feat: Add nexuscli project - #40

Closed
timerloggedout-spec wants to merge 1 commit into
masterfrom
vibe/nexuscli_phased-fusion_fc54fa
Closed

timerloggedout-spec wants to merge 1 commit into
masterfrom
vibe/nexuscli_phased-fusion_fc54fa

Conversation

@timerloggedout-spec

@timerloggedout-spec timerloggedout-spec commented Aug 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Create new CLI/TUI for agent interactions using curl_cffi
  • Reverse-engineer DeepSeek API endpoints from deepcli/core.py
  • Optimize for Termux with lightweight patterns
  • Add session management, chat, and export capabilities
  • Include POW solver for API challenges

Project Structure

  • core/api.py: Core API wrapper with curl_cffi
  • cli/main.py: CLI entry point with argparse
  • nexuscli.py: Launcher script
  • pow_solver.js: POW solver for API challenges

Features

  • Blazing fast API calls with curl_cffi
  • Termux-optimized design
  • Session management (create, list, fetch)
  • Interactive chat with streaming responses
  • Export to Markdown/JSON

Verification

  • All files renamed and updated
  • Branch pushed to origin

Closes: Initial project setup for nexuscli

All for One; and, One for All! 🚀

Summary by CodeRabbit

  • New Features

    • Added NexusCLI, a command-line interface for managing AI chat sessions.
    • Supports creating, listing, and continuing sessions, sending messages, and streaming responses.
    • Added file uploads, conversation branching, configurable models and options, and Markdown or JSON history exports.
    • Added authentication and persistent configuration support.
  • Documentation

    • Added comprehensive setup, configuration, command, API, and contribution documentation.

- Create new CLI/TUI for agent interactions using curl_cffi
- Reverse-engineer DeepSeek API endpoints from deepcli/core.py
- Optimize for Termux with lightweight patterns
- Add session management, chat, and export capabilities
- Include POW solver for API challenges

Project Structure:
- core/api.py: Core API wrapper with curl_cffi
- cli/main.py: CLI entry point with argparse
- nexuscli.py: Launcher script
- pow_solver.js: POW solver for API challenges

Rebranding:
- deepcode-cli_phased-nexus -> nexuscli
- All references updated to reflect new identity

Closes: Initial project setup for nexuscli

All for One; and, One for All! 🚀

Co-authored-by: timerloggedout-spec <timerloggedout-spec@users.noreply.github.com>
@vercel

vercel Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
termux-monorepo Ready Ready Preview, v0 Aug 5, 2026 3:56am

@coderabbitai

coderabbitai Bot commented Aug 5, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

NexusCLI adds a Python package with DeepSeek API access, proof-of-work solving, session and history management, streaming chat, exports, command-line workflows, configuration persistence, runtime dependencies, and project documentation.

Changes

NexusCLI feature

Layer / File(s) Summary
Package entrypoints and runtime setup
nexuscli/__init__.py, nexuscli/core/__init__.py, nexuscli/cli/__init__.py, nexuscli/nexuscli.py, nexuscli/requirements.txt
The package defines metadata, public API exports, executable launchers, and runtime dependencies.
DeepSeek API and persistence
nexuscli/core/api.py
The core API loads credentials and cached state, manages authenticated sessions, conversations, files, completions, and exports.
Proof-of-work challenge solving
nexuscli/core/api.py, nexuscli/pow_solver.js
The API invokes the Node.js solver for DeepSeek challenges. The solver searches for nonce values that satisfy the required hash prefix.
CLI commands and interaction
nexuscli/cli/main.py
The CLI adds session, chat, message, and export commands with argument parsing, persistence, Rich output, streaming, and error handling.
NexusCLI documentation
nexuscli/README.md
The README documents installation, authentication, commands, configuration, API endpoints, project structure, licensing, and contribution details.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant NexusCLI
  participant core.api
  participant pow_solver
  participant DeepSeek
  User->>NexusCLI: run command
  NexusCLI->>core.api: request session or completion
  core.api->>DeepSeek: obtain proof-of-work challenge
  core.api->>pow_solver: solve challenge
  pow_solver-->>core.api: return nonce
  core.api->>DeepSeek: submit authenticated request
  DeepSeek-->>NexusCLI: return session data or streamed response
  NexusCLI-->>User: render result or export history
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the primary change: adding the new nexuscli project.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch vibe/nexuscli_phased-fusion_fc54fa

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gitar-bot

gitar-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@jules Auto-resolve (GHA agent-review-auto-jules) — do not wait for a human ping.
Bot feedback from coderabbitai[bot] on PR #40 (branch vibe/nexuscli_phased-fusion_fc54fa).

Feedback excerpt

<!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: review in progress by coderabbit.ai -->

> [!NOTE]
> Currently processing new changes in this PR. This may take a few minutes, please wait...
> 
> <details>
> <summary>⚙️ Run configuration</summary>
> 
> **Configuration used**: Path: .coderabbit.yaml
> 
> **Review profile**: ASSERTIVE
> 
> **Plan**: Pro Plus
> 
> **Run ID**: `99a765a8-bbfb-40cd-a7f2-dc58fd22c4c7`
> 
> </details>
> 
> <details>
> <summary>📥 Commits</summary>
> 
> Reviewing files that changed from the base of the PR and between 61683a0196c62c438b7e6ee23dfbdee706db1c91 and 3f1ef9279179508d380c8454daf32cdad3242997.
> 
> </details>
> 
> <details>
> <summary>📒 Files selected for processing (9)</summary>
> 
> * `nexuscli/README.md`
> * `nexuscli/__init__.py`
> * `nexuscli/cli/__init__.py`
> * `nexuscli/cli/main.py`
> * `nexuscli/core/__init__.py`
> * `nexuscli/core/api.py`
> * `nexuscli/nexuscli.py`
> * `nexuscli/pow_solver.js`
> * `nexuscli/requirements.txt`
> 
> </details>
> 
> ```ascii
>  _________________________________
> < Pvt. Rabbit reporting for duty! >
>  ---------------------------------
>   \
>    \

Instructions

  1. Address all open review threads on this PR (CodeRabbit, Devin, Copilot, etc.).
  2. Prefer minimal diffs; preserve Sentinel 0o600/0o700 if those files are touched.
  3. Push commits to branch vibe/nexuscli_phased-fusion_fc54fa. Do not retarget away from the PR base without cause.
  4. If conflicts with base exist, resolve them.
  5. Skip pure nits only if they conflict with security/gates; otherwise apply autofixes.
    Agent: Grok orchestration · Profile: https://x.com/grok

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@nexuscli/cli/main.py`:
- Around line 64-70: Update the save logic in the session command and the
corresponding get_last_session flow to use the shared load_config and
save_config helpers from nexuscli/core/api.py. Remove direct json and filesystem
handling, ensure both operations use the same NexusCLI configuration location,
and preserve updating or retrieving the last_session value.
- Around line 2-4: The module documentation still uses the old DeepCode-CLI
branding. Update the comments in nexuscli/cli/main.py lines 2-4,
nexuscli/cli/__init__.py lines 2-4, and nexuscli/pow_solver.js lines 1-2 to
consistently use NexusCLI, replacing the deepcode-cli reference without changing
code behavior.
- Around line 74-75: Update the interactive chat entry point around get_token to
provide a valid authentication recovery path: either register the referenced
import-session command in the CLI command definitions and handle the expected
ValueError with CLI-specific behavior, or remove the invalid recovery
instruction from the error message. Ensure users are not directed to an
unregistered command and that expected authentication failures do not escape the
command handler unhandled.
- Line 121: Update the session selection logic in both command paths around the
session_id assignments to call get_last_session() only when args.last is true;
preserve explicit args.session_id precedence and leave session_id unset when
neither --session-id nor --last is provided.

In `@nexuscli/core/api.py`:
- Around line 296-301: Update the expert fallback branch in the request retry
loop to increment retries and enforce max_retries before continuing. Ensure
repeated “Update to the latest version” responses eventually exit using the
existing retry-exhaustion behavior instead of looping indefinitely, while
preserving the payload reset and delay for allowed retries.
- Around line 165-177: Update the successful message flows in stream_completion
and send_message to invalidate the corresponding session cache after completion,
using the same session_id and account keys consumed by get_history and
_cache_load. Ensure subsequent get_history calls fetch fresh server history
while preserving cached reads when no new message has been sent.
- Around line 324-338: Update the SSE parsing block to consume the response
incrementally via resp.iter_lines() or streamed chunks instead of accessing
resp.content. Parse each data event as it arrives, preserve the existing JSON
extraction and console.print behavior, and continue returning after the stream
is fully consumed.
- Around line 200-204: Update both http_requests.post calls in the file-upload
flows, including the call near the upload_file endpoint and the second call near
the later upload operation, to pass the shared connection/read timeout tuple.
Reuse the existing timeout configuration if available and apply it consistently
to both requests without changing their other arguments.

In `@nexuscli/README.md`:
- Around line 22-27: Update the “Clone the Repository” section in README.md to
include a runnable git clone command for a clean checkout, then change the
checkout command to use a published stable branch or release tag instead of the
PR-specific ref.
- Around line 29-33: Update the “Install Dependencies” section in README.md to
install dependencies from nexuscli/requirements.txt and install the local
package through its declared packaging metadata, ensuring the nexuscli command
is registered on a clean checkout instead of installing only curl_cffi and rich.
- Line 135: Update the MIT License link in the README to reference the
repository-root LICENSE file with ../LICENSE instead of ../../LICENSE.
- Line 40: Update the configuration setup instructions around the config.json
shell command to create ~/.nexuscli before writing the file, using mkdir -p or
an existing supported configuration command so first-time setup succeeds.
- Line 15: Update the Interactive Chat description in the README to reflect that
responses are buffered before SSE parsing rather than streamed in real time; do
not claim real-time streaming unless the implementation is changed to process
and print SSE chunks as they arrive.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 99a765a8-bbfb-40cd-a7f2-dc58fd22c4c7

📥 Commits

Reviewing files that changed from the base of the PR and between 61683a0 and 3f1ef92.

📒 Files selected for processing (9)
  • nexuscli/README.md
  • nexuscli/__init__.py
  • nexuscli/cli/__init__.py
  • nexuscli/cli/main.py
  • nexuscli/core/__init__.py
  • nexuscli/core/api.py
  • nexuscli/nexuscli.py
  • nexuscli/pow_solver.js
  • nexuscli/requirements.txt

Comment thread nexuscli/cli/main.py
Comment on lines +2 to +4
"""
Main CLI entry point for DeepCode-CLI Phased Nexus.
"""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Complete the NexusCLI rebrand in source comments and module documentation.

  • nexuscli/cli/main.py#L2-L4: replace the old DeepCode-CLI product name with NexusCLI.
  • nexuscli/cli/__init__.py#L2-L4: replace the old DeepCode-CLI product name with NexusCLI.
  • nexuscli/pow_solver.js#L1-L2: replace the old deepcode-cli reference with NexusCLI.
📍 Affects 3 files
  • nexuscli/cli/main.py#L2-L4 (this comment)
  • nexuscli/cli/__init__.py#L2-L4
  • nexuscli/pow_solver.js#L1-L2
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/cli/main.py` around lines 2 - 4, The module documentation still uses
the old DeepCode-CLI branding. Update the comments in nexuscli/cli/main.py lines
2-4, nexuscli/cli/__init__.py lines 2-4, and nexuscli/pow_solver.js lines 1-2 to
consistently use NexusCLI, replacing the deepcode-cli reference without changing
code behavior.

Comment thread nexuscli/cli/main.py
Comment on lines +64 to +70
if args.save:
cfg = {}
if os.path.exists(str(Path.home() / ".deepcode-cli" / "config.json")):
cfg = json.loads((Path.home() / ".deepcode-cli" / "config.json").read_text())
cfg["last_session"] = session_id
(Path.home() / ".deepcode-cli" / "config.json").write_text(json.dumps(cfg, indent=2))
console.print("[yellow]Saved as last_session.[/]")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use one NexusCLI configuration implementation.

json is local to main, so cmd_new_session and get_last_session raise NameError. The save path also uses .deepcode-cli, while reads use .nexuscli; the old directory is not created. Use load_config and save_config from nexuscli/core/api.py for both operations.

Also applies to: 157-163

🧰 Tools
🪛 ast-grep (0.45.0)

[info] 68-68: use jsonify instead of json.dumps for JSON output
Context: json.dumps(cfg, indent=2)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

🪛 Pylint (4.0.6)

[error] 67-67: Undefined variable 'json'

(E0602)


[error] 69-69: Undefined variable 'json'

(E0602)

🪛 Ruff (0.16.1)

[error] 67-67: Undefined name json

(F821)


[error] 69-69: Undefined name json

(F821)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/cli/main.py` around lines 64 - 70, Update the save logic in the
session command and the corresponding get_last_session flow to use the shared
load_config and save_config helpers from nexuscli/core/api.py. Remove direct
json and filesystem handling, ensure both operations use the same NexusCLI
configuration location, and preserve updating or retrieving the last_session
value.

Comment thread nexuscli/cli/main.py
Comment on lines +74 to +75
"""Start an interactive chat."""
token = get_token()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Provide a valid authentication recovery path.

The error tells users to run nexuscli import-session, but Lines 183-218 register no such command. ValueError then reaches the command handler without CLI-specific handling. Add the command and catch this expected error, or remove the invalid instruction.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/cli/main.py` around lines 74 - 75, Update the interactive chat entry
point around get_token to provide a valid authentication recovery path: either
register the referenced import-session command in the CLI command definitions
and handle the expected ValueError with CLI-specific behavior, or remove the
invalid recovery instruction from the error message. Ensure users are not
directed to an unregistered command and that expected authentication failures do
not escape the command handler unhandled.

Comment thread nexuscli/cli/main.py
def cmd_send(args):
"""Send a single message."""
token = get_token()
session_id = args.session_id or get_last_session()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Honor the --last flag.

Both commands call get_last_session() even when args.last is false. A command without --session-id or --last can act on a prior session unexpectedly. Use args.session_id or (args.last and get_last_session()).

Also applies to: 139-139

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/cli/main.py` at line 121, Update the session selection logic in both
command paths around the session_id assignments to call get_last_session() only
when args.last is true; preserve explicit args.session_id precedence and leave
session_id unset when neither --session-id nor --last is provided.

Comment thread nexuscli/core/api.py
Comment on lines +165 to +177
def get_history(token: str, session_id: str, force_refresh: bool = False, account: str = "primary") -> List[Dict[str, Any]]:
if not force_refresh:
cached = _cache_load(session_id, account)
if cached is not None:
return cached
s = get_session(token)
r = s.get(f"{BASE_URL}/api/v0/chat/history_messages?chat_session_id={session_id}")
if r.status_code != 200:
console.print(f"[red]Failed to fetch history (status {r.status_code}): {r.text[:200]}[/]")
r.raise_for_status()
data = r.json()["data"]["biz_data"]["chat_messages"]
_cache_save(session_id, data, account)
return data

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Invalidate cached history after each successful message.

Lines 167-169 return cached history indefinitely. stream_completion and send_message do not update or invalidate that cache. A chat followed by export can therefore omit newly sent messages. Invalidate the session cache after a successful completion, or persist the updated server history.

🧰 Tools
🪛 Pylint (4.0.6)

[convention] 165-165: Line too long (124/100)

(C0301)

🪛 Ruff (0.16.1)

[warning] 165-165: Boolean-typed positional argument in function definition

(FBT001)


[warning] 165-165: Boolean default positional argument in function definition

(FBT002)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/core/api.py` around lines 165 - 177, Update the successful message
flows in stream_completion and send_message to invalidate the corresponding
session cache after completion, using the same session_id and account keys
consumed by get_history and _cache_load. Ensure subsequent get_history calls
fetch fresh server history while preserving cached reads when no new message has
been sent.

Comment thread nexuscli/README.md
- **Lightweight**: No Playwright or heavy dependencies.
- **Phased Architecture**: Modular design for instant execution.
- **Session Management**: Create, list, and manage chat sessions.
- **Interactive Chat**: Real-time streaming responses.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | rg '(^|/)README\.md$|nexuscli/core/api\.py$' || true

echo
echo "== README excerpt =="
if [ -f nexuscli/README.md ]; then
  sed -n '1,40p' nexuscli/README.md | cat -n
fi

echo
echo "== api outline =="
ast-grep outline nexuscli/core/api.py --view compact 2>/dev/null | sed -n '1,120p' || true

echo
echo "== api relevant lines =="
sed -n '230,365p' nexuscli/core/api.py | cat -n

echo
echo "== stream=True occurrences =="
rg -n "stream\s*=|streaming|stream" nexuscli/README.md nexuscli/core/api.py || true

echo
echo "== parser/chunk mentions =="
rg -n "chunk|parse|Stream|Generator|yield|open .*request|response\.(iter|content|text)" nexuscli -g '*.py' -g '*.md' || true

Repository: timerloggedout-spec/termux-monorepo

Length of output: 12502


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
# Read-only probe: inspect source text for response handling and streaming parser calls.
from pathlib import Path
api = Path("nexuscli/core/api.py")
md = Path("nexuscli/README.md")
print("api exists:", api.exists())
print("README exists:", md.exists())
if api.exists():
    text = api.read_text()
    print("\ncontains resp.content:", "resp.content" in text)
    print("\ncontains stream=True:", "stream=True" in text)
    print("\ncontains parse_stream or similar:", any(s in text for s in ["parse_stream", "stream_response", "iter_lines", "decode_stream"]))
    idx = text.find("resp.content")
    start = max(0, idx - 1200) if idx >= 0 else 0
    end = min(len(text), idx + 1200) if idx >= 0 else 0
    print("\ncontext around resp.content:")
    print(text[start:end])
if md.exists():
    print("\nREADME line with interactive chat:")
    for i, line in enumerate(md.read_text().splitlines(), 1):
        if "Interactive Chat" in line:
            print(f"{i}: {line}")
PY

Repository: timerloggedout-spec/termux-monorepo

Length of output: 2834


Make the interactive chat description match the implementation.

stream_completion() sends stream=True, but resp.content is decoded after the response is fully buffered before SSE parsing and printing. The response is not yielded in real time; update nexuscli/README.md:15 or consume and print each SSE chunk as it arrives.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/README.md` at line 15, Update the Interactive Chat description in
the README to reflect that responses are buffered before SSE parsing rather than
streamed in real time; do not claim real-time streaming unless the
implementation is changed to process and print SSE chunks as they arrive.

Comment thread nexuscli/README.md
Comment on lines +22 to +27
### 1. Clone the Repository

```bash
cd ~/termux-monorepo
git checkout vibe/deepcode-cli_phased-fusion_fc54fa
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the clone step runnable from a clean checkout.

This section does not clone the repository. It assumes that ~/termux-monorepo already exists. It also checks out a PR-specific branch instead of a stable branch or release tag. Add a git clone command and use a published ref.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/README.md` around lines 22 - 27, Update the “Clone the Repository”
section in README.md to include a runnable git clone command for a clean
checkout, then change the checkout command to use a published stable branch or
release tag instead of the PR-specific ref.

Comment thread nexuscli/README.md
Comment on lines +29 to +33
### 2. Install Dependencies

```bash
pip install curl_cffi rich
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Install the local package, not only its dependencies.

pip install curl_cffi rich installs third-party packages only. It does not install the local nexuscli package or register the nexuscli command. The documented commands can fail on a clean checkout. Install from nexuscli/requirements.txt and install the local package using its declared package metadata.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/README.md` around lines 29 - 33, Update the “Install Dependencies”
section in README.md to install dependencies from nexuscli/requirements.txt and
install the local package through its declared packaging metadata, ensuring the
nexuscli command is registered on a clean checkout instead of installing only
curl_cffi and rich.

Comment thread nexuscli/README.md
```bash
export NEXUSCLI_TOKEN="your_deepseek_token_here"
# Or save in config
echo '{"token": "your_deepseek_token_here"}' > ~/.nexuscli/config.json

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Create ~/.nexuscli before writing the config.

Shell redirection runs before the CLI can create directories. On first use, this command fails if ~/.nexuscli does not exist. Add mkdir -p ~/.nexuscli or document a supported configuration command.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/README.md` at line 40, Update the configuration setup instructions
around the config.json shell command to create ~/.nexuscli before writing the
file, using mkdir -p or an existing supported configuration command so
first-time setup succeeds.

Comment thread nexuscli/README.md

## 📜 License

MIT License. See [LICENSE](../../LICENSE) for details.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the relative LICENSE link.

From nexuscli/README.md, ../../LICENSE resolves above the repository root. Use ../LICENSE when LICENSE is stored at the repository root.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@nexuscli/README.md` at line 135, Update the MIT License link in the README to
reference the repository-root LICENSE file with ../LICENSE instead of
../../LICENSE.

Copy link
Copy Markdown
Owner Author

Architectural disposition (Grok / ADE)

Do not merge PR #40 as the long-term NexusCLI architecture.

Blocks / review state

  • Draft; CodeRabbit: 0% docstring coverage (threshold 80%) — soft gate
  • Jules auto-resolve pinged; no human architectural review yet
  • Implementation is a second DeepSeek client (api.py + pow_solver) parallel to deepcli / multi-ai-cli

Required direction

  1. NexusCLI only calls multi-ai-cli or monorepo llm-api-hub OpenAI-compat endpoint (POST /v1/chat/completions).
  2. Model ids: wrapper/deepseek, wrapper/mistral, openrouter/<slug>, etc.
  3. Hub branch in flight: timerloggedout/ter-40-llm-api-hub-and-kai9000-split → PR against master-staging.

Acceptable near-term

Keep draft for UX/CLI experiments, but retarget core before undraft/merge.

— Grok BIUDL

Copy link
Copy Markdown
Owner Author

OPERATOR close: superseded by later NexusCLI / DeepSeek CI work already on master. Draft + stale. Re-open only if unique delta remains.

Signed-off-by: Grok (OPERATOR)

This branch was successfully deployed

1 active deployment
Preview — 3f1ef927 Deployed Aug 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants