@matterailab/orbcode 0.2.1 โ†’ 0.2.2

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
@@ -1,7 +1,17 @@
1
1
  # OrbCode CLI
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@matterailab/orbcode?color=blue&logo=npm)](https://www.npmjs.com/package/@matterailab/orbcode)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@matterailab/orbcode?logo=npm)](https://www.npmjs.com/package/@matterailab/orbcode)
5
+ [![license](https://img.shields.io/npm/l/@matterailab/orbcode?color=green)](./LICENSE)
6
+ [![node](https://img.shields.io/node/v/@matterailab/orbcode?color=green&logo=node.js)](https://nodejs.org)
7
+ [![github stars](https://img.shields.io/github/stars/MatterAIOrg/OrbCode?style=social&logo=github)](https://github.com/MatterAIOrg/OrbCode)
8
+ [![github issues](https://img.shields.io/github/issues/MatterAIOrg/OrbCode?logo=github)](https://github.com/MatterAIOrg/OrbCode/issues)
9
+ [![docs](https://img.shields.io/badge/docs-docs.matterai.so-purple)](https://docs.matterai.so/orbcode-cli/overview)
10
+
3
11
  Agentic coding in your terminal โ€” powered by **Axon models by MatterAI**.
4
12
 
13
+ > ๐Ÿ“– **Full documentation: <https://docs.matterai.so/orbcode-cli/overview>**
14
+
5
15
  OrbCode CLI is a standalone terminal port of the Orbital extension: the same Axon
6
16
  models, the same native tool schemas, the same MatterAI auth backend โ€” rebuilt from
7
17
  scratch as an interactive TUI with streaming chat, live thinking display, tool
@@ -13,6 +23,7 @@ activity rows, edit/command approvals, and todo tracking.
13
23
 
14
24
  ## Table of contents
15
25
 
26
+ - [Quick start](#quick-start)
16
27
  - [Install](#install)
17
28
  - [Updating / relinking](#updating--relinking)
18
29
  - [Usage](#usage)
@@ -31,11 +42,30 @@ activity rows, edit/command approvals, and todo tracking.
31
42
  - [Development](#development)
32
43
  - [Tests](#tests)
33
44
  - [Troubleshooting](#troubleshooting)
45
+ - [Documentation](#documentation)
34
46
  - [Contributing](#contributing)
35
47
  - [License](#license)
36
48
 
37
49
  ---
38
50
 
51
+ ## Quick start
52
+
53
+ ```bash
54
+ npm install -g @matterailab/orbcode # install the CLI (needs Node.js >= 20)
55
+ orbcode login # sign in once via your browser
56
+ cd your-project && orbcode # start coding
57
+ ```
58
+
59
+ That's it โ€” you're in an interactive agent session. Ask it to read, edit, run
60
+ commands, or fix bugs. New here? Skim the [docs](https://docs.matterai.so/orbcode-cli/overview)
61
+ or jump to [Usage](#usage).
62
+
63
+ Prefer not to install globally? Run it on the fly:
64
+
65
+ ```bash
66
+ npx @matterailab/orbcode
67
+ ```
68
+
39
69
  ## Install
40
70
 
41
71
  Requires **Node.js >= 20**.
@@ -143,18 +173,20 @@ Sign out with `/logout` (removes the saved token).
143
173
 
144
174
  ## Models
145
175
 
146
- The two Axon models are built in; `/model` opens a scroll-and-select picker
147
- (`/model <id>` still selects directly). Additional models can be declared via
148
- `customModels` in settings.json. The choice persists across sessions.
176
+ The built-in Axon models are listed below; `/model` opens a scroll-and-select
177
+ picker (`/model <id>` still selects directly). Additional models can be
178
+ declared via `customModels` in settings.json. The choice persists across
179
+ sessions.
149
180
 
150
- | id | context | max output | pricing |
151
- | ---------------------- | ------- | ---------- | ------------------ |
152
- | `axon-eido-3-code-pro` | 400k | 64k | $3/M in ยท $9/M out |
153
- | `axon-code-2-5-pro` | 400k | 64k | $2/M in ยท $6/M out |
154
- | `axon-code-2-5-mini` | 400k | 64k | free |
181
+ | id | context | max output | pricing |
182
+ | ------------------------- | ------- | ---------- | ---------------------- |
183
+ | `axon-eido-3-code-pro` | 400k | 64k | $3/M in ยท $9/M out |
184
+ | `axon-eido-3-code-mini` | 400k | 64k | $1.5/M in ยท $4.5/M out |
185
+ | `axon-code-2-5-pro` | 400k | 64k | $2/M in ยท $6/M out |
186
+ | `axon-code-2-5-mini` | 400k | 64k | free |
155
187
 
156
- `axon-code-2-5-pro` is the default. All three support native JSON tool calls and
157
- image input. Cost comes from the API's usage chunks (`is_byok`-aware) and is
188
+ `axon-eido-3-code-mini` is the default. All four support native JSON tool calls
189
+ and image input. Cost comes from the API's usage chunks (`is_byok`-aware) and is
158
190
  shown in the status bar.
159
191
 
160
192
  ### Other providers (Anthropic, OpenAI-compatible)
@@ -199,6 +231,11 @@ MatterAI login.
199
231
  - `provider: "openai-compatible"` โ†’ any OpenAI-compatible endpoint; requires
200
232
  `baseUrl`. Key from `apiKey` on the entry.
201
233
 
234
+ > **Note:** Third-party models are **not** shown in the TUI's `/model` picker.
235
+ > They're still available headlessly via `orbcode -p "..." --model <id>` (or
236
+ > `MATTERAI_MODEL=<id>`); in an interactive session, `/model claude-opus-4-8`
237
+ > prints the exact command to run.
238
+
202
239
  Anything without a `provider` (or `provider: "matterai"`) keeps using the
203
240
  MatterAI gateway untouched.
204
241
 
@@ -601,6 +638,13 @@ node test-device-auth.mjs # device-auth polling flow against a local mock
601
638
  iTerm) keep working. A normal global install (`npm install -g @matterailab/orbcode`) is
602
639
  unaffected because it lives outside protected folders.
603
640
 
641
+ ## Documentation
642
+
643
+ The README covers the essentials. For the complete, kept-up-to-date reference
644
+ (guides, configuration, hooks cookbook, troubleshooting), visit the docs site:
645
+
646
+ **๐Ÿ‘‰ <https://docs.matterai.so/orbcode-cli/overview>**
647
+
604
648
  ## Contributing
605
649
 
606
650
  Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for how to
@@ -87,8 +87,14 @@ export const ANTHROPIC_MODELS = {
87
87
  provider: "anthropic",
88
88
  },
89
89
  };
90
- export const AXON_MODELS = {
91
- ...ANTHROPIC_MODELS,
90
+ /**
91
+ * Axon's own models (MatterAI gateway). These are the only models shown in
92
+ * the TUI's `/model` picker and are the supported defaults. Third-party
93
+ * providers (Anthropic, OpenAI-compatible) are registered under
94
+ * `AXON_MODELS` for `-p --model` runs but are intentionally hidden from the
95
+ * interactive picker for now.
96
+ */
97
+ export const BUILTIN_AXON_MODELS = {
92
98
  "axon-code-2-5-mini": {
93
99
  id: "axon-code-2-5-mini",
94
100
  name: "Axon Code 2.5 Mini (free)",
@@ -134,7 +140,17 @@ export const AXON_MODELS = {
134
140
  free: false,
135
141
  },
136
142
  };
137
- export const DEFAULT_MODEL_ID = "axon-code-2-5-pro";
143
+ /**
144
+ * Full model registry, including third-party providers. The TUI picker uses
145
+ * `BUILTIN_AXON_MODELS`; non-interactive `-p --model` runs resolve through
146
+ * this map, so a custom 3P entry (e.g. `claude-opus-4-8` from settings.json)
147
+ * still works headlessly.
148
+ */
149
+ export const AXON_MODELS = {
150
+ ...BUILTIN_AXON_MODELS,
151
+ ...ANTHROPIC_MODELS,
152
+ };
153
+ export const DEFAULT_MODEL_ID = "axon-eido-3-code-mini";
138
154
  /** Add user-defined models (from settings.json) to the registry. */
139
155
  export function registerCustomModels(models) {
140
156
  for (const model of models) {
package/dist/ui/App.js CHANGED
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { Box, Static, Text, useApp, useInput } from "ink";
4
4
  import open from "open";
5
5
  import { COLORS, VERSION } from "../branding.js";
6
- import { AXON_MODELS, getModel, isValidAxonModel } from "../api/models.js";
6
+ import { BUILTIN_AXON_MODELS, getModel, isValidAxonModel } from "../api/models.js";
7
7
  import { LoginView } from "./LoginView.js";
8
8
  import { APP_URL, fetchBalance, fetchProfile, fetchTaskTitle } from "../auth/auth.js";
9
9
  import { getAuthToken, getPendingProjectHooks, loadSettings, saveSettings, trustProjectHooks, } from "../config/settings.js";
@@ -444,15 +444,26 @@ export function App({ initialView, initialPrompt, initialSession, updateCheck, }
444
444
  });
445
445
  break;
446
446
  case "/model": {
447
- const ids = Object.keys(AXON_MODELS);
448
- if (arg && isValidAxonModel(arg)) {
447
+ // The interactive picker is restricted to Axon's own models for now.
448
+ // Third-party providers (Anthropic, OpenAI-compatible) are still
449
+ // usable headlessly via `orbcode -p "..." --model <id>` โ€” see
450
+ // the README "Other providers" section.
451
+ const pickerIds = Object.keys(BUILTIN_AXON_MODELS);
452
+ if (arg && pickerIds.includes(arg)) {
449
453
  switchModel(arg);
450
454
  }
455
+ else if (arg && isValidAxonModel(arg)) {
456
+ // Recognized id, but it's a third-party model: not selectable in the TUI.
457
+ pushRow({
458
+ kind: "info",
459
+ text: `Model "${arg}" is only available in non-interactive mode. Run: orbcode -p "..." --model ${arg}`,
460
+ });
461
+ }
451
462
  else if (arg) {
452
463
  // Allow short suffixes like "pro" or "mini" to resolve to the
453
464
  // latest matching registered id, so /model pro keeps working
454
465
  // as new model generations are added.
455
- const matches = ids
466
+ const matches = pickerIds
456
467
  .filter((id) => id.endsWith(`-${arg}`))
457
468
  .sort()
458
469
  .reverse();
@@ -460,7 +471,7 @@ export function App({ initialView, initialPrompt, initialSession, updateCheck, }
460
471
  switchModel(matches[0]);
461
472
  }
462
473
  else {
463
- pushRow({ kind: "error", text: `Unknown model "${arg}". Available: ${ids.join(", ")}` });
474
+ pushRow({ kind: "error", text: `Unknown model "${arg}". Available: ${pickerIds.join(", ")}` });
464
475
  }
465
476
  }
466
477
  else {
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { Box, Text, useInput } from "ink";
4
4
  import { COLORS } from "../../branding.js";
5
- import { AXON_MODELS } from "../../api/models.js";
5
+ import { BUILTIN_AXON_MODELS } from "../../api/models.js";
6
6
  const VISIBLE_ROWS = 6;
7
7
  function formatPrice(model) {
8
8
  if (model.free)
@@ -11,7 +11,7 @@ function formatPrice(model) {
11
11
  return `${perMillion(model.inputPrice)} in / ${perMillion(model.outputPrice)} out per 1M tokens`;
12
12
  }
13
13
  export function ModelPicker({ currentId, onSelect, onCancel }) {
14
- const models = Object.values(AXON_MODELS);
14
+ const models = Object.values(BUILTIN_AXON_MODELS);
15
15
  const [selected, setSelected] = useState(() => {
16
16
  const index = models.findIndex((m) => m.id === currentId);
17
17
  return index === -1 ? 0 : index;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matterailab/orbcode",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "OrbCode CLI โ€” agentic coding in your terminal, powered by Axon models by MatterAI",
5
5
  "type": "module",
6
6
  "bin": {