adhdev 0.1.54 → 0.4.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.
Files changed (131) hide show
  1. package/dist/cli-entrypoint.js +29083 -0
  2. package/dist/cli-entrypoint.js.map +1 -0
  3. package/dist/index.js +26970 -11054
  4. package/dist/index.js.map +1 -0
  5. package/package.json +19 -16
  6. package/providers/_builtin/COMPATIBILITY.md +217 -0
  7. package/providers/_builtin/acp/agentpool/provider.json +54 -0
  8. package/providers/_builtin/acp/amp/provider.json +52 -0
  9. package/providers/_builtin/acp/auggie/provider.json +57 -0
  10. package/providers/_builtin/acp/autodev/provider.json +54 -0
  11. package/providers/_builtin/acp/autohand/provider.json +52 -0
  12. package/providers/_builtin/acp/blackbox-ai/provider.json +54 -0
  13. package/providers/_builtin/acp/claude-agent/provider.json +57 -0
  14. package/providers/_builtin/acp/cline-acp/provider.json +54 -0
  15. package/providers/_builtin/acp/codebuddy/provider.json +54 -0
  16. package/providers/_builtin/acp/codex-cli/provider.json +57 -0
  17. package/providers/_builtin/acp/corust-agent/provider.json +52 -0
  18. package/providers/_builtin/acp/crow-cli/provider.json +54 -0
  19. package/providers/_builtin/acp/cursor-acp/provider.json +54 -0
  20. package/providers/_builtin/acp/deepagents/provider.json +52 -0
  21. package/providers/_builtin/acp/dimcode/provider.json +54 -0
  22. package/providers/_builtin/acp/docker-cagent/provider.json +57 -0
  23. package/providers/_builtin/acp/factory-droid/provider.json +60 -0
  24. package/providers/_builtin/acp/fast-agent/provider.json +52 -0
  25. package/providers/_builtin/acp/gemini-cli/provider.json +114 -0
  26. package/providers/_builtin/acp/github-copilot/provider.json +54 -0
  27. package/providers/_builtin/acp/goose/provider.json +57 -0
  28. package/providers/_builtin/acp/junie/provider.json +52 -0
  29. package/providers/_builtin/acp/kilo/provider.json +54 -0
  30. package/providers/_builtin/acp/kimi-cli/provider.json +57 -0
  31. package/providers/_builtin/acp/minion-code/provider.json +52 -0
  32. package/providers/_builtin/acp/mistral-vibe/provider.json +57 -0
  33. package/providers/_builtin/acp/nova/provider.json +54 -0
  34. package/providers/_builtin/acp/openclaw/provider.json +54 -0
  35. package/providers/_builtin/acp/opencode/provider.json +52 -0
  36. package/providers/_builtin/acp/openhands/provider.json +54 -0
  37. package/providers/_builtin/acp/pi-acp/provider.json +52 -0
  38. package/providers/_builtin/acp/qoder/provider.json +54 -0
  39. package/providers/_builtin/acp/qwen-code/provider.json +60 -0
  40. package/providers/_builtin/acp/stakpak/provider.json +54 -0
  41. package/providers/_builtin/acp/vtcode/provider.json +54 -0
  42. package/providers/_builtin/cli/claude-cli/provider.json +100 -0
  43. package/providers/_builtin/cli/codex-cli/provider.json +89 -0
  44. package/providers/_builtin/cli/gemini-cli/provider.json +93 -0
  45. package/providers/_builtin/docs/CDP_SELECTOR_GUIDE.md +370 -0
  46. package/providers/_builtin/docs/PROVIDER_GUIDE.md +916 -0
  47. package/providers/_builtin/extension/cline/provider.json +35 -0
  48. package/providers/_builtin/extension/cline/scripts/open_panel.js +1 -1
  49. package/providers/_builtin/extension/cline/{provider.js → scripts.js} +29 -55
  50. package/providers/_builtin/extension/roo-code/provider.json +35 -0
  51. package/providers/_builtin/extension/roo-code/{provider.js → scripts.js} +27 -97
  52. package/providers/_builtin/ide/antigravity/provider.json +63 -0
  53. package/providers/_builtin/ide/antigravity/scripts/legacy/list_models.js +38 -0
  54. package/providers/_builtin/ide/antigravity/scripts/legacy/list_modes.js +48 -0
  55. package/providers/_builtin/ide/antigravity/scripts/legacy/scripts.js +64 -0
  56. package/providers/_builtin/ide/antigravity/scripts/legacy/set_mode.js +34 -0
  57. package/providers/_builtin/ide/antigravity/scripts/legacy/set_model.js +47 -0
  58. package/providers/_builtin/ide/antigravity/scripts/list_models.js +31 -8
  59. package/providers/_builtin/ide/antigravity/scripts/list_modes.js +37 -13
  60. package/providers/_builtin/ide/antigravity/scripts/set_mode.js +49 -16
  61. package/providers/_builtin/ide/antigravity/scripts/set_model.js +47 -22
  62. package/providers/_builtin/ide/antigravity/scripts.js +67 -0
  63. package/providers/_builtin/ide/cursor/provider.json +59 -0
  64. package/providers/_builtin/ide/cursor/{provider.js → scripts.js} +47 -79
  65. package/providers/_builtin/ide/kiro/provider.json +60 -0
  66. package/providers/_builtin/ide/kiro/scripts.js +62 -0
  67. package/providers/_builtin/ide/pearai/provider.json +60 -0
  68. package/providers/_builtin/ide/pearai/scripts.js +74 -0
  69. package/providers/_builtin/ide/trae/provider.json +59 -0
  70. package/providers/_builtin/ide/trae/scripts.js +57 -0
  71. package/providers/_builtin/ide/vscode/provider.json +57 -0
  72. package/providers/_builtin/ide/vscode-insiders/provider.json +55 -0
  73. package/providers/_builtin/ide/vscodium/provider.json +56 -0
  74. package/providers/_builtin/ide/windsurf/provider.json +46 -0
  75. package/providers/_builtin/ide/windsurf/scripts.js +57 -0
  76. package/README.md +0 -43
  77. package/dist/dev-console-monaco.js +0 -176
  78. package/dist/dev-console.css +0 -326
  79. package/dist/dev-console.html +0 -148
  80. package/dist/dev-console.js +0 -1165
  81. package/dist/index.d.ts +0 -2
  82. package/providers/_builtin/acp/agentpool/provider.js +0 -59
  83. package/providers/_builtin/acp/amp/provider.js +0 -61
  84. package/providers/_builtin/acp/auggie/provider.js +0 -60
  85. package/providers/_builtin/acp/autodev/provider.js +0 -59
  86. package/providers/_builtin/acp/autohand/provider.js +0 -59
  87. package/providers/_builtin/acp/blackbox-ai/provider.js +0 -59
  88. package/providers/_builtin/acp/claude-agent/provider.js +0 -61
  89. package/providers/_builtin/acp/cline-acp/provider.js +0 -62
  90. package/providers/_builtin/acp/code-assistant/provider.js +0 -59
  91. package/providers/_builtin/acp/codebuddy/provider.js +0 -59
  92. package/providers/_builtin/acp/codex-cli/provider.js +0 -64
  93. package/providers/_builtin/acp/corust-agent/provider.js +0 -59
  94. package/providers/_builtin/acp/crow-cli/provider.js +0 -59
  95. package/providers/_builtin/acp/cursor-acp/provider.js +0 -59
  96. package/providers/_builtin/acp/deepagents/provider.js +0 -59
  97. package/providers/_builtin/acp/dimcode/provider.js +0 -58
  98. package/providers/_builtin/acp/docker-cagent/provider.js +0 -59
  99. package/providers/_builtin/acp/factory-droid/provider.js +0 -59
  100. package/providers/_builtin/acp/fast-agent/provider.js +0 -59
  101. package/providers/_builtin/acp/fount/provider.js +0 -59
  102. package/providers/_builtin/acp/gemini-cli/provider.js +0 -104
  103. package/providers/_builtin/acp/github-copilot/provider.js +0 -60
  104. package/providers/_builtin/acp/goose/provider.js +0 -64
  105. package/providers/_builtin/acp/junie/provider.js +0 -62
  106. package/providers/_builtin/acp/kilo/provider.js +0 -59
  107. package/providers/_builtin/acp/kimi-cli/provider.js +0 -63
  108. package/providers/_builtin/acp/kiro-cli/provider.js +0 -59
  109. package/providers/_builtin/acp/minion-code/provider.js +0 -59
  110. package/providers/_builtin/acp/mistral-vibe/provider.js +0 -63
  111. package/providers/_builtin/acp/nova/provider.js +0 -59
  112. package/providers/_builtin/acp/openclaw/provider.js +0 -59
  113. package/providers/_builtin/acp/opencode/provider.js +0 -60
  114. package/providers/_builtin/acp/openhands/provider.js +0 -59
  115. package/providers/_builtin/acp/pi-acp/provider.js +0 -59
  116. package/providers/_builtin/acp/qoder/provider.js +0 -58
  117. package/providers/_builtin/acp/qwen-code/provider.js +0 -61
  118. package/providers/_builtin/acp/stakpak/provider.js +0 -59
  119. package/providers/_builtin/acp/vtcode/provider.js +0 -59
  120. package/providers/_builtin/cli/claude-cli/provider.js +0 -128
  121. package/providers/_builtin/cli/codex-cli/provider.js +0 -80
  122. package/providers/_builtin/cli/gemini-cli/provider.js +0 -124
  123. package/providers/_builtin/ide/antigravity/provider.js +0 -114
  124. package/providers/_builtin/ide/kiro/provider.js +0 -90
  125. package/providers/_builtin/ide/pearai/provider.js +0 -100
  126. package/providers/_builtin/ide/trae/provider.js +0 -83
  127. package/providers/_builtin/ide/vscode/provider.js +0 -36
  128. package/providers/_builtin/ide/vscode-insiders/provider.js +0 -27
  129. package/providers/_builtin/ide/vscodium/provider.js +0 -27
  130. package/providers/_builtin/ide/windsurf/provider.js +0 -76
  131. package/providers/_helpers/index.js +0 -188
