@blade-ai/orca 0.5.12 → 0.5.13-win32-x64
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 +31 -0
- package/package.json +15 -23
- package/vendor/x86_64-pc-windows-msvc/bin/orca-windows-runner.exe +0 -0
- package/vendor/x86_64-pc-windows-msvc/bin/orca-windows-sandbox-setup.exe +0 -0
- package/vendor/x86_64-pc-windows-msvc/bin/orca.exe +4 -0
- package/bin/orca.js +0 -124
- package/bin/signals.js +0 -14
package/README.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Orca
|
|
2
2
|
|
|
3
|
+
[](https://github.com/echoVic/orca-agent/releases/latest)
|
|
4
|
+
[](https://www.npmjs.com/package/@blade-ai/orca)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://github.com/echoVic/orca-agent/actions/workflows/runtime-contract.yml)
|
|
7
|
+
[](https://github.com/echoVic/orca-agent/actions/workflows/windows-ci.yml)
|
|
8
|
+
[](https://github.com/echoVic/orca-agent/stargazers)
|
|
9
|
+
|
|
3
10
|
A DeepSeek-native coding agent for your terminal.
|
|
4
11
|
|
|
5
12
|
Give Orca a task and it reads code, edits files, runs commands, verifies the
|
|
@@ -11,6 +18,8 @@ runs locally, and is MIT licensed.
|
|
|
11
18
|
|
|
12
19
|
[Website](https://orcaagent.dev/) · [Changelog](https://orcaagent.dev/changelog/) · [Releases](https://github.com/echoVic/orca-agent/releases/latest) · [npm](https://www.npmjs.com/package/@blade-ai/orca)
|
|
13
20
|
|
|
21
|
+

|
|
22
|
+
|
|
14
23
|
## Install
|
|
15
24
|
|
|
16
25
|
```bash
|
|
@@ -217,6 +226,18 @@ and normalize to `deepseek-flash`, including Flash pricing. DeepSeek thinking is
|
|
|
217
226
|
enabled explicitly: set `reasoning_effort` to `low`, `high`, or `max` (the
|
|
218
227
|
default) in `config.toml`, or use `ORCA_REASONING_EFFORT`.
|
|
219
228
|
|
|
229
|
+
Cost estimates follow DeepSeek's published prices, including the peak rate
|
|
230
|
+
that applies Monday to Friday from 01:00 to 04:00 and from 06:00 to 10:00 UTC
|
|
231
|
+
(Chinese public holidays are off-peak all day). Orca ships with the prices
|
|
232
|
+
current at release. At session startup, each process checks once whether cached
|
|
233
|
+
prices are missing or at least 24 hours old and, if needed, refreshes them from
|
|
234
|
+
[models.dev](https://models.dev) in the background. Set `refresh = false` under
|
|
235
|
+
`[pricing]` in `~/.orca/config.toml` to disable pricing refresh. To price a model
|
|
236
|
+
yourself, for example one served by another endpoint, set `input_cache_miss`,
|
|
237
|
+
`input_cache_hit`, and `output` (US dollars per million tokens) under
|
|
238
|
+
`[models."<name>".pricing]`; those prices apply at every hour. Both settings
|
|
239
|
+
are read only from the user configuration.
|
|
240
|
+
|
|
220
241
|
JPEG, PNG, GIF, and WebP inputs are accepted from ACP clients and the TUI with
|
|
221
242
|
every model selection. Flash consumes images directly; Pro uses Flash for
|
|
222
243
|
task-aware visual analysis before continuing with Pro. In the TUI, use `Ctrl+V`
|
|
@@ -294,6 +315,16 @@ More detail:
|
|
|
294
315
|
- QQ group: `472309526`
|
|
295
316
|
- [Telegram](https://t.me/+11No1w5ZbTMyZTQ1)
|
|
296
317
|
|
|
318
|
+
## Related projects
|
|
319
|
+
|
|
320
|
+
- [blade-code](https://github.com/echoVic/blade-code) is a TypeScript coding
|
|
321
|
+
agent with a CLI, a web UI, and a headless mode.
|
|
322
|
+
- [boss-skill](https://github.com/echoVic/boss-skill) turns one coding agent
|
|
323
|
+
into an auditable team workflow, from PM through DevOps.
|
|
324
|
+
- [blade-agent-sdk](https://github.com/echoVic/blade-agent-sdk) is a
|
|
325
|
+
session-first TypeScript SDK for multi-turn agents, streaming tools, MCP,
|
|
326
|
+
and subagents.
|
|
327
|
+
|
|
297
328
|
## Contributing
|
|
298
329
|
|
|
299
330
|
Read [CONTRIBUTING.md](CONTRIBUTING.md) before contributing. Open an issue first
|
package/package.json
CHANGED
|
@@ -1,33 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@blade-ai/orca",
|
|
3
|
-
"version": "0.5.12",
|
|
4
|
-
"description": "Orca CLI: a DeepSeek-native coding agent.",
|
|
5
|
-
"homepage": "https://orcaagent.dev/",
|
|
6
2
|
"license": "MIT",
|
|
7
|
-
"
|
|
8
|
-
"orca": "bin/orca.js"
|
|
9
|
-
},
|
|
10
|
-
"type": "module",
|
|
11
|
-
"engines": {
|
|
12
|
-
"node": ">=16"
|
|
13
|
-
},
|
|
3
|
+
"homepage": "https://orcaagent.dev/",
|
|
14
4
|
"files": [
|
|
15
|
-
"
|
|
16
|
-
"bin/signals.js",
|
|
5
|
+
"vendor",
|
|
17
6
|
"README.md",
|
|
18
7
|
"LICENSE"
|
|
19
8
|
],
|
|
20
9
|
"repository": {
|
|
21
10
|
"type": "git",
|
|
22
|
-
"url": "git+https://github.com/echoVic/orca-agent.git"
|
|
23
|
-
|
|
11
|
+
"url": "git+https://github.com/echoVic/orca-agent.git"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=16"
|
|
24
15
|
},
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
"name": "@blade-ai/orca",
|
|
17
|
+
"version": "0.5.13-win32-x64",
|
|
18
|
+
"description": "Native Orca binary for win32/x64.",
|
|
19
|
+
"os": [
|
|
20
|
+
"win32"
|
|
21
|
+
],
|
|
22
|
+
"cpu": [
|
|
23
|
+
"x64"
|
|
24
|
+
]
|
|
33
25
|
}
|
|
Binary file
|
|
Binary file
|
package/bin/orca.js
DELETED
|
@@ -1,124 +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, pathToFileURL } 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
|
-
// Run through npm's `.bin` link with `node --preserve-symlinks-main`, as the
|
|
14
|
-
// release smoke runs it, this module's own URL is the link's: a module beside
|
|
15
|
-
// it is found from the real file's directory, not the link's.
|
|
16
|
-
const { signalDispositions } = await import(
|
|
17
|
-
pathToFileURL(path.join(path.dirname(realpathSync(__filename)), "signals.js")).href
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
const TARGETS = {
|
|
21
|
-
"darwin:arm64": {
|
|
22
|
-
packageName: "@blade-ai/orca-darwin-arm64",
|
|
23
|
-
targetTriple: "aarch64-apple-darwin",
|
|
24
|
-
binaryName: "orca"
|
|
25
|
-
},
|
|
26
|
-
"darwin:x64": {
|
|
27
|
-
packageName: "@blade-ai/orca-darwin-x64",
|
|
28
|
-
targetTriple: "x86_64-apple-darwin",
|
|
29
|
-
binaryName: "orca"
|
|
30
|
-
},
|
|
31
|
-
"linux:arm64": {
|
|
32
|
-
packageName: "@blade-ai/orca-linux-arm64",
|
|
33
|
-
targetTriple: "aarch64-unknown-linux-gnu",
|
|
34
|
-
binaryName: "orca"
|
|
35
|
-
},
|
|
36
|
-
"linux:x64": {
|
|
37
|
-
packageName: "@blade-ai/orca-linux-x64",
|
|
38
|
-
targetTriple: "x86_64-unknown-linux-gnu",
|
|
39
|
-
binaryName: "orca"
|
|
40
|
-
},
|
|
41
|
-
"win32:arm64": {
|
|
42
|
-
packageName: "@blade-ai/orca-win32-arm64",
|
|
43
|
-
targetTriple: "aarch64-pc-windows-msvc",
|
|
44
|
-
binaryName: "orca.exe"
|
|
45
|
-
},
|
|
46
|
-
"win32:x64": {
|
|
47
|
-
packageName: "@blade-ai/orca-win32-x64",
|
|
48
|
-
targetTriple: "x86_64-pc-windows-msvc",
|
|
49
|
-
binaryName: "orca.exe"
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const target = TARGETS[`${process.platform}:${process.arch}`];
|
|
54
|
-
if (!target) {
|
|
55
|
-
throw new Error(`Unsupported platform: ${process.platform} (${process.arch})`);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function findExecutable() {
|
|
59
|
-
let vendorRoot;
|
|
60
|
-
try {
|
|
61
|
-
const packageJsonPath = require.resolve(`${target.packageName}/package.json`);
|
|
62
|
-
vendorRoot = path.join(path.dirname(packageJsonPath), "vendor");
|
|
63
|
-
} catch {
|
|
64
|
-
vendorRoot = path.join(__dirname, "..", "vendor");
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const executable = path.join(vendorRoot, target.targetTriple, "bin", target.binaryName);
|
|
68
|
-
if (existsSync(executable)) {
|
|
69
|
-
return executable;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
throw new Error(
|
|
73
|
-
`Missing optional dependency ${target.packageName}. Reinstall with: npm install -g @blade-ai/orca`
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const binaryPath = findExecutable();
|
|
78
|
-
const env = {
|
|
79
|
-
...process.env,
|
|
80
|
-
ORCA_MANAGED_BY_NPM: "1",
|
|
81
|
-
ORCA_MANAGED_PACKAGE_ROOT: realpathSync(path.join(__dirname, "..")),
|
|
82
|
-
ORCA_NODE_PATH: process.env.ORCA_NODE_PATH || process.execPath
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
86
|
-
stdio: "inherit",
|
|
87
|
-
env
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
child.on("error", (error) => {
|
|
91
|
-
console.error(error);
|
|
92
|
-
process.exit(1);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const dispositions = signalDispositions(process.platform);
|
|
96
|
-
const handledSignals = Object.keys(dispositions);
|
|
97
|
-
const forwardSignal = (signal) => {
|
|
98
|
-
if (!child.killed) {
|
|
99
|
-
child.kill(signal);
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
for (const signal of handledSignals) {
|
|
104
|
-
process.on(signal, dispositions[signal] === "forward" ? () => forwardSignal(signal) : () => {});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const result = await new Promise((resolve) => {
|
|
108
|
-
child.on("exit", (code, signal) => {
|
|
109
|
-
if (signal) {
|
|
110
|
-
resolve({ type: "signal", signal });
|
|
111
|
-
} else {
|
|
112
|
-
resolve({ type: "code", exitCode: code ?? 1 });
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
if (result.type === "signal") {
|
|
118
|
-
for (const signal of handledSignals) {
|
|
119
|
-
process.removeAllListeners(signal);
|
|
120
|
-
}
|
|
121
|
-
process.kill(process.pid, result.signal);
|
|
122
|
-
} else {
|
|
123
|
-
process.exit(result.exitCode);
|
|
124
|
-
}
|
package/bin/signals.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// What the launcher does with each signal it takes over while the native
|
|
2
|
-
// binary runs, on `platform` (a `process.platform` value): "forward" passes
|
|
3
|
-
// the signal on to the binary, "ignore" only keeps it from ending the launcher.
|
|
4
|
-
//
|
|
5
|
-
// On Windows child.kill() is TerminateProcess whatever the signal, which would
|
|
6
|
-
// end orca.exe before it can stop its run and exit with 130. Ctrl+C is left to
|
|
7
|
-
// the console, which delivers it to orca.exe too, as it shares the launcher's
|
|
8
|
-
// console; the launcher stays up and exits with orca.exe's code.
|
|
9
|
-
export function signalDispositions(platform) {
|
|
10
|
-
if (platform === "win32") {
|
|
11
|
-
return { SIGINT: "ignore", SIGTERM: "forward" };
|
|
12
|
-
}
|
|
13
|
-
return { SIGINT: "forward", SIGTERM: "forward", SIGHUP: "forward" };
|
|
14
|
-
}
|