sella-cli 0.6.2 → 0.6.5
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 +197 -37
- package/dist/index.js +19 -1
- package/dist/ui.js +28 -4
- package/package.json +21 -2
package/README.md
CHANGED
|
@@ -1,51 +1,211 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://sellag.vercel.app"><img src="https://sellag.vercel.app/sellalogo.png" alt="Sella" width="320" /></a>
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
<h1 align="center">sella-cli</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Your AI agent can buy the data and APIs it needs. On its own, paid per call, in USDC.<br/>
|
|
9
|
+
This CLI connects it in one command.</b>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/npm/v/sella-cli?color=E84B2A&label=npm" alt="npm version" /></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/npm/dm/sella-cli?color=555" alt="npm downloads" /></a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/sella-cli"><img src="https://img.shields.io/node/v/sella-cli?color=339933&label=node" alt="node version" /></a>
|
|
16
|
+
<a href="https://github.com/010100100100011101010100/ogsella/issues"><img src="https://img.shields.io/npm/l/sella-cli?color=blue" alt="license" /></a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="https://sellag.vercel.app">Website</a> ·
|
|
21
|
+
<a href="https://sella.mintlify.app">Docs</a> ·
|
|
22
|
+
<a href="https://sellag.vercel.app/marketplace">Marketplace</a> ·
|
|
23
|
+
<a href="https://github.com/010100100100011101010100/ogsella/issues">Report a bug</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Connect your agent in about 30 seconds
|
|
5
29
|
|
|
6
30
|
```bash
|
|
7
31
|
npx sella-cli
|
|
8
32
|
```
|
|
9
33
|
|
|
10
|
-
That
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
34
|
+
That one command is the whole setup. The wizard:
|
|
35
|
+
|
|
36
|
+
1. **Detects your agent clients**: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Cline.
|
|
37
|
+
2. **Installs the Sella MCP server** into each one. Writes are idempotent and your other MCP servers are preserved.
|
|
38
|
+
3. **Pairs the machine**: paste a setup code from the dashboard, or use your email and a 6-digit code.
|
|
39
|
+
4. **Proves it works** with a live `sella doctor` run at the end.
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<img src="https://sellag.vercel.app/readme/cli-init.svg" alt="npx sella-cli: the wizard detects clients, installs the Sella MCP server, pairs the machine, and verifies with 6/6 checks" width="740" />
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
When it finishes, your agent can search a live marketplace and pay for what it finds, per call, in USDC. You set the budget. You can revoke the key anytime.
|
|
46
|
+
|
|
47
|
+
## Why this exists
|
|
48
|
+
|
|
49
|
+
An agent can only use what a human wired up for it in advance. The moment it needs one more API mid-task, it stops and waits for you. Then you do this, again:
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<img src="https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif" alt="A cat typing frantically on a laptop" width="360" /><br/>
|
|
53
|
+
<sub><i>You, wiring up the seventh API key this month.</i></sub>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
| The traditional way | With Sella |
|
|
57
|
+
|---|---|
|
|
58
|
+
| Find the API. Make an account. Add a card. Copy the key. Paste it into a config. Restart the client. Repeat for every provider. | Your agent searches the marketplace, pays per call in USDC, and keeps working. No account per provider, no key to paste. |
|
|
59
|
+
| Integration time: an evening, per API. | `npx sella-cli`, once. |
|
|
60
|
+
| The agent waits for you. | You set a budget and walk away. |
|
|
61
|
+
|
|
62
|
+
## Try it free, right now (no account)
|
|
63
|
+
|
|
64
|
+
The sandbox searches the real marketplace. No signup, rate-limited:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx sella-cli sandbox "web search"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
<p align="center">
|
|
71
|
+
<img src="https://sellag.vercel.app/readme/cli-sandbox.svg" alt="sella sandbox returns live marketplace results: Exa, Tavily and more, with no account" width="740" />
|
|
72
|
+
</p>
|
|
73
|
+
|
|
74
|
+
What's in there: a catalogue of 1,100+ machine-payable API providers, plus first-party datasets, workflows, and Sella Native products such as Cradle. Free previews let your agent check quality before it pays.
|
|
75
|
+
|
|
76
|
+
## What you get
|
|
77
|
+
|
|
78
|
+
- **One-command onboarding**, so you never hand-edit an MCP config again.
|
|
79
|
+
- **Pay-per-call in USDC**: fractions of a cent for most calls, multi-chain, with budgets you set and keys you can revoke.
|
|
80
|
+
- **A marketplace built for agents**: every listing is discoverable and payable over MCP + x402, so your agent buys mid-task instead of stalling.
|
|
81
|
+
- **Publishing from a CSV**, so you can sell your own data without opening a browser.
|
|
82
|
+
- **Agent-grade output**: every command supports `--json`, `--yes`, and env vars, with meaningful exit codes. Your CI can run it. Your agent can run it.
|
|
17
83
|
|
|
18
84
|
## Commands
|
|
19
85
|
|
|
20
86
|
| Command | What it does |
|
|
21
87
|
|---|---|
|
|
22
|
-
| `sella init` |
|
|
23
|
-
| `sella sandbox <query>` |
|
|
24
|
-
| `sella pair` | Pair this machine only
|
|
25
|
-
| `sella clients` | List detected clients
|
|
26
|
-
| `sella doctor` |
|
|
27
|
-
| `sella status` |
|
|
28
|
-
| `sella fund` | Per-chain USDC deposit addresses
|
|
29
|
-
| `sella mcp` | Run
|
|
30
|
-
| `sella publish init <file.csv>` | Scaffold `sella-dataset.json`
|
|
31
|
-
| `sella publish push` | Publish the dataset
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
88
|
+
| `sella init` | The guided wizard: detect clients, install the Sella MCP server, pair, verify. Also runs on a bare `sella` when no credentials exist yet. |
|
|
89
|
+
| `sella sandbox <query>` | Search the live marketplace with no account. Rate-limited. |
|
|
90
|
+
| `sella pair` | Pair this machine only. Use `--setup-code <code>`, the `SELLA_SETUP_CODE` env var, or `--email` plus a 6-digit code. |
|
|
91
|
+
| `sella clients` | List detected agent clients. `--install` writes configs, `--client a,b` filters, `--dry-run` previews. |
|
|
92
|
+
| `sella doctor` | Six live checks, from endpoint reachability to a real x402 pay quote. Every failure names its fix. |
|
|
93
|
+
| `sella status` | Your API key and agent wallet balances, each chain labelled live or deposit-only. |
|
|
94
|
+
| `sella fund` | Per-chain USDC deposit addresses, plus the funding page with QR codes and a fiat on-ramp. |
|
|
95
|
+
| `sella mcp` | Run a local stdio MCP server that proxies Sella with your stored key, for clients that cannot use a remote endpoint. |
|
|
96
|
+
| `sella publish init <file.csv>` | Scaffold `sella-dataset.json` and pre-check the CSV structure. |
|
|
97
|
+
| `sella publish push` | Publish the dataset through the same route the web dashboard uses. |
|
|
98
|
+
|
|
99
|
+
Run `sella --help` for every flag.
|
|
100
|
+
|
|
101
|
+
## Examples
|
|
102
|
+
|
|
103
|
+
### Small: search the marketplace (10 seconds, free)
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npx sella-cli sandbox "flight prices"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Real listings, real prices, no account.
|
|
110
|
+
|
|
111
|
+
### Medium: connect Claude Code and let the agent do the buying
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npx sella-cli # detect, install, pair, verify
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Then ask your agent:
|
|
118
|
+
|
|
119
|
+
> Search Sella for a web search API and tell me what it costs per call.
|
|
120
|
+
|
|
121
|
+
The agent answers using the Sella MCP tools (`search_datasets`, `list_market_apis`, `try_dataset`, and friends) with the key this CLI stored for it. When you fund the agent wallet, it can buy what it found.
|
|
122
|
+
|
|
123
|
+
### Real-world: publish a CSV and get paid in USDC
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
sella publish init leads.csv # scaffolds sella-dataset.json + structural pre-check
|
|
127
|
+
# edit title, description, price in sella-dataset.json
|
|
128
|
+
sella publish push # same route the web dashboard uses
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Your CSV becomes a listing. Once it clears review it is live for every MCP agent to find, preview, and buy. You are paid per access.
|
|
132
|
+
|
|
133
|
+
### Ready-made agent tasks
|
|
134
|
+
|
|
135
|
+
The [RFI gallery](https://sellag.vercel.app/rfi) is a list of ready-to-send prompts for your newly connected agent:
|
|
136
|
+
|
|
137
|
+
- [Validate a startup idea for $25](https://sellag.vercel.app/rfi?uc=twenty-five-dollar-study)
|
|
138
|
+
- [Get a daily morning brief](https://sellag.vercel.app/rfi?uc=morning-brief)
|
|
139
|
+
- [Test Sella without spending anything](https://sellag.vercel.app/rfi?uc=zero-dollar-demo)
|
|
140
|
+
|
|
141
|
+
## Something broke?
|
|
142
|
+
|
|
143
|
+
<p align="center">
|
|
144
|
+
<img src="https://media.giphy.com/media/13HgwGsXF0aiGY/giphy.gif" alt="Moss from The IT Crowd typing calmly while a fire burns beside him" width="360" /><br/>
|
|
145
|
+
<sub><i>Debugging by vibes.</i></sub>
|
|
146
|
+
</p>
|
|
147
|
+
|
|
148
|
+
Don't. Run the doctor:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sella doctor
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
<p align="center">
|
|
155
|
+
<img src="https://sellag.vercel.app/readme/cli-doctor.svg" alt="sella doctor: six checks pass, from MCP endpoint reachability to a live x402 pay quote" width="740" />
|
|
156
|
+
</p>
|
|
157
|
+
|
|
158
|
+
Each failed check prints what happened and the exact fix, in plain language. If it still looks wrong after that, [open an issue](https://github.com/010100100100011101010100/ogsella/issues) and paste the `sella doctor --json` output.
|
|
159
|
+
|
|
160
|
+
## Built for agents and CI, not just your terminal
|
|
161
|
+
|
|
162
|
+
- `--json` prints exactly one JSON document on stdout. Errors go to stderr. Exit codes mean something.
|
|
163
|
+
- `--yes` and env vars cover every prompt. Nothing hangs waiting for a TTY.
|
|
164
|
+
- `NO_COLOR` and `--no-color` are honored. Color never carries meaning alone.
|
|
165
|
+
- Config writes are idempotent, preserve your other MCP servers, and leave a one-time `.sella-backup`.
|
|
166
|
+
- `SELLA_MCP_URL` points the CLI at staging or a self-hosted Sella.
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Headless pairing in CI
|
|
170
|
+
SELLA_SETUP_CODE=SELLA-XXXX-XXXX-XXXX-XXXX npx sella-cli init --yes --json
|
|
171
|
+
```
|
|
46
172
|
|
|
47
173
|
## Security
|
|
48
174
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
175
|
+
- Configs written before pairing contain **no secrets**. Sella's bootstrap MCP tools are callable without a token, so the agent pairs itself and stores its own credentials.
|
|
176
|
+
- Your API key lands in the OS keychain, or in a `0600` file with `--no-keychain`.
|
|
177
|
+
- You set the budget. You can revoke a key from the dashboard at any time.
|
|
178
|
+
- Never paste API keys into URLs or shell history.
|
|
179
|
+
|
|
180
|
+
## FAQ
|
|
181
|
+
|
|
182
|
+
**Is this crypto hype?**
|
|
183
|
+
No. Payments settle in USDC, a dollar-pegged stablecoin, and most calls cost fractions of a cent. It works with the agent clients you already use.
|
|
184
|
+
|
|
185
|
+
**Do I have to rebuild my stack?**
|
|
186
|
+
No. It is one MCP server entry in a config you already have, and this CLI writes it for you. Try the sandbox before you even sign up.
|
|
187
|
+
|
|
188
|
+
**Is my money safe?**
|
|
189
|
+
You fund a dedicated agent wallet, you set the budget, and you can revoke access anytime. Keys are stored encrypted.
|
|
190
|
+
|
|
191
|
+
**I don't like terminals.**
|
|
192
|
+
Sella has two other ways in: your agent can onboard itself over MCP with your email and a one-time code, or you sign up on the web and paste a setup code to your agent. This CLI is the third path, for people who live in a shell.
|
|
193
|
+
|
|
194
|
+
## Links
|
|
195
|
+
|
|
196
|
+
| | |
|
|
197
|
+
|---|---|
|
|
198
|
+
| Website | https://sellag.vercel.app |
|
|
199
|
+
| Docs | https://sella.mintlify.app |
|
|
200
|
+
| Marketplace | https://sellag.vercel.app/marketplace |
|
|
201
|
+
| Agent task ideas | https://sellag.vercel.app/rfi |
|
|
202
|
+
| npm | https://www.npmjs.com/package/sella-cli |
|
|
203
|
+
| Issues | https://github.com/010100100100011101010100/ogsella/issues |
|
|
204
|
+
|
|
205
|
+
## Found a bug?
|
|
206
|
+
|
|
207
|
+
Found a bug? Have an idea? [Open an issue](https://github.com/010100100100011101010100/ogsella/issues). We read every one.
|
|
208
|
+
|
|
209
|
+
## License
|
|
210
|
+
|
|
211
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { capabilityLabel } from './chains.js';
|
|
|
12
12
|
import { defaultIo, Printer } from './output.js';
|
|
13
13
|
import { Ui } from './ui.js';
|
|
14
14
|
const DEFAULT_MCP_URL = 'https://sellag.vercel.app/api/mcp';
|
|
15
|
-
const VERSION = '0.6.
|
|
15
|
+
const VERSION = '0.6.5';
|
|
16
16
|
function parseFlags(argv) {
|
|
17
17
|
const flags = {
|
|
18
18
|
json: false, yes: false, noColor: false, dryRun: false, noKeychain: false,
|
|
@@ -82,6 +82,11 @@ Environment:
|
|
|
82
82
|
SELLA_MCP_URL Override the MCP endpoint (default ${DEFAULT_MCP_URL})
|
|
83
83
|
SELLA_SETUP_CODE Setup code for headless/CI pairing
|
|
84
84
|
SELLA_NO_KEYCHAIN Set to 1 to force file storage for the API key
|
|
85
|
+
|
|
86
|
+
Links:
|
|
87
|
+
Website https://sellag.vercel.app
|
|
88
|
+
Docs https://sella.mintlify.app
|
|
89
|
+
Issues https://github.com/010100100100011101010100/ogsella/issues
|
|
85
90
|
`;
|
|
86
91
|
function selectClientIds(flags, detected) {
|
|
87
92
|
if (flags.clients) {
|
|
@@ -295,6 +300,16 @@ async function cmdInit(ctx, flags, printer) {
|
|
|
295
300
|
lines.push('AgentWallet pending (backend not configured) — re-run `sella pair` later.');
|
|
296
301
|
}
|
|
297
302
|
ui.note('Sella is connected', lines, flags.dryRun ? 'plain' : awStatus === 'unavailable' ? 'warn' : 'ok');
|
|
303
|
+
// RFI: ready-to-send prompts for real agent tasks — the "now what?" answer.
|
|
304
|
+
const rfi = `${origin}/rfi`;
|
|
305
|
+
ui.bar();
|
|
306
|
+
ui.step('Ideas to try with your agent (each is a ready-to-send prompt):');
|
|
307
|
+
ui.rows([
|
|
308
|
+
{ tag: 'invest', text: `Validate a startup idea for $25 — ${rfi}?uc=twenty-five-dollar-study`, tone: 'brand' },
|
|
309
|
+
{ tag: 'daily', text: `Get a daily morning brief — ${rfi}?uc=morning-brief`, tone: 'ok' },
|
|
310
|
+
{ tag: 'free', text: `Test Sella without spending — ${rfi}?uc=zero-dollar-demo`, tone: 'dim' },
|
|
311
|
+
]);
|
|
312
|
+
ui.detail(`Browse all ideas: ${rfi}`);
|
|
298
313
|
const took = Math.max(1, Math.round((Date.now() - startedAt) / 1000));
|
|
299
314
|
ui.outro(flags.dryRun ? 'Dry run complete — nothing was written.' : `Done in ${took}s — your agents can now buy on Sella.`);
|
|
300
315
|
}
|
|
@@ -311,6 +326,9 @@ export async function runCli(argv, io = defaultIo(), env = defaultEnv()) {
|
|
|
311
326
|
const command = flags.positional[0];
|
|
312
327
|
if (flags.version) {
|
|
313
328
|
io.stdout(VERSION);
|
|
329
|
+
// TTY-only: scripts capturing `sella --version` must still get a bare semver.
|
|
330
|
+
if (io.isTTY)
|
|
331
|
+
io.stdout('docs: https://sella.mintlify.app · issues: https://github.com/010100100100011101010100/ogsella/issues');
|
|
314
332
|
return 0;
|
|
315
333
|
}
|
|
316
334
|
if (flags.help) {
|
package/dist/ui.js
CHANGED
|
@@ -54,7 +54,26 @@ export class Ui {
|
|
|
54
54
|
this.out(`${this.dim('┌')} ${this.paint('1', title)}${meta ? ` ${this.dim(meta)}` : ''}`);
|
|
55
55
|
this.bar();
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
57
|
+
/** Slant-style SELLA wordmark (slashes + underscores, matrix-green fade) — wide TTYs only. */
|
|
58
|
+
wordmarkArt() {
|
|
59
|
+
if (!this.pretty || (process.stdout.columns || 80) < 48)
|
|
60
|
+
return null;
|
|
61
|
+
const glyphs = {
|
|
62
|
+
S: [' _____', ' / ___/', ' \\__ \\ ', ' ___/ / ', '/____/ '],
|
|
63
|
+
E: [' ______', ' / ____/', ' / __/ ', ' / /___ ', '/_____/ '],
|
|
64
|
+
L: [' __ ', ' / / ', ' / / ', ' / /___ ', '/_____/ '],
|
|
65
|
+
A: [' ___ ', ' / |', ' / /| |', ' / ___ |', '/_/ |_|'],
|
|
66
|
+
};
|
|
67
|
+
const rows = [];
|
|
68
|
+
for (let r = 0; r < 5; r += 1) {
|
|
69
|
+
const raw = ['S', 'E', 'L', 'L', 'A'].map((ch) => glyphs[ch][r]).join('');
|
|
70
|
+
// Matrix fade: bright green on top, deep green at the base — decoration only.
|
|
71
|
+
const code = r < 3 ? '92' : '32';
|
|
72
|
+
rows.push(' ' + this.paint(code, raw));
|
|
73
|
+
}
|
|
74
|
+
return rows;
|
|
75
|
+
}
|
|
76
|
+
/** Branded header: line-art wordmark + info panel — the first thing the wizard paints. */
|
|
58
77
|
banner(subtitle, meta) {
|
|
59
78
|
if (this.quiet)
|
|
60
79
|
return;
|
|
@@ -62,12 +81,17 @@ export class Ui {
|
|
|
62
81
|
this.out(`SELLA — ${subtitle} (${meta})`);
|
|
63
82
|
return;
|
|
64
83
|
}
|
|
65
|
-
|
|
84
|
+
this.out('');
|
|
85
|
+
const art = this.wordmarkArt();
|
|
86
|
+
if (art)
|
|
87
|
+
for (const row of art)
|
|
88
|
+
this.out(row);
|
|
89
|
+
const wordmark = art ? '' : 'S E L L A';
|
|
66
90
|
const inner = Math.min(this.width() - 2, Math.max(wordmark.length, subtitle.length, meta.length) + 6);
|
|
67
91
|
const pad = (raw, painted = raw) => `${this.accent('│')} ${painted}${' '.repeat(Math.max(0, inner - raw.length - 2))}${this.accent('│')}`;
|
|
68
|
-
this.out('');
|
|
69
92
|
this.out(this.accent('╭' + '─'.repeat(inner) + '╮'));
|
|
70
|
-
|
|
93
|
+
if (wordmark)
|
|
94
|
+
this.out(pad(wordmark, this.paint('1;36', wordmark)));
|
|
71
95
|
this.out(pad(subtitle, this.paint('1', subtitle)));
|
|
72
96
|
this.out(pad(meta, this.dim(meta)));
|
|
73
97
|
this.out(this.accent('╰' + '─'.repeat(inner) + '╯'));
|
package/package.json
CHANGED
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sella-cli",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.6.5",
|
|
4
|
+
"description": "Connect your AI agent to Sella, the marketplace where agents buy data and APIs, in one command: npx sella-cli. Installs the Sella MCP server into Claude Code, Cursor and more, then pairs, verifies, funds, and publishes.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"cli",
|
|
7
|
+
"mcp",
|
|
8
|
+
"model-context-protocol",
|
|
9
|
+
"ai-agents",
|
|
10
|
+
"agentic-commerce",
|
|
11
|
+
"x402",
|
|
12
|
+
"usdc",
|
|
13
|
+
"micropayments",
|
|
14
|
+
"pay-per-call",
|
|
15
|
+
"data-marketplace",
|
|
16
|
+
"api-marketplace",
|
|
17
|
+
"datasets",
|
|
18
|
+
"claude",
|
|
19
|
+
"cursor",
|
|
20
|
+
"developer-tools",
|
|
21
|
+
"onboarding"
|
|
22
|
+
],
|
|
5
23
|
"license": "MIT",
|
|
6
24
|
"homepage": "https://sellag.vercel.app",
|
|
25
|
+
"bugs": { "url": "https://github.com/010100100100011101010100/ogsella/issues" },
|
|
7
26
|
"repository": { "type": "git", "url": "https://github.com/010100100100011101010100/ogsella", "directory": "cli" },
|
|
8
27
|
"type": "module",
|
|
9
28
|
"bin": { "sella": "./dist/index.js" },
|