@blade-ai/orca 0.4.32 → 0.5.0-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
@@ -50,51 +50,81 @@ re-parsing; legacy string commands use the resolved shell dialect.
50
50
  ```bash
51
51
  export DEEPSEEK_API_KEY=sk-...
52
52
 
53
- orca # open the TUI
53
+ orca # open the terminal UI
54
54
  orca exec "fix the failing test" # run headlessly
55
+ printf '%s' "$INSTRUCTION" | orca exec # keep arbitrary prompt text out of argv
55
56
  orca exec --verifier "cargo test" "fix it" # verify before finishing
56
57
  orca exec resume SESSION_ID "continue" # resume a headless session
57
58
  orca exec resume --last "continue" # resume the most recent session
58
59
  orca exec resume SID --resume-at MID "continue" # resume up to a message boundary
59
- orca --mode=acp # connect an ACP client
60
60
  orca --resume [SESSION_ID] # resume a saved conversation
61
61
  orca --fork SESSION_ID # fork a saved conversation
62
+ orca --mode=acp # connect an ACP client
63
+ orca doctor # check the key, trust, and sandbox locally
62
64
  ```
63
65
 
64
- Development builds also provide opt-in [shared ACP sessions](docs/acp-daemon.md)
65
- on Unix (`orca daemon`, `orca attach`, and `orca acp-bridge`),
66
+ On Windows PowerShell, set the key with `$env:DEEPSEEK_API_KEY = "sk-..."`;
67
+ the `orca` commands are the same. The positional prompt form remains
68
+ supported. When the prompt may contain tokens that a task later searches for or
69
+ kills in the process table, pipe it on stdin so it is not exposed in `orca`'s
70
+ command line.
71
+
72
+ Orca also offers opt-in [shared ACP sessions](docs/acp-daemon.md) on Unix
73
+ (`orca daemon`, `orca attach`, and `orca acp-bridge`),
66
74
  [file-defined subagents](docs/subagents.md), and
67
75
  [persistent terminal output pages](docs/architecture/adr/0006-unified-exec-terminal-service.md).
68
- These additions are available in v0.4.27 and later.
69
76
 
