@blade-ai/orca 0.5.5 → 0.5.6-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 CHANGED
@@ -95,11 +95,13 @@ OS sandbox. Then type a task and press `Enter`.
95
95
  background.
96
96
  - **Approve tool calls.** A call that needs approval turns the input into an
97
97
  approval panel: allow once, allow this exact call, allow the tool for the
98
- session, or deny (`Esc`). `Shift+Tab` cycles `suggest` → `auto-edit` →
99
- `full-auto` → `plan`. Entering `full-auto` asks for an explicit Full Access
100
- confirmation; the running task picks it up at its next tool call, while tools
101
- already running and subagents already launched keep their original policy.
102
- Mode changes last for the session and are never saved.
98
+ session, or deny (`Esc`). An MCP tool can also be always allowed, alone or
99
+ with its whole server, as a rule saved to your config. `Shift+Tab` cycles
100
+ `suggest` → `auto-edit` → `full-auto` → `plan`. Entering `full-auto` asks for
101
+ an explicit Full Access confirmation; the running task picks it up at its
102
+ next tool call, while tools already running and subagents already launched
103
+ keep their original policy. Mode changes last for the session and are never
104
+ saved.
103
105
  - **Background work.** `/tasks` shows the tasks dock under the conversation,
104
106
  where background turns, subagents, commands, monitors, and workflow children
105
107
  appear. `/agents` opens the Agent Workspace with each task's live
@@ -107,6 +109,10 @@ OS sandbox. Then type a task and press `Enter`.
107
109
  resume, retry, or a follow-up. When background agents finish while you are
108
110
  idle, Orca continues with their results. `/workflows` keeps the workflow run
109
111
  tree.
112
+ - **MCP servers.** The servers in your config connect in the background as
113
+ soon as the TUI opens. `/mcp` shows how each stands, with its tools and
114
+ prompts, and reconnects, logs in, or logs out; each MCP prompt runs as a
115
+ slash command, `/mcp__<server>__<prompt>`.
110
116
  - **Plan, goals, and recap.** `/plan` investigates read-only and ends with a
111
117
  plan to approve; `/goal` sets a persistent objective; `/recap` summarizes the
112
118
  session, and Orca writes one itself when you return after a quiet spell;
@@ -179,6 +185,9 @@ recall, storage, privacy, and deletion.
179
185
  JavaScript workflows for longer tasks that need continuation or parallel work.
180
186
  - Loads project instructions, skills, plugins, custom tools, MCP tools, and MCP
181
187
  resources after the workspace is trusted.
188
+ - Manages MCP servers with `orca mcp add`, `list`, `get`, `remove`, `login`,
189
+ and `logout`: local stdio servers, and remote ones over streamable HTTP or
190
+ legacy SSE that sign in with OAuth or a bearer token from the environment.
182
191
  - Exposes stable JSONL, app-server, and Agent Client Protocol (ACP) contracts
183
192
  for editors, harnesses, and CI.
184
193
 
package/package.json CHANGED
@@ -1,32 +1,25 @@
1
1
  {
2
- "name": "@blade-ai/orca",
3
- "version": "0.5.5",
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/orca-agent.git"
12
+ },
13
+ "engines": {
14
+ "node": ">=16"
23
15
  },
24
- "optionalDependencies": {
25
- "@blade-ai/orca-darwin-arm64": "npm:@blade-ai/orca@0.5.5-darwin-arm64",
26
- "@blade-ai/orca-darwin-x64": "npm:@blade-ai/orca@0.5.5-darwin-x64",
27
- "@blade-ai/orca-linux-arm64": "npm:@blade-ai/orca@0.5.5-linux-arm64",
28
- "@blade-ai/orca-linux-x64": "npm:@blade-ai/orca@0.5.5-linux-x64",
29
- "@blade-ai/orca-win32-arm64": "npm:@blade-ai/orca@0.5.5-win32-arm64",
30
- "@blade-ai/orca-win32-x64": "npm:@blade-ai/orca@0.5.5-win32-x64"
31
- }
16
+ "name": "@blade-ai/orca",
17
+ "version": "0.5.6-darwin-x64",
18
+ "description": "Native Orca binary for darwin/x64.",
19
+ "os": [
20
+ "darwin"
21
+ ],
22
+ "cpu": [
23
+ "x64"
24
+ ]
32
25
  }
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: package/vendor/x86_64-apple-darwin/bin/orca
3
+ size: 66125352 bytes
4
+ sha256: cce3fe88b95668e82188d90dfe095e51374bde19fa12cedc7fc0333e33ae3fc3
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
- }