@orth/cli 0.2.0 → 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
@@ -2,7 +2,7 @@
2
2
 
3
3
  CLI to access all APIs and agent skills on the Orthogonal platform.
4
4
 
5
- ![Demo](demos/demo.gif)
5
+ ![Demo](https://raw.githubusercontent.com/orthogonal-sh/cli/main/demos/demo.gif)
6
6
 
7
7
  ## Installation
8
8
 
@@ -36,7 +36,7 @@ async function apiCommand(slug, path, options) {
36
36
  chalk_1.default.white(api.name || "") +
37
37
  chalk_1.default.gray(` (${api.endpoints?.length || 0} endpoints)`));
38
38
  }
39
- console.log(chalk_1.default.gray("\nRun 'orth api <slug>' to see endpoints for an API"));
39
+ console.log(chalk_1.default.gray("\nRun 'ortho api <slug>' to see endpoints for an API"));
40
40
  return;
41
41
  }
42
42
  if (path) {
@@ -127,7 +127,7 @@ async function apiCommand(slug, path, options) {
127
127
  const api = data.results.find((a) => a.slug === slug);
128
128
  if (!api) {
129
129
  console.log(chalk_1.default.yellow(`API '${slug}' not found.`));
130
- console.log(chalk_1.default.gray("Run 'orth api' to see available APIs"));
130
+ console.log(chalk_1.default.gray("Run 'ortho api' to see available APIs"));
131
131
  return;
132
132
  }
133
133
  console.log(chalk_1.default.bold(`\n${chalk_1.default.cyan(api.name)} (${api.slug})\n`));
@@ -139,8 +139,8 @@ async function apiCommand(slug, path, options) {
139
139
  console.log(chalk_1.default.gray(` ${endpoint.description.slice(0, 80)}${endpoint.description.length > 80 ? "..." : ""}`));
140
140
  }
141
141
  }
142
- console.log(chalk_1.default.gray("\nRun 'orth api " + slug + " <path>' for endpoint details"));
143
- console.log(chalk_1.default.gray("Run 'orth run " + slug + " <path>' to call an endpoint"));
142
+ console.log(chalk_1.default.gray("\nRun 'ortho api " + slug + " <path>' for endpoint details"));
143
+ console.log(chalk_1.default.gray("Run 'ortho run " + slug + " <path>' to call an endpoint"));
144
144
  }
145
145
  catch (error) {
146
146
  spinner.stop();
@@ -33,7 +33,7 @@ async function whoamiCommand() {
33
33
  const key = (0, config_js_1.getApiKey)();
34
34
  if (!key) {
35
35
  console.log(chalk_1.default.yellow("Not authenticated"));
36
- console.log(chalk_1.default.gray("Run 'orth login' to authenticate"));
36
+ console.log(chalk_1.default.gray("Run 'ortho login' to authenticate"));
37
37
  return;
38
38
  }
39
39
  console.log(chalk_1.default.green("✓ Authenticated"));
@@ -36,8 +36,8 @@ async function searchCommand(query, options) {
36
36
  }
37
37
  console.log();
38
38
  }
39
- console.log(chalk_1.default.gray(`Run 'orth api <slug>' to see all endpoints for an API`));
40
- console.log(chalk_1.default.gray(`Run 'orth run <api> <path>' to call an endpoint`));
39
+ console.log(chalk_1.default.gray(`Run 'ortho api <slug>' to see all endpoints for an API`));
40
+ console.log(chalk_1.default.gray(`Run 'ortho run <api> <path>' to call an endpoint`));
41
41
  }
