adhdev 0.1.54 → 0.2.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/dist/cli-entrypoint.js +12020 -0
- package/dist/cli-entrypoint.js.map +1 -0
- package/dist/index.js +9721 -10847
- package/dist/index.js.map +1 -0
- package/package.json +19 -16
- package/providers/_builtin/acp/agentpool/provider.json +47 -0
- package/providers/_builtin/acp/amp/provider.json +45 -0
- package/providers/_builtin/acp/auggie/provider.json +50 -0
- package/providers/_builtin/acp/autodev/provider.json +47 -0
- package/providers/_builtin/acp/autohand/provider.json +45 -0
- package/providers/_builtin/acp/blackbox-ai/provider.json +47 -0
- package/providers/_builtin/acp/claude-agent/provider.json +50 -0
- package/providers/_builtin/acp/cline-acp/provider.json +47 -0
- package/providers/_builtin/acp/code-assistant/provider.json +47 -0
- package/providers/_builtin/acp/codebuddy/provider.json +47 -0
- package/providers/_builtin/acp/codex-cli/provider.json +50 -0
- package/providers/_builtin/acp/corust-agent/provider.json +45 -0
- package/providers/_builtin/acp/crow-cli/provider.json +47 -0
- package/providers/_builtin/acp/cursor-acp/provider.json +47 -0
- package/providers/_builtin/acp/deepagents/provider.json +45 -0
- package/providers/_builtin/acp/dimcode/provider.json +47 -0
- package/providers/_builtin/acp/docker-cagent/provider.json +50 -0
- package/providers/_builtin/acp/factory-droid/provider.json +53 -0
- package/providers/_builtin/acp/fast-agent/provider.json +45 -0
- package/providers/_builtin/acp/fount/provider.json +47 -0
- package/providers/_builtin/acp/gemini-cli/provider.json +107 -0
- package/providers/_builtin/acp/github-copilot/provider.json +47 -0
- package/providers/_builtin/acp/goose/provider.json +50 -0
- package/providers/_builtin/acp/junie/provider.json +45 -0
- package/providers/_builtin/acp/kilo/provider.json +45 -0
- package/providers/_builtin/acp/kimi-cli/provider.json +50 -0
- package/providers/_builtin/acp/kiro-cli/provider.json +47 -0
- package/providers/_builtin/acp/minion-code/provider.json +45 -0
- package/providers/_builtin/acp/mistral-vibe/provider.json +50 -0
- package/providers/_builtin/acp/nova/provider.json +47 -0
- package/providers/_builtin/acp/openclaw/provider.json +47 -0
- package/providers/_builtin/acp/opencode/provider.json +45 -0
- package/providers/_builtin/acp/openhands/provider.json +47 -0
- package/providers/_builtin/acp/pi-acp/provider.json +45 -0
- package/providers/_builtin/acp/qoder/provider.json +47 -0
- package/providers/_builtin/acp/qwen-code/provider.json +53 -0
- package/providers/_builtin/acp/stakpak/provider.json +47 -0
- package/providers/_builtin/acp/vtcode/provider.json +47 -0
- package/providers/_builtin/cli/claude-cli/provider.json +78 -0
- package/providers/_builtin/cli/codex-cli/provider.json +60 -0
- package/providers/_builtin/cli/gemini-cli/provider.json +64 -0
- package/providers/_builtin/extension/cline/provider.json +11 -0
- package/providers/_builtin/extension/cline/scripts/open_panel.js +1 -1
- package/providers/_builtin/extension/cline/{provider.js → scripts.js} +29 -55
- package/providers/_builtin/extension/roo-code/provider.json +11 -0
- package/providers/_builtin/extension/roo-code/{provider.js → scripts.js} +27 -97
- package/providers/_builtin/ide/antigravity/provider.json +32 -0
- package/providers/_builtin/ide/antigravity/scripts.js +73 -0
- package/providers/_builtin/ide/cursor/provider.json +35 -0
- package/providers/_builtin/ide/cursor/{provider.js → scripts.js} +31 -69
- package/providers/_builtin/ide/kiro/provider.json +36 -0
- package/providers/_builtin/ide/kiro/scripts.js +62 -0
- package/providers/_builtin/ide/pearai/provider.json +36 -0
- package/providers/_builtin/ide/pearai/scripts.js +74 -0
- package/providers/_builtin/ide/trae/provider.json +35 -0
- package/providers/_builtin/ide/trae/scripts.js +57 -0
- package/providers/_builtin/ide/vscode/provider.json +33 -0
- package/providers/_builtin/ide/vscode-insiders/provider.json +31 -0
- package/providers/_builtin/ide/vscodium/provider.json +32 -0
- package/providers/_builtin/ide/windsurf/provider.json +22 -0
- package/providers/_builtin/ide/windsurf/scripts.js +57 -0
- package/README.md +0 -43
- package/dist/dev-console-monaco.js +0 -176
- package/dist/dev-console.css +0 -326
- package/dist/dev-console.html +0 -148
- package/dist/dev-console.js +0 -1165
- package/dist/index.d.ts +0 -2
- package/providers/_builtin/acp/agentpool/provider.js +0 -59
- package/providers/_builtin/acp/amp/provider.js +0 -61
- package/providers/_builtin/acp/auggie/provider.js +0 -60
- package/providers/_builtin/acp/autodev/provider.js +0 -59
- package/providers/_builtin/acp/autohand/provider.js +0 -59
- package/providers/_builtin/acp/blackbox-ai/provider.js +0 -59
- package/providers/_builtin/acp/claude-agent/provider.js +0 -61
- package/providers/_builtin/acp/cline-acp/provider.js +0 -62
- package/providers/_builtin/acp/code-assistant/provider.js +0 -59
- package/providers/_builtin/acp/codebuddy/provider.js +0 -59
- package/providers/_builtin/acp/codex-cli/provider.js +0 -64
- package/providers/_builtin/acp/corust-agent/provider.js +0 -59
- package/providers/_builtin/acp/crow-cli/provider.js +0 -59
- package/providers/_builtin/acp/cursor-acp/provider.js +0 -59
- package/providers/_builtin/acp/deepagents/provider.js +0 -59
- package/providers/_builtin/acp/dimcode/provider.js +0 -58
- package/providers/_builtin/acp/docker-cagent/provider.js +0 -59
- package/providers/_builtin/acp/factory-droid/provider.js +0 -59
- package/providers/_builtin/acp/fast-agent/provider.js +0 -59
- package/providers/_builtin/acp/fount/provider.js +0 -59
- package/providers/_builtin/acp/gemini-cli/provider.js +0 -104
- package/providers/_builtin/acp/github-copilot/provider.js +0 -60
- package/providers/_builtin/acp/goose/provider.js +0 -64
- package/providers/_builtin/acp/junie/provider.js +0 -62
- package/providers/_builtin/acp/kilo/provider.js +0 -59
- package/providers/_builtin/acp/kimi-cli/provider.js +0 -63
- package/providers/_builtin/acp/kiro-cli/provider.js +0 -59
- package/providers/_builtin/acp/minion-code/provider.js +0 -59
- package/providers/_builtin/acp/mistral-vibe/provider.js +0 -63
- package/providers/_builtin/acp/nova/provider.js +0 -59
- package/providers/_builtin/acp/openclaw/provider.js +0 -59
- package/providers/_builtin/acp/opencode/provider.js +0 -60
- package/providers/_builtin/acp/openhands/provider.js +0 -59
- package/providers/_builtin/acp/pi-acp/provider.js +0 -59
- package/providers/_builtin/acp/qoder/provider.js +0 -58
- package/providers/_builtin/acp/qwen-code/provider.js +0 -61
- package/providers/_builtin/acp/stakpak/provider.js +0 -59
- package/providers/_builtin/acp/vtcode/provider.js +0 -59
- package/providers/_builtin/cli/claude-cli/provider.js +0 -128
- package/providers/_builtin/cli/codex-cli/provider.js +0 -80
- package/providers/_builtin/cli/gemini-cli/provider.js +0 -124
- package/providers/_builtin/ide/antigravity/provider.js +0 -114
- package/providers/_builtin/ide/kiro/provider.js +0 -90
- package/providers/_builtin/ide/pearai/provider.js +0 -100
- package/providers/_builtin/ide/trae/provider.js +0 -83
- package/providers/_builtin/ide/vscode/provider.js +0 -36
- package/providers/_builtin/ide/vscode-insiders/provider.js +0 -27
- package/providers/_builtin/ide/vscodium/provider.js +0 -27
- package/providers/_builtin/ide/windsurf/provider.js +0 -76
- package/providers/_helpers/index.js +0 -188
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "claude-cli",
|
|
3
|
+
"name": "Claude Code",
|
|
4
|
+
"category": "cli",
|
|
5
|
+
"aliases": [
|
|
6
|
+
"claude",
|
|
7
|
+
"claude-code"
|
|
8
|
+
],
|
|
9
|
+
"icon": "🤖",
|
|
10
|
+
"displayName": "Claude Code",
|
|
11
|
+
"settings": {
|
|
12
|
+
"mode": {
|
|
13
|
+
"type": "select",
|
|
14
|
+
"default": "terminal",
|
|
15
|
+
"public": true,
|
|
16
|
+
"label": "표시 모드",
|
|
17
|
+
"description": "terminal: PTY 터미널 뷰, chat: 파싱된 대화 뷰",
|
|
18
|
+
"options": [
|
|
19
|
+
"terminal",
|
|
20
|
+
"chat"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"notifications": {
|
|
24
|
+
"type": "boolean",
|
|
25
|
+
"default": true,
|
|
26
|
+
"public": true,
|
|
27
|
+
"label": "알림",
|
|
28
|
+
"description": "상태 변경 시 알림을 표시합니다"
|
|
29
|
+
},
|
|
30
|
+
"autoApprove": {
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"default": false,
|
|
33
|
+
"public": true,
|
|
34
|
+
"label": "자동 승인",
|
|
35
|
+
"description": "도구 실행 승인을 자동으로 허용합니다"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"binary": "claude",
|
|
39
|
+
"spawn": {
|
|
40
|
+
"command": "claude",
|
|
41
|
+
"args": [],
|
|
42
|
+
"shell": false,
|
|
43
|
+
"env": {}
|
|
44
|
+
},
|
|
45
|
+
"patterns": {
|
|
46
|
+
"prompt": [
|
|
47
|
+
{},
|
|
48
|
+
{},
|
|
49
|
+
{},
|
|
50
|
+
{},
|
|
51
|
+
{},
|
|
52
|
+
{},
|
|
53
|
+
{}
|
|
54
|
+
],
|
|
55
|
+
"generating": [
|
|
56
|
+
{},
|
|
57
|
+
{},
|
|
58
|
+
{},
|
|
59
|
+
{},
|
|
60
|
+
{}
|
|
61
|
+
],
|
|
62
|
+
"approval": [
|
|
63
|
+
{},
|
|
64
|
+
{},
|
|
65
|
+
{},
|
|
66
|
+
{},
|
|
67
|
+
{},
|
|
68
|
+
{},
|
|
69
|
+
{},
|
|
70
|
+
{},
|
|
71
|
+
{}
|
|
72
|
+
],
|
|
73
|
+
"ready": [
|
|
74
|
+
{},
|
|
75
|
+
{}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "codex-cli",
|
|
3
|
+
"name": "Codex CLI",
|
|
4
|
+
"category": "cli",
|
|
5
|
+
"aliases": [
|
|
6
|
+
"codex"
|
|
7
|
+
],
|
|
8
|
+
"icon": "🧠",
|
|
9
|
+
"displayName": "Codex CLI",
|
|
10
|
+
"settings": {
|
|
11
|
+
"mode": {
|
|
12
|
+
"type": "select",
|
|
13
|
+
"default": "terminal",
|
|
14
|
+
"public": true,
|
|
15
|
+
"label": "표시 모드",
|
|
16
|
+
"options": [
|
|
17
|
+
"terminal",
|
|
18
|
+
"chat"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"notifications": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"default": true,
|
|
24
|
+
"public": true,
|
|
25
|
+
"label": "알림"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"binary": "codex",
|
|
29
|
+
"spawn": {
|
|
30
|
+
"command": "codex",
|
|
31
|
+
"args": [
|
|
32
|
+
"--full-auto"
|
|
33
|
+
],
|
|
34
|
+
"shell": false,
|
|
35
|
+
"env": {}
|
|
36
|
+
},
|
|
37
|
+
"patterns": {
|
|
38
|
+
"prompt": [
|
|
39
|
+
{},
|
|
40
|
+
{},
|
|
41
|
+
{}
|
|
42
|
+
],
|
|
43
|
+
"generating": [
|
|
44
|
+
{},
|
|
45
|
+
{},
|
|
46
|
+
{}
|
|
47
|
+
],
|
|
48
|
+
"approval": [
|
|
49
|
+
{},
|
|
50
|
+
{},
|
|
51
|
+
{},
|
|
52
|
+
{},
|
|
53
|
+
{}
|
|
54
|
+
],
|
|
55
|
+
"ready": [
|
|
56
|
+
{},
|
|
57
|
+
{}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "gemini-cli",
|
|
3
|
+
"name": "Gemini CLI",
|
|
4
|
+
"category": "cli",
|
|
5
|
+
"aliases": [
|
|
6
|
+
"gemini"
|
|
7
|
+
],
|
|
8
|
+
"icon": "♊",
|
|
9
|
+
"displayName": "Gemini CLI",
|
|
10
|
+
"settings": {
|
|
11
|
+
"mode": {
|
|
12
|
+
"type": "select",
|
|
13
|
+
"default": "terminal",
|
|
14
|
+
"public": true,
|
|
15
|
+
"label": "표시 모드",
|
|
16
|
+
"options": [
|
|
17
|
+
"terminal",
|
|
18
|
+
"chat"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"notifications": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"default": true,
|
|
24
|
+
"public": true,
|
|
25
|
+
"label": "알림"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"binary": "gemini",
|
|
29
|
+
"spawn": {
|
|
30
|
+
"command": "gemini",
|
|
31
|
+
"args": [
|
|
32
|
+
"--yolo"
|
|
33
|
+
],
|
|
34
|
+
"shell": true,
|
|
35
|
+
"env": {}
|
|
36
|
+
},
|
|
37
|
+
"patterns": {
|
|
38
|
+
"prompt": [
|
|
39
|
+
{},
|
|
40
|
+
{},
|
|
41
|
+
{}
|
|
42
|
+
],
|
|
43
|
+
"generating": [
|
|
44
|
+
{},
|
|
45
|
+
{},
|
|
46
|
+
{},
|
|
47
|
+
{},
|
|
48
|
+
{},
|
|
49
|
+
{}
|
|
50
|
+
],
|
|
51
|
+
"approval": [
|
|
52
|
+
{},
|
|
53
|
+
{},
|
|
54
|
+
{},
|
|
55
|
+
{},
|
|
56
|
+
{},
|
|
57
|
+
{}
|
|
58
|
+
],
|
|
59
|
+
"ready": [
|
|
60
|
+
{},
|
|
61
|
+
{}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "cline",
|
|
3
|
+
"name": "Cline",
|
|
4
|
+
"category": "extension",
|
|
5
|
+
"extensionId": "saoudrizwan.claude-dev",
|
|
6
|
+
"extensionIdPattern": "extensionId=saoudrizwan\\.claude-dev",
|
|
7
|
+
"extensionIdPattern_flags": "i",
|
|
8
|
+
"vscodeCommands": {
|
|
9
|
+
"focusPanel": "claude-dev.SidebarProvider.focus"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,99 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Category: extension (webview CDP session)
|
|
5
|
-
* Roo Code의 원본 fork — 구조 거의 동일 (Fiber 기반)
|
|
6
|
-
*
|
|
7
|
-
* 차이점:
|
|
8
|
-
* - extensionId: 'saoudrizwan.claude-dev'
|
|
9
|
-
* - resolve_action 사용 (Roo Code와 동일 패턴)
|
|
10
|
-
*
|
|
11
|
-
* @type {import('../../../src/providers/contracts').ProviderModule}
|
|
2
|
+
* CDP Scripts for Cline
|
|
12
3
|
*/
|
|
4
|
+
|
|
13
5
|
const fs = require('fs');
|
|
14
6
|
const path = require('path');
|
|
15
|
-
|
|
16
7
|
const SCRIPTS_DIR = path.join(__dirname, 'scripts');
|
|
17
|
-
|
|
18
8
|
function loadScript(name) {
|
|
19
|
-
try {
|
|
20
|
-
|
|
21
|
-
} catch {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
9
|
+
try { return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8'); }
|
|
10
|
+
catch { return null; }
|
|
24
11
|
}
|
|
25
12
|
|
|
26
|
-
module.exports = {
|
|
27
|
-
type: 'cline',
|
|
28
|
-
name: 'Cline',
|
|
29
|
-
category: 'extension',
|
|
30
13
|
|
|
31
|
-
|
|
32
|
-
extensionIdPattern: /extensionId=saoudrizwan\.claude-dev/i,
|
|
33
|
-
|
|
34
|
-
vscodeCommands: {
|
|
35
|
-
focusPanel: 'claude-dev.SidebarProvider.focus',
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
scripts: {
|
|
39
|
-
readChat() {
|
|
14
|
+
module.exports.readChat = function readChat() {
|
|
40
15
|
return loadScript('read_chat.js');
|
|
41
|
-
}
|
|
16
|
+
};
|
|
42
17
|
|
|
43
|
-
|
|
18
|
+
module.exports.sendMessage = function sendMessage(text) {
|
|
44
19
|
const script = loadScript('send_message.js');
|
|
45
20
|
if (!script) return null;
|
|
46
21
|
return script.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text));
|
|
47
|
-
}
|
|
22
|
+
};
|
|
48
23
|
|
|
49
|
-
|
|
24
|
+
module.exports.listSessions = function listSessions() {
|
|
50
25
|
return loadScript('list_chats.js');
|
|
51
|
-
}
|
|
26
|
+
};
|
|
52
27
|
|
|
53
|
-
|
|
28
|
+
module.exports.switchSession = function switchSession(sessionId) {
|
|
54
29
|
const script = loadScript('switch_session.js');
|
|
55
30
|
if (!script) return null;
|
|
56
31
|
return script.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId));
|
|
57
|
-
}
|
|
32
|
+
};
|
|
58
33
|
|
|
59
|
-
|
|
34
|
+
module.exports.newSession = function newSession() {
|
|
60
35
|
return loadScript('new_session.js');
|
|
61
|
-
}
|
|
36
|
+
};
|
|
62
37
|
|
|
63
|
-
|
|
38
|
+
module.exports.resolveAction = function resolveAction(action) {
|
|
64
39
|
const script = loadScript('resolve_action.js');
|
|
65
40
|
if (!script) return null;
|
|
66
41
|
return script.replace(/\$\{\s*ACTION\s*\}/g, JSON.stringify(action));
|
|
67
|
-
}
|
|
42
|
+
};
|
|
68
43
|
|
|
69
|
-
|
|
44
|
+
module.exports.focusEditor = function focusEditor() {
|
|
70
45
|
return loadScript('focus_editor.js');
|
|
71
|
-
}
|
|
46
|
+
};
|
|
72
47
|
|
|
73
|
-
|
|
48
|
+
module.exports.openPanel = function openPanel() {
|
|
74
49
|
return loadScript('open_panel.js');
|
|
75
|
-
}
|
|
50
|
+
};
|
|
76
51
|
|
|
77
|
-
|
|
52
|
+
module.exports.listModels = function listModels() {
|
|
78
53
|
return loadScript('list_models.js');
|
|
79
|
-
}
|
|
54
|
+
};
|
|
80
55
|
|
|
81
|
-
|
|
56
|
+
module.exports.setModel = function setModel(params) {
|
|
82
57
|
const model = params?.model || params;
|
|
83
58
|
const script = loadScript('set_model.js');
|
|
84
59
|
if (!script) return null;
|
|
85
60
|
return script.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model));
|
|
86
|
-
}
|
|
61
|
+
};
|
|
87
62
|
|
|
88
|
-
|
|
63
|
+
module.exports.listModes = function listModes() {
|
|
89
64
|
return loadScript('list_modes.js');
|
|
90
|
-
}
|
|
65
|
+
};
|
|
91
66
|
|
|
92
|
-
|
|
67
|
+
module.exports.setMode = function setMode(params) {
|
|
93
68
|
const mode = params?.mode || params;
|
|
94
69
|
const script = loadScript('set_mode.js');
|
|
95
70
|
if (!script) return null;
|
|
96
71
|
return script.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
};
|
|
72
|
+
};
|
|
73
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "roo-code",
|
|
3
|
+
"name": "Roo Code",
|
|
4
|
+
"category": "extension",
|
|
5
|
+
"extensionId": "RooVeterinaryInc.roo-cline",
|
|
6
|
+
"extensionIdPattern": "extensionId=RooVeterinaryInc\\.roo-cline",
|
|
7
|
+
"extensionIdPattern_flags": "i",
|
|
8
|
+
"vscodeCommands": {
|
|
9
|
+
"focusPanel": "roo-cline.SidebarProvider.focus"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,36 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Category: extension (webview CDP session)
|
|
5
|
-
* 구조: iframe → contentDocument, Fiber 기반 데이터 추출
|
|
6
|
-
*
|
|
7
|
-
* Output Contract: ReadChatResult, SendMessageResult, etc.
|
|
8
|
-
* 각 scripts 함수는 CDP evaluate에 넣을 JS 코드 문자열을 반환.
|
|
9
|
-
*
|
|
10
|
-
* @type {import('../../../src/providers/contracts').ProviderModule}
|
|
2
|
+
* CDP Scripts for Roo Code
|
|
11
3
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
type: 'roo-code',
|
|
15
|
-
name: 'Roo Code',
|
|
16
|
-
category: 'extension',
|
|
17
|
-
|
|
18
|
-
// ─── Extension 식별 ───
|
|
19
|
-
extensionId: 'RooVeterinaryInc.roo-cline',
|
|
20
|
-
extensionIdPattern: /extensionId=RooVeterinaryInc\.roo-cline/i,
|
|
21
|
-
|
|
22
|
-
// ─── VS Code Commands ───
|
|
23
|
-
vscodeCommands: {
|
|
24
|
-
focusPanel: 'roo-cline.SidebarProvider.focus',
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
// ─── CDP 스크립트 ───
|
|
28
|
-
scripts: {
|
|
29
|
-
/**
|
|
30
|
-
* readChat → ReadChatResult
|
|
31
|
-
* Fiber 기반 역할 판별 + DOM fallback
|
|
32
|
-
*/
|
|
33
|
-
readChat() {
|
|
4
|
+
|
|
5
|
+
module.exports.readChat = function readChat() {
|
|
34
6
|
return `(() => {
|
|
35
7
|
try {
|
|
36
8
|
const inner = document.querySelector('iframe');
|
|
@@ -203,13 +175,9 @@ module.exports = {
|
|
|
203
175
|
return JSON.stringify({ error: e.message || String(e) });
|
|
204
176
|
}
|
|
205
177
|
})()`;
|
|
206
|
-
}
|
|
178
|
+
};
|
|
207
179
|
|
|
208
|
-
|
|
209
|
-
* sendMessage(text) → 'sent' | 'error: ...'
|
|
210
|
-
* Fiber onSend 직접 호출 방식
|
|
211
|
-
*/
|
|
212
|
-
sendMessage(text) {
|
|
180
|
+
module.exports.sendMessage = function sendMessage(text) {
|
|
213
181
|
const escaped = JSON.stringify(text);
|
|
214
182
|
return `(async () => {
|
|
215
183
|
try {
|
|
@@ -262,13 +230,9 @@ module.exports = {
|
|
|
262
230
|
return JSON.stringify({ sent: true });
|
|
263
231
|
} catch (e) { return JSON.stringify({ sent: false, error: e.message }); }
|
|
264
232
|
})()`;
|
|
265
|
-
}
|
|
233
|
+
};
|
|
266
234
|
|
|
267
|
-
|
|
268
|
-
* listSessions → SessionInfo[]
|
|
269
|
-
* Fiber taskHistory 기반
|
|
270
|
-
*/
|
|
271
|
-
listSessions() {
|
|
235
|
+
module.exports.listSessions = function listSessions() {
|
|
272
236
|
return `(() => {
|
|
273
237
|
try {
|
|
274
238
|
const inner = document.querySelector('iframe');
|
|
@@ -347,13 +311,9 @@ module.exports = {
|
|
|
347
311
|
return JSON.stringify({ sessions: [], error: e.message });
|
|
348
312
|
}
|
|
349
313
|
})()`;
|
|
350
|
-
}
|
|
314
|
+
};
|
|
351
315
|
|
|
352
|
-
|
|
353
|
-
* switchSession(sessionId) → SwitchSessionResult
|
|
354
|
-
* postMessage → showTaskWithId
|
|
355
|
-
*/
|
|
356
|
-
switchSession(sessionId) {
|
|
316
|
+
module.exports.switchSession = function switchSession(sessionId) {
|
|
357
317
|
const escaped = JSON.stringify(sessionId);
|
|
358
318
|
return `(async () => {
|
|
359
319
|
try {
|
|
@@ -422,12 +382,9 @@ module.exports = {
|
|
|
422
382
|
return JSON.stringify({ switched: true });
|
|
423
383
|
} catch (e) { return JSON.stringify({ switched: false, error: e.message }); }
|
|
424
384
|
})()`;
|
|
425
|
-
}
|
|
385
|
+
};
|
|
426
386
|
|
|
427
|
-
|
|
428
|
-
* newSession → string
|
|
429
|
-
*/
|
|
430
|
-
newSession() {
|
|
387
|
+
module.exports.newSession = function newSession() {
|
|
431
388
|
return `(() => {
|
|
432
389
|
try {
|
|
433
390
|
const inner = document.querySelector('iframe');
|
|
@@ -470,13 +427,9 @@ module.exports = {
|
|
|
470
427
|
return 'no button found';
|
|
471
428
|
} catch (e) { return 'error: ' + e.message; }
|
|
472
429
|
})()`;
|
|
473
|
-
}
|
|
430
|
+
};
|
|
474
431
|
|
|
475
|
-
|
|
476
|
-
* resolveAction(action) → boolean
|
|
477
|
-
* action: 'approve' | 'reject'
|
|
478
|
-
*/
|
|
479
|
-
resolveAction(action) {
|
|
432
|
+
module.exports.resolveAction = function resolveAction(action) {
|
|
480
433
|
const escaped = JSON.stringify(action);
|
|
481
434
|
return `(() => {
|
|
482
435
|
try {
|
|
@@ -536,12 +489,9 @@ module.exports = {
|
|
|
536
489
|
return false;
|
|
537
490
|
} catch { return false; }
|
|
538
491
|
})()`;
|
|
539
|
-
}
|
|
492
|
+
};
|
|
540
493
|
|
|
541
|
-
|
|
542
|
-
* focusEditor → string
|
|
543
|
-
*/
|
|
544
|
-
focusEditor() {
|
|
494
|
+
module.exports.focusEditor = function focusEditor() {
|
|
545
495
|
return `(() => {
|
|
546
496
|
try {
|
|
547
497
|
const inner = document.querySelector('iframe');
|
|
@@ -557,12 +507,9 @@ module.exports = {
|
|
|
557
507
|
return 'no textarea found';
|
|
558
508
|
} catch (e) { return 'error: ' + e.message; }
|
|
559
509
|
})()`;
|
|
560
|
-
}
|
|
510
|
+
};
|
|
561
511
|
|
|
562
|
-
|
|
563
|
-
* openPanel → 'visible' | 'panel_hidden'
|
|
564
|
-
*/
|
|
565
|
-
openPanel() {
|
|
512
|
+
module.exports.openPanel = function openPanel() {
|
|
566
513
|
return `(() => {
|
|
567
514
|
try {
|
|
568
515
|
const inner = document.querySelector('iframe');
|
|
@@ -573,13 +520,9 @@ module.exports = {
|
|
|
573
520
|
return 'panel_hidden';
|
|
574
521
|
} catch (e) { return 'error: ' + e.message; }
|
|
575
522
|
})()`;
|
|
576
|
-
}
|
|
523
|
+
};
|
|
577
524
|
|
|
578
|
-
|
|
579
|
-
* listModels → { models: string[], current: string }
|
|
580
|
-
* dropdown-trigger 클릭 → 옵션 읽기 → Escape로 닫기
|
|
581
|
-
*/
|
|
582
|
-
listModels() {
|
|
525
|
+
module.exports.listModels = function listModels() {
|
|
583
526
|
return `(async () => {
|
|
584
527
|
try {
|
|
585
528
|
const inner = document.querySelector('iframe');
|
|
@@ -610,13 +553,9 @@ module.exports = {
|
|
|
610
553
|
return JSON.stringify({ models: [...new Set(models)], current });
|
|
611
554
|
} catch (e) { return JSON.stringify({ models: [], current: '', error: e.message }); }
|
|
612
555
|
})()`;
|
|
613
|
-
}
|
|
556
|
+
};
|
|
614
557
|
|
|
615
|
-
|
|
616
|
-
* setModel(params) → { success: boolean }
|
|
617
|
-
* params.model: 선택할 모델 이름
|
|
618
|
-
*/
|
|
619
|
-
setModel(params) {
|
|
558
|
+
module.exports.setModel = function setModel(params) {
|
|
620
559
|
const model = params?.model || params;
|
|
621
560
|
const escaped = JSON.stringify(model);
|
|
622
561
|
return `(async () => {
|
|
@@ -649,13 +588,9 @@ module.exports = {
|
|
|
649
588
|
return JSON.stringify({ success: false, error: 'model not found: ' + target });
|
|
650
589
|
} catch (e) { return JSON.stringify({ success: false, error: e.message }); }
|
|
651
590
|
})()`;
|
|
652
|
-
}
|
|
591
|
+
};
|
|
653
592
|
|
|
654
|
-
|
|
655
|
-
* listModes → { modes: string[], current: string }
|
|
656
|
-
* mode-selector-trigger 클릭 → 옵션 읽기
|
|
657
|
-
*/
|
|
658
|
-
listModes() {
|
|
593
|
+
module.exports.listModes = function listModes() {
|
|
659
594
|
return `(async () => {
|
|
660
595
|
try {
|
|
661
596
|
const inner = document.querySelector('iframe');
|
|
@@ -685,13 +620,9 @@ module.exports = {
|
|
|
685
620
|
return JSON.stringify({ modes: [...new Set(modes)], current });
|
|
686
621
|
} catch (e) { return JSON.stringify({ modes: [], current: '', error: e.message }); }
|
|
687
622
|
})()`;
|
|
688
|
-
}
|
|
623
|
+
};
|
|
689
624
|
|
|
690
|
-
|
|
691
|
-
* setMode(params) → { success: boolean }
|
|
692
|
-
* params.mode: 선택할 모드 이름
|
|
693
|
-
*/
|
|
694
|
-
setMode(params) {
|
|
625
|
+
module.exports.setMode = function setMode(params) {
|
|
695
626
|
const mode = params?.mode || params;
|
|
696
627
|
const escaped = JSON.stringify(mode);
|
|
697
628
|
return `(async () => {
|
|
@@ -724,6 +655,5 @@ module.exports = {
|
|
|
724
655
|
return JSON.stringify({ success: false, error: 'mode not found: ' + target });
|
|
725
656
|
} catch (e) { return JSON.stringify({ success: false, error: e.message }); }
|
|
726
657
|
})()`;
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
};
|
|
658
|
+
};
|
|
659
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "antigravity",
|
|
3
|
+
"name": "Antigravity",
|
|
4
|
+
"category": "ide",
|
|
5
|
+
"displayName": "Antigravity",
|
|
6
|
+
"icon": "🚀",
|
|
7
|
+
"cli": "antigravity",
|
|
8
|
+
"cdpPorts": [
|
|
9
|
+
9335,
|
|
10
|
+
9336
|
|
11
|
+
],
|
|
12
|
+
"processNames": {
|
|
13
|
+
"darwin": "Antigravity",
|
|
14
|
+
"win32": [
|
|
15
|
+
"Antigravity.exe"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"paths": {
|
|
19
|
+
"darwin": [
|
|
20
|
+
"/Applications/Antigravity.app"
|
|
21
|
+
],
|
|
22
|
+
"win32": [
|
|
23
|
+
"C:\\Users\\*\\AppData\\Local\\Programs\\antigravity\\Antigravity.exe"
|
|
24
|
+
],
|
|
25
|
+
"linux": [
|
|
26
|
+
"/opt/Antigravity",
|
|
27
|
+
"/usr/share/antigravity"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"inputMethod": "cdp-type-and-send",
|
|
31
|
+
"inputSelector": "[contenteditable=\"true\"][role=\"textbox\"]"
|
|
32
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Scripts for Antigravity
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const SCRIPTS_DIR = path.join(__dirname, 'scripts');
|
|
8
|
+
function loadScript(name) {
|
|
9
|
+
try { return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8'); }
|
|
10
|
+
catch { return null; }
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module.exports.readChat = function readChat() {
|
|
15
|
+
return loadScript('read_chat.js');
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
module.exports.sendMessage = function sendMessage(text) {
|
|
19
|
+
const script = loadScript('send_message.js');
|
|
20
|
+
if (!script) return null;
|
|
21
|
+
// ${ MESSAGE } 템플릿 변수 치환
|
|
22
|
+
return script.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
module.exports.listSessions = function listSessions() {
|
|
26
|
+
return loadScript('list_chats.js');
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
module.exports.switchSession = function switchSession(sessionId) {
|
|
30
|
+
const script = loadScript('switch_session.js');
|
|
31
|
+
if (!script) return null;
|
|
32
|
+
return script.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
module.exports.newSession = function newSession() {
|
|
36
|
+
return loadScript('new_session.js');
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
module.exports.resolveAction = function resolveAction(params) {
|
|
40
|
+
const action = typeof params === 'string' ? params : params?.action || 'approve';
|
|
41
|
+
const buttonText = params?.button || params?.buttonText
|
|
42
|
+
|| (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
|
|
43
|
+
const script = loadScript('resolve_action.js');
|
|
44
|
+
if (!script) return null;
|
|
45
|
+
return script.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText));
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
module.exports.focusEditor = function focusEditor() {
|
|
49
|
+
return loadScript('focus_editor.js');
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
module.exports.listModels = function listModels() {
|
|
53
|
+
return loadScript('list_models.js');
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
module.exports.setModel = function setModel(params) {
|
|
57
|
+
const model = typeof params === 'string' ? params : params?.model;
|
|
58
|
+
const script = loadScript('set_model.js');
|
|
59
|
+
if (!script) return null;
|
|
60
|
+
return script.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model));
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
module.exports.listModes = function listModes() {
|
|
64
|
+
return loadScript('list_modes.js');
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
module.exports.setMode = function setMode(params) {
|
|
68
|
+
const mode = typeof params === 'string' ? params : params?.mode;
|
|
69
|
+
const script = loadScript('set_mode.js');
|
|
70
|
+
if (!script) return null;
|
|
71
|
+
return script.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode));
|
|
72
|
+
};
|
|
73
|
+
|