@ringko-ai/rkh 0.2.1-rc → 0.3.0

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.
Files changed (3) hide show
  1. package/README.md +11 -5
  2. package/bin/ringko.mjs +18 -16
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -1,12 +1,18 @@
1
- # RingKo CLI
1
+ # RingKo Harness
2
2
 
3
- `@ringko-ai/rkh` is the RingKo agent CLI, distributed as a globally installed npm
4
- package. The `ringko` executable is a Bun bundle, so Node.js 24+ **and**
5
- [Bun](https://bun.sh/) 1.2+ must be on `PATH` — Bun is not optional.
3
+ RingKo is a provider-neutral agent harness. The `ringko` command offers two
4
+ interface styles: an interactive terminal UI (plain `ringko`, the default) and a
5
+ browser UI (`ringko serve`, which prints the URL to open). Both run the same tool
6
+ registry, the same approval gate and the same event-sourced session log.
7
+
8
+ `@ringko-ai/rkh` installs that command globally. The executable is a Bun bundle, so
9
+ Node.js 24+ **and** [Bun](https://bun.sh/) 1.2+ must be on `PATH` — Bun is not
10
+ optional.
6
11
 
7
12
  ```sh
8
13
  npm install -g @ringko-ai/rkh
9
- ringko tui
14
+ ringko # terminal interface (default)
15
+ ringko serve # local backend + browser interface, prints its URL
10
16
  ```
11
17
 
12
18
  `ringko help` lists every command. Without a global install, `npx @ringko-ai/rkh tui`
package/bin/ringko.mjs CHANGED
@@ -127854,7 +127854,7 @@ function resumeHint(sessionId, workspace, entry, windows = process.platform ===
127854
127854
  const source = entry && /\.tsx?$/.test(entry) && !entry.includes("$bunfs") ? `bun ${quote(entry, windows)}` : cliCommand(entry);
127855
127855
  return `
127856
127856
  Resume this session with:
127857
- ${source} tui --session ${quote(sessionId, windows)} --workspace ${quote(workspace, windows)}`;
127857
+ ${source} --session ${quote(sessionId, windows)} --workspace ${quote(workspace, windows)}`;
127858
127858
  }
127859
127859
 
127860
127860
  // packages/tui/src/cli.ts
@@ -127952,20 +127952,20 @@ init_src3();
127952
127952
  // packages/tui/src/provider.ts
127953
127953
  init_loader();
127954
127954
  // packages/tui/package.json
127955
- var version2 = "0.2.1-rc";
127955
+ var version2 = "0.3.0";
127956
127956
 
127957
127957
  // packages/tui/src/cli.ts
127958
127958
  var VERSION8 = version2;
127959
- var USAGE = `${cliCommand()} - RingKo agent harness CLI
127959
+ var USAGE = `${cliCommand()} - RingKo agent harness
127960
127960
 
127961
127961
  Usage:
127962
+ ${cliCommand()} Interactive terminal UI (default)
127962
127963
  ${cliCommand()} <command> [options]
127963
127964
 
127964
127965
  Commands:
127965
127966
  run <prompt> Run the agent
127966
127967
  loop <prompt> Repeat a prompt until --completion-promise or --max-iterations
127967
- tui Interactive terminal UI
127968
- serve Start the shared HTTP backend (TUI starts one automatically)
127968
+ serve Start the local backend and browser UI
127969
127969
  service start|status|stop Manage the shared backend of this workspace
127970
127970
  tools List the registered tools
127971
127971
  skills List installed skills (~/.ringko/skills, ~/.agents/skills)
@@ -127989,11 +127989,11 @@ Commands:
127989
127989
  help Show this help
127990
127990
 
127991
127991
  Options:
127992
- --config <path> Config file (default: ~/.ringko/config)
127992
+ --config <path> Explicit config file (default: ~/.ringko/settings.local.json + provider.json)
127993
127993
  --provider <name> Override the configured provider (default: echo)
127994
127994
  --model <id> Override the configured model id
127995
127995
  --resume, -c Continue the most recent session
127996
- -s, --session [id] Continue a session; omit the id for a session picker (TUI)
127996
+ -s, --session [id] Continue a session; omit the id for the session picker
127997
127997
  --workspace <dir> Workspace root for file tools (default: current directory)
127998
127998
  --server <url> Connect to an existing local backend (or RINGKO_SERVER)
127999
127999
  --port <number> (serve) HTTP port (default: 8787)
@@ -128010,8 +128010,11 @@ function denyApprovals(io) {
128010
128010
  return false;
128011
128011
  };
128012
128012
  }
128013
+ var DASH_COMMANDS = new Set(["--help", "-h", "--version", "-v"]);
128013
128014
  function parseArgs(argv) {
128014
- const [command, ...rest] = argv;
128015
+ const [first, ...rest] = argv;
128016
+ const command = first !== undefined && (!first.startsWith("-") || DASH_COMMANDS.has(first)) ? first : undefined;
128017
+ const args = command === undefined ? argv : rest;
128015
128018
  const positionals = [];
128016
128019
  let config;
128017
128020
  let provider;
@@ -128023,14 +128026,14 @@ function parseArgs(argv) {
128023
128026
  let server;
128024
128027
  let port;
128025
128028
  let shared;
128026
- for (let i = 0;i < rest.length; i += 1) {
128027
- const arg = rest[i];
128029
+ for (let i = 0;i < args.length; i += 1) {
128030
+ const arg = args[i];
128028
128031
  if (arg === "--shared") {
128029
128032
  shared = true;
128030
128033
  continue;
128031
128034
  }
128032
128035
  if (arg === "--server" || arg === "--port") {
128033
- const value = rest[++i];
128036
+ const value = args[++i];
128034
128037
  if (!value || value.startsWith("--"))
128035
128038
  throw new TypeError(`Missing value for ${arg}.`);
128036
128039
  if (arg === "--server")
@@ -128047,7 +128050,7 @@ function parseArgs(argv) {
128047
128050
  continue;
128048
128051
  }
128049
128052
  if (arg === "-s" || arg === "--session") {
128050
- const value = rest[i + 1];
128053
+ const value = args[i + 1];
128051
128054
  if (value !== undefined && !value.startsWith("-")) {
128052
128055
  session = value;
128053
128056
  i += 1;
@@ -128057,7 +128060,7 @@ function parseArgs(argv) {
128057
128060
  continue;
128058
128061
  }
128059
128062
  if (arg === "--config" || arg === "--provider" || arg === "--model" || arg === "--workspace") {
128060
- const value = rest[i + 1];
128063
+ const value = args[i + 1];
128061
128064
  if (value === undefined)
128062
128065
  throw new TypeError(`Missing value for ${arg}.`);
128063
128066
  if (arg === "--config")
@@ -128214,7 +128217,7 @@ async function loopCommand(parsed, io) {
128214
128217
  }
128215
128218
  async function tuiCommand(parsed, io) {
128216
128219
  if (!process.stdout.isTTY) {
128217
- io.err(`${cliCommand()} tui requires an interactive terminal.`);
128220
+ io.err(`${cliCommand()} requires an interactive terminal; use ${cliCommand()} serve for the browser UI.`);
128218
128221
  return 1;
128219
128222
  }
128220
128223
  const config = readConfig(parsed, io);
@@ -128619,6 +128622,7 @@ async function runCli(argv, io) {
128619
128622
  }
128620
128623
  switch (parsed.command) {
128621
128624
  case undefined:
128625
+ return tuiCommand(parsed, io);
128622
128626
  case "help":
128623
128627
  case "--help":
128624
128628
  case "-h":
@@ -128656,8 +128660,6 @@ async function runCli(argv, io) {
128656
128660
  return modelsCommand(parsed, io);
128657
128661
  case "auth":
128658
128662
  return authCommand(parsed, io);
128659
- case "tui":
128660
- return tuiCommand(parsed, io);
128661
128663
  case "serve":
128662
128664
  return serveCommand(parsed, io);
128663
128665
  case "service": {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ringko-ai/rkh",
3
- "version": "0.2.1-rc",
4
- "description": "RingKo interactive agent CLI",
3
+ "version": "0.3.0",
4
+ "description": "RingKo agent harness: terminal and web interfaces",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "bin": {