42
42
  catch (error) {
43
43
  spinner.stop();
@@ -63,7 +63,7 @@ const AGENT_DIRS = {
63
63
  openclaw: path.join(os.homedir(), ".openclaw", "skills"),
64
64
  };
65
65
  // ─────────────────────────────────────────────────────────────────────────────
66
- // orth skills list
66
+ // ortho skills list
67
67
  // ─────────────────────────────────────────────────────────────────────────────
68
68
  async function skillsListCommand(options) {
69
69
  const spinner = (0, ora_1.default)("Loading skills...").start();
@@ -93,8 +93,8 @@ async function skillsListCommand(options) {
93
93
  console.log(chalk_1.default.gray(` Slug: ${skill.slug}`));
94
94
  console.log();
95
95
  }
96
- console.log(chalk_1.default.gray("Run 'orth skills show <slug>' to see skill details"));
97
- console.log(chalk_1.default.gray("Run 'orth skills add <slug>' to add a skill locally"));
96
+ console.log(chalk_1.default.gray("Run 'ortho skills show <slug>' to see skill details"));
97
+ console.log(chalk_1.default.gray("Run 'ortho skills add <slug>' to add a skill locally"));
98
98
  }
99
99
  catch (error) {
100
100
  spinner.stop();
@@ -103,7 +103,7 @@ async function skillsListCommand(options) {
103
103
  }
104
104
  }
105
105
  // ─────────────────────────────────────────────────────────────────────────────
106
- // orth skills search <query>
106
+ // ortho skills search <query>
107
107
  // ─────────────────────────────────────────────────────────────────────────────
108
108
  async function skillsSearchCommand(query, options) {
109
109
  const spinner = (0, ora_1.default)("Searching skills...").start();
@@ -128,7 +128,7 @@ async function skillsSearchCommand(query, options) {
128
128
  console.log(chalk_1.default.gray(` Slug: ${skill.slug}`));
129
129
  console.log();
130
130
  }
131
- console.log(chalk_1.default.gray("Run 'orth skills show <slug>' for full details"));
131
+ console.log(chalk_1.default.gray("Run 'ortho skills show <slug>' for full details"));
132
132
  }
133
133
  catch (error) {
134
134
  spinner.stop();
@@ -137,7 +137,7 @@ async function skillsSearchCommand(query, options) {
137
137
  }
138
138
  }
139
139
  // ─────────────────────────────────────────────────────────────────────────────
140
- // orth skills show <slug>
140
+ // ortho skills show <slug>
141
141
  // ─────────────────────────────────────────────────────────────────────────────
142
142
  async function skillsShowCommand(slug) {
143
143
  const spinner = (0, ora_1.default)("Loading skill...").start();
@@ -191,7 +191,7 @@ async function skillsShowCommand(slug) {
191
191
  console.log(chalk_1.default.bold("Install:"));
192
192
  console.log(chalk_1.default.white(` ${skill.installCommand}`));
193
193
  }
194
- console.log(chalk_1.default.gray(`\nRun 'orth skills add ${skill.slug}' to add locally`));
194
+ console.log(chalk_1.default.gray(`\nRun 'ortho skills add ${skill.slug}' to add locally`));
195
195
  }
196
196
  catch (error) {
197
197
  spinner.stop();
@@ -200,7 +200,7 @@ async function skillsShowCommand(slug) {
200
200
  }
201
201
  }
202
202
  // ─────────────────────────────────────────────────────────────────────────────
203
- // orth skills create <githubRepo>
203
+ // ortho skills create <githubRepo>
204
204
  // ─────────────────────────────────────────────────────────────────────────────
205
205
  async function skillsCreateCommand(githubRepo, options) {
206
206
  const spinner = (0, ora_1.default)("Creating skill from GitHub...").start();
@@ -242,7 +242,7 @@ async function skillsCreateCommand(githubRepo, options) {
242
242
  console.log(chalk_1.default.gray(` ${data.skill.description}`));
243
243
  }
244
244
  console.log(chalk_1.default.bold("\nYour skill is on the platform but not yet verified."));
245
- console.log(chalk_1.default.white(`To request verification: ${chalk_1.default.cyan(`orth skills request-verification ${data.skill.slug}`)}`));
245
+ console.log(chalk_1.default.white(`To request verification: ${chalk_1.default.cyan(`ortho skills request-verification ${data.skill.slug}`)}`));
246
246
  console.log(chalk_1.default.gray("Once verified, you can toggle discoverability anytime."));
247
247
  }
248
248
  catch (error) {
@@ -252,7 +252,7 @@ async function skillsCreateCommand(githubRepo, options) {
252
252
  }
253
253
  }
254
254
  // ─────────────────────────────────────────────────────────────────────────────
255
- // orth skills add <slug>
255
+ // ortho skills add <slug>
256
256
  // ─────────────────────────────────────────────────────────────────────────────
257
257
  async function skillsInstallCommand(slug, options) {
258
258
  const spinner = (0, ora_1.default)("Fetching skill...").start();
@@ -333,7 +333,7 @@ async function skillsInstallCommand(slug, options) {
333
333
  }
334
334
  }
335
335
  // ─────────────────────────────────────────────────────────────────────────────
336
- // orth skills init [name]
336
+ // ortho skills init [name]
337
337
  // ─────────────────────────────────────────────────────────────────────────────
338
338
  // Known binary/large file extensions to skip when reading local files
339
339
  const SKIP_EXTENSIONS = new Set([
@@ -419,7 +419,7 @@ Describe the next step.
419
419
  console.log(chalk_1.default.bold("\nNext steps:"));
420
420
  console.log(chalk_1.default.white(" 1. Edit SKILL.md with your skill's instructions"));
421
421
  console.log(chalk_1.default.white(" 2. Add any supporting files to scripts/, references/, or assets/"));
422
- console.log(chalk_1.default.white(` 3. Submit to Orthogonal: ${chalk_1.default.cyan(`orth skills submit ${dirPath}`)}`));
422
+ console.log(chalk_1.default.white(` 3. Submit to Orthogonal: ${chalk_1.default.cyan(`ortho skills submit ${dirPath}`)}`));
423
423
  }
424
424
  catch (error) {
425
425
  console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : "Unknown error"}`));
@@ -427,7 +427,7 @@ Describe the next step.
427
427
  }
428
428
  }
429
429
  // ─────────────────────────────────────────────────────────────────────────────
430
- // orth skills submit [path]
430
+ // ortho skills submit [path]
431
431
  // ─────────────────────────────────────────────────────────────────────────────
432
432
  function readFilesRecursive(dirPath, basePath = "") {
433
433
  const files = [];
@@ -508,7 +508,7 @@ async function skillsSubmitCommand(inputPath, options) {
508
508
  if (!primaryFile) {
509
509
  spinner.stop();
510
510
  console.error(chalk_1.default.red("Error: No SKILL.md found in the root of the directory"));
511
- console.log(chalk_1.default.gray("Run 'orth skills init' to create a skill template"));
511
+ console.log(chalk_1.default.gray("Run 'ortho skills init' to create a skill template"));
512
512
  process.exit(1);
513
513
  }
514
514
  // Parse frontmatter
@@ -565,7 +565,7 @@ async function skillsSubmitCommand(inputPath, options) {
565
565
  console.log(chalk_1.default.gray(` ${data.skill.description.slice(0, 100)}`));
566
566
  }
567
567
  console.log(chalk_1.default.bold("\nYour skill is on the platform but not yet verified."));
568
- console.log(chalk_1.default.white(`To request verification: ${chalk_1.default.cyan(`orth skills request-verification ${data.skill.slug}`)}`));
568
+ console.log(chalk_1.default.white(`To request verification: ${chalk_1.default.cyan(`ortho skills request-verification ${data.skill.slug}`)}`));
569
569
  console.log(chalk_1.default.gray("Once verified, you can toggle discoverability anytime."));
570
570
  console.log(chalk_1.default.gray(`Dashboard: https://orthogonal.com/dashboard/skills`));
571
571
  }
@@ -576,7 +576,7 @@ async function skillsSubmitCommand(inputPath, options) {
576
576
  }
577
577
  }