@@ -1,114 +0,0 @@
1
- /**
2
- * Antigravity — IDE Provider
3
- *
4
- * Category: ide (workbench CDP session — iframe 없음, 직접 DOM 접근)
5
- *
6
- * 특이 사항:
7
- * - contenteditable[role="textbox"] 입력 (Lexical 에디터)
8
- * - send_message에서 Enter keydown+keypress+keyup full sequence 필요 (composed: true)
9
- * - switch_session에서 CDP 마우스 클릭 좌표 반환 (needsTypeAndSend 아님, Input.dispatchMouseEvent)
10
- * - resolve_action 사용
11
- *
12
- * @type {import('../../../src/providers/contracts').ProviderModule}
13
- */
14
- const fs = require('fs');
15
- const path = require('path');
16
-
17
- const SCRIPTS_DIR = path.join(__dirname, 'scripts');
18
-
19
- function loadScript(name) {
20
- try {
21
- return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8');
22
- } catch {
23
- return null;
24
- }
25
- }
26
-
27
- module.exports = {
28
- // ─── 메타데이터 ───
29
- type: 'antigravity',
30
- name: 'Antigravity',
31
- category: 'ide',
32
-
33
- // ─── IDE 인프라 ───
34
- displayName: 'Antigravity',
35
- icon: '🚀',
36
- cli: 'antigravity',
37
- cdpPorts: [9335, 9336],
38
- processNames: {
39
- darwin: 'Antigravity',
40
- win32: ['Antigravity.exe'],
41
- },
42
- paths: {
43
- darwin: ['/Applications/Antigravity.app'],
44
- win32: ['C:\\Users\\*\\AppData\\Local\\Programs\\antigravity\\Antigravity.exe'],
45
- linux: ['/opt/Antigravity', '/usr/share/antigravity'],
46
- },
47
-
48
- // ─── Input method ───
49
- inputMethod: 'cdp-type-and-send',
50
- inputSelector: '[contenteditable="true"][role="textbox"]',
51
-
52
- // ─── CDP 스크립트 ───
53
- scripts: {
54
- readChat() {
55
- return loadScript('read_chat.js');
56
- },
57
-
58
- sendMessage(text) {
59
- const script = loadScript('send_message.js');
60
- if (!script) return null;
61
- // ${ MESSAGE } 템플릿 변수 치환
62
- return script.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text));
63
- },
64
-
65
- listSessions() {
66
- return loadScript('list_chats.js');
67
- },
68
-
69
- switchSession(sessionId) {
70
- const script = loadScript('switch_session.js');
71
- if (!script) return null;
72
- return script.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId));
73
- },
74
-
75
- newSession() {
76
- return loadScript('new_session.js');
77
- },
78
-
79
- resolveAction(params) {
80
- const action = typeof params === 'string' ? params : params?.action || 'approve';
81
- const buttonText = params?.button || params?.buttonText
82
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
83
- const script = loadScript('resolve_action.js');
84
- if (!script) return null;
85
- return script.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText));
86
- },
87
-
88
- focusEditor() {
89
- return loadScript('focus_editor.js');
90
- },
91
-
92
- listModels() {
93
- return loadScript('list_models.js');
94
- },
95
-
96
- setModel(params) {
97
- const model = typeof params === 'string' ? params : params?.model;
98
- const script = loadScript('set_model.js');
99
- if (!script) return null;
100
- return script.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model));
101
- },
102
-
103
- listModes() {
104
- return loadScript('list_modes.js');
105
- },
106
-
107
- setMode(params) {
108
- const mode = typeof params === 'string' ? params : params?.mode;
109
- const script = loadScript('set_mode.js');
110
- if (!script) return null;
111
- return script.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode));
112
- },
113
- },
114
- };
@@ -1,90 +0,0 @@
1
- /**
2
- * Kiro (AWS) — IDE Provider
3
- *
4
- * Category: ide (VS Code fork, Code-OSS based)
5
- * AWS의 AI-native spec-driven IDE
6
- *
7
- * @type {import('../../../src/providers/contracts').ProviderModule}
8
- */
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const SCRIPTS_DIR = path.join(__dirname, 'scripts');
13
-
14
- function loadScript(name) {
15
- try {
16
- return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8');
17
- } catch {
18
- return null;
19
- }
20
- }
21
-
22
- module.exports = {
23
- type: 'kiro',
24
- name: 'Kiro',
25
- category: 'ide',
26
-
27
- // ─── IDE 인프라 ───
28
- displayName: 'Kiro',
29
- icon: '🪁',
30
- cli: 'kiro',
31
- cdpPorts: [9351, 9352],
32
- processNames: {
33
- darwin: 'Kiro',
34
- win32: ['Kiro.exe'],
35
- linux: ['kiro'],
36
- },
37
- paths: {
38
- darwin: ['/Applications/Kiro.app'],
39
- win32: [
40
- 'C:\\Users\\*\\AppData\\Local\\Programs\\kiro\\Kiro.exe',
41
- ],
42
- linux: ['/opt/kiro', '/usr/share/kiro'],
43
- },
44
-
45
- inputMethod: 'cdp-type-and-send',
46
- inputSelector: '[contenteditable="true"][role="textbox"]',
47
-
48
- // Kiro의 채팅 UI는 webview iframe 내부 (extensionId=kiro.kiroAgent)
49
- webviewMatchText: 'kiro',
50
-
51
- scripts: {
52
- webviewReadChat() { return loadScript('webview_read_chat.js'); },
53
- webviewSendMessage(text) {
54
- const s = loadScript('webview_send_message.js');
55
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
56
- },
57
- sendMessage(text) {
58
- const s = loadScript('send_message.js');
59
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
60
- },
61
- resolveAction(params) {
62
- const action = typeof params === 'string' ? params : params?.action || 'approve';
63
- const buttonText = params?.button || params?.buttonText
64
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
65
- const s = loadScript('resolve_action.js');
66
- return s ? s.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText)) : null;
67
- },
68
- openPanel() { return loadScript('open_panel.js'); },
69
- focusEditor() { return loadScript('focus_editor.js'); },
70
- // 세션 관리 (webview)
71
- webviewListSessions() { return loadScript('webview_list_sessions.js'); },
72
- webviewNewSession() { return loadScript('webview_new_session.js'); },
73
- webviewSwitchSession(sessionId) {
74
- const s = loadScript('webview_switch_session.js');
75
- return s ? s.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId)) : null;
76
- },
77
- webviewListModels() { return loadScript('webview_list_models.js'); },
78
- webviewSetModel(params) {
79
- const model = typeof params === 'string' ? params : params?.model;
80
- const s = loadScript('webview_set_model.js');
81
- return s ? s.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model)) : null;
82
- },
83
- webviewListModes() { return loadScript('webview_list_modes.js'); },
84
- webviewSetMode(params) {
85
- const mode = typeof params === 'string' ? params : params?.mode;
86
- const s = loadScript('webview_set_mode.js');
87
- return s ? s.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode)) : null;
88
- },
89
- },
90
- };
@@ -1,100 +0,0 @@
1
- /**
2
- * PearAI — IDE Provider
3
- *
4
- * Category: ide (VS Code + Continue fork)
5
- * AI-powered open-source code editor
6
- *
7
- * @type {import('../../../src/providers/contracts').ProviderModule}
8
- */
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const SCRIPTS_DIR = path.join(__dirname, 'scripts');
13
-
14
- function loadScript(name) {
15
- try {
16
- return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8');
17
- } catch {
18
- return null;
19
- }
20
- }
21
-
22
- module.exports = {
23
- type: 'pearai',
24
- name: 'PearAI',
25
- category: 'ide',
26
-
27
- // ─── IDE 인프라 ───
28
- displayName: 'PearAI',
29
- icon: '🍐',
30
- cli: 'pearai',
31
- cdpPorts: [9355, 9356],
32
- processNames: {
33
- darwin: 'PearAI',
34
- win32: ['PearAI.exe'],
35
- linux: ['pearai'],
36
- },
37
- paths: {
38
- darwin: ['/Applications/PearAI.app'],
39
- win32: [
40
- 'C:\\Users\\*\\AppData\\Local\\Programs\\pearai\\PearAI.exe',
41
- ],
42
- linux: ['/opt/pearai', '/usr/share/pearai'],
43
- },
44
-
45
- inputMethod: 'cdp-type-and-send',
46
- inputSelector: '[contenteditable="true"][role="textbox"]',
47
-
48
- // PearAI의 Agent 채팅 UI는 webview iframe 내부 (Roo Code/Cline 기반)
49
- webviewMatchText: 'chat-text-area',
50
-
51
- scripts: {
52
- webviewReadChat() { return loadScript('webview_read_chat.js'); },
53
- webviewSendMessage(text) {
54
- const s = loadScript('webview_send_message.js');
55
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
56
- },
57
- sendMessage(text) {
58
- const s = loadScript('send_message.js');
59
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
60
- },
61
- resolveAction(params) {
62
- const action = typeof params === 'string' ? params : params?.action || 'approve';
63
- const buttonText = params?.button || params?.buttonText
64
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
65
- const s = loadScript('resolve_action.js');
66
- return s ? s.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText)) : null;
67
- },
68
- webviewResolveAction(params) {
69
- const action = typeof params === 'string' ? params : params?.action || 'approve';
70
- const buttonText = params?.button || params?.buttonText
71
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
72
- const s = loadScript('webview_resolve_action.js');
73
- return s ? s.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText)) : null;
74
- },
75
- openPanel() { return loadScript('open_panel.js'); },
76
- focusEditor() { return loadScript('focus_editor.js'); },
77
- // 세션 관리 (IDE 메인 프레임)
78
- newSession() { return loadScript('new_session.js'); },
79
- listSessions() { return loadScript('list_sessions.js'); },
80
- // 세션 관리 (webview)
81
- webviewNewSession() { return loadScript('webview_new_session.js'); },
82
- webviewListSessions() { return loadScript('webview_list_sessions.js'); },
83
- webviewSwitchSession(sessionId) {
84
- const s = loadScript('webview_switch_session.js');
85
- return s ? s.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId)) : null;
86
- },
87
- webviewListModels() { return loadScript('webview_list_models.js'); },
88
- webviewSetModel(params) {
89
- const model = typeof params === 'string' ? params : params?.model;
90
- const s = loadScript('webview_set_model.js');
91
- return s ? s.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model)) : null;
92
- },
93
- webviewListModes() { return loadScript('webview_list_modes.js'); },
94
- webviewSetMode(params) {
95
- const mode = typeof params === 'string' ? params : params?.mode;
96
- const s = loadScript('webview_set_mode.js');
97
- return s ? s.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode)) : null;
98
- },
99
- },
100
- };
@@ -1,83 +0,0 @@
1
- /**
2
- * Trae — IDE Provider
3
- *
4
- * Category: ide (VS Code fork by ByteDance)
5
- * AI-powered code editor
6
- *
7
- * @type {import('../../../src/providers/contracts').ProviderModule}
8
- */
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const SCRIPTS_DIR = path.join(__dirname, 'scripts');
13
-
14
- function loadScript(name) {
15
- try {
16
- return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8');
17
- } catch {
18
- return null;
19
- }
20
- }
21
-
22
- module.exports = {
23
- type: 'trae',
24
- name: 'Trae',
25
- category: 'ide',
26
-
27
- // ─── IDE 인프라 ───
28
- displayName: 'Trae',
29
- icon: '🔮',
30
- cli: 'trae',
31
- cdpPorts: [9353, 9354],
32
- processNames: {
33
- darwin: 'Trae',
34
- win32: ['Trae.exe'],
35
- linux: ['trae'],
36
- },
37
- paths: {
38
- darwin: ['/Applications/Trae.app'],
39
- win32: [
40
- 'C:\\Users\\*\\AppData\\Local\\Programs\\trae\\Trae.exe',
41
- ],
42
- linux: ['/opt/trae', '/usr/share/trae'],
43
- },
44
-
45
- inputMethod: 'cdp-type-and-send',
46
- inputSelector: '.chat-input-v2-input-box-editable, [contenteditable="true"][role="textbox"]',
47
-
48
- scripts: {
49
- readChat() { return loadScript('read_chat.js'); },
50
- sendMessage(text) {
51
- const s = loadScript('send_message.js');
52
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
53
- },
54
- resolveAction(params) {
55
- const action = typeof params === 'string' ? params : params?.action || 'approve';
56
- const buttonText = params?.button || params?.buttonText
57
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
58
- const s = loadScript('resolve_action.js');
59
- return s ? s.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText)) : null;
60
- },
61
- openPanel() { return loadScript('open_panel.js'); },
62
- focusEditor() { return loadScript('focus_editor.js'); },
63
- // 세션 관리
64
- newSession() { return loadScript('new_session.js'); },
65
- listSessions() { return loadScript('list_chats.js'); },
66
- switchSession(sessionId) {
67
- const s = loadScript('switch_session.js');
68
- return s ? s.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId)) : null;
69
- },
70
- listModels() { return loadScript('list_models.js'); },
71
- setModel(params) {
72
- const model = typeof params === 'string' ? params : params?.model;
73
- const s = loadScript('set_model.js');
74
- return s ? s.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model)) : null;
75
- },
76
- listModes() { return loadScript('list_modes.js'); },
77
- setMode(params) {
78
- const mode = typeof params === 'string' ? params : params?.mode;
79
- const s = loadScript('set_mode.js');
80
- return s ? s.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode)) : null;
81
- },
82
- },
83
- };
@@ -1,36 +0,0 @@
1
- /**
2
- * Visual Studio Code — IDE Provider
3
- *
4
- * Category: ide
5
- * 인프라 정보만 제공 (CDP 스크립트는 cursor와 유사 — 향후 추가)
6
- *
7
- * @type {import('../../../src/providers/contracts').ProviderModule}
8
- */
9
- module.exports = {
10
- type: 'vscode',
11
- name: 'Visual Studio Code',
12
- category: 'ide',
13
-
14
- // ─── IDE 인프라 ───
15
- displayName: 'VS Code',
16
- icon: '💙',
17
- cli: 'code',
18
- cdpPorts: [9339, 9340],
19
- processNames: {
20
- darwin: 'Visual Studio Code',
21
- win32: ['Code.exe'],
22
- },
23
- paths: {
24
- darwin: ['/Applications/Visual Studio Code.app'],
25
- win32: [
26
- 'C:\\Program Files\\Microsoft VS Code\\Code.exe',
27
- 'C:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe',
28
- ],
29
- linux: ['/usr/share/code', '/snap/code/current'],
30
- },
31
-
32
- inputMethod: 'cdp-type-and-send',
33
- inputSelector: '[contenteditable="true"][role="textbox"]',
34
-
35
- scripts: {},
36
- };
@@ -1,27 +0,0 @@
1
- /**
2
- * VS Code Insiders — IDE Provider
3
- * @type {import('../../../src/providers/contracts').ProviderModule}
4
- */
5
- module.exports = {
6
- type: 'vscode-insiders',
7
- name: 'Visual Studio Code - Insiders',
8
- category: 'ide',
9
-
10
- displayName: 'VS Code Insiders',
11
- icon: '💚',
12
- cli: 'code-insiders',
13
- cdpPorts: [9341, 9342],
14
- processNames: {
15
- darwin: 'Visual Studio Code - Insiders',
16
- win32: ['Code - Insiders.exe'],
17
- },
18
- paths: {
19
- darwin: ['/Applications/Visual Studio Code - Insiders.app'],
20
- win32: ['C:\\Program Files\\Microsoft VS Code Insiders\\Code - Insiders.exe'],
21
- linux: ['/usr/share/code-insiders'],
22
- },
23
-
24
- inputMethod: 'cdp-type-and-send',
25
- inputSelector: '[contenteditable="true"][role="textbox"]',
26
- scripts: {},
27
- };
@@ -1,27 +0,0 @@
1
- /**
2
- * VSCodium — IDE Provider
3
- * @type {import('../../../src/providers/contracts').ProviderModule}
4
- */
5
- module.exports = {
6
- type: 'vscodium',
7
- name: 'VSCodium',
8
- category: 'ide',
9
-
10
- displayName: 'VSCodium',
11
- icon: '💚',
12
- cli: 'codium',
13
- cdpPorts: [9343, 9344],
14
- processNames: {
15
- darwin: 'VSCodium',
16
- win32: ['VSCodium.exe'],
17
- },
18
- paths: {
19
- darwin: ['/Applications/VSCodium.app'],
20
- win32: ['C:\\Program Files\\VSCodium\\VSCodium.exe'],
21
- linux: ['/usr/share/codium', '/snap/codium/current'],
22
- },
23
-
24
- inputMethod: 'cdp-type-and-send',
25
- inputSelector: '[contenteditable="true"][role="textbox"]',
26
- scripts: {},
27
- };
@@ -1,76 +0,0 @@
1
- /**
2
- * Windsurf — IDE Provider
3
- *
4
- * Category: ide (workbench CDP session — iframe 없음)
5
- * Cascade 에디터 기반
6
- *
7
- * @type {import('../../../src/providers/contracts').ProviderModule}
8
- */
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const SCRIPTS_DIR = path.join(__dirname, 'scripts');
13
-
14
- function loadScript(name) {
15
- try {
16
- return fs.readFileSync(path.join(SCRIPTS_DIR, name), 'utf8');
17
- } catch {
18
- return null;
19
- }
20
- }
21
-
22
- module.exports = {
23
- type: 'windsurf',
24
- name: 'Windsurf',
25
- category: 'ide',
26
-
27
- // ─── IDE 인프라 ───
28
- displayName: 'Windsurf',
29
- icon: '🏄',
30
- cli: 'windsurf',
31
- cdpPorts: [9337, 9338],
32
- processNames: {
33
- darwin: 'Windsurf',
34
- },
35
- paths: {
36
- darwin: ['/Applications/Windsurf.app'],
37
- },
38
-
39
- inputMethod: 'cdp-type-and-send',
40
- inputSelector: '[contenteditable="true"][role="textbox"]',
41
-
42
- scripts: {
43
- readChat() { return loadScript('read_chat.js'); },
44
- sendMessage(text) {
45
- const s = loadScript('send_message.js');
46
- return s ? s.replace(/\$\{\s*MESSAGE\s*\}/g, JSON.stringify(text)) : null;
47
- },
48
- listSessions() { return loadScript('list_chats.js'); },
49
- switchSession(sessionId) {
50
- const s = loadScript('switch_session.js');
51
- return s ? s.replace(/\$\{\s*SESSION_ID\s*\}/g, JSON.stringify(sessionId)) : null;
52
- },
53
- newSession() { return loadScript('new_session.js'); },
54
- resolveAction(params) {
55
- const action = typeof params === 'string' ? params : params?.action || 'approve';
56
- const buttonText = params?.button || params?.buttonText
57
- || (action === 'approve' ? 'Accept' : action === 'reject' ? 'Reject' : action);
58
- const s = loadScript('resolve_action.js');
59
- return s ? s.replace(/\$\{\s*BUTTON_TEXT\s*\}/g, JSON.stringify(buttonText)) : null;
60
- },
61
- focusEditor() { return loadScript('focus_editor.js'); },
62
- listModels() { return loadScript('list_models.js'); },
63
- setModel(params) {
64
- const model = typeof params === 'string' ? params : params?.model;
65
- const s = loadScript('set_model.js');
66
- return s ? s.replace(/\$\{\s*MODEL\s*\}/g, JSON.stringify(model)) : null;
67
- },
68
- listModes() { return loadScript('list_modes.js'); },
69
- setMode(params) {
70
- const mode = typeof params === 'string' ? params : params?.mode;
71
- const s = loadScript('set_mode.js');
72
- return s ? s.replace(/\$\{\s*MODE\s*\}/g, JSON.stringify(mode)) : null;
73
- },
74
- openPanel() { return loadScript('open_panel.js'); },
75
- },
76
- };