orbit-code-ai 0.1.0 → 0.1.3
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 +179 -326
- package/dist/cli.mjs +10 -10
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,326 +1,179 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[ includes 500 credits. The key is optional.
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Headless gRPC Server
|
|
191
|
-
|
|
192
|
-
Orbit can be run as a headless gRPC service, allowing you to integrate its agentic capabilities (tools, bash, file editing) into other applications, CI/CD pipelines, or custom user interfaces. The server uses bidirectional streaming to send real-time text chunks, tool calls, and request permissions for sensitive commands.
|
|
193
|
-
|
|
194
|
-
### 1. Start the gRPC Server
|
|
195
|
-
|
|
196
|
-
Start the core engine as a gRPC service on `localhost:50051`:
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
npm run dev:grpc
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
#### Configuration
|
|
203
|
-
|
|
204
|
-
| Variable | Default | Description |
|
|
205
|
-
|-----------|-------------|------------------------------------------------|
|
|
206
|
-
| `GRPC_PORT` | `50051` | Port the gRPC server listens on |
|
|
207
|
-
| `GRPC_HOST` | `localhost` | Bind address. Use `0.0.0.0` to expose on all interfaces (not recommended without authentication) |
|
|
208
|
-
|
|
209
|
-
### 2. Run the Test CLI Client
|
|
210
|
-
|
|
211
|
-
We provide a lightweight CLI client that communicates exclusively over gRPC. It acts just like the main interactive CLI, rendering colors, streaming tokens, and prompting you for tool permissions (y/n) via the gRPC `action_required` event.
|
|
212
|
-
|
|
213
|
-
In a separate terminal, run:
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
npm run dev:grpc:cli
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
*Note: The gRPC definitions are located in `src/proto/orbit.proto`. You can use this file to generate clients in Python, Go, Rust, or any other language.*
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Source Build And Local Development
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
bun install
|
|
227
|
-
bun run build
|
|
228
|
-
node dist/cli.mjs
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Helpful commands:
|
|
232
|
-
|
|
233
|
-
- `bun run dev`
|
|
234
|
-
- `bun test`
|
|
235
|
-
- `bun run test:coverage`
|
|
236
|
-
- `bun run security:pr-scan -- --base origin/main`
|
|
237
|
-
- `bun run smoke`
|
|
238
|
-
- `bun run doctor:runtime`
|
|
239
|
-
- `bun run verify:privacy`
|
|
240
|
-
- focused `bun test ...` runs for the areas you touch
|
|
241
|
-
|
|
242
|
-
## Testing And Coverage
|
|
243
|
-
|
|
244
|
-
Orbit uses Bun's built-in test runner for unit tests.
|
|
245
|
-
|
|
246
|
-
Run the full unit suite:
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
bun test
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
Generate unit test coverage:
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
bun run test:coverage
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
Open the visual coverage report:
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
open coverage/index.html
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
If you already have `coverage/lcov.info` and only want to rebuild the UI:
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
bun run test:coverage:ui
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
Use focused test runs when you only touch one area:
|
|
271
|
-
|
|
272
|
-
- `bun run test:provider`
|
|
273
|
-
- `bun run test:provider-recommendation`
|
|
274
|
-
- `bun test path/to/file.test.ts`
|
|
275
|
-
|
|
276
|
-
Recommended contributor validation before opening a PR:
|
|
277
|
-
|
|
278
|
-
- `bun run build`
|
|
279
|
-
- `bun run smoke`
|
|
280
|
-
- `bun run test:coverage` for broader unit coverage when your change affects shared runtime or provider logic
|
|
281
|
-
- focused `bun test ...` runs for the files and flows you changed
|
|
282
|
-
|
|
283
|
-
Coverage output is written to `coverage/lcov.info`, and Orbit also generates a git-activity-style heatmap at `coverage/index.html`.
|
|
284
|
-
## Repository Structure
|
|
285
|
-
|
|
286
|
-
- `src/` - core CLI/runtime
|
|
287
|
-
- `scripts/` - build, verification, and maintenance scripts
|
|
288
|
-
- `docs/` - setup, contributor, and project documentation
|
|
289
|
-
- `python/` - standalone Python helpers and their tests
|
|
290
|
-
- `vscode-extension/orbit-vscode/` - VS Code extension
|
|
291
|
-
- `.github/` - repo automation, templates, and CI configuration
|
|
292
|
-
- `bin/` - CLI launcher entrypoints
|
|
293
|
-
|
|
294
|
-
## VS Code Extension
|
|
295
|
-
|
|
296
|
-
The repo includes a VS Code extension in [`vscode-extension/orbit-vscode`](vscode-extension/orbit-vscode) for Orbit launch integration, provider-aware control-center UI, and theme support.
|
|
297
|
-
|
|
298
|
-
## Security
|
|
299
|
-
|
|
300
|
-
If you believe you found a security issue, see [SECURITY.md](SECURITY.md).
|
|
301
|
-
|
|
302
|
-
## Community
|
|
303
|
-
|
|
304
|
-
- Use [GitHub Discussions](https://github.com/Gitlawb/orbit/discussions) for Q&A, ideas, and community conversation
|
|
305
|
-
- Use [GitHub Issues](https://github.com/Gitlawb/orbit/issues) for confirmed bugs and actionable feature work
|
|
306
|
-
|
|
307
|
-
## Contributing
|
|
308
|
-
|
|
309
|
-
Contributions are welcome.
|
|
310
|
-
|
|
311
|
-
For larger changes, open an issue first so the scope is clear before implementation. Helpful validation commands include:
|
|
312
|
-
|
|
313
|
-
- `bun run build`
|
|
314
|
-
- `bun run test:coverage`
|
|
315
|
-
- `bun run smoke`
|
|
316
|
-
- focused `bun test ...` runs for touched areas
|
|
317
|
-
|
|
318
|
-
## Disclaimer
|
|
319
|
-
|
|
320
|
-
Orbit is an independent community project and is not affiliated with, endorsed by, or sponsored by Anthropic.
|
|
321
|
-
|
|
322
|
-
Orbit originated from the Orbit Code codebase and has since been substantially modified to support multiple providers and open use. "Orbit" and "Orbit Code" are trademarks of Anthropic PBC. See [LICENSE](LICENSE) for details.
|
|
323
|
-
|
|
324
|
-
## License
|
|
325
|
-
|
|
326
|
-
See [LICENSE](LICENSE).
|
|
1
|
+
# Orbit AI
|
|
2
|
+
|
|
3
|
+
**AI-powered coding companion for IBM ACE integration developers.**
|
|
4
|
+
|
|
5
|
+
Orbit brings an AI agent directly into your terminal — purpose-built for IBM App Connect Enterprise (ACE), ESQL, IBM MQ, and API Connect workflows. It ships with embedded skills and reference material so the AI understands your integration stack out of the box.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/orbit-code-ai)
|
|
8
|
+
[](https://nodejs.org)
|
|
9
|
+
[](#license)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g orbit-code-ai
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Requires Node.js 20 or later.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### With Anthropic (Claude)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
export ANTHROPIC_API_KEY=sk-ant-your-key-here
|
|
29
|
+
orbit
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Windows PowerShell:
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
$env:ANTHROPIC_API_KEY="sk-ant-your-key-here"
|
|
36
|
+
orbit
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### With Gemini
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
export GEMINI_API_KEY=your-key-here
|
|
43
|
+
orbit
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### With Ollama (local, no API key)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
export ORBIT_CODE_USE_OPENAI=1
|
|
50
|
+
export OPENAI_BASE_URL=http://localhost:11434/v1
|
|
51
|
+
export OPENAI_MODEL=qwen2.5-coder:7b
|
|
52
|
+
orbit
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## What's Inside
|
|
58
|
+
|
|
59
|
+
Orbit ships with a suite of IBM ACE slash commands and a full agent reference — loaded automatically so the AI has deep context on your stack without any extra setup.
|
|
60
|
+
|
|
61
|
+
### Commands
|
|
62
|
+
|
|
63
|
+
| Command | What it does |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `/ace-app` | Generate a complete IBM ACE application from requirements — `.project`, descriptor, gateway + main flows, subflows, ESQL, XSD, and Swagger |
|
|
66
|
+
| `/ace-scaffold` | Scaffold a single new message flow with ESQL from a description |
|
|
67
|
+
| `/ace-review` | Thorough code review of ESQL, flow wiring, naming, error handling, and standards |
|
|
68
|
+
| `/ace-fix` | Diagnose and fix bugs in ESQL or message flows |
|
|
69
|
+
| `/ace-explain` | Explain an ACE flow or ESQL module in plain language |
|
|
70
|
+
| `/ace-refactor` | Refactor ESQL for performance, clarity, and standards |
|
|
71
|
+
| `/ace-test` | Generate comprehensive test scenarios for flows and ESQL |
|
|
72
|
+
| `/apic-api` | Generate a complete API Connect (APIC) API definition — OpenAPI contract plus the full `x-ibm-configuration` assembly (JWT validate, logging, response envelope, catch handlers) |
|
|
73
|
+
|
|
74
|
+
### Agent Reference
|
|
75
|
+
|
|
76
|
+
Built-in reference docs loaded into every session:
|
|
77
|
+
|
|
78
|
+
- ESQL coding standards
|
|
79
|
+
- Message flow XML reference
|
|
80
|
+
- Node types (extended)
|
|
81
|
+
- HTTP, MQ, and file flow templates
|
|
82
|
+
- Naming conventions and properties templates
|
|
83
|
+
- Component patterns: audit logging, common utils, error handling, HTTP/input/output adapters, retry
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Supported Providers
|
|
88
|
+
|
|
89
|
+
| Provider | How to configure |
|
|
90
|
+
|---|---|
|
|
91
|
+
| Anthropic (Claude) | `ANTHROPIC_API_KEY` env var |
|
|
92
|
+
| Google Gemini | `GEMINI_API_KEY` env var |
|
|
93
|
+
| OpenAI | `ORBIT_CODE_USE_OPENAI=1` + `OPENAI_API_KEY` |
|
|
94
|
+
| Ollama (local) | `ORBIT_CODE_USE_OPENAI=1` + `OPENAI_BASE_URL` pointing to local server |
|
|
95
|
+
| OpenAI-compatible | Any `/v1`-compatible endpoint via `OPENAI_BASE_URL` |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Features
|
|
100
|
+
|
|
101
|
+
- **IBM ACE-aware** — skills and reference docs ship inside the package; no external config needed
|
|
102
|
+
- **Terminal-first** — streaming responses, tool calling, slash commands, file tools, bash
|
|
103
|
+
- **MCP support** — connect external Model Context Protocol servers
|
|
104
|
+
- **Agent routing** — route different tasks to different models via `~/.orbit/settings.json`
|
|
105
|
+
- **gRPC server mode** *(source build)* — run Orbit as a headless service on `localhost:50051` for CI/CD or custom UI integration
|
|
106
|
+
- **Privacy-first** — telemetry stubbed at build time; no phone-home
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Agent Routing
|
|
111
|
+
|
|
112
|
+
Route different agent tasks to different models. Define each model's connection in `agentModels`, then map agents (or `default`) to those names in `agentRouting`. Every name used in `agentRouting` must exist in `agentModels`:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
// ~/.orbit/settings.json
|
|
116
|
+
{
|
|
117
|
+
"agentModels": {
|
|
118
|
+
"gemini-3.1-pro-preview": { "base_url": "https://generativelanguage.googleapis.com/v1beta/openai", "api_key": "your-gemini-key" },
|
|
119
|
+
"gemini-3.1-flash-lite": { "base_url": "https://generativelanguage.googleapis.com/v1beta/openai", "api_key": "your-gemini-key" }
|
|
120
|
+
},
|
|
121
|
+
"agentRouting": {
|
|
122
|
+
"Explore": "gemini-3.1-flash-lite",
|
|
123
|
+
"Plan": "gemini-3.1-pro-preview",
|
|
124
|
+
"default": "gemini-3.1-flash-lite"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## gRPC Server Mode (source build only)
|
|
132
|
+
|
|
133
|
+
From a source checkout (not the npm package), run Orbit as a headless gRPC service on `localhost:50051`:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
bun run dev:grpc
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Connect your own client using `src/proto/orbit.proto` — clients can be generated in Python, Go, Rust, or any gRPC-supported language. This mode requires the repository; it is not included in the published npm package.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Source Build
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
bun install
|
|
147
|
+
bun run build
|
|
148
|
+
node dist/cli.mjs
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Useful dev commands:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
bun run dev # build + run
|
|
155
|
+
bun run smoke # build + version check
|
|
156
|
+
bun run doctor:runtime # system diagnostics
|
|
157
|
+
bun run verify:privacy # confirm no telemetry
|
|
158
|
+
bun test # unit tests
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Requirements
|
|
164
|
+
|
|
165
|
+
- Node.js >= 20.0.0
|
|
166
|
+
- An API key for your chosen provider (or a running Ollama instance)
|
|
167
|
+
- IBM ACE toolkit (for the integration projects Orbit assists with — not required to run Orbit itself)
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Disclaimer
|
|
172
|
+
|
|
173
|
+
Orbit AI is an independent project and is not affiliated with, endorsed by, or sponsored by IBM, Anthropic, or Google.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## License
|
|
178
|
+
|
|
179
|
+
See [LICENSE](LICENSE).
|
package/dist/cli.mjs
CHANGED
|
@@ -83712,7 +83712,7 @@ function printStartupScreen() {
|
|
|
83712
83712
|
const sLen = ` ● ${sL} Ready — type /help to begin`.length;
|
|
83713
83713
|
out.push(boxRow(sRow, W2, sLen));
|
|
83714
83714
|
out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
|
|
83715
|
-
out.push(` ${DIM}${rgb(...DIMCOL)}orbit-ai ${RESET}${rgb(...ACCENT)}v${"0.1.
|
|
83715
|
+
out.push(` ${DIM}${rgb(...DIMCOL)}orbit-ai ${RESET}${rgb(...ACCENT)}v${"0.1.3"}${RESET}`);
|
|
83716
83716
|
out.push("");
|
|
83717
83717
|
process.stdout.write(out.join(`
|
|
83718
83718
|
`) + `
|
|
@@ -334183,7 +334183,7 @@ function getAnthropicEnvMetadata() {
|
|
|
334183
334183
|
function getBuildAgeMinutes() {
|
|
334184
334184
|
if (false)
|
|
334185
334185
|
;
|
|
334186
|
-
const buildTime = new Date("2026-06-22T12:
|
|
334186
|
+
const buildTime = new Date("2026-06-22T12:39:26.657Z").getTime();
|
|
334187
334187
|
if (isNaN(buildTime))
|
|
334188
334188
|
return;
|
|
334189
334189
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -358600,7 +358600,7 @@ function buildPrimarySection() {
|
|
|
358600
358600
|
}, undefined, false, undefined, this);
|
|
358601
358601
|
return [{
|
|
358602
358602
|
label: "Version",
|
|
358603
|
-
value: "0.1.
|
|
358603
|
+
value: "0.1.3"
|
|
358604
358604
|
}, {
|
|
358605
358605
|
label: "Session name",
|
|
358606
358606
|
value: nameValue
|
|
@@ -470842,7 +470842,7 @@ function WelcomeV2() {
|
|
|
470842
470842
|
dimColor: true,
|
|
470843
470843
|
children: [
|
|
470844
470844
|
"v",
|
|
470845
|
-
"0.1.
|
|
470845
|
+
"0.1.3",
|
|
470846
470846
|
" "
|
|
470847
470847
|
]
|
|
470848
470848
|
}, undefined, true, undefined, this)
|
|
@@ -471042,7 +471042,7 @@ function WelcomeV2() {
|
|
|
471042
471042
|
dimColor: true,
|
|
471043
471043
|
children: [
|
|
471044
471044
|
"v",
|
|
471045
|
-
"0.1.
|
|
471045
|
+
"0.1.3",
|
|
471046
471046
|
" "
|
|
471047
471047
|
]
|
|
471048
471048
|
}, undefined, true, undefined, this)
|
|
@@ -471268,7 +471268,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
471268
471268
|
dimColor: true,
|
|
471269
471269
|
children: [
|
|
471270
471270
|
"v",
|
|
471271
|
-
"0.1.
|
|
471271
|
+
"0.1.3",
|
|
471272
471272
|
" "
|
|
471273
471273
|
]
|
|
471274
471274
|
}, undefined, true, undefined, this);
|
|
@@ -471522,7 +471522,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
471522
471522
|
dimColor: true,
|
|
471523
471523
|
children: [
|
|
471524
471524
|
"v",
|
|
471525
|
-
"0.1.
|
|
471525
|
+
"0.1.3",
|
|
471526
471526
|
" "
|
|
471527
471527
|
]
|
|
471528
471528
|
}, undefined, true, undefined, this);
|
|
@@ -492076,7 +492076,7 @@ Usage: orbitcode --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
492076
492076
|
pendingHookMessages
|
|
492077
492077
|
}, renderAndRun);
|
|
492078
492078
|
}
|
|
492079
|
-
}).version("0.1.
|
|
492079
|
+
}).version("0.1.3 (Orbit AI)", "-v, --version", "Output the version number");
|
|
492080
492080
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
492081
492081
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
492082
492082
|
if (canUserConfigureAdvisor()) {
|
|
@@ -492598,7 +492598,7 @@ if (false) {}
|
|
|
492598
492598
|
async function main2() {
|
|
492599
492599
|
const args = process.argv.slice(2);
|
|
492600
492600
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
492601
|
-
console.log(`${"0.1.
|
|
492601
|
+
console.log(`${"0.1.3"} (Orbit AI)`);
|
|
492602
492602
|
return;
|
|
492603
492603
|
}
|
|
492604
492604
|
if (args.includes("--provider")) {
|
|
@@ -492702,4 +492702,4 @@ async function main2() {
|
|
|
492702
492702
|
}
|
|
492703
492703
|
main2();
|
|
492704
492704
|
|
|
492705
|
-
//# debugId=
|
|
492705
|
+
//# debugId=FD4953675224C5F264756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orbit-code-ai",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Orbit AI – Your AI-powered IBM ACE coding companion",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "moenawaf",
|
|
7
7
|
"bin": {
|
|
8
|
-
"orbit": "
|
|
8
|
+
"orbit": "bin/orbit"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"bin/",
|
|
@@ -146,4 +146,4 @@
|
|
|
146
146
|
"overrides": {
|
|
147
147
|
"lodash-es": "4.18.1"
|
|
148
148
|
}
|
|
149
|
-
}
|
|
149
|
+
}
|