@oxecli/oxe 1.0.28 → 1.0.29

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/dist/cli.js CHANGED
@@ -425,7 +425,7 @@ export class CLI {
425
425
  process.stdout.write("\n");
426
426
  process.stdout.write(wasActive
427
427
  ? "\x1b[2mInterrupted agent. Press Ctrl+C again to close the app, or type a new prompt.\x1b[0m\n"
428
- : "\x1b[2mNo active response. Press Ctrl+C again to close the app, or type a new prompt.\x1b[0m\n");
428
+ : "\x1b[2mNo active response. Press Ctrl+C again to exit the app.\x1b[0m\n");
429
429
  continue;
430
430
  }
431
431
  throw err;
package/dist/ui.js CHANGED
@@ -300,14 +300,15 @@ export function tickDuration(seconds) {
300
300
  // ---------------------------------------------------------------------------
301
301
  const FENCE_MARKER_RE = /`{3,}/g;
302
302
  export function printAiChunk(chunk) {
303
- // rich's Markdown renderer ignores leading blank lines; a commit boundary in
304
- // "…\n\n…" text can leave the second chunk starting with "\n", so strip it to
305
- // avoid double-printing a blank row (mirrors the original's output).
306
- const trimmed = chunk.replace(/^\n+/, "");
307
- if (!trimmed)
303
+ // A streaming commit can leave the next chunk beginning with the newlines
304
+ // that separate two paragraphs. Keep one of them so the response retains
305
+ // its intentional empty row without accumulating multiple blank rows.
306
+ const leading = chunk.match(/^\n+/)?.[0].length ?? 0;
307
+ const body = chunk.slice(leading);
308
+ if (!body)
308
309
  return;
309
- process.stdout.write(markdownToAnsi(trimmed) + "\n");
310
- if (/^```/m.test(trimmed))
310
+ process.stdout.write((leading ? "\n" : "") + markdownToAnsi(body) + "\n");
311
+ if (/^```/m.test(body))
311
312
  process.stdout.write("\n");
312
313
  }
313
314
  export function safeCommitPoint(text) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxecli/oxe",
3
- "version": "1.0.28",
3
+ "version": "1.0.29",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/README.md DELETED
@@ -1,58 +0,0 @@
1
- # Oxe — terminal AI coding agent
2
-
3
- A terminal-based AI coding agent. This is a **native TypeScript** implementation
4
- (pure Node.js, no Python required).
5
-
6
- ## Install
7
-
8
- ```bash
9
- npm install -g @oxecli/oxe
10
- ```
11
-
12
- The `oxe` command is provided by this package's `bin`.
13
-
14
- ## Usage
15
-
16
- ```bash
17
- oxe
18
- ```
19
-
20
- On first launch you'll be prompted for an **Oxe API key** (must start with
21
- `oxe_live_`), generated on your Oxe dashboard.
22
-
23
- ## Interactive commands
24
-
25
- | Command | Description |
26
- | --- | --- |
27
- | `/help` | Show available commands |
28
- | `/resume` | List saved conversations |
29
- | `/resume <n>` | Resume conversation number `n` |
30
- | `/effort <none\|low\|high>` | Set reasoning effort |
31
- | `/clear` | Save current conversation and start a new one |
32
- | `/exit`, `/quit` | Save and exit |
33
-
34
- ## Configuration
35
-
36
- Environment variables:
37
-
38
- | Variable | Description | Default |
39
- | --- | --- | --- |
40
- | `OXE_DATA_DIR` | Where sessions are stored | `~/.oxe` |
41
- | `OXE_BASE_URL` | Chat proxy base URL | bundled backend |
42
- | `OXE_MODEL_NAME` | Model to use | `deepseek-v4-flash` |
43
- | `OXE_REASONING_EFFORT` | Default reasoning effort | `low` |
44
- | `OXE_TIMEOUT` / `OXE_MAX_RETRIES` / `OXE_TEMPERATURE` | Request tuning | |
45
-
46
- Sessions and user data live under `~/.oxe/sessions`, never in `node_modules`.
47
-
48
- ## Development
49
-
50
- ```bash
51
- npm install
52
- npm run build # tsc -> dist/
53
- npm install -g . # link as `oxe`
54
- ```
55
-
56
- ## License
57
-
58
- MIT