578
578
  // ─────────────────────────────────────────────────────────────────────────────
579
- // orth skills request-verification <slug>
579
+ // ortho skills request-verification <slug>
580
580
  // ─────────────────────────────────────────────────────────────────────────────
581
581
  async function skillsRequestVerificationCommand(slug) {
582
582
  const spinner = (0, ora_1.default)("Submitting verification request...").start();
@@ -604,16 +604,16 @@ async function skillsRequestVerificationCommand(slug) {
604
604
  }
605
605
  }
606
606
  // ─────────────────────────────────────────────────────────────────────────────
607
- // orth skills publish <slug> (deprecated - redirects to request-verification)
607
+ // ortho skills publish <slug> (deprecated - redirects to request-verification)
608
608
  // ─────────────────────────────────────────────────────────────────────────────
609
609
  async function skillsPublishCommand(slug, options) {
610
610
  console.log(chalk_1.default.yellow("Note: Direct publishing has been replaced with a verification workflow."));
611
- console.log(chalk_1.default.white(`\nTo request your skill to be verified, run:\n ${chalk_1.default.cyan(`orth skills request-verification ${slug}`)}`));
611
+ console.log(chalk_1.default.white(`\nTo request your skill to be verified, run:\n ${chalk_1.default.cyan(`ortho skills request-verification ${slug}`)}`));
612
612
  console.log(chalk_1.default.white("Once verified, you can toggle discoverability from your dashboard."));
613
613
  console.log(chalk_1.default.gray("\nOr manage from the dashboard: https://orthogonal.com/dashboard/skills"));
614
614
  }
