@lnar/cli 0.0.1-dev.1da013d → 0.0.1-dev.e586780
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 +16 -54
- package/dist/cli.js +0 -0
- package/dist/service/install.js +72 -13
- package/dist/service/install.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,29 +4,27 @@ Lnar CLI that scans your AI agent configuration files (Claude / Claude Code, Cod
|
|
|
4
4
|
|
|
5
5
|
Read-only: the CLI only reads agent config files. Environment variable **keys** are recorded, but their **values are never sent** to the server.
|
|
6
6
|
|
|
7
|
-
## Install
|
|
7
|
+
## Install
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
# 1. Install the CLI globally
|
|
11
10
|
npm install -g @lnar/cli
|
|
12
|
-
|
|
13
|
-
# 2. Sign in + start the always-on background service (one command)
|
|
14
11
|
lnar up
|
|
15
12
|
```
|
|
16
13
|
|
|
17
|
-
`lnar up`
|
|
14
|
+
`lnar up` does two things in one command:
|
|
18
15
|
|
|
19
|
-
- If you are not
|
|
20
|
-
-
|
|
16
|
+
- If you are not authenticated, runs the OAuth device-code flow (opens a URL + shows a short code).
|
|
17
|
+
- Registers a background service that auto-starts on login / boot and re-launches if it crashes:
|
|
21
18
|
- macOS → launchd LaunchAgent (`~/Library/LaunchAgents/ai.lnar.daemon.plist`)
|
|
22
19
|
- Linux → systemd `--user` unit (`~/.config/systemd/user/lnar-daemon.service`)
|
|
23
20
|
- Windows → Task Scheduler (`LnarDaemon`, logon trigger + auto-restart)
|
|
24
21
|
|
|
25
22
|
The service syncs the latest MCP-server list with lnar every 30s and applies any changes queued from the dashboard (e.g. "Add MCP server", "Disconnect").
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
## Commands
|
|
28
25
|
|
|
29
26
|
```sh
|
|
27
|
+
lnar up # sign in + start the background service
|
|
30
28
|
lnar status # show authentication + service status
|
|
31
29
|
lnar down # stop and remove the background service
|
|
32
30
|
lnar scan # one-shot: print detected MCP servers, no upload
|
|
@@ -34,14 +32,15 @@ lnar sync # one-shot: scan and upload, then exit
|
|
|
34
32
|
lnar login # re-authenticate (normally `lnar up` is enough)
|
|
35
33
|
```
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
To force a specific endpoint, pass `--api-base-url` or set `LNAR_API_BASE_URL`.
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|---|---|---|
|
|
41
|
-
| Production | `npm install -g @lnar/cli && lnar up` | `https://api.lnar.ai` |
|
|
42
|
-
| Develop (pre-release verification) | `npm install -g @lnar/cli@dev && lnar up` | `https://api-dev.lnar.ai` |
|
|
37
|
+
## Uninstall
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
```sh
|
|
40
|
+
lnar down # stop and unregister the background service
|
|
41
|
+
npm uninstall -g @lnar/cli # remove the CLI binary
|
|
42
|
+
rm -rf ~/.config/lnar # (optional) remove cached credentials
|
|
43
|
+
```
|
|
45
44
|
|
|
46
45
|
## Supported agents
|
|
47
46
|
|
|
@@ -53,44 +52,7 @@ The `@dev` tag is published from the `develop` branch and is intended for verify
|
|
|
53
52
|
| Gemini CLI | implemented | `~/.gemini/settings.json`, `.gemini/settings.json` (project) |
|
|
54
53
|
| ChatGPT | placeholder | `~/Library/Application Support/com.openai.chat` (existence only — connector data is encrypted) |
|
|
55
54
|
|
|
56
|
-
##
|
|
57
|
-
|
|
58
|
-
```sh
|
|
59
|
-
pnpm install
|
|
60
|
-
pnpm dev scan # run from source against your default API
|
|
61
|
-
pnpm test # run vitest
|
|
62
|
-
pnpm build # compile to dist/
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Release workflow
|
|
66
|
-
|
|
67
|
-
公開戦略は **canary + manual prod** (Next.js / Claude Code 系):
|
|
68
|
-
|
|
69
|
-
| トリガー | dist-tag | デフォルト API |
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| `develop` への push | `@dev` (canary) | `api-dev.lnar.ai` |
|
|
72
|
-
| `cli-v*` の git tag push | `@latest` (本番) | `api.lnar.ai` |
|
|
73
|
-
| GitHub Actions の `workflow_dispatch` (手動) | 任意 (dev / latest / beta / rc) | tag に応じる |
|
|
74
|
-
|
|
75
|
-
### dev (canary) リリース
|
|
76
|
-
|
|
77
|
-
develop ブランチに変更を merge するだけ。CI が自動で `0.0.1-dev.abc1234` のような
|
|
78
|
-
SHA suffix 付きで `@dev` タグに publish する。
|
|
79
|
-
|
|
80
|
-
### 本番リリース
|
|
81
|
-
|
|
82
|
-
```sh
|
|
83
|
-
git checkout main
|
|
84
|
-
git merge develop # 本番化したい develop の内容を取り込む
|
|
85
|
-
cd cli
|
|
86
|
-
npm version minor # 0.0.1 → 0.1.0、自動で commit + tag (v0.1.0) が作られる
|
|
87
|
-
# ※ ただし tag 名は CI 側で "cli-v*" を期待するので
|
|
88
|
-
# git tag -a cli-v0.1.0 -m "Release 0.1.0" の方が安全
|
|
89
|
-
git push --follow-tags
|
|
90
|
-
# → cli-v0.1.0 tag が CI を発火し、@latest で publish
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### 緊急時の手動公開
|
|
55
|
+
## Contributing
|
|
94
56
|
|
|
95
|
-
|
|
96
|
-
|
|
57
|
+
For development setup (pre-release `@dev` verification, local source
|
|
58
|
+
workflow, release process), see the [lnar repository](https://github.com/NexaScience/lnar).
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/service/install.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* いずれも管理者権限不要 (per-user スコープ) でインストールできる構成。
|
|
11
11
|
*/
|
|
12
12
|
import { exec } from 'node:child_process';
|
|
13
|
+
import { realpathSync } from 'node:fs';
|
|
13
14
|
import { mkdir, mkdtemp, rm, unlink, writeFile } from 'node:fs/promises';
|
|
14
15
|
import { homedir, platform, tmpdir, userInfo } from 'node:os';
|
|
15
16
|
import { dirname, join } from 'node:path';
|
|
@@ -30,7 +31,27 @@ async function runIgnoring(cmd) {
|
|
|
30
31
|
}
|
|
31
32
|
function detectTarget() {
|
|
32
33
|
const nodePath = process.execPath;
|
|
33
|
-
const
|
|
34
|
+
const rawScriptPath = process.argv[1] ?? '';
|
|
35
|
+
// ----------------------------------------------------------------------
|
|
36
|
+
// scriptPath は symlink を解決した実体パスにする。
|
|
37
|
+
// `npm install -g @lnar/cli` 後の `lnar` は `/opt/homebrew/bin/lnar` 等の
|
|
38
|
+
// symlink で、これをそのまま plist の ProgramArguments に入れると macOS
|
|
39
|
+
// launchd が bootstrap 時に EIO ("Input/output error") を返すことがある
|
|
40
|
+
// (Homebrew bin symlink + launchd の既知の癖)。さらに symlink を経由する
|
|
41
|
+
// と、後で symlink が張り替わったり消えたときに plist が壊れるリスクも
|
|
42
|
+
// 残る。realpath で解決した絶対パス
|
|
43
|
+
// (`.../lib/node_modules/@lnar/cli/dist/cli.js`) を plist に書くことで、
|
|
44
|
+
// bootstrap の安定性とパスの永続性の両方を確保する。
|
|
45
|
+
// ----------------------------------------------------------------------
|
|
46
|
+
let scriptPath = rawScriptPath;
|
|
47
|
+
try {
|
|
48
|
+
if (rawScriptPath) {
|
|
49
|
+
scriptPath = realpathSync(rawScriptPath);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// 解決失敗 (パスが存在しない等) は raw を使う best-effort
|
|
54
|
+
}
|
|
34
55
|
let warning = null;
|
|
35
56
|
if (scriptPath.includes('/_npx/') || scriptPath.includes('\\_npx\\')) {
|
|
36
57
|
warning =
|
|
@@ -59,29 +80,67 @@ async function isMacOsServiceLoaded() {
|
|
|
59
80
|
return false;
|
|
60
81
|
}
|
|
61
82
|
}
|
|
83
|
+
const LAUNCHCTL_EIO_PATTERN = /Input\/output error|errno 5\b|:\s*5:/i;
|
|
84
|
+
async function bootoutBothDomains(uid) {
|
|
85
|
+
// gui ドメインと user ドメインの両方を best-effort で bootout する。
|
|
86
|
+
// `launchctl print gui/uid/<label>` で見えなくても launchd 内部に過去の
|
|
87
|
+
// 別パス bootstrap 由来の "torn-down" レコードが残っていることがあり、
|
|
88
|
+
// この状態で新規 bootstrap すると EIO になる。両ドメインを叩いて
|
|
89
|
+
// launchd 側のキャッシュを確実にクリアする。
|
|
90
|
+
await runIgnoring(`launchctl bootout gui/${uid}/${SERVICE_LABEL}`);
|
|
91
|
+
await runIgnoring(`launchctl bootout user/${uid}/${SERVICE_LABEL}`);
|
|
92
|
+
}
|
|
93
|
+
async function bootstrapMacOsWithRetry(uid, plistPath) {
|
|
94
|
+
const bootstrapCmd = `launchctl bootstrap gui/${uid} ${plistPath}`;
|
|
95
|
+
const maxAttempts = 3;
|
|
96
|
+
let lastError;
|
|
97
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
98
|
+
try {
|
|
99
|
+
await run(bootstrapCmd);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
lastError = err;
|
|
104
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
105
|
+
const isEio = LAUNCHCTL_EIO_PATTERN.test(message);
|
|
106
|
+
if (!isEio || attempt === maxAttempts) {
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
process.stderr.write(`launchctl bootstrap returned EIO; retrying (${attempt}/${maxAttempts - 1})…\n`);
|
|
110
|
+
await bootoutBothDomains(uid);
|
|
111
|
+
await new Promise((r) => setTimeout(r, 500 * attempt));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 到達不能だが TS の型チェックのため
|
|
115
|
+
throw lastError instanceof Error ? lastError : new Error('launchctl bootstrap failed');
|
|
116
|
+
}
|
|
62
117
|
async function installMacOs(target) {
|
|
63
118
|
const plistPath = macOsPlistPath();
|
|
64
119
|
await mkdir(dirname(plistPath), { recursive: true });
|
|
65
120
|
await writeFile(plistPath, macOsPlist(target));
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
121
|
+
const uid = userInfo().uid;
|
|
122
|
+
// 既存サービスは print 結果に関わらず両ドメインを bootout する。
|
|
123
|
+
// (詳細は bootoutBothDomains のコメント参照)
|
|
124
|
+
await bootoutBothDomains(uid);
|
|
125
|
+
// bootout は非同期で完了する。実際に unload されるまで最大 ~3 秒ポーリングする。
|
|
126
|
+
// `lnar up` の冪等性に必要。
|
|
127
|
+
for (let i = 0; i < 30; i++) {
|
|
128
|
+
if (!(await isMacOsServiceLoaded()))
|
|
129
|
+
break;
|
|
130
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
76
131
|
}
|
|
77
|
-
|
|
132
|
+
// bootstrap は launchd の内部状態キャッシュにより最初の試行が EIO になる
|
|
133
|
+
// ことがある。EIO を検出して再 bootout + 短い backoff で数回リトライする。
|
|
134
|
+
await bootstrapMacOsWithRetry(uid, plistPath);
|
|
78
135
|
await run(`launchctl enable ${macOsServiceTarget()}`);
|
|
79
136
|
process.stdout.write(`Installed: ${plistPath}\n`);
|
|
80
137
|
process.stdout.write(`Logs: /tmp/lnar-daemon.log /tmp/lnar-daemon.err.log\n`);
|
|
81
138
|
}
|
|
82
139
|
async function uninstallMacOs() {
|
|
83
140
|
const plistPath = macOsPlistPath();
|
|
84
|
-
|
|
141
|
+
// install 側と同様、両ドメインの torn-down レコードまで掃除する。
|
|
142
|
+
// これを怠ると `lnar down` → `lnar up` 再実行時に EIO を踏む。
|
|
143
|
+
await bootoutBothDomains(userInfo().uid);
|
|
85
144
|
try {
|
|
86
145
|
await unlink(plistPath);
|
|
87
146
|
process.stdout.write(`Removed: ${plistPath}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/service/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,aAAa,EAEb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,UAAuB,EAAE;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/service/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lnar/cli",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.e586780",
|
|
4
4
|
"description": "Lnar CLI — scans local AI agents (Claude / Claude Code, Codex CLI, Cursor, Gemini CLI, ChatGPT) for connected MCP servers and reports them to your lnar account.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"README.md"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "tsc -p tsconfig.json",
|
|
15
|
+
"build": "tsc -p tsconfig.json && node -e \"require('fs').chmodSync('dist/cli.js', 0o755)\"",
|
|
16
16
|
"dev": "tsx src/cli.ts",
|
|
17
17
|
"test": "vitest run",
|
|
18
18
|
"test:watch": "vitest",
|