@fnmoa/cli 0.1.0 → 0.1.1

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,27 +1,29 @@
1
- # `@moa/cli` — `moa`
1
+ # `@fnmoa/cli` — `moa`
2
2
 
3
3
  A terminal client for the Moa server — drives tasks and workflows over the same
4
- HTTP API the dashboard uses. Lets the **agent** (inside the container) and the
5
- **operator** (on the host) manage everything without the UI.
4
+ HTTP API the dashboard uses.
6
5
 
7
- ## Run
6
+ ## Install
8
7
 
9
- **Inside the container** (the agent's path) — `moa` is on `PATH`, talks to the
10
- local server automatically:
8
+ ```sh
9
+ npm i -g @fnmoa/cli
10
+ ```
11
+
12
+ ## Setup
13
+
14
+ Point it at your Moa server and authenticate once:
11
15
 
12
16
  ```sh
13
- moa status
14
- moa wf pending
15
- moa wf solve mhbspot/repo 42 --watch
17
+ moa config set url https://cp.fnmoa.com
18
+ moa config set key <your-api-key>
16
19
  ```
17
20
 
18
- **On the host** — point it at the published API port (see
19
- `docker-compose.override.yml`, default `127.0.0.1:3030`):
21
+ Then use it:
20
22
 
21
23
  ```sh
22
- export MOA_API_URL=http://localhost:3030
23
- pnpm --filter @moa/cli exec tsx src/index.ts status
24
- # or, after `pnpm --filter @moa/cli build`, use the `moa` bin
24
+ moa status
25
+ moa wf pending
26
+ moa wf solve owner/repo 42 --watch
25
27
  ```
26
28
 
27
29
  ## Commands
@@ -56,47 +58,19 @@ moa config set key <key> persist an API key
56
58
  moa config clear
57
59
  ```
58
60
 
59
- ## Knowledge base for agents
60
-
61
- The command set is a **self-describing registry** — `moa help --json` emits the
62
- full catalog (every command + sub-action, with `usage` and documented `args`)
63
- as JSON, so an agent can discover capabilities programmatically:
64
-
65
- ```sh
66
- moa help --json
67
- # { "api": "...", "commands": [ { "name": "wf solve", "usage": "...", "args": [...] }, ... ] }
68
- ```
69
-
70
- `moa help` (text) is rendered from the same registry, so docs never drift.
71
-
72
- ## Structure (modular)
73
-
74
- ```
75
- src/
76
- index.ts entry: parse argv → dispatch → help/--json
77
- registry.ts COMMANDS list + catalog() (the KB)
78
- command.ts Command / CommandMeta types
79
- args.ts argv parser
80
- ui.ts color + status formatting
81
- client.ts HTTP API client
82
- commands/ one module per group: status, tasks, workflows, github
83
- ```
84
-
85
- Add a command by writing a `Command` in `commands/` and listing it in
86
- `registry.ts` — it appears in help, the JSON catalog, and dispatch automatically.
61
+ `moa help --json` emits the full command catalog (every command + sub-action,
62
+ with `usage` and documented `args`) as JSON, so an agent can discover
63
+ capabilities programmatically. `moa help` (text) is rendered from the same
64
+ registry, so docs never drift.
87
65
 
88
66
  ## Config
89
67
 
90
68
  URL/key resolve **env var → `~/.moa/cli.json` (`moa config`) → default**, so you
91
- can persist them once instead of exporting env vars:
92
-
93
- ```sh
94
- moa config set url http://localhost:3030
95
- ```
69
+ can persist them once instead of exporting env vars.
96
70
 
97
71
  | Env | Default | |
98
72
  | --- | --- | --- |
99
- | `MOA_API_URL` | `http://localhost:3000` | Server base URL |
100
- | `MOA_API_KEY` | — | API key; if unset, the CLI bootstraps the single default operator |
73
+ | `MOA_API_URL` | `https://cp.fnmoa.com` | Server base URL |
74
+ | `MOA_API_KEY` | — | API key |
101
75
  | `MOA_CONFIG` | `~/.moa/cli.json` | Config file path |
102
76
  | `NO_COLOR` | — | Disable ANSI colors |
package/dist/config.js CHANGED
@@ -4,7 +4,7 @@ import { join, dirname } from 'node:path';
4
4
  import { parse } from './args.js';
5
5
  /** Persisted CLI config (overridden by env vars). */
6
6
  export const CONFIG_PATH = process.env.MOA_CONFIG || join(homedir(), '.moa', 'cli.json');
7
- export const DEFAULT_URL = 'http://localhost:3000';
7
+ export const DEFAULT_URL = 'https://cp.fnmoa.com';
8
8
  export function readConfig() {
9
9
  try {
10
10
  return JSON.parse(readFileSync(CONFIG_PATH, 'utf8'));
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnmoa/cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Terminal client for the Moa server — drive tasks and GitHub workflows over its HTTP API",
5
5
  "type": "module",
6
6
  "bin": {