@lnar/cli 0.0.1-dev.e586780 → 0.0.1-dev.f1f5888
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/dist/api-client.js +2 -0
- package/dist/api-client.js.map +1 -1
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +68 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/daemon.d.ts +2 -0
- package/dist/commands/daemon.js +87 -1
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.js +19 -9
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/scan.js +12 -0
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/sync.js +3 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/up.js +19 -0
- package/dist/commands/up.js.map +1 -1
- package/dist/machine-id.d.ts +2 -0
- package/dist/machine-id.js +48 -0
- package/dist/machine-id.js.map +1 -0
- package/dist/pending-client.d.ts +1 -1
- package/dist/scanners/claude-code-skills.d.ts +6 -0
- package/dist/scanners/claude-code-skills.js +201 -0
- package/dist/scanners/claude-code-skills.js.map +1 -0
- package/dist/scanners/claude-code.js +10 -3
- package/dist/scanners/claude-code.js.map +1 -1
- package/dist/scanners/index.js +3 -2
- package/dist/scanners/index.js.map +1 -1
- package/dist/sse-client.d.ts +72 -0
- package/dist/sse-client.js +174 -0
- package/dist/sse-client.js.map +1 -0
- package/dist/types.d.ts +43 -3
- package/dist/types.js +34 -2
- package/dist/types.js.map +1 -1
- package/dist/writers/claude-code.js +31 -10
- package/dist/writers/claude-code.js.map +1 -1
- package/dist/writers/registry.js +0 -4
- package/dist/writers/registry.js.map +1 -1
- package/package.json +1 -1
- package/dist/scanners/chatgpt.d.ts +0 -20
- package/dist/scanners/chatgpt.js +0 -49
- package/dist/scanners/chatgpt.js.map +0 -1
- package/dist/writers/chatgpt.d.ts +0 -8
- package/dist/writers/chatgpt.js +0 -12
- package/dist/writers/chatgpt.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export declare const AgentKind: z.ZodEnum<{
|
|
|
4
4
|
codex: "codex";
|
|
5
5
|
cursor: "cursor";
|
|
6
6
|
gemini_cli: "gemini_cli";
|
|
7
|
-
chatgpt: "chatgpt";
|
|
8
7
|
}>;
|
|
9
8
|
export type AgentKind = z.infer<typeof AgentKind>;
|
|
10
9
|
export declare const McpTransport: z.ZodEnum<{
|
|
@@ -63,13 +62,30 @@ export declare const PluginEntry: z.ZodObject<{
|
|
|
63
62
|
gitCommitSha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
64
63
|
}, z.core.$strip>;
|
|
65
64
|
export type PluginEntry = z.infer<typeof PluginEntry>;
|
|
65
|
+
export declare const SkillScope: z.ZodEnum<{
|
|
66
|
+
project: "project";
|
|
67
|
+
user: "user";
|
|
68
|
+
}>;
|
|
69
|
+
export type SkillScope = z.infer<typeof SkillScope>;
|
|
70
|
+
export declare const SkillEntry: z.ZodObject<{
|
|
71
|
+
name: z.ZodString;
|
|
72
|
+
description: z.ZodString;
|
|
73
|
+
scope: z.ZodEnum<{
|
|
74
|
+
project: "project";
|
|
75
|
+
user: "user";
|
|
76
|
+
}>;
|
|
77
|
+
projectPath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
78
|
+
sourcePath: z.ZodString;
|
|
79
|
+
contentHash: z.ZodString;
|
|
80
|
+
body: z.ZodString;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
export type SkillEntry = z.infer<typeof SkillEntry>;
|
|
66
83
|
export declare const AgentSnapshot: z.ZodObject<{
|
|
67
84
|
agentKind: z.ZodEnum<{
|
|
68
85
|
claude_code: "claude_code";
|
|
69
86
|
codex: "codex";
|
|
70
87
|
cursor: "cursor";
|
|
71
88
|
gemini_cli: "gemini_cli";
|
|
72
|
-
chatgpt: "chatgpt";
|
|
73
89
|
}>;
|
|
74
90
|
agentVersion: z.ZodOptional<z.ZodString>;
|
|
75
91
|
servers: z.ZodArray<z.ZodObject<{
|
|
@@ -107,10 +123,23 @@ export declare const AgentSnapshot: z.ZodObject<{
|
|
|
107
123
|
lastUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
108
124
|
gitCommitSha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
109
125
|
}, z.core.$strip>>>;
|
|
126
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
127
|
+
name: z.ZodString;
|
|
128
|
+
description: z.ZodString;
|
|
129
|
+
scope: z.ZodEnum<{
|
|
130
|
+
project: "project";
|
|
131
|
+
user: "user";
|
|
132
|
+
}>;
|
|
133
|
+
projectPath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
134
|
+
sourcePath: z.ZodString;
|
|
135
|
+
contentHash: z.ZodString;
|
|
136
|
+
body: z.ZodString;
|
|
137
|
+
}, z.core.$strip>>>;
|
|
110
138
|
}, z.core.$strip>;
|
|
111
139
|
export type AgentSnapshot = z.infer<typeof AgentSnapshot>;
|
|
112
140
|
export declare const ScanResult: z.ZodObject<{
|
|
113
141
|
hostname: z.ZodString;
|
|
142
|
+
machineId: z.ZodOptional<z.ZodString>;
|
|
114
143
|
scannedAt: z.ZodString;
|
|
115
144
|
agents: z.ZodArray<z.ZodObject<{
|
|
116
145
|
agentKind: z.ZodEnum<{
|
|
@@ -118,7 +147,6 @@ export declare const ScanResult: z.ZodObject<{
|
|
|
118
147
|
codex: "codex";
|
|
119
148
|
cursor: "cursor";
|
|
120
149
|
gemini_cli: "gemini_cli";
|
|
121
|
-
chatgpt: "chatgpt";
|
|
122
150
|
}>;
|
|
123
151
|
agentVersion: z.ZodOptional<z.ZodString>;
|
|
124
152
|
servers: z.ZodArray<z.ZodObject<{
|
|
@@ -156,6 +184,18 @@ export declare const ScanResult: z.ZodObject<{
|
|
|
156
184
|
lastUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
157
185
|
gitCommitSha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
158
186
|
}, z.core.$strip>>>;
|
|
187
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
188
|
+
name: z.ZodString;
|
|
189
|
+
description: z.ZodString;
|
|
190
|
+
scope: z.ZodEnum<{
|
|
191
|
+
project: "project";
|
|
192
|
+
user: "user";
|
|
193
|
+
}>;
|
|
194
|
+
projectPath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
195
|
+
sourcePath: z.ZodString;
|
|
196
|
+
contentHash: z.ZodString;
|
|
197
|
+
body: z.ZodString;
|
|
198
|
+
}, z.core.$strip>>>;
|
|
159
199
|
}, z.core.$strip>>;
|
|
160
200
|
}, z.core.$strip>;
|
|
161
201
|
export type ScanResult = z.infer<typeof ScanResult>;
|
package/dist/types.js
CHANGED
|
@@ -3,8 +3,11 @@ import { z } from 'zod';
|
|
|
3
3
|
// codex: Codex CLI (OpenAI)
|
|
4
4
|
// cursor: Cursor IDE
|
|
5
5
|
// gemini_cli: Google Gemini CLI (~/.gemini/settings.json)
|
|
6
|
-
//
|
|
7
|
-
|
|
6
|
+
//
|
|
7
|
+
// chatgpt は OS keychain で暗号化された設定にしかアクセスできず読み取り API も
|
|
8
|
+
// 公開されていないため、現状サポート対象外。pending change として残しておくと
|
|
9
|
+
// AgentKind enum が広がるだけで実体が無いので、enum 自体から外す。
|
|
10
|
+
export const AgentKind = z.enum(['claude_code', 'codex', 'cursor', 'gemini_cli']);
|
|
8
11
|
export const McpTransport = z.enum(['stdio', 'http', 'sse']);
|
|
9
12
|
// global: マシン全体 (plugin / ~/.claude.json top-level)
|
|
10
13
|
// project: .mcp.json (チーム共有 / repo にコミットされる)
|
|
@@ -38,15 +41,44 @@ export const PluginEntry = z.object({
|
|
|
38
41
|
lastUpdatedAt: z.string().nullable().optional(),
|
|
39
42
|
gitCommitSha: z.string().nullable().optional(),
|
|
40
43
|
});
|
|
44
|
+
// user: ~/.claude/skills/<name>/SKILL.md (マシン共通、個人 skill)
|
|
45
|
+
// project: <projectDir>/.claude/skills/<name>/SKILL.md (repo にコミットされ、チームで共有)
|
|
46
|
+
//
|
|
47
|
+
// plugin 同梱の skill (~/.claude/plugins/.../skills/...) は plugin 自体の情報から派生で
|
|
48
|
+
// 分かるため、本 snapshot には含めない (二重送信を避ける)。
|
|
49
|
+
export const SkillScope = z.enum(['user', 'project']);
|
|
50
|
+
export const SkillEntry = z.object({
|
|
51
|
+
// SKILL.md の YAML frontmatter から取り出した `name`
|
|
52
|
+
name: z.string(),
|
|
53
|
+
// SKILL.md の YAML frontmatter から取り出した `description` (skill のトリガー条件説明)
|
|
54
|
+
description: z.string(),
|
|
55
|
+
scope: SkillScope,
|
|
56
|
+
// project scope の場合のみ、所属する project ディレクトリ
|
|
57
|
+
projectPath: z.string().nullable().optional(),
|
|
58
|
+
// SKILL.md の絶対パス
|
|
59
|
+
sourcePath: z.string(),
|
|
60
|
+
// SKILL.md 全体の SHA-256 (先頭 16 桁) — 内容変更の検知に使う
|
|
61
|
+
contentHash: z.string(),
|
|
62
|
+
// SKILL.md 本文 (frontmatter 含む全体)。dashboard で開いたとき内容を見せるため。
|
|
63
|
+
// 多くても数 KB なので毎スキャンで送ってよい (圧縮効くので)。
|
|
64
|
+
body: z.string(),
|
|
65
|
+
});
|
|
41
66
|
export const AgentSnapshot = z.object({
|
|
42
67
|
agentKind: AgentKind,
|
|
43
68
|
agentVersion: z.string().optional(),
|
|
44
69
|
servers: z.array(McpServerEntry),
|
|
45
70
|
// Claude Code のみ意味があるので、他 agent_kind では未指定でよい (omit = 空)。
|
|
46
71
|
plugins: z.array(PluginEntry).optional(),
|
|
72
|
+
// Claude Code のみ意味があるので、他 agent_kind では未指定でよい (omit = 空)。
|
|
73
|
+
skills: z.array(SkillEntry).optional(),
|
|
47
74
|
});
|
|
48
75
|
export const ScanResult = z.object({
|
|
76
|
+
// hostname は macOS のネットワーク状況により `xxx.local` ↔ `xxx.kkbnj1.kt.home.ne.jp`
|
|
77
|
+
// のように変動する。表示用に保持しつつ、agent 同一性の判定には machineId を使う。
|
|
49
78
|
hostname: z.string(),
|
|
79
|
+
// ~/.config/lnar/machine.json に永続化される UUID。同一マシンを跨ぐスキャンを
|
|
80
|
+
// 1 agent に集約するためのキー。古い CLI 互換のため optional。
|
|
81
|
+
machineId: z.string().optional(),
|
|
50
82
|
scannedAt: z.string(),
|
|
51
83
|
agents: z.array(AgentSnapshot),
|
|
52
84
|
});
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yDAAyD;AACzD,kCAAkC;AAClC,0BAA0B;AAC1B,2DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,14 @@ import { applyPluginChange, PLUGIN_ACTIONS } from './claude-code-plugins.js';
|
|
|
11
11
|
* → ~/.claude.json の top-level `mcpServers` を編集
|
|
12
12
|
* - source_scope='local'
|
|
13
13
|
* → ~/.claude.json の `projects[<project_path>].mcpServers` を編集
|
|
14
|
-
* - source_scope='project' (.mcp.json, チーム共有)
|
|
15
|
-
* →
|
|
16
|
-
*
|
|
14
|
+
* - source_scope='project' (.mcp.json, チーム共有 + agent_kind 非依存)
|
|
15
|
+
* → `<project_path>/.mcp.json` の top-level `mcpServers` を編集。Anthropic
|
|
16
|
+
* が定義した形式だが、Cursor / VS Code 等他ツールも同じファイルを参照する
|
|
17
|
+
* クロスツール慣習として広まっているため、dashboard 側からも書き込みを
|
|
18
|
+
* 許可する。team 共有 (git にコミット) されているのでこの編集は repo の
|
|
19
|
+
* 作業ツリーに変更として現れる前提。
|
|
17
20
|
* - source_scope='remote' / plugin 由来
|
|
18
|
-
* →
|
|
21
|
+
* → 未対応 (claude.ai / plugin lifecycle の管理外)
|
|
19
22
|
*
|
|
20
23
|
* 形式: `{ "<server>": { type, command, args, url, env } }`
|
|
21
24
|
* - env キーは spec.envKeys 由来。値は空文字で埋める (ユーザーが手動補完)。
|
|
@@ -40,7 +43,9 @@ const buildEntryFromSpec = (spec) => {
|
|
|
40
43
|
return entry;
|
|
41
44
|
};
|
|
42
45
|
const globalConfigPath = (home = homedir()) => join(home, '.claude.json');
|
|
43
|
-
|
|
46
|
+
// project scope (.mcp.json) は project ディレクトリ直下に置かれる。
|
|
47
|
+
const projectConfigPath = (projectPath) => join(projectPath, '.mcp.json');
|
|
48
|
+
const loadJsonConfig = async (path) => {
|
|
44
49
|
try {
|
|
45
50
|
const text = await readFile(path, 'utf-8');
|
|
46
51
|
return JSON.parse(text);
|
|
@@ -53,7 +58,10 @@ const loadGlobalConfig = async (path) => {
|
|
|
53
58
|
};
|
|
54
59
|
/**
|
|
55
60
|
* 操作対象の mcpServers セクションへの参照を返す。
|
|
56
|
-
* local
|
|
61
|
+
* - local : `projects[project_path].mcpServers` を辿り、無ければ作る
|
|
62
|
+
* - project: top-level `mcpServers` (`<project>/.mcp.json` の単純なルート構造)
|
|
63
|
+
* - global : top-level `mcpServers` (`~/.claude.json`)
|
|
64
|
+
*
|
|
57
65
|
* config を mutate するので、戻り値を書き換えればそのまま永続化対象になる。
|
|
58
66
|
*/
|
|
59
67
|
const resolveMcpServersSection = (config, change) => {
|
|
@@ -80,7 +88,8 @@ const resolveMcpServersSection = (config, change) => {
|
|
|
80
88
|
}
|
|
81
89
|
return mcpServers;
|
|
82
90
|
}
|
|
83
|
-
// global (= Claude Code の user scope) / null (旧データ互換) は
|
|
91
|
+
// global (= Claude Code の user scope) / project (.mcp.json) / null (旧データ互換) は
|
|
92
|
+
// ファイル直下の top-level mcpServers を見る (書き込み先パスのみ呼び元で振り分け)。
|
|
84
93
|
let mcpServers = config.mcpServers;
|
|
85
94
|
if (!mcpServers || typeof mcpServers !== 'object' || Array.isArray(mcpServers)) {
|
|
86
95
|
mcpServers = {};
|
|
@@ -88,12 +97,24 @@ const resolveMcpServersSection = (config, change) => {
|
|
|
88
97
|
}
|
|
89
98
|
return mcpServers;
|
|
90
99
|
};
|
|
100
|
+
/**
|
|
101
|
+
* 書き込み対象ファイルのパスを scope から導出。
|
|
102
|
+
*/
|
|
103
|
+
const resolveConfigPath = (change, home) => {
|
|
104
|
+
if (change.source_scope === 'project') {
|
|
105
|
+
if (!change.project_path) {
|
|
106
|
+
throw new Error('source_scope=project requires project_path on the pending change');
|
|
107
|
+
}
|
|
108
|
+
return projectConfigPath(change.project_path);
|
|
109
|
+
}
|
|
110
|
+
return globalConfigPath(home);
|
|
111
|
+
};
|
|
91
112
|
const applyChange = async (change, home = homedir()) => {
|
|
92
|
-
if (change.source_scope === '
|
|
113
|
+
if (change.source_scope === 'remote') {
|
|
93
114
|
throw new Error(`claude-code writer does not support source_scope='${change.source_scope}'`);
|
|
94
115
|
}
|
|
95
|
-
const path =
|
|
96
|
-
const config = await
|
|
116
|
+
const path = resolveConfigPath(change, home);
|
|
117
|
+
const config = await loadJsonConfig(path);
|
|
97
118
|
const mcpServers = resolveMcpServersSection(config, change);
|
|
98
119
|
if (change.action === 'add_server') {
|
|
99
120
|
if (change.spec == null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/writers/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG7E
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/writers/claude-code.ts"],"names":[],"mappings":"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"}
|
package/dist/writers/registry.js
CHANGED
|
@@ -20,10 +20,6 @@ export const getWriter = async (kind) => {
|
|
|
20
20
|
const { geminiCliWriter } = await import('./gemini-cli.js');
|
|
21
21
|
return geminiCliWriter;
|
|
22
22
|
}
|
|
23
|
-
case 'chatgpt': {
|
|
24
|
-
const { chatgptWriter } = await import('./chatgpt.js');
|
|
25
|
-
return chatgptWriter;
|
|
26
|
-
}
|
|
27
23
|
default:
|
|
28
24
|
return null;
|
|
29
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/writers/registry.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAe,EAA0B,EAAE;IACzE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YACnD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC5D,OAAO,eAAe,CAAC;QACzB,CAAC;QACD
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/writers/registry.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAe,EAA0B,EAAE;IACzE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YACnD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC5D,OAAO,eAAe,CAAC;QACzB,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC"}
|
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.f1f5888",
|
|
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,
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { AgentSnapshot } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* ChatGPT Desktop / ChatGPT connectors のスキャナー (placeholder)。
|
|
4
|
-
*
|
|
5
|
-
* 現状の制限:
|
|
6
|
-
* ChatGPT Desktop (macOS) の connector 一覧は
|
|
7
|
-
* `~/Library/Application Support/com.openai.chat/connector-apps-<uuid>/apps.data` に
|
|
8
|
-
* **暗号化されたバイナリ** で保存されており、平文の MCP 設定として読めない。
|
|
9
|
-
* 暗号鍵は OS Keychain (`com.openai.chat`) に格納されている可能性が高く、
|
|
10
|
-
* ユーザー同意なくアクセスするのは不適切。
|
|
11
|
-
*
|
|
12
|
-
* したがって本スキャナーは「ChatGPT Desktop が **インストールされている**」ことだけを
|
|
13
|
-
* 検出し、agent_kind='chatgpt' の空 snapshot を返す。MCP リストの取得は将来 OpenAI 側で
|
|
14
|
-
* 公開 API が用意されるか、ユーザー操作で明示的に export してもらう必要がある。
|
|
15
|
-
*/
|
|
16
|
-
export declare const chatgptDataDir: (home?: string, os?: NodeJS.Platform) => string | null;
|
|
17
|
-
export declare const scanChatgpt: (options?: {
|
|
18
|
-
home?: string;
|
|
19
|
-
platform?: NodeJS.Platform;
|
|
20
|
-
}) => Promise<AgentSnapshot | null>;
|
package/dist/scanners/chatgpt.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { stat } from 'node:fs/promises';
|
|
2
|
-
import { homedir, platform } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
/**
|
|
5
|
-
* ChatGPT Desktop / ChatGPT connectors のスキャナー (placeholder)。
|
|
6
|
-
*
|
|
7
|
-
* 現状の制限:
|
|
8
|
-
* ChatGPT Desktop (macOS) の connector 一覧は
|
|
9
|
-
* `~/Library/Application Support/com.openai.chat/connector-apps-<uuid>/apps.data` に
|
|
10
|
-
* **暗号化されたバイナリ** で保存されており、平文の MCP 設定として読めない。
|
|
11
|
-
* 暗号鍵は OS Keychain (`com.openai.chat`) に格納されている可能性が高く、
|
|
12
|
-
* ユーザー同意なくアクセスするのは不適切。
|
|
13
|
-
*
|
|
14
|
-
* したがって本スキャナーは「ChatGPT Desktop が **インストールされている**」ことだけを
|
|
15
|
-
* 検出し、agent_kind='chatgpt' の空 snapshot を返す。MCP リストの取得は将来 OpenAI 側で
|
|
16
|
-
* 公開 API が用意されるか、ユーザー操作で明示的に export してもらう必要がある。
|
|
17
|
-
*/
|
|
18
|
-
export const chatgptDataDir = (home = homedir(), os = platform()) => {
|
|
19
|
-
if (os === 'darwin') {
|
|
20
|
-
return join(home, 'Library', 'Application Support', 'com.openai.chat');
|
|
21
|
-
}
|
|
22
|
-
if (os === 'win32') {
|
|
23
|
-
const appdata = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
|
|
24
|
-
return join(appdata, 'OpenAI', 'ChatGPT');
|
|
25
|
-
}
|
|
26
|
-
// Linux 用クライアントは未公式
|
|
27
|
-
return null;
|
|
28
|
-
};
|
|
29
|
-
const exists = async (path) => {
|
|
30
|
-
if (path == null)
|
|
31
|
-
return false;
|
|
32
|
-
try {
|
|
33
|
-
const s = await stat(path);
|
|
34
|
-
return s.isDirectory();
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
export const scanChatgpt = async (options = {}) => {
|
|
41
|
-
const dir = chatgptDataDir(options.home, options.platform);
|
|
42
|
-
if (!(await exists(dir))) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
// インストール検出済み。設定の読み出しは未対応 — 空 snapshot を返して
|
|
46
|
-
// 「ユーザーが ChatGPT を使っている」事実だけ伝える。
|
|
47
|
-
return { agentKind: 'chatgpt', servers: [] };
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=chatgpt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/scanners/chatgpt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAe,OAAO,EAAE,EACxB,KAAsB,QAAQ,EAAE,EACjB,EAAE;IACjB,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IACD,oBAAoB;IACpB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAoB,EAAE;IAC7D,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,UAAyD,EAAE,EAC5B,EAAE;IACjC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2CAA2C;IAC3C,iCAAiC;IACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC/C,CAAC,CAAC"}
|
package/dist/writers/chatgpt.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChatGPT Desktop: connector データは OS Keychain で暗号化されており、
|
|
3
|
-
* 平文の MCP 設定ファイルが存在しない。よって書き込みは未対応 (unsupported)。
|
|
4
|
-
*
|
|
5
|
-
* 将来 OpenAI 側が export / API を公開した場合に実装する。
|
|
6
|
-
*/
|
|
7
|
-
export const chatgptWriter = {
|
|
8
|
-
async apply(_change) {
|
|
9
|
-
return 'unsupported';
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=chatgpt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/writers/chatgpt.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,CAAC,KAAK,CAAC,OAAO;QACjB,OAAO,aAAa,CAAA;IACtB,CAAC;CACF,CAAA"}
|