70
- On Windows PowerShell, set the key with `$env:DEEPSEEK_API_KEY = "sk-..."`;
71
- the `orca` commands are the same.
72
-
73
- In the TUI, `@` searches files, skills, plugins, and MCP resources. Session
74
- commands are `/new`, `/resume`, `/fork [name]`, `/rename [name]`, `/status`,
75
- `/config`, and `/copy [N]`. `/config` opens an interactive session settings
76
- panel. Model and reasoning-effort choices from `/model` or `/config` are saved
77
- to the user `config.toml` and apply to new sessions; approval mode changes stay
78
- session-scoped and are never saved. Entering `full-auto` requires an explicit
79
- Full Access confirmation. Once the runtime commits it, the active task's next
80
- tool admission uses `TrustedHost` / `DangerFullAccess`; tools already running
81
- and delegated children already launched retain their original policy snapshot.
82
- `/status` reports the effective execution profile, shell sandbox, and active
83
- permission profile. The resume picker also supports fork, rename, archive,
84
- delete, and copying a session ID. `/history` is retired; `/clear` remains a hidden
85
- compatibility alias for `/new`. `Ctrl+L` clears only the displayed transcript
86
- and terminal scrollback, keeping the current conversation context. On exit,
87
- Orca prints the exact `orca --resume <SESSION_ID>` command for the session.
88
-
89
- Use `/plan` for read-only planning, `/goal` for a persistent objective, and
90
- `/tasks` for the unified workspace containing subagents, background commands,
91
- monitors, and workflow children. `/agents` is an alias for `/tasks`, while
92
- `/workflows` keeps the workflow-specific run tree. Use `/trust` to control
93
- whether Orca loads project-provided configuration and instructions; it does not
94
- enable or bypass OS sandbox enforcement. Automatic project memory is enabled
95
- for recorded sessions by default; use `/remember` for explicit user or project
96
- facts. See [Memory](docs/memory.md) for capture, recall, storage, privacy, and
97
- deletion.
77
+ ### The terminal UI
78
+
79
+ Run `orca` in a project. The first run in a folder asks you to trust it or
80
+ continue untrusted: trust lets Orca load the project's configuration,
81
+ instructions, skills, agents, and workflows, and never enables or bypasses the
82
+ OS sandbox. Then type a task and press `Enter`.
83
+
84
+ - **Mention and command.** `@` mentions files, skills, plugins, and MCP
85
+ resources; `$` inserts a skill; `/` opens the command menu; `?` lists every
86
+ key. `Ctrl+V` attaches a clipboard image.
87
+ - **Follow along.** Replies are marked `●`, reasoning collapses to one
88
+ `⋯ thinking` line, and each tool call shows its output under a `│` rail.
89
+ `e` expands the latest collapsed output and `Shift+E` all of them. The
90
+ status bar shows the approval mode, the model and reasoning effort, the
91
+ context left, and usage.
92
+ - **Steer a running turn.** `Esc` interrupts. `Enter` queues a follow-up for
93
+ the next turn, `Ctrl+Enter` sends it into the running turn (in terminals
94
+ with the kitty keyboard protocol), and `Ctrl+B` moves the turn to the
95
+ background.
96
+ - **Approve tool calls.** A call that needs approval turns the input into an
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.
103
+ - **Background work.** `/tasks` shows the tasks dock under the conversation,
104
+ where background turns, subagents, commands, monitors, and workflow children
105
+ appear. `/agents` opens the Agent Workspace with each task's live
106
+ conversation or transcript and the controls it can safely take: stop,
107
+ resume, retry, or a follow-up. When background agents finish while you are
108
+ idle, Orca continues with their results. `/workflows` keeps the workflow run
109
+ tree.
110
+ - **Plan, goals, and recap.** `/plan` investigates read-only and ends with a
111
+ plan to approve; `/goal` sets a persistent objective; `/recap` summarizes the
112
+ session, and Orca writes one itself when you return after a quiet spell;
113
+ `/side` opens a side conversation for a quick question.
114
+ - **Sessions.** `/new`, `/resume` (grouped by project, with fork, rename,
115
+ archive, delete, and copy ID), `/fork [name]`, `/rename [name]`, `/model`,
116
+ `/config`, and `/copy [N]`. Model and reasoning-effort choices are saved to
117
+ the user `config.toml`, so new sessions use them too. `/status` reports the effective execution profile,
118
+ shell sandbox, and permission profile. `Ctrl+L` clears the screen but keeps
119
+ the conversation, and on exit Orca prints the `orca --resume <SESSION_ID>`
120
+ command.
121
+
122
+ The [Terminal UI guide](https://orcaagent.dev/docs/#terminal-ui) walks through
123
+ the screen and every key.
124
+
125
+ Automatic project memory is on for recorded sessions; use `/remember` for
126
+ explicit user or project facts. See [Memory](docs/memory.md) for capture,
127
+ recall, storage, privacy, and deletion.
98
128
 
99
129
  ### Use Orca from Pilion Browser
100
130
 
@@ -134,9 +164,9 @@ deletion.
134
164
  accepted overflow queues without creating a worker, and parents waiting for
135
165
  children yield their lease before re-entering the fair queue.
136
166
  - Keeps up to four active child summaries visible in the conversation and up to
137
- eight durable activity entries per child. `/tasks` opens live transcripts and
138
- exposes only controls the selected child can safely perform: stop, resume,
139
- retry, or a revision-fenced follow-up.
167
+ eight durable activity entries per child. `/agents` opens live conversations
168
+ and transcripts and exposes only controls the selected child can safely
169
+ perform: stop, resume, retry, or a revision-fenced follow-up.
140
170
  - Learns a bounded set of durable project facts after successfully committed
141
171
  turns and retrieves only prompt-relevant facts on later turns.
142
172
  - Runs with no implicit turn ceiling; optional `[budget]` limits
@@ -157,37 +187,40 @@ then defaults. Run `orca --help` or `orca exec --help` for the full command
157
187
  surface. User configuration lives at `~/.orca/config.toml`; trusted projects
158
188
  can also provide `.orca/config.toml`, `AGENTS.md`, rules, skills, and workflows.
159
189
 
160
- DeepSeek thinking is enabled explicitly. Set `reasoning_effort` to `low`,
161
- `high`, or `max` (the default) in `config.toml`, or use
162
- `ORCA_REASONING_EFFORT`. `deepseek-flash` (DeepSeek-V4.1-Flash) and
163
- `deepseek-v4-pro` use a 1M-token context window and allow up to 384K output
164
- tokens. The retired `deepseek-v4-flash` and
165
- `deepseek-v4-flash-vision-exp` names remain accepted and normalize to
166
- `deepseek-flash`, including Flash pricing. JPEG, PNG, GIF, and WebP inputs are
167
- accepted from ACP clients and the TUI with every model selection. Explicit
168
- Flash selections consume images directly; `auto` and Pro use Flash for
169
- task-aware visual analysis before continuing with the selected coding model.
170
- In the TUI, use `Ctrl+V` to attach the current
171
- clipboard image (`Alt+V` is also available on Windows), drag or paste image
172
- paths and `file://` URLs, or select an image through `@file`. Each attachment
173
- appears as an atomic `[Image #N]` item that can be deleted, cleared, queued,
174
- edited, and restored after a rejected submission. `Cmd+V` works when the
175
- terminal forwards it as `Super+V`; terminals that consume `Cmd+V` should use
176
- `Ctrl+V`. Clipboard reads run in the background, and pressing Enter while one
177
- is pending waits for the image before submitting. Place the cursor on an image
178
- item and press Enter to open its preview; submitted images also render in the
179
- message area and can be clicked. The viewer supports `+`/`-` zoom, arrow-key
180
- panning, `0` to fit, and Esc to close. Kitty and Ghostty use the Kitty graphics
181
- protocol for native-pixel previews; iTerm2 and WezTerm use the inline-image
182
- protocol. Terminals without an image protocol, including Apple Terminal, fall
183
- back to low-resolution true-color cells. SSH sessions without a graphical
184
- clipboard should paste or mention a path on the remote host. Inline attachments
185
- share a 5 MiB total limit. Orca keeps the Chat Completions transport and fully
186
- replays any returned `reasoning_content` across tool turns as required by
187
- DeepSeek.
190
+ An unset or `auto` model uses `deepseek-flash` (DeepSeek-V4.1-Flash). Choose
191
+ `deepseek-v4-pro` with `/model`, `--model`, or `model = "deepseek-v4-pro"` in
192
+ `config.toml`; releases before 0.5.0 routed `auto` to Pro. Both models use a
193
+ 1M-token context window and allow up to 384K output tokens. The retired
194
+ `deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` names remain accepted
195
+ and normalize to `deepseek-flash`, including Flash pricing. DeepSeek thinking is
196
+ enabled explicitly: set `reasoning_effort` to `low`, `high`, or `max` (the
197
+ default) in `config.toml`, or use `ORCA_REASONING_EFFORT`.
198
+
199
+ JPEG, PNG, GIF, and WebP inputs are accepted from ACP clients and the TUI with
200
+ every model selection. Flash consumes images directly; Pro uses Flash for
201
+ task-aware visual analysis before continuing with Pro. In the TUI, use `Ctrl+V`
202
+ to attach the current clipboard image (`Alt+V` is also available on Windows),
203
+ drag or paste image paths and `file://` URLs, or select an image through
204
+ `@file`. Each attachment appears as an atomic `[Image #N]` item that can be
205
+ deleted, cleared, queued, edited, and restored after a rejected submission.
206
+ `Cmd+V` works when the terminal forwards it as `Super+V`; terminals that
207
+ consume `Cmd+V` should use `Ctrl+V`. Clipboard reads run in the background, and
208
+ pressing Enter while one is pending waits for the image before submitting.
209
+ Place the cursor on an image item and press Enter to open its preview;
210
+ submitted images also render in the message area and can be clicked. The viewer
211
+ supports `+`/`-` zoom, arrow-key panning, `0` to fit, and Esc to close. Kitty
212
+ and Ghostty use the Kitty graphics protocol for native-pixel previews; iTerm2
213
+ and WezTerm use the inline-image protocol. Terminals without an image protocol,
214
+ including Apple Terminal, fall back to low-resolution true-color cells. SSH
215
+ sessions without a graphical clipboard should paste or mention a path on the
216
+ remote host. Inline attachments share a 5 MiB total limit. Orca keeps the Chat
217
+ Completions transport and fully replays any returned `reasoning_content` across
218
+ tool turns as required by DeepSeek.
188
219
 
189
220
  More detail:
190
221
 
222
+ - [Documentation](https://orcaagent.dev/docs/) and the
223
+ [Terminal UI guide](https://orcaagent.dev/docs/#terminal-ui)
191
224
  - [Persistent Goal Mode](docs/goal-mode.md)
192
225
  - [Memory](docs/memory.md)
193
226
  - [Harness and app-server contract](docs/harness-contract.md)
@@ -221,6 +254,8 @@ More detail:
221
254
  cleanup before the Goal mutation commits. Alt+Up queue editing commits a
222
255
  revision-checked runtime delete, failed queue admission restores the prompt,
223
256
  and queued previews remain bounded instead of copying the full body per frame.
257
+ - Detached background workers never hold the terminal open, and they end once
258
+ their task is gone or their lease is lost.
224
259
  - Session switches start the replacement before closing the current runtime.
225
260
  Rename, fork, archive, and delete commit through revision-checked and durable
226
261
  paths, and stale events from a previous attachment are ignored.
package/package.json CHANGED
@@ -1,32 +1,25 @@
1
1
  {
2
- "name": "@blade-ai/orca",
3
- "version": "0.4.32",
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.4.32-darwin-arm64",
26
- "@blade-ai/orca-darwin-x64": "npm:@blade-ai/orca@0.4.32-darwin-x64",
27
- "@blade-ai/orca-linux-arm64": "npm:@blade-ai/orca@0.4.32-linux-arm64",
28
- "@blade-ai/orca-linux-x64": "npm:@blade-ai/orca@0.4.32-linux-x64",
29
- "@blade-ai/orca-win32-arm64": "npm:@blade-ai/orca@0.4.32-win32-arm64",
30
- "@blade-ai/orca-win32-x64": "npm:@blade-ai/orca@0.4.32-win32-x64"
31
- }
16
+ "name": "@blade-ai/orca",
17
+ "version": "0.5.0-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: 64535376 bytes
4
+ sha256: 5389158a7ead14fea90373d645beef682059b77501ed705990182be3e2a4d241
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
- }