@crvouga/personal 0.0.0-stage → 0.1.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.
- package/README.md +104 -2
- package/cli.mjs +2327 -0
- package/commands.json +227 -0
- package/package.json +42 -4
- package/probe.mjs +479 -0
- package/releasing.md +159 -0
- package/schema.json +46 -0
package/README.md
CHANGED
|
@@ -1,3 +1,105 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Personal developer command center
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Public npm distribution: **`@crvouga/personal`**, executable **`personal`**.
|
|
4
|
+
The source workspace `@pkgs/personal-cli` stays private; its build bundles the
|
|
5
|
+
private fleet library into a standalone Node application. No Bun, repository
|
|
6
|
+
checkout, npm login or global installation is needed just to open the application.
|
|
7
|
+
Requires Node **22.13+ on the 22.x line, or 23.5+** with npm.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npx --yes @crvouga/personal
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The terminal application has a searchable command palette, category submenus,
|
|
14
|
+
descriptions, target selection, progress indicators, result summaries, searchable
|
|
15
|
+
node/status/check drill-downs, remedies, retry/back navigation, and an add-node
|
|
16
|
+
wizard. It shows the equivalent noninteractive command before running anything.
|
|
17
|
+
Ctrl+C exits; `NO_COLOR` and narrow terminals are supported. It never clears the
|
|
18
|
+
terminal or automatically repairs machines. This is a command console, not an AI
|
|
19
|
+
chat service; no model key or chat subscription is required.
|
|
20
|
+
|
|
21
|
+
## For people and agents
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
npx --yes @crvouga/personal@latest commands --json --search ssh
|
|
25
|
+
npx --yes @crvouga/personal@latest agent --json
|
|
26
|
+
npx --yes @crvouga/personal@latest fleet doctor --local --json
|
|
27
|
+
npx --yes @crvouga/personal@latest fleet doctor --all --json
|
|
28
|
+
npx --yes @crvouga/personal@latest fleet doctor --node dev-linux --json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Pin an **exact released version** instead of `latest` for automation. Direct
|
|
32
|
+
commands, `--json`, `--non-interactive` and redirected input never open prompts.
|
|
33
|
+
No arguments without a terminal prints the command catalog. JSON is one versioned
|
|
34
|
+
document on stdout; interactive chrome and progress use stderr. Exit codes:
|
|
35
|
+
**0** success/preview, **1** failed operation/check, **2** invalid usage/config,
|
|
36
|
+
**130** cancellation. `--strict` makes warnings and skips fail too.
|
|
37
|
+
|
|
38
|
+
`commands --json` exposes names, descriptions, categories, keywords, examples and
|
|
39
|
+
global flags; `agent --json` documents the output/safety contract; `fleet schema`
|
|
40
|
+
exposes the roster schema. JSON error messages never contain raw subprocess
|
|
41
|
+
output, environment variables, authentication responses or exception messages.
|
|
42
|
+
|
|
43
|
+
## Register actual computers
|
|
44
|
+
|
|
45
|
+
Use the interactive **Fleet setup / add node** action, or preview first:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
personal fleet add --id dev-linux --ssh dev-linux --path /home/dev/workspace --json
|
|
49
|
+
personal fleet add --id dev-linux --ssh dev-linux --path /home/dev/workspace --apply --yes --json
|
|
50
|
+
personal fleet validate --json
|
|
51
|
+
personal fleet onboard --node dev-linux --json
|
|
52
|
+
personal fleet doctor --all --json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
This registers an **existing** computer; it does not provision a host, enable SSH,
|
|
56
|
+
accept a host key, log in, copy credentials, or edit SSH configuration. `--runtime`
|
|
57
|
+
may specify an absolute Node/Bun executable on the remote machine. The default is
|
|
58
|
+
`node` on the non-login SSH PATH. The bundled probe is streamed over SSH; the npm
|
|
59
|
+
package need not be installed on remote nodes. Remote targets require POSIX
|
|
60
|
+
shells; use WSL for Windows SSH nodes. Native Windows supports local commands.
|
|
61
|
+
|
|
62
|
+
Roster resolution: `--config`, `PERSONAL_FLEET_CONFIG`, closest ancestor
|
|
63
|
+
`.fleet.local.json`, then `~/.config/personal/fleet.json`. New rosters are saved
|
|
64
|
+
with mode 0600 using a lock and atomic replacement; existing entries are preserved,
|
|
65
|
+
duplicates fail, and symlink rosters are refused. Keep custom roster paths out of
|
|
66
|
+
Git. `fleet init` previews **example data**, not discovered machines; creating the
|
|
67
|
+
example also requires `--apply --yes`.
|
|
68
|
+
|
|
69
|
+
Controller checkout: `--workspace`, `PERSONAL_WORKSPACE`, closest ancestor
|
|
70
|
+
`mise.toml`, then the current directory. Opening the application requires no
|
|
71
|
+
checkout, but repository/dependency/toolchain checks need your actual personal
|
|
72
|
+
checkout. A missing checkout or roster is reported, never treated as healthy.
|
|
73
|
+
|
|
74
|
+
Doctor checks the controller and all configured nodes by default. `--node` limits
|
|
75
|
+
remote targets; `--local` skips remote connections and requires no roster. Its
|
|
76
|
+
`coverage` explicitly distinguishes all-configured, selected and local checks.
|
|
77
|
+
A roster is not discovery of every computer. Run from each intended controller:
|
|
78
|
+
directed SSH success is not all-pairs connectivity. T3 peer/relay traversal and
|
|
79
|
+
VS Code forwarding still need the operator tests in `fleet onboard`.
|
|
80
|
+
|
|
81
|
+
## Sync is explicit
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
personal fleet sync --node dev-linux --json
|
|
85
|
+
personal fleet sync --node dev-linux --apply --yes --json
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Sync delegates to the existing mise/setup owner, with frozen dependencies. It
|
|
89
|
+
does not replace workstation management or OpenTofu. `--pull` requests a
|
|
90
|
+
fast-forward-only pull and refuses dirty/detached checkouts. Never run sync on an
|
|
91
|
+
untrusted checkout: setup/dependency lifecycle scripts are executable code.
|
|
92
|
+
`npx --yes` approves the npm download only, **not** application mutations.
|
|
93
|
+
|
|
94
|
+
## Development and release
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
bun run personal # interactive development entry
|
|
98
|
+
bun run --cwd packages/personal-cli tc
|
|
99
|
+
bun run --cwd packages/personal-cli lint
|
|
100
|
+
bun run --cwd packages/personal-cli test
|
|
101
|
+
bun run personal:build
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
See [releasing.md](releasing.md) for automatic CI releases, credential sources,
|
|
105
|
+
first-publish bootstrap, packed-consumer verification and recovery.
|