@blade-ai/orca 0.3.0 → 0.3.1-darwin-arm64

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 CHANGED
@@ -54,13 +54,22 @@ orca # open the TUI
54
54
  orca exec "fix the failing test" # run headlessly
55
55
  orca exec --verifier "cargo test" "fix it" # verify before finishing
56
56
  orca --mode=acp # connect an ACP client
57
+ orca --resume [SESSION_ID] # resume a saved conversation
58
+ orca --fork SESSION_ID # fork a saved conversation
57
59
  ```
58
60
 
59
61
  On Windows PowerShell, set the key with `$env:DEEPSEEK_API_KEY = "sk-..."`;
60
62
  the `orca` commands are the same.
61
63
 
62
- In the TUI, `@` searches files, skills, plugins, and MCP resources. Use
63
- `/plan` for read-only planning, `/goal` for a persistent objective,
64
+ In the TUI, `@` searches files, skills, plugins, and MCP resources. Session
65
+ commands are `/new`, `/resume`, `/fork [name]`, `/rename [name]`, `/status`,
66
+ and `/copy [N]`. The resume picker also supports fork, rename, archive, delete,
67
+ and copying a session ID. `/history` is retired; `/clear` remains a hidden
68
+ compatibility alias for `/new`. `Ctrl+L` clears only the displayed transcript
69
+ and terminal scrollback, keeping the current conversation context. On exit,
70
+ Orca prints the exact `orca --resume <SESSION_ID>` command for the session.
71
+
72
+ Use `/plan` for read-only planning, `/goal` for a persistent objective,
64
73
  `/workflows` for background work, and `/trust` to manage the current folder's
65
74
  sandbox permissions.
66
75
 
@@ -72,8 +81,8 @@ sandbox permissions.
72
81
  the result with a command you choose.
73
82
  - Gates risky actions with `suggest`, sandboxed `auto-edit`, full-access
74
83
  `full-auto`, and read-only `plan` modes, plus per-folder trust.
75
- - Saves local conversation history with resume, fork, search, rename, archive,
76
- and compression support.
84
+ - Saves local conversations with `--resume` for continuation and `--fork` for
85
+ branching.
77
86
  - Runs persistent goals without a fixed turn ceiling, plus subagents and
78
87
  JavaScript workflows for longer tasks that need continuation or parallel work.
79
88
  - Loads project instructions, skills, plugins, custom tools, MCP tools, and MCP
@@ -86,6 +95,13 @@ then defaults. Run `orca --help` or `orca exec --help` for the full command
86
95
  surface. User configuration lives at `~/.orca/config.toml`; trusted projects
87
96
  can also provide `.orca/config.toml`, `AGENTS.md`, rules, skills, and workflows.
88
97
 
98
+ DeepSeek V4 thinking is enabled explicitly. Set `reasoning_effort` to `low`,
99
+ `high`, or `max` (the default) in `config.toml`, or use
100
+ `ORCA_REASONING_EFFORT`. Both `deepseek-v4-flash` and `deepseek-v4-pro` use a
101
+ 1M-token context window and allow up to 384K output tokens. Orca keeps the
102
+ Chat Completions transport and fully replays any returned `reasoning_content`
103
+ across tool turns as required by DeepSeek.
104
+
89
105
  More detail:
90
106
 
91
107
  - [Persistent Goal Mode](docs/goal-mode.md)
package/package.json CHANGED
@@ -1,32 +1,25 @@
1
1
  {
2
- "name": "@blade-ai/orca",
3
- "version": "0.3.0",
4
- "description": "Orca CLI: a DeepSeek-native coding agent.",
5
- "homepage": "https://orcaagent.dev/",
6
2
  "license": "MIT",
7
- "bin": {
8
- "orca": "bin/orca.js"
9
- },
10
- "type": "module",
11
- "engines": {
12
- "node": ">=16"
13
- },
3
+ "homepage": "https://orcaagent.dev/",
14
4
  "files": [
15
- "bin/orca.js",
5
+ "vendor",
16
6
  "README.md",
17
7
  "LICENSE"
18
8
  ],
19
9
  "repository": {
20
10
  "type": "git",
21
- "url": "git+https://github.com/echoVic/orca-agent.git",
22
- "directory": "npm/orca"
11
+ "url": "git+https://github.com/echoVic/blade-deepseek.git"
12
+ },
13
+ "engines": {
14
+ "node": ">=16"
23
15
  },
24
- "optionalDependencies": {
25
- "@blade-ai/orca-darwin-arm64": "npm:@blade-ai/orca@0.3.0-darwin-arm64",
26
- "@blade-ai/orca-darwin-x64": "npm:@blade-ai/orca@0.3.0-darwin-x64",
27
- "@blade-ai/orca-linux-arm64": "npm:@blade-ai/orca@0.3.0-linux-arm64",
28
- "@blade-ai/orca-linux-x64": "npm:@blade-ai/orca@0.3.0-linux-x64",
29
- "@blade-ai/orca-win32-arm64": "npm:@blade-ai/orca@0.3.0-win32-arm64",
30
- "@blade-ai/orca-win32-x64": "npm:@blade-ai/orca@0.3.0-win32-x64"
31
- }
16
+ "name": "@blade-ai/orca",
17
+ "version": "0.3.1-darwin-arm64",
18
+ "description": "Native Orca binary for darwin/arm64.",
19
+ "os": [
20
+ "darwin"
21
+ ],
22
+ "cpu": [
23
+ "arm64"
24
+ ]
32
25
  }
package/bin/orca.js DELETED
@@ -1,118 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { spawn } from "node:child_process";
4
- import { existsSync, realpathSync } from "node:fs";
5
- import { createRequire } from "node:module";
6
- import path from "node:path";
7
- import { fileURLToPath } from "node:url";
8
-
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = path.dirname(__filename);
11
- const require = createRequire(import.meta.url);
12
-
13
- const TARGETS = {
14
- "darwin:arm64": {
15
- packageName: "@blade-ai/orca-darwin-arm64",
16
- targetTriple: "aarch64-apple-darwin",
17
- binaryName: "orca"
18
- },
19
- "darwin:x64": {
20
- packageName: "@blade-ai/orca-darwin-x64",
21
- targetTriple: "x86_64-apple-darwin",
22
- binaryName: "orca"
23
- },
24
- "linux:arm64": {
25
- packageName: "@blade-ai/orca-linux-arm64",
26
- targetTriple: "aarch64-unknown-linux-gnu",
27
- binaryName: "orca"
28
- },
29
- "linux:x64": {
30
- packageName: "@blade-ai/orca-linux-x64",
31
- targetTriple: "x86_64-unknown-linux-gnu",
32
- binaryName: "orca"
33
- },
34
- "win32:arm64": {
35
- packageName: "@blade-ai/orca-win32-arm64",
36
- targetTriple: "aarch64-pc-windows-msvc",
37
- binaryName: "orca.exe"
38
- },
39
- "win32:x64": {
40
- packageName: "@blade-ai/orca-win32-x64",
41
- targetTriple: "x86_64-pc-windows-msvc",
42
- binaryName: "orca.exe"
43
- }
44
- };
45
-
46
- const target = TARGETS[`${process.platform}:${process.arch}`];
47
- if (!target) {
48
- throw new Error(`Unsupported platform: ${process.platform} (${process.arch})`);
49
- }
50
-
51
- function findExecutable() {
52
- let vendorRoot;
53
- try {
54
- const packageJsonPath = require.resolve(`${target.packageName}/package.json`);
55
- vendorRoot = path.join(path.dirname(packageJsonPath), "vendor");
56
- } catch {
57
- vendorRoot = path.join(__dirname, "..", "vendor");
58
- }
59
-
60
- const executable = path.join(vendorRoot, target.targetTriple, "bin", target.binaryName);
61
- if (existsSync(executable)) {
62
- return executable;
63
- }
64
-
65
- throw new Error(
66
- `Missing optional dependency ${target.packageName}. Reinstall with: npm install -g @blade-ai/orca`
67
- );
68
- }
69
-
70
- const binaryPath = findExecutable();
71
- const env = {
72
- ...process.env,
73
- ORCA_MANAGED_BY_NPM: "1",
74
- ORCA_MANAGED_PACKAGE_ROOT: realpathSync(path.join(__dirname, "..")),
75
- ORCA_NODE_PATH: process.env.ORCA_NODE_PATH || process.execPath
76
- };
77
-
78
- const child = spawn(binaryPath, process.argv.slice(2), {
79
- stdio: "inherit",
80
- env
81
- });
82
-
83
- child.on("error", (error) => {
84
- console.error(error);
85
- process.exit(1);
86
- });
87
-
88
- const handledSignals = process.platform === "win32"
89
- ? ["SIGINT", "SIGTERM"]
90
- : ["SIGINT", "SIGTERM", "SIGHUP"];
91
- const forwardSignal = (signal) => {
92
- if (!child.killed) {
93
- child.kill(signal);
94
- }
95
- };
96
-
97
- for (const signal of handledSignals) {
98
- process.on(signal, () => forwardSignal(signal));
99
- }
100
-
101
- const result = await new Promise((resolve) => {
102
- child.on("exit", (code, signal) => {
103
- if (signal) {
104
- resolve({ type: "signal", signal });
105
- } else {
106
- resolve({ type: "code", exitCode: code ?? 1 });
107
- }
108
- });
109
- });
110
-
111
- if (result.type === "signal") {
112
- for (const signal of handledSignals) {
113
- process.removeAllListeners(signal);
114
- }
115
- process.kill(process.pid, result.signal);
116
- } else {
117
- process.exit(result.exitCode);
118
- }