ngpt 2.11.5__py3-none-any.whl → 2.13.0__py3-none-any.whl
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.
- ngpt/__main__.py +1 -1
- ngpt/cli/args.py +8 -1
- ngpt/cli/formatters.py +1 -0
- ngpt/cli/main.py +16 -1
- ngpt/cli/modes/__init__.py +2 -1
- ngpt/cli/modes/chat.py +36 -9
- ngpt/cli/modes/rewrite.py +209 -0
- {ngpt-2.11.5.dist-info → ngpt-2.13.0.dist-info}/METADATA +60 -28
- {ngpt-2.11.5.dist-info → ngpt-2.13.0.dist-info}/RECORD +12 -12
- ngpt-2.13.0.dist-info/entry_points.txt +2 -0
- ngpt/cli.py +0 -4
- ngpt-2.11.5.dist-info/entry_points.txt +0 -2
- {ngpt-2.11.5.dist-info → ngpt-2.13.0.dist-info}/WHEEL +0 -0
- {ngpt-2.11.5.dist-info → ngpt-2.13.0.dist-info}/licenses/LICENSE +0 -0
ngpt/__main__.py
CHANGED
ngpt/cli/args.py
CHANGED
@@ -99,7 +99,10 @@ def setup_argument_parser():
|
|
99
99
|
help='Generate code')
|
100
100
|
mode_exclusive_group.add_argument('-t', '--text', action='store_true',
|
101
101
|
help='Enter multi-line text input (submit with Ctrl+D)')
|
102
|
-
|
102
|
+
mode_exclusive_group.add_argument('--stdin', action='store_true',
|
103
|
+
help='Read from stdin and use content with prompt. Use {} in prompt as placeholder for stdin content')
|
104
|
+
mode_exclusive_group.add_argument('--rewrite', action='store_true',
|
105
|
+
help='Rewrite text from stdin to be more natural while preserving tone and meaning')
|
103
106
|
|
104
107
|
return parser
|
105
108
|
|
@@ -122,6 +125,10 @@ def validate_args(args):
|
|
122
125
|
if args.stream_prettify and not has_markdown_renderer('rich'):
|
123
126
|
raise ValueError("--stream-prettify requires Rich to be installed. Install with: pip install \"ngpt[full]\" or pip install rich")
|
124
127
|
|
128
|
+
# If stdin mode is used, check if input is available
|
129
|
+
if args.stdin and sys.stdin.isatty():
|
130
|
+
raise ValueError("--stdin was specified but no input is piped. Use echo 'content' | ngpt --stdin 'prompt with {}'")
|
131
|
+
|
125
132
|
return args
|
126
133
|
|
127
134
|
def validate_markdown_renderer(args):
|
ngpt/cli/formatters.py
CHANGED
ngpt/cli/main.py
CHANGED
@@ -23,6 +23,7 @@ from .modes.chat import chat_mode
|
|
23
23
|
from .modes.code import code_mode
|
24
24
|
from .modes.shell import shell_mode
|
25
25
|
from .modes.text import text_mode
|
26
|
+
from .modes.rewrite import rewrite_mode
|
26
27
|
from .args import parse_args, validate_args, handle_cli_config_args, setup_argument_parser, validate_markdown_renderer
|
27
28
|
|
28
29
|
def show_cli_config_help():
|
@@ -460,7 +461,7 @@ def main():
|
|
460
461
|
return
|
461
462
|
|
462
463
|
# For interactive mode, we'll allow continuing without a specific prompt
|
463
|
-
if not args.prompt and not (args.shell or args.code or args.text or args.interactive or args.show_config or args.list_models):
|
464
|
+
if not args.prompt and not (args.shell or args.code or args.text or args.interactive or args.show_config or args.list_models or args.rewrite):
|
464
465
|
# Simply use the parser's help
|
465
466
|
parser = setup_argument_parser()
|
466
467
|
parser.print_help()
|
@@ -542,6 +543,20 @@ def main():
|
|
542
543
|
# Text mode (multiline input)
|
543
544
|
text_mode(client, args, logger=logger)
|
544
545
|
|
546
|
+
elif args.stdin:
|
547
|
+
# Apply CLI config for stdin mode (similar to chat mode)
|
548
|
+
args = apply_cli_config(args, "all")
|
549
|
+
|
550
|
+
# Stdin mode (using the chat mode with stdin input)
|
551
|
+
chat_mode(client, args, logger=logger)
|
552
|
+
|
553
|
+
elif args.rewrite:
|
554
|
+
# Apply CLI config for rewrite mode
|
555
|
+
args = apply_cli_config(args, "all")
|
556
|
+
|
557
|
+
# Rewrite mode (process stdin)
|
558
|
+
rewrite_mode(client, args, logger=logger)
|
559
|
+
|
545
560
|
else:
|
546
561
|
# Default to chat mode
|
547
562
|
# Apply CLI config for default chat mode
|
ngpt/cli/modes/__init__.py
CHANGED
@@ -2,5 +2,6 @@ from .chat import chat_mode
|
|
2
2
|
from .code import code_mode
|
3
3
|
from .shell import shell_mode
|
4
4
|
from .text import text_mode
|
5
|
+
from .rewrite import rewrite_mode
|
5
6
|
|
6
|
-
__all__ = ['chat_mode', 'code_mode', 'shell_mode', 'text_mode']
|
7
|
+
__all__ = ['chat_mode', 'code_mode', 'shell_mode', 'text_mode', 'rewrite_mode']
|
ngpt/cli/modes/chat.py
CHANGED
@@ -10,16 +10,43 @@ def chat_mode(client, args, logger=None):
|
|
10
10
|
args: The parsed command-line arguments
|
11
11
|
logger: Optional logger instance
|
12
12
|
"""
|
13
|
-
#
|
14
|
-
if args.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
# Handle stdin mode
|
14
|
+
if args.stdin:
|
15
|
+
# Read input from stdin
|
16
|
+
stdin_content = sys.stdin.read().strip()
|
17
|
+
|
18
|
+
# Get the prompt - either use provided one or ask user
|
19
|
+
if args.prompt is None:
|
20
|
+
try:
|
21
|
+
print("Enter your prompt (use {} as placeholder for stdin): ", end='')
|
22
|
+
prompt = input()
|
23
|
+
except KeyboardInterrupt:
|
24
|
+
print("\nInput cancelled by user. Exiting gracefully.")
|
25
|
+
sys.exit(130)
|
26
|
+
else:
|
27
|
+
prompt = args.prompt
|
28
|
+
|
29
|
+
# Replace the placeholder in the prompt with stdin content
|
30
|
+
placeholder = "{}"
|
31
|
+
|
32
|
+
# Check if the placeholder exists in the prompt
|
33
|
+
if placeholder not in prompt:
|
34
|
+
print(f"{COLORS['yellow']}Warning: Placeholder '{placeholder}' not found in prompt. Appending stdin content to the end.{COLORS['reset']}")
|
35
|
+
prompt = f"{prompt} {stdin_content}"
|
36
|
+
else:
|
37
|
+
prompt = prompt.replace(placeholder, stdin_content)
|
38
|
+
# Handle regular chat mode
|
21
39
|
else:
|
22
|
-
|
40
|
+
# Get the prompt
|
41
|
+
if args.prompt is None:
|
42
|
+
try:
|
43
|
+
print("Enter your prompt: ", end='')
|
44
|
+
prompt = input()
|
45
|
+
except KeyboardInterrupt:
|
46
|
+
print("\nInput cancelled by user. Exiting gracefully.")
|
47
|
+
sys.exit(130)
|
48
|
+
else:
|
49
|
+
prompt = args.prompt
|
23
50
|
|
24
51
|
# Log the user message if logging is enabled
|
25
52
|
if logger:
|
@@ -0,0 +1,209 @@
|
|
1
|
+
import sys
|
2
|
+
import platform
|
3
|
+
from ..formatters import COLORS
|
4
|
+
from ..renderers import prettify_markdown, prettify_streaming_markdown
|
5
|
+
from ..ui import get_multiline_input
|
6
|
+
|
7
|
+
# System prompt for rewriting text
|
8
|
+
REWRITE_SYSTEM_PROMPT = """You are an expert text editor and rewriter. Your task is to rewrite the user's text to improve readability and flow while carefully preserving the original meaning, tone, and style.
|
9
|
+
|
10
|
+
PRIMARY GOAL:
|
11
|
+
Improve the quality and clarity of writing without changing the author's voice or intent.
|
12
|
+
|
13
|
+
PRESERVATION RULES (HIGHEST PRIORITY):
|
14
|
+
1. Preserve the exact meaning and information content
|
15
|
+
2. Maintain the original tone (formal/casual/technical/friendly/serious/rude)
|
16
|
+
3. Keep the author's perspective and point of view
|
17
|
+
4. Respect the style of expression when intentional
|
18
|
+
5. Retain technical terminology, jargon, and domain-specific language
|
19
|
+
6. Keep all facts, data points, quotes, and references exactly as provided
|
20
|
+
|
21
|
+
IMPROVEMENT FOCUS:
|
22
|
+
1. Fix grammar, spelling, and punctuation errors
|
23
|
+
2. Improve sentence structure and flow
|
24
|
+
3. Enhance clarity and readability
|
25
|
+
4. Make language more concise and precise
|
26
|
+
5. Replace awkward phrasings with more natural alternatives
|
27
|
+
6. Break up sentences longer than 25 words
|
28
|
+
7. Convert passive voice to active when appropriate
|
29
|
+
8. Remove redundancies, filler words, and unnecessary repetition
|
30
|
+
|
31
|
+
FORMAT PRESERVATION:
|
32
|
+
1. Maintain all paragraph breaks and section structures
|
33
|
+
2. Preserve formatting of lists, bullet points, and numbering
|
34
|
+
3. Keep code blocks (```) exactly as they appear with no changes to code
|
35
|
+
4. Respect all markdown formatting (bold, italic, headers, etc.)
|
36
|
+
5. Preserve URLs, email addresses, file paths, and variables exactly
|
37
|
+
6. Maintain the structure of tables and other special formats
|
38
|
+
|
39
|
+
CONTENT-SPECIFIC GUIDANCE:
|
40
|
+
- For technical content: Prioritize precision and clarity over stylistic changes
|
41
|
+
- For casual text: Maintain conversational flow and personality
|
42
|
+
- For formal writing: Preserve professionalism while improving structure
|
43
|
+
- For emotional content: Carefully maintain the emotional resonance and intensity
|
44
|
+
|
45
|
+
STRICTLY AVOID:
|
46
|
+
1. Adding new information not present in the original
|
47
|
+
2. Removing key points or substantive content
|
48
|
+
3. Significantly changing the formality level
|
49
|
+
4. Inserting your own opinions or commentary
|
50
|
+
5. Explaining what you changed (just provide the improved text)
|
51
|
+
6. Altering the meaning of any sentence, even slightly
|
52
|
+
7. Changing domain-specific terminology or jargon to general terms
|
53
|
+
|
54
|
+
OUTPUT INSTRUCTION:
|
55
|
+
Provide ONLY the rewritten text with no explanations, comments, or meta-text.
|
56
|
+
|
57
|
+
EXAMPLES:
|
58
|
+
|
59
|
+
ORIGINAL: "The implementation of the feature, which was delayed due to unforeseen technical complications, is now scheduled for next week's release."
|
60
|
+
BETTER: "We delayed the feature implementation due to unforeseen technical complications. It's now scheduled for next week's release."
|
61
|
+
|
62
|
+
ORIGINAL: "We was hoping you could help with this issue what we are having with the server."
|
63
|
+
BETTER: "We were hoping you could help with this issue we're having with the server."
|
64
|
+
|
65
|
+
ORIGINAL: "The user interface, which is built using React, Redux, and various other frontend technologies, needs to be redesigned to accommodate the new features that we want to add to the application."
|
66
|
+
BETTER: "The React/Redux user interface needs redesigning to accommodate our planned new features."
|
67
|
+
"""
|
68
|
+
|
69
|
+
def get_terminal_input():
|
70
|
+
"""Get input from terminal in a cross-platform way, even when stdin is redirected."""
|
71
|
+
if platform.system() == 'Windows':
|
72
|
+
# Windows-specific solution
|
73
|
+
try:
|
74
|
+
import msvcrt
|
75
|
+
print("Press Y/N...", end="")
|
76
|
+
sys.stdout.flush()
|
77
|
+
# Wait for a keypress
|
78
|
+
char = msvcrt.getch().decode('utf-8').lower()
|
79
|
+
print(char) # Echo the character
|
80
|
+
return char
|
81
|
+
except ImportError:
|
82
|
+
# Fallback if msvcrt is not available
|
83
|
+
return None
|
84
|
+
else:
|
85
|
+
# Unix-like systems (Linux, macOS)
|
86
|
+
try:
|
87
|
+
with open('/dev/tty', 'r') as tty:
|
88
|
+
return tty.readline().strip().lower()
|
89
|
+
except (IOError, OSError):
|
90
|
+
return None
|
91
|
+
|
92
|
+
def rewrite_mode(client, args, logger=None):
|
93
|
+
"""Handle the text rewriting mode.
|
94
|
+
|
95
|
+
Args:
|
96
|
+
client: The NGPTClient instance
|
97
|
+
args: The parsed command-line arguments
|
98
|
+
logger: Optional logger instance
|
99
|
+
"""
|
100
|
+
# Determine the input source (stdin pipe, command-line argument, or multiline input)
|
101
|
+
if not sys.stdin.isatty():
|
102
|
+
# Read from stdin if data is piped
|
103
|
+
input_text = sys.stdin.read().strip()
|
104
|
+
|
105
|
+
# If stdin is empty but prompt is provided, use the prompt
|
106
|
+
if not input_text and args.prompt:
|
107
|
+
input_text = args.prompt
|
108
|
+
elif args.prompt:
|
109
|
+
# Use the command-line argument if provided
|
110
|
+
input_text = args.prompt
|
111
|
+
else:
|
112
|
+
# No pipe or prompt - use multiline input
|
113
|
+
print("Enter or paste text to rewrite (Ctrl+D or Ctrl+Z to submit):")
|
114
|
+
input_text = get_multiline_input()
|
115
|
+
if input_text is None:
|
116
|
+
# Input was cancelled or empty
|
117
|
+
print("Exiting.")
|
118
|
+
return
|
119
|
+
|
120
|
+
# Check if input is empty
|
121
|
+
if not input_text:
|
122
|
+
print(f"{COLORS['yellow']}Error: Empty input. Please provide text to rewrite.{COLORS['reset']}")
|
123
|
+
return
|
124
|
+
|
125
|
+
# Set up messages array with system prompt and user content
|
126
|
+
messages = [
|
127
|
+
{"role": "system", "content": REWRITE_SYSTEM_PROMPT},
|
128
|
+
{"role": "user", "content": input_text}
|
129
|
+
]
|
130
|
+
|
131
|
+
print("\nSubmission successful. Waiting for response...")
|
132
|
+
|
133
|
+
# Log the messages if logging is enabled
|
134
|
+
if logger:
|
135
|
+
logger.log("system", REWRITE_SYSTEM_PROMPT)
|
136
|
+
logger.log("user", input_text)
|
137
|
+
|
138
|
+
# Set default streaming behavior based on --no-stream and --prettify arguments
|
139
|
+
should_stream = not args.no_stream and not args.prettify
|
140
|
+
|
141
|
+
# If stream-prettify is enabled
|
142
|
+
stream_callback = None
|
143
|
+
live_display = None
|
144
|
+
|
145
|
+
if args.stream_prettify:
|
146
|
+
should_stream = True # Enable streaming
|
147
|
+
live_display, stream_callback = prettify_streaming_markdown(args.renderer)
|
148
|
+
if not live_display:
|
149
|
+
# Fallback to normal prettify if live display setup failed
|
150
|
+
args.prettify = True
|
151
|
+
args.stream_prettify = False
|
152
|
+
should_stream = False
|
153
|
+
print(f"{COLORS['yellow']}Falling back to regular prettify mode.{COLORS['reset']}")
|
154
|
+
|
155
|
+
# If regular prettify is enabled with streaming, inform the user
|
156
|
+
if args.prettify and not args.no_stream:
|
157
|
+
print(f"{COLORS['yellow']}Note: Streaming disabled to enable markdown rendering.{COLORS['reset']}")
|
158
|
+
|
159
|
+
# Start live display if using stream-prettify
|
160
|
+
if args.stream_prettify and live_display:
|
161
|
+
live_display.start()
|
162
|
+
|
163
|
+
response = client.chat(
|
164
|
+
prompt=None, # Not used when messages are provided
|
165
|
+
stream=should_stream,
|
166
|
+
web_search=args.web_search,
|
167
|
+
temperature=args.temperature,
|
168
|
+
top_p=args.top_p,
|
169
|
+
max_tokens=args.max_tokens,
|
170
|
+
markdown_format=args.prettify or args.stream_prettify,
|
171
|
+
stream_callback=stream_callback,
|
172
|
+
messages=messages # Use messages array instead of prompt
|
173
|
+
)
|
174
|
+
|
175
|
+
# Stop live display if using stream-prettify
|
176
|
+
if args.stream_prettify and live_display:
|
177
|
+
live_display.stop()
|
178
|
+
|
179
|
+
# Log the AI response if logging is enabled
|
180
|
+
if logger and response:
|
181
|
+
logger.log("assistant", response)
|
182
|
+
|
183
|
+
# Handle non-stream response or regular prettify
|
184
|
+
if (args.no_stream or args.prettify) and response:
|
185
|
+
if args.prettify:
|
186
|
+
prettify_markdown(response, args.renderer)
|
187
|
+
else:
|
188
|
+
print(response)
|
189
|
+
|
190
|
+
# Offer to copy to clipboard if not in a redirected output
|
191
|
+
if not args.no_stream and sys.stdout.isatty():
|
192
|
+
try:
|
193
|
+
# Make sure to flush output before asking for input
|
194
|
+
print("\nCopy to clipboard? (y/n) ", end="")
|
195
|
+
sys.stdout.flush()
|
196
|
+
|
197
|
+
# Cross-platform terminal input
|
198
|
+
answer = get_terminal_input()
|
199
|
+
|
200
|
+
if answer == 'y':
|
201
|
+
try:
|
202
|
+
import pyperclip
|
203
|
+
pyperclip.copy(response)
|
204
|
+
print("Copied to clipboard.")
|
205
|
+
except ImportError:
|
206
|
+
print(f"{COLORS['yellow']}pyperclip not installed. Try: pip install \"ngpt[clipboard]\" {COLORS['reset']}")
|
207
|
+
|
208
|
+
except (KeyboardInterrupt, EOFError):
|
209
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.13.0
|
4
4
|
Summary: A lightweight Python CLI and library for interacting with OpenAI-compatible APIs, supporting both official and self-hosted LLM endpoints.
|
5
5
|
Project-URL: Homepage, https://github.com/nazdridoy/ngpt
|
6
6
|
Project-URL: Repository, https://github.com/nazdridoy/ngpt
|
@@ -29,6 +29,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
29
|
Classifier: Topic :: Utilities
|
30
30
|
Requires-Python: >=3.8
|
31
31
|
Requires-Dist: prompt-toolkit>=3.0.0
|
32
|
+
Requires-Dist: pyperclip>=1.8.0
|
32
33
|
Requires-Dist: requests>=2.31.0
|
33
34
|
Requires-Dist: rich>=10.0.0
|
34
35
|
Description-Content-Type: text/markdown
|
@@ -100,6 +101,18 @@ ngpt --code --stream-prettify "function to calculate the Fibonacci sequence"
|
|
100
101
|
# Generate and execute shell commands
|
101
102
|
ngpt --shell "list all files in the current directory"
|
102
103
|
|
104
|
+
# Read from stdin and use the content in your prompt
|
105
|
+
echo "What is this text about?" | ngpt --stdin "Analyze the following text: {}"
|
106
|
+
|
107
|
+
# Rewrite text to improve quality while preserving tone and meaning
|
108
|
+
echo "your text" | ngpt --rewrite
|
109
|
+
|
110
|
+
# Rewrite text from a command-line argument
|
111
|
+
ngpt --rewrite "your text to rewrite"
|
112
|
+
|
113
|
+
# Use interactive multiline editor to enter text to rewrite
|
114
|
+
ngpt --rewrite
|
115
|
+
|
103
116
|
# Display markdown responses with beautiful formatting
|
104
117
|
ngpt --prettify "Explain markdown syntax with examples"
|
105
118
|
|
@@ -120,6 +133,9 @@ ngpt --interactive --log conversation.log
|
|
120
133
|
|
121
134
|
# Create a temporary log file automatically
|
122
135
|
ngpt --log "Tell me about quantum computing"
|
136
|
+
|
137
|
+
# Process text from stdin using the {} placeholder
|
138
|
+
cat README.md | ngpt --stdin "Summarize this document: {}"
|
123
139
|
```
|
124
140
|
|
125
141
|
For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
@@ -132,10 +148,12 @@ For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdri
|
|
132
148
|
- 💬 **Interactive Chat**: Continuous conversation with memory in modern UI
|
133
149
|
- 📊 **Streaming Responses**: Real-time output for better user experience
|
134
150
|
- 🔍 **Web Search**: Integrated with compatible API endpoints
|
151
|
+
- 📥 **Stdin Processing**: Process piped content by using `{}` placeholder in prompts
|
135
152
|
- 🎨 **Markdown Rendering**: Beautiful formatting of markdown and code with syntax highlighting
|
136
153
|
- ⚡ **Real-time Markdown**: Stream responses with live updating syntax highlighting and formatting
|
137
154
|
- ⚙️ **Multiple Configurations**: Cross-platform config system supporting different profiles
|
138
155
|
- 💻 **Shell Command Generation**: OS-aware command execution
|
156
|
+
- 🧠 **Text Rewriting**: Improve text quality while maintaining original tone and meaning
|
139
157
|
- 🧩 **Clean Code Generation**: Output code without markdown or explanations
|
140
158
|
- 📝 **Rich Multiline Editor**: Interactive multiline text input with syntax highlighting and intuitive controls
|
141
159
|
- 🎭 **System Prompts**: Customize model behavior with custom system prompts
|
@@ -343,38 +361,52 @@ For detailed information about building CLI tools with nGPT, see the [CLI Framew
|
|
343
361
|
|
344
362
|
### Command Line Options
|
345
363
|
|
346
|
-
You can configure
|
364
|
+
You can configure nGPT using the following options:
|
365
|
+
|
366
|
+
#### Mode Options (Mutually Exclusive)
|
367
|
+
|
368
|
+
| Option | Description |
|
369
|
+
|--------|-------------|
|
370
|
+
| `-i, --interactive` | Start an interactive chat session with conversation memory and special commands |
|
371
|
+
| `-s, --shell` | Generate and execute shell commands appropriate for your operating system |
|
372
|
+
| `-c, --code` | Generate clean code without markdown formatting or explanations |
|
373
|
+
| `-t, --text` | Open interactive multiline editor for complex prompts with syntax highlighting |
|
374
|
+
| `--stdin` | Read from stdin and use content with prompt. Use {} in prompt as placeholder for stdin content |
|
375
|
+
| `--rewrite` | Rewrite text to improve quality while preserving original tone and meaning |
|
376
|
+
|
377
|
+
#### Global Options
|
347
378
|
|
348
379
|
| Option | Description |
|
349
380
|
|--------|-------------|
|
350
|
-
| `--api-key` | API key for the service |
|
351
|
-
| `--base-url` | Base URL for the API |
|
352
|
-
| `--model` | Model to use |
|
353
|
-
| `--
|
354
|
-
| `--
|
381
|
+
| `--api-key KEY` | API key for the service |
|
382
|
+
| `--base-url URL` | Base URL for the API |
|
383
|
+
| `--model MODEL` | Model to use |
|
384
|
+
| `--web-search` | Enable web search capability (if your API endpoint supports it) |
|
385
|
+
| `--temperature VALUE` | Set temperature (controls randomness, default: 0.7) |
|
386
|
+
| `--top_p VALUE` | Set top_p (controls diversity, default: 1.0) |
|
387
|
+
| `--max_tokens NUMBER` | Set maximum response length in tokens |
|
388
|
+
| `--preprompt TEXT` | Set custom system prompt to control AI behavior |
|
389
|
+
| `--language LANG` | Programming language to generate code in (for code mode, default: python) |
|
355
390
|
| `--no-stream` | Return the whole response without streaming |
|
356
|
-
| `--
|
357
|
-
| `--
|
358
|
-
| `--
|
359
|
-
| `--
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
|
364
|
-
|
365
|
-
| `--config` | Path to a custom
|
366
|
-
| `--config-index` | Index of the configuration to use (default: 0) |
|
367
|
-
| `--provider` | Provider name to identify the configuration to use
|
391
|
+
| `--prettify` | Render markdown responses and code with syntax highlighting and formatting |
|
392
|
+
| `--stream-prettify` | Enable streaming with markdown rendering (automatically uses Rich renderer) |
|
393
|
+
| `--renderer {auto,rich,glow}` | Select which markdown renderer to use with --prettify (default: auto) |
|
394
|
+
| `--log [FILE]` | Set filepath to log conversation to, or create a temporary log file if no path provided |
|
395
|
+
|
396
|
+
#### Configuration Options
|
397
|
+
|
398
|
+
| Option | Description |
|
399
|
+
|--------|-------------|
|
400
|
+
| `--config [PATH]` | Path to a custom config file or, if no value provided, enter interactive configuration mode |
|
401
|
+
| `--config-index INDEX` | Index of the configuration to use or edit (default: 0) |
|
402
|
+
| `--provider NAME` | Provider name to identify the configuration to use |
|
368
403
|
| `--remove` | Remove the configuration at the specified index (requires --config and --config-index or --provider) |
|
369
|
-
| `--show-config` | Show configuration
|
370
|
-
| `--all` |
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
| `-
|
375
|
-
| `--language` | Programming language to generate code in (for code mode, default: python) |
|
376
|
-
| `--cli-config` | Manage CLI configuration settings (set, get, unset, list, help) |
|
377
|
-
| `-v, --version` | Show version information |
|
404
|
+
| `--show-config` | Show the current configuration(s) and exit |
|
405
|
+
| `--all` | Show details for all configurations (requires --show-config) |
|
406
|
+
| `--list-models` | List all available models for the current configuration and exit |
|
407
|
+
| `--list-renderers` | Show available markdown renderers for use with --prettify |
|
408
|
+
| `--cli-config [COMMAND]` | Manage CLI configuration (set, get, unset, list, help) |
|
409
|
+
| `-v, --version` | Show version information and exit |
|
378
410
|
|
379
411
|
For a complete reference of all available options, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
380
412
|
|
@@ -1,26 +1,26 @@
|
|
1
1
|
ngpt/__init__.py,sha256=kpKhViLakwMdHZkuLht2vWcjt0uD_5gR33gvMhfXr6w,664
|
2
|
-
ngpt/__main__.py,sha256=
|
3
|
-
ngpt/cli.py,sha256=j3eFYPOtCCFBOGh7NK5IWEnADnTMMSEB9GLyIDoW724,66
|
2
|
+
ngpt/__main__.py,sha256=j3eFYPOtCCFBOGh7NK5IWEnADnTMMSEB9GLyIDoW724,66
|
4
3
|
ngpt/client.py,sha256=rLgDPmJe8_yi13-XUiHJ45z54rJVrupxWmeb-fQZGF4,15129
|
5
4
|
ngpt/cli/__init__.py,sha256=hebbDSMGiOd43YNnQP67uzr67Ue6rZPwm2czynr5iZY,43
|
6
|
-
ngpt/cli/args.py,sha256=
|
5
|
+
ngpt/cli/args.py,sha256=1yuVgmBXPu3HrCkVtWBfJG5he90ij84UjPbY11TppPk,9965
|
7
6
|
ngpt/cli/config_manager.py,sha256=NQQcWnjUppAAd0s0p9YAf8EyKS1ex5-0EB4DvKdB4dk,3662
|
8
|
-
ngpt/cli/formatters.py,sha256=
|
7
|
+
ngpt/cli/formatters.py,sha256=HBYGlx_7eoAKyzfy0Vq5L0yn8yVKjngqYBukMmXCcz0,9401
|
9
8
|
ngpt/cli/interactive.py,sha256=DZFbExcXd7RylkpBiZBhiI6N8FBaT0m_lBes0Pvhi48,10894
|
10
|
-
ngpt/cli/main.py,sha256=
|
9
|
+
ngpt/cli/main.py,sha256=E51XQFIT2NGC1nV1FTQ0GAy-Q6fm730vDXhArqJDwRU,28019
|
11
10
|
ngpt/cli/renderers.py,sha256=gJ3WdVvCGkNxrLEkLCh6gk9HBFMK8y7an6CsEkqt2Z8,10535
|
12
11
|
ngpt/cli/ui.py,sha256=iMinm_QdsmwrEUpb7CBRexyyBqf4sviFI9M3E8D-hhA,5303
|
13
|
-
ngpt/cli/modes/__init__.py,sha256=
|
14
|
-
ngpt/cli/modes/chat.py,sha256=
|
12
|
+
ngpt/cli/modes/__init__.py,sha256=i1ZKe7QsKkQ1g8Ip-NmyltZRQQI6nwXRq35bsmER8BU,229
|
13
|
+
ngpt/cli/modes/chat.py,sha256=4a5EgM_5A1zCSrLrjgQMDnBwIHd1Rnu5_BjSKSm7p24,4255
|
15
14
|
ngpt/cli/modes/code.py,sha256=RjOAj7BDO5vLUdIPkUfPtyIkI_W6qEHsZvYh-sIdVaM,4293
|
15
|
+
ngpt/cli/modes/rewrite.py,sha256=Zb0PFvWRKXs4xJCF3GEdYc-LSmy6qRszz8-QJuldHc0,8595
|
16
16
|
ngpt/cli/modes/shell.py,sha256=lF9f7w-0bl_FdZl-WJnZuV736BKrWQtrwoKr3ejPXFE,2682
|
17
17
|
ngpt/cli/modes/text.py,sha256=ncYnfLFMdTPuHiOvAaHNiOWhox6GF6S-2fTwMIrAz-g,3140
|
18
18
|
ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
|
19
19
|
ngpt/utils/cli_config.py,sha256=A1TgO1rkRs6zgfNwIw5v8-N5jxqrHMZ4B6r3w48egi8,10687
|
20
20
|
ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
|
21
21
|
ngpt/utils/log.py,sha256=3AJiry9vUbo9Rzzrgj6-NMM4lCbgoZhrGcXvdxMqtrs,6353
|
22
|
-
ngpt-2.
|
23
|
-
ngpt-2.
|
24
|
-
ngpt-2.
|
25
|
-
ngpt-2.
|
26
|
-
ngpt-2.
|
22
|
+
ngpt-2.13.0.dist-info/METADATA,sha256=KseQZjNtDa7N5uJVZ0XFThyLh7fawca-6mEUHFzMcjY,21987
|
23
|
+
ngpt-2.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
24
|
+
ngpt-2.13.0.dist-info/entry_points.txt,sha256=SqAAvLhMrsEpkIr4YFRdUeyuXQ9o0IBCeYgE6AVojoI,44
|
25
|
+
ngpt-2.13.0.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
|
26
|
+
ngpt-2.13.0.dist-info/RECORD,,
|
ngpt/cli.py
DELETED
File without changes
|
File without changes
|