615
615
  // ─────────────────────────────────────────────────────────────────────────────
616
- // orth skills request <input>
616
+ // ortho skills request <input>
617
617
  // ─────────────────────────────────────────────────────────────────────────────
618
618
  async function skillsRequestCommand(input) {
619
619
  const spinner = (0, ora_1.default)("Submitting skill request...").start();
package/dist/config.js CHANGED
@@ -29,7 +29,7 @@ function clearApiKey() {
29
29
  function requireApiKey() {
30
30
  const key = getApiKey();
31
31
  if (!key) {
32
- console.error("Error: Not authenticated. Run 'orth login' first or set ORTHOGONAL_API_KEY.");
32
+ console.error("Error: Not authenticated. Run 'ortho login' first or set ORTHOGONAL_API_KEY.");
33
33
  process.exit(1);
34
34
  }
35
35
  return key;
package/dist/index.js CHANGED
@@ -220,7 +220,7 @@ skillsGroup
220
220
  // ─────────────────────────────────────────────────────────────────────────────
221
221
  program
222
222
  .command("search <query>")
223
- .description("Search for APIs (alias for 'orth api search')")
223
+ .description("Search for APIs (alias for 'ortho api search')")
224
224
  .option("-l, --limit <number>", "Max results", "10")
225
225
  .action(asyncAction(async (query, options) => {
226
226
  (0, analytics_js_1.trackEvent)("search", { query });
@@ -228,7 +228,7 @@ program
228
228
  }));
229
229
  program
230
230
  .command("run <api> <path>")
231
- .description("Call an API endpoint (alias for 'orth api run')")
231
+ .description("Call an API endpoint (alias for 'ortho api run')")
232
232
  .option("-X, --method <method>", "HTTP method", "GET")
233
233
  .option("-q, --query <params...>", "Query params (key=value)")
234
234
  .option("-b, --body <json>", "Request body JSON")
@@ -240,7 +240,7 @@ program
240
240
  }));
241
241
  program
242
242
  .command("code <api> <path>")
243
- .description("Generate integration code (alias for 'orth api code')")
243
+ .description("Generate integration code (alias for 'ortho api code')")
244
244
  .option("-l, --lang <language>", "Language: typescript, python, curl", "typescript")
245
245
  .action(asyncAction(async (api, path, options) => {
246
246
  (0, analytics_js_1.trackEvent)("code", { api, path });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orth/cli",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "CLI to access all APIs and skills on the Orthogonal platform",
5
5
  "main": "dist/index.js",
6
6
  "bin": {