@blade-ai/orca 0.2.44 → 0.2.45-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
@@ -228,6 +228,16 @@ Options:
228
228
  Mention input creates a binding; plain `@...` text stays literal. See
229
229
  [the harness contract](docs/harness-contract.md)
230
230
 
231
+ Approval modes also select the default execution boundary:
232
+
233
+ - `suggest` asks before mutating or external actions.
234
+ - `auto-edit` runs actions without interruption while keeping the workspace
235
+ sandbox; requests to write outside it, use blocked network access, or retry
236
+ without a sandbox still require a permission response.
237
+ - `full-auto` enables full access (`danger-full-access`) and does not fall back
238
+ to a post-failure permission prompt for sandbox escape.
239
+ - `plan` keeps the shell read-only and denies mutations.
240
+
231
241
  ## Workflows
232
242
 
233
243
  `orca workflow run <script-or-name>` runs an Orca dynamic workflow.
@@ -332,7 +342,7 @@ MCP tools and custom external tools can be added at startup. External tools live
332
342
  - **Context Window**: DeepSeek V4 1M-token context, 80% threshold compaction with response reserve (preserves system + recent messages)
333
343
  - **Conversation History**: Local JSONL transcripts support listing, inspection, resume/fork, full-text search, archive/delete/rename, and zstd compression
334
344
  - **HTTP Client**: Singleton with 30s connect / 120s request / 300s streaming timeouts, exponential backoff retry (3 attempts, handles 429/5xx)
335
- - **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
345
+ - **Approval Policy**: Tool capabilities drive approval; `suggest` prompts for mutating or external actions, `auto-edit` allows actions inside its workspace sandbox, `full-auto` combines automatic approval with `danger-full-access`, and `plan` denies mutations
336
346
  - **Verification**: Optional post-completion verifier command with pass/fail status
337
347
  - **Release Gate**: `scripts/release/verify-published.mjs` checks the GitHub Release, npm registry, and `npm exec` smoke path after publishing
338
348
 
package/package.json CHANGED
@@ -1,30 +1,25 @@
1
1
  {
2
- "name": "@blade-ai/orca",
3
- "version": "0.2.44",
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/blade-deepseek.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.2.44-darwin-arm64",
26
- "@blade-ai/orca-darwin-x64": "npm:@blade-ai/orca@0.2.44-darwin-x64",
27
- "@blade-ai/orca-linux-arm64": "npm:@blade-ai/orca@0.2.44-linux-arm64",
28
- "@blade-ai/orca-linux-x64": "npm:@blade-ai/orca@0.2.44-linux-x64"
29
- }
16
+ "name": "@blade-ai/orca",
17
+ "version": "0.2.45-darwin-arm64",
18
+ "description": "Native Orca binary for darwin/arm64.",
19
+ "os": [
20
+ "darwin"
21
+ ],
22
+ "cpu": [
23
+ "arm64"
24
+ ]
30
25
  }
package/bin/orca.js DELETED
@@ -1,102 +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
- ORCA_NODE_PATH: process.env.ORCA_NODE_PATH || process.execPath
62
- };
63
-
64
- const child = spawn(binaryPath, process.argv.slice(2), {
65
- stdio: "inherit",
66
- env
67
- });
68
-
69
- child.on("error", (error) => {
70
- console.error(error);
71
- process.exit(1);
72
- });
73
-
74
- const handledSignals = ["SIGINT", "SIGTERM", "SIGHUP"];
75
- const forwardSignal = (signal) => {
76
- if (!child.killed) {
77
- child.kill(signal);
78
- }
79
- };
80
-
81
- for (const signal of handledSignals) {
82
- process.on(signal, () => forwardSignal(signal));
83
- }
84
-
85
- const result = await new Promise((resolve) => {
86
- child.on("exit", (code, signal) => {
87
- if (signal) {
88
- resolve({ type: "signal", signal });
89
- } else {
90
- resolve({ type: "code", exitCode: code ?? 1 });
91
- }
92
- });
93
- });
94
-
95
- if (result.type === "signal") {
96
- for (const signal of handledSignals) {
97
- process.removeAllListeners(signal);
98
- }
99
- process.kill(process.pid, result.signal);
100
- } else {
101
- process.exit(result.exitCode);
102
- }