@blade-ai/orca 0.1.10 → 0.1.21-darwin-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 +20 -3
- package/package.json +14 -19
- package/vendor/x86_64-apple-darwin/bin/orca +0 -0
- package/bin/orca.js +0 -101
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Set `INSTALL_DIR` to choose a destination and `ORCA_VERSION` to pin a version:
|
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
curl -fsSL https://orcaagent.dev/install.sh | \
|
|
36
|
-
INSTALL_DIR=/usr/local/bin ORCA_VERSION=0.1.
|
|
36
|
+
INSTALL_DIR=/usr/local/bin ORCA_VERSION=0.1.21 sh
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
### GitHub Releases
|
|
@@ -99,6 +99,13 @@ schema = { target = { type = "string", description = "environment" } }
|
|
|
99
99
|
|
|
100
100
|
External tool commands run from the workspace directory. The raw JSON arguments are provided on stdin and in `ORCA_TOOL_ARGS`.
|
|
101
101
|
|
|
102
|
+
Tool output truncation can be configured under `[tools]`. Byte mode preserves the historical 8 KiB default; token mode adds an explicit warning with original token and line counts before compacting large outputs:
|
|
103
|
+
|
|
104
|
+
```toml
|
|
105
|
+
[tools]
|
|
106
|
+
output_truncation = { mode = "tokens", limit = 2000 }
|
|
107
|
+
```
|
|
108
|
+
|
|
102
109
|
### Defaults
|
|
103
110
|
|
|
104
111
|
- Model: `auto` (main loop uses `deepseek-v4-pro`, auxiliary tasks use `deepseek-v4-flash`)
|
|
@@ -193,7 +200,8 @@ Built-in tools:
|
|
|
193
200
|
| Tool | Description |
|
|
194
201
|
|------|-------------|
|
|
195
202
|
| `read_file` | Read file contents (UTF-8, truncated at 8KB) |
|
|
196
|
-
| `
|
|
203
|
+
| `glob` | Find files and directories by glob pattern; preferred for file discovery |
|
|
204
|
+
| `list_files` | Compatibility alias for directory listing |
|
|
197
205
|
| `grep` | Search with ripgrep (regex, line numbers) |
|
|
198
206
|
| `bash` | Execute shell commands via `sh -c` |
|
|
199
207
|
| `edit` | Exact text replacement in files |
|
|
@@ -204,6 +212,15 @@ Built-in tools:
|
|
|
204
212
|
| `Workflow` | Launch a background dynamic workflow |
|
|
205
213
|
| `update_plan` | Update the visible task plan |
|
|
206
214
|
| `update_goal` | Update active persistent goal status from goal mode |
|
|
215
|
+
| `request_user_input` | Ask a structured clarification question; TUI answers continue the same turn |
|
|
216
|
+
| `list_skills` | List Markdown skills from user and project skill directories |
|
|
217
|
+
| `read_skill` | Read a skill's Markdown instructions by id |
|
|
218
|
+
|
|
219
|
+
Tools are registered through a canonical tool registry with capability metadata. Approval behavior is derived from those capabilities: read-only tools run directly, write tools follow write approval policy, shell tools follow shell approval policy, network tools follow network policy, and agent/workflow tools follow agent policy. `glob` is the model-facing file discovery tool; `list_files` remains accepted for older prompts and saved sessions. `request_user_input` stays deterministic in headless runs and becomes interactive in TUI sessions.
|
|
220
|
+
|
|
221
|
+
Markdown skills live under `$ORCA_HOME/skills/*/SKILL.md`, `~/.orca/skills/*/SKILL.md`, or project `.orca/skills/*/SKILL.md`. The model can inspect them with `list_skills` and `read_skill`; when a prompt explicitly mentions a skill id such as `$debugging`, Orca injects that skill's instructions into the model context for the turn.
|
|
222
|
+
|
|
223
|
+
MCP tools and custom external tools can be added at startup. External tools live under `~/.orca/tools/*.toml` or `$ORCA_HOME/tools/*.toml`, and configured MCP server tools are exposed with namespaced tool names.
|
|
207
224
|
|
|
208
225
|
## Architecture
|
|
209
226
|
|
|
@@ -214,7 +231,7 @@ Built-in tools:
|
|
|
214
231
|
- **Context Window**: DeepSeek V4 1M-token context, 80% threshold compaction with response reserve (preserves system + recent messages)
|
|
215
232
|
- **Conversation History**: Local JSONL transcripts support listing, inspection, resume/fork, full-text search, archive/delete/rename, and zstd compression
|
|
216
233
|
- **HTTP Client**: Singleton with 30s connect / 120s request / 300s streaming timeouts, exponential backoff retry (3 attempts, handles 429/5xx)
|
|
217
|
-
- **Approval Policy**:
|
|
234
|
+
- **Approval Policy**: Tool capabilities drive approval; read operations are allowed, `suggest` asks for write/network/agent/shell, `auto-edit` allows writes but asks for network/agent/shell, and `full-auto` allows all
|
|
218
235
|
- **Verification**: Optional post-completion verifier command with pass/fail status
|
|
219
236
|
|
|
220
237
|
## Event Stream (JSONL)
|
package/package.json
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@blade-ai/orca",
|
|
3
|
-
"version": "0.1.10",
|
|
4
|
-
"description": "Orca CLI: a DeepSeek-native coding agent.",
|
|
5
2
|
"license": "MIT",
|
|
6
|
-
"bin": {
|
|
7
|
-
"orca": "bin/orca.js"
|
|
8
|
-
},
|
|
9
|
-
"type": "module",
|
|
10
|
-
"engines": {
|
|
11
|
-
"node": ">=16"
|
|
12
|
-
},
|
|
13
3
|
"files": [
|
|
14
|
-
"
|
|
4
|
+
"vendor",
|
|
15
5
|
"README.md"
|
|
16
6
|
],
|
|
17
7
|
"repository": {
|
|
18
8
|
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/echoVic/blade-deepseek.git"
|
|
20
|
-
"directory": "npm/orca"
|
|
9
|
+
"url": "git+https://github.com/echoVic/blade-deepseek.git"
|
|
21
10
|
},
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=16"
|
|
13
|
+
},
|
|
14
|
+
"name": "@blade-ai/orca",
|
|
15
|
+
"version": "0.1.21-darwin-x64",
|
|
16
|
+
"description": "Native Orca binary for darwin/x64.",
|
|
17
|
+
"os": [
|
|
18
|
+
"darwin"
|
|
19
|
+
],
|
|
20
|
+
"cpu": [
|
|
21
|
+
"x64"
|
|
22
|
+
]
|
|
28
23
|
}
|
|
Binary file
|
package/bin/orca.js
DELETED
|
@@ -1,101 +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
|
-
},
|
|
18
|
-
"darwin:x64": {
|
|
19
|
-
packageName: "@blade-ai/orca-darwin-x64",
|
|
20
|
-
targetTriple: "x86_64-apple-darwin"
|
|
21
|
-
},
|
|
22
|
-
"linux:arm64": {
|
|
23
|
-
packageName: "@blade-ai/orca-linux-arm64",
|
|
24
|
-
targetTriple: "aarch64-unknown-linux-gnu"
|
|
25
|
-
},
|
|
26
|
-
"linux:x64": {
|
|
27
|
-
packageName: "@blade-ai/orca-linux-x64",
|
|
28
|
-
targetTriple: "x86_64-unknown-linux-gnu"
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const target = TARGETS[`${process.platform}:${process.arch}`];
|
|
33
|
-
if (!target) {
|
|
34
|
-
throw new Error(`Unsupported platform: ${process.platform} (${process.arch})`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function findExecutable() {
|
|
38
|
-
let vendorRoot;
|
|
39
|
-
try {
|
|
40
|
-
const packageJsonPath = require.resolve(`${target.packageName}/package.json`);
|
|
41
|
-
vendorRoot = path.join(path.dirname(packageJsonPath), "vendor");
|
|
42
|
-
} catch {
|
|
43
|
-
vendorRoot = path.join(__dirname, "..", "vendor");
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const executable = path.join(vendorRoot, target.targetTriple, "bin", "orca");
|
|
47
|
-
if (existsSync(executable)) {
|
|
48
|
-
return executable;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
throw new Error(
|
|
52
|
-
`Missing optional dependency ${target.packageName}. Reinstall with: npm install -g @blade-ai/orca`
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const binaryPath = findExecutable();
|
|
57
|
-
const env = {
|
|
58
|
-
...process.env,
|
|
59
|
-
ORCA_MANAGED_BY_NPM: "1",
|
|
60
|
-
ORCA_MANAGED_PACKAGE_ROOT: realpathSync(path.join(__dirname, ".."))
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
64
|
-
stdio: "inherit",
|
|
65
|
-
env
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
child.on("error", (error) => {
|
|
69
|
-
console.error(error);
|
|
70
|
-
process.exit(1);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
const handledSignals = ["SIGINT", "SIGTERM", "SIGHUP"];
|
|
74
|
-
const forwardSignal = (signal) => {
|
|
75
|
-
if (!child.killed) {
|
|
76
|
-
child.kill(signal);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
for (const signal of handledSignals) {
|
|
81
|
-
process.on(signal, () => forwardSignal(signal));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const result = await new Promise((resolve) => {
|
|
85
|
-
child.on("exit", (code, signal) => {
|
|
86
|
-
if (signal) {
|
|
87
|
-
resolve({ type: "signal", signal });
|
|
88
|
-
} else {
|
|
89
|
-
resolve({ type: "code", exitCode: code ?? 1 });
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
if (result.type === "signal") {
|
|
95
|
-
for (const signal of handledSignals) {
|
|
96
|
-
process.removeAllListeners(signal);
|
|
97
|
-
}
|
|
98
|
-
process.kill(process.pid, result.signal);
|
|
99
|
-
} else {
|
|
100
|
-
process.exit(result.exitCode);
|
|
101
|
-
}
|