adhdev 0.4.0 → 0.4.1

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 (150) hide show
  1. package/dist/cli-entrypoint.js +685 -236
  2. package/dist/cli-entrypoint.js.map +1 -1
  3. package/dist/index.js +676 -226
  4. package/dist/index.js.map +1 -1
  5. package/package.json +2 -2
  6. package/providers/_builtin/COMPATIBILITY.md +0 -217
  7. package/providers/_builtin/CONTRIBUTING.md +0 -141
  8. package/providers/_builtin/README.md +0 -51
  9. package/providers/_builtin/_helpers/index.js +0 -188
  10. package/providers/_builtin/acp/agentpool/provider.json +0 -54
  11. package/providers/_builtin/acp/amp/provider.json +0 -52
  12. package/providers/_builtin/acp/auggie/provider.json +0 -57
  13. package/providers/_builtin/acp/autodev/provider.json +0 -54
  14. package/providers/_builtin/acp/autohand/provider.json +0 -52
  15. package/providers/_builtin/acp/blackbox-ai/provider.json +0 -54
  16. package/providers/_builtin/acp/claude-agent/provider.json +0 -57
  17. package/providers/_builtin/acp/cline-acp/provider.json +0 -54
  18. package/providers/_builtin/acp/codebuddy/provider.json +0 -54
  19. package/providers/_builtin/acp/codex-cli/provider.json +0 -57
  20. package/providers/_builtin/acp/corust-agent/provider.json +0 -52
  21. package/providers/_builtin/acp/crow-cli/provider.json +0 -54
  22. package/providers/_builtin/acp/cursor-acp/provider.json +0 -54
  23. package/providers/_builtin/acp/deepagents/provider.json +0 -52
  24. package/providers/_builtin/acp/dimcode/provider.json +0 -54
  25. package/providers/_builtin/acp/docker-cagent/provider.json +0 -57
  26. package/providers/_builtin/acp/factory-droid/provider.json +0 -60
  27. package/providers/_builtin/acp/fast-agent/provider.json +0 -52
  28. package/providers/_builtin/acp/gemini-cli/provider.json +0 -114
  29. package/providers/_builtin/acp/github-copilot/provider.json +0 -54
  30. package/providers/_builtin/acp/goose/provider.json +0 -57
  31. package/providers/_builtin/acp/junie/provider.json +0 -52
  32. package/providers/_builtin/acp/kilo/provider.json +0 -54
  33. package/providers/_builtin/acp/kimi-cli/provider.json +0 -57
  34. package/providers/_builtin/acp/minion-code/provider.json +0 -52
  35. package/providers/_builtin/acp/mistral-vibe/provider.json +0 -57
  36. package/providers/_builtin/acp/nova/provider.json +0 -54
  37. package/providers/_builtin/acp/openclaw/provider.json +0 -54
  38. package/providers/_builtin/acp/opencode/provider.json +0 -52
  39. package/providers/_builtin/acp/openhands/provider.json +0 -54
  40. package/providers/_builtin/acp/pi-acp/provider.json +0 -52
  41. package/providers/_builtin/acp/qoder/provider.json +0 -54
  42. package/providers/_builtin/acp/qwen-code/provider.json +0 -60
  43. package/providers/_builtin/acp/stakpak/provider.json +0 -54
  44. package/providers/_builtin/acp/vtcode/provider.json +0 -54
  45. package/providers/_builtin/cli/claude-cli/provider.json +0 -100
  46. package/providers/_builtin/cli/codex-cli/provider.json +0 -89
  47. package/providers/_builtin/cli/gemini-cli/provider.json +0 -93
  48. package/providers/_builtin/docs/CDP_SELECTOR_GUIDE.md +0 -370
  49. package/providers/_builtin/docs/PROVIDER_GUIDE.md +0 -916
  50. package/providers/_builtin/extension/cline/provider.json +0 -35
  51. package/providers/_builtin/extension/cline/scripts/focus_editor.js +0 -48
  52. package/providers/_builtin/extension/cline/scripts/list_chats.js +0 -100
  53. package/providers/_builtin/extension/cline/scripts/list_models.js +0 -43
  54. package/providers/_builtin/extension/cline/scripts/list_modes.js +0 -35
  55. package/providers/_builtin/extension/cline/scripts/new_session.js +0 -85
  56. package/providers/_builtin/extension/cline/scripts/open_panel.js +0 -25
  57. package/providers/_builtin/extension/cline/scripts/read_chat.js +0 -257
  58. package/providers/_builtin/extension/cline/scripts/resolve_action.js +0 -83
  59. package/providers/_builtin/extension/cline/scripts/send_message.js +0 -95
  60. package/providers/_builtin/extension/cline/scripts/set_mode.js +0 -36
  61. package/providers/_builtin/extension/cline/scripts/set_model.js +0 -36
  62. package/providers/_builtin/extension/cline/scripts/switch_session.js +0 -206
  63. package/providers/_builtin/extension/cline/scripts.js +0 -73
  64. package/providers/_builtin/extension/roo-code/provider.json +0 -35
  65. package/providers/_builtin/extension/roo-code/scripts.js +0 -659
  66. package/providers/_builtin/ide/antigravity/provider.json +0 -63
  67. package/providers/_builtin/ide/antigravity/scripts/focus_editor.js +0 -20
  68. package/providers/_builtin/ide/antigravity/scripts/legacy/list_models.js +0 -38
  69. package/providers/_builtin/ide/antigravity/scripts/legacy/list_modes.js +0 -48
  70. package/providers/_builtin/ide/antigravity/scripts/legacy/scripts.js +0 -64
  71. package/providers/_builtin/ide/antigravity/scripts/legacy/set_mode.js +0 -34
  72. package/providers/_builtin/ide/antigravity/scripts/legacy/set_model.js +0 -47
  73. package/providers/_builtin/ide/antigravity/scripts/list_chats.js +0 -137
  74. package/providers/_builtin/ide/antigravity/scripts/list_models.js +0 -61
  75. package/providers/_builtin/ide/antigravity/scripts/list_modes.js +0 -72
  76. package/providers/_builtin/ide/antigravity/scripts/new_session.js +0 -75
  77. package/providers/_builtin/ide/antigravity/scripts/read_chat.js +0 -262
  78. package/providers/_builtin/ide/antigravity/scripts/resolve_action.js +0 -68
  79. package/providers/_builtin/ide/antigravity/scripts/send_message.js +0 -56
  80. package/providers/_builtin/ide/antigravity/scripts/set_mode.js +0 -67
  81. package/providers/_builtin/ide/antigravity/scripts/set_model.js +0 -72
  82. package/providers/_builtin/ide/antigravity/scripts/switch_session.js +0 -114
  83. package/providers/_builtin/ide/antigravity/scripts.js +0 -67
  84. package/providers/_builtin/ide/cursor/provider.json +0 -59
  85. package/providers/_builtin/ide/cursor/scripts.js +0 -458
  86. package/providers/_builtin/ide/kiro/provider.json +0 -60
  87. package/providers/_builtin/ide/kiro/scripts/focus_editor.js +0 -20
  88. package/providers/_builtin/ide/kiro/scripts/open_panel.js +0 -47
  89. package/providers/_builtin/ide/kiro/scripts/resolve_action.js +0 -54
  90. package/providers/_builtin/ide/kiro/scripts/send_message.js +0 -29
  91. package/providers/_builtin/ide/kiro/scripts/webview_list_models.js +0 -39
  92. package/providers/_builtin/ide/kiro/scripts/webview_list_modes.js +0 -39
  93. package/providers/_builtin/ide/kiro/scripts/webview_list_sessions.js +0 -21
  94. package/providers/_builtin/ide/kiro/scripts/webview_new_session.js +0 -34
  95. package/providers/_builtin/ide/kiro/scripts/webview_read_chat.js +0 -68
  96. package/providers/_builtin/ide/kiro/scripts/webview_send_message.js +0 -72
  97. package/providers/_builtin/ide/kiro/scripts/webview_set_mode.js +0 -15
  98. package/providers/_builtin/ide/kiro/scripts/webview_set_model.js +0 -15
  99. package/providers/_builtin/ide/kiro/scripts/webview_switch_session.js +0 -26
  100. package/providers/_builtin/ide/kiro/scripts.js +0 -62
  101. package/providers/_builtin/ide/pearai/provider.json +0 -60
  102. package/providers/_builtin/ide/pearai/scripts/focus_editor.js +0 -20
  103. package/providers/_builtin/ide/pearai/scripts/list_sessions.js +0 -38
  104. package/providers/_builtin/ide/pearai/scripts/new_session.js +0 -55
  105. package/providers/_builtin/ide/pearai/scripts/open_panel.js +0 -46
  106. package/providers/_builtin/ide/pearai/scripts/resolve_action.js +0 -54
  107. package/providers/_builtin/ide/pearai/scripts/send_message.js +0 -29
  108. package/providers/_builtin/ide/pearai/scripts/webview_list_models.js +0 -43
  109. package/providers/_builtin/ide/pearai/scripts/webview_list_modes.js +0 -35
  110. package/providers/_builtin/ide/pearai/scripts/webview_list_sessions.js +0 -62
  111. package/providers/_builtin/ide/pearai/scripts/webview_new_session.js +0 -49
  112. package/providers/_builtin/ide/pearai/scripts/webview_read_chat.js +0 -92
  113. package/providers/_builtin/ide/pearai/scripts/webview_resolve_action.js +0 -59
  114. package/providers/_builtin/ide/pearai/scripts/webview_send_message.js +0 -72
  115. package/providers/_builtin/ide/pearai/scripts/webview_set_mode.js +0 -36
  116. package/providers/_builtin/ide/pearai/scripts/webview_set_model.js +0 -36
  117. package/providers/_builtin/ide/pearai/scripts/webview_switch_session.js +0 -34
  118. package/providers/_builtin/ide/pearai/scripts.js +0 -74
  119. package/providers/_builtin/ide/trae/provider.json +0 -59
  120. package/providers/_builtin/ide/trae/scripts/focus_editor.js +0 -20
  121. package/providers/_builtin/ide/trae/scripts/list_chats.js +0 -24
  122. package/providers/_builtin/ide/trae/scripts/list_models.js +0 -39
  123. package/providers/_builtin/ide/trae/scripts/list_modes.js +0 -39
  124. package/providers/_builtin/ide/trae/scripts/new_session.js +0 -30
  125. package/providers/_builtin/ide/trae/scripts/open_panel.js +0 -44
  126. package/providers/_builtin/ide/trae/scripts/read_chat.js +0 -113
  127. package/providers/_builtin/ide/trae/scripts/resolve_action.js +0 -54
  128. package/providers/_builtin/ide/trae/scripts/send_message.js +0 -69
  129. package/providers/_builtin/ide/trae/scripts/set_mode.js +0 -15
  130. package/providers/_builtin/ide/trae/scripts/set_model.js +0 -15
  131. package/providers/_builtin/ide/trae/scripts/switch_session.js +0 -23
  132. package/providers/_builtin/ide/trae/scripts.js +0 -57
  133. package/providers/_builtin/ide/vscode/provider.json +0 -57
  134. package/providers/_builtin/ide/vscode-insiders/provider.json +0 -55
  135. package/providers/_builtin/ide/vscodium/provider.json +0 -56
  136. package/providers/_builtin/ide/windsurf/provider.json +0 -46
  137. package/providers/_builtin/ide/windsurf/scripts/focus_editor.js +0 -30
  138. package/providers/_builtin/ide/windsurf/scripts/list_chats.js +0 -117
  139. package/providers/_builtin/ide/windsurf/scripts/list_models.js +0 -39
  140. package/providers/_builtin/ide/windsurf/scripts/list_modes.js +0 -39
  141. package/providers/_builtin/ide/windsurf/scripts/new_session.js +0 -69
  142. package/providers/_builtin/ide/windsurf/scripts/open_panel.js +0 -58
  143. package/providers/_builtin/ide/windsurf/scripts/read_chat.js +0 -297
  144. package/providers/_builtin/ide/windsurf/scripts/resolve_action.js +0 -68
  145. package/providers/_builtin/ide/windsurf/scripts/send_message.js +0 -87
  146. package/providers/_builtin/ide/windsurf/scripts/set_mode.js +0 -15
  147. package/providers/_builtin/ide/windsurf/scripts/set_model.js +0 -15
  148. package/providers/_builtin/ide/windsurf/scripts/switch_session.js +0 -58
  149. package/providers/_builtin/ide/windsurf/scripts.js +0 -57
  150. package/providers/_builtin/validate.js +0 -156
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adhdev",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "ADHDev — Agent Dashboard Hub for Dev. Remote-control AI coding agents from anywhere.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -14,7 +14,6 @@
14
14
  },
15
15
  "files": [
16
16
  "dist",
17
- "providers",
18
17
  "README.md"
19
18
  ],
20
19
  "keywords": [
@@ -42,6 +41,7 @@
42
41
  "node": ">=18"
43
42
  },
44
43
  "dependencies": {
44
+ "@adhdev/daemon-core": "*",
45
45
  "chalk": "^5.3.0",
46
46
  "commander": "^12.1.0",
47
47
  "conf": "^13.0.0",
@@ -1,217 +0,0 @@
1
- # ADHDev Provider Compatibility Matrix
2
-
3
- > **Last updated:** 2026-03-18
4
- > **How to contribute:** Submit a PR updating the status for your OS/version. See [Status Legend](#status-legend) below.
5
-
6
- ## Status Legend
7
-
8
- | Symbol | Meaning |
9
- |--------|---------|
10
- | ✅ | Tested & working |
11
- | ⚠️ | Partial — works with known issues (add note) |
12
- | ❌ | Tested & not working |
13
- | ➖ | Not applicable (tool doesn't exist on this OS) |
14
- | ❓ | Untested — **needs volunteer** |
15
-
16
- ---
17
-
18
- ## IDE Providers
19
-
20
- > Detected via process scanning + controlled via CDP (Chrome DevTools Protocol).
21
-
22
- ### OS Compatibility
23
-
24
- | Provider | Display Name | macOS | Windows | Linux | Tested Versions | Notes |
25
- |----------|-------------|-------|---------|-------|-----------------|-------|
26
- | `antigravity` | Antigravity | ❓ | ❓ | ❓ | | |
27
- | `cursor` | Cursor | ❓ | ❓ | ❓ | | |
28
- | `kiro` | Kiro | ❓ | ❓ | ❓ | | |
29
- | `pearai` | PearAI | ❓ | ❓ | ❓ | | |
30
- | `trae` | Trae | ❓ | ❓ | ❓ | | |
31
- | `vscode` | Visual Studio Code | ❓ | ❓ | ❓ | | Detection only (no scripts) |
32
- | `vscode-insiders` | VS Code Insiders | ❓ | ❓ | ❓ | | Detection only (no scripts) |
33
- | `vscodium` | VSCodium | ❓ | ❓ | ❓ | | Detection only (no scripts) |
34
- | `windsurf` | Windsurf | ❓ | ❓ | ❓ | | |
35
-
36
- ### Script Methods — IDE
37
-
38
- | Provider | readChat | sendMessage | openPanel | listSessions | switchSession | newSession | listModels | setModel | listModes | setMode | resolveAction | focusEditor |
39
- |----------|----------|-------------|-----------|--------------|---------------|------------|------------|----------|-----------|---------|---------------|-------------|
40
- | `antigravity` | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
41
- | `cursor` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
42
- | `kiro` | webview | webview | ✅ | webview | webview¹ | webview | webview | webview | webview | webview | ✅ | ✅ |
43
- | `pearai` | webview | webview | ✅ | ✅/webview | webview¹ | ✅ | webview | webview | webview | webview | webview | ✅ |
44
- | `trae` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
45
- | `vscode` | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ |
46
- | `vscode-insiders` | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ |
47
- | `vscodium` | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ |
48
- | `windsurf` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
49
-
50
- > ¹ `webview` = method operates via webview bridge (internal iframe communication), not direct DOM.
51
- > `➖` = detection only, no AI chat integration scripts.
52
-
53
- ---
54
-
55
- ## Extension Providers
56
-
57
- > VS Code extensions detected inside IDE instances, controlled via CDP within the host IDE.
58
-
59
- ### OS Compatibility
60
-
61
- | Provider | Display Name | macOS | Windows | Linux | Tested Versions | Notes |
62
- |----------|-------------|-------|---------|-------|-----------------|-------|
63
- | `cline` | Cline | ❓ | ❓ | ❓ | | |
64
- | `roo-code` | Roo Code | ❓ | ❓ | ❓ | | |
65
-
66
- ### Script Methods — Extension
67
-
68
- | Provider | readChat | sendMessage | openPanel | listSessions | switchSession | newSession | listModels | setModel | listModes | setMode | resolveAction | focusEditor |
69
- |----------|----------|-------------|-----------|--------------|---------------|------------|------------|----------|-----------|---------|---------------|-------------|
70
- | `cline` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
71
- | `roo-code` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
72
-
73
- ---
74
-
75
- ## CLI Providers
76
-
77
- > Terminal-based agents spawned as child processes, controlled via PTY.
78
-
79
- ### OS Compatibility
80
-
81
- | Provider | Display Name | macOS | Windows | Linux | Tested Versions | Notes |
82
- |----------|-------------|-------|---------|-------|-----------------|-------|
83
- | `claude-cli` | Claude Code | ❓ | ❓ | ❓ | | |
84
- | `codex-cli` | Codex CLI | ❓ | ❓ | ❓ | | |
85
- | `gemini-cli` | Gemini CLI | ❓ | ❓ | ❓ | | |
86
-
87
- ### Supported Operations — CLI
88
-
89
- | Operation | Description | All CLI Providers |
90
- |-----------|-------------|-------------------|
91
- | `spawn` | Start agent process in PTY | ✅ |
92
- | `input` | Send text/command to stdin | ✅ |
93
- | `output` | Read stdout/stderr stream | ✅ |
94
- | `resize` | Resize terminal (cols/rows) | ✅ |
95
- | `kill` | Terminate process | ✅ |
96
-
97
- ---
98
-
99
- ## ACP Providers
100
-
101
- > Agent Client Protocol agents spawned as subprocesses, communicating via JSON-RPC over stdio.
102
-
103
- ### OS Compatibility
104
-
105
- | Provider | Display Name | macOS | Windows | Linux | Tested Versions | Notes |
106
- |----------|-------------|-------|---------|-------|-----------------|-------|
107
- | `agentpool` | AgentPool | ❓ | ❓ | ❓ | | |
108
- | `amp` | Amp (Sourcegraph) | ❓ | ❓ | ❓ | | |
109
- | `auggie` | Auggie (Augment Code) | ❓ | ❓ | ❓ | | |
110
- | `autodev` | AutoDev | ❓ | ❓ | ❓ | | |
111
- | `blackbox-ai` | Blackbox AI | ❓ | ❓ | ❓ | | |
112
- | `claude-agent` | Claude Code (ACP) | ❓ | ❓ | ❓ | | |
113
- | `cline-acp` | Cline (ACP) | ❓ | ❓ | ❓ | | |
114
- | `codex-cli` | Codex CLI (ACP) | ❓ | ❓ | ❓ | | |
115
- | `corust-agent` | Corust Agent | ❓ | ❓ | ❓ | | |
116
- | `cursor-acp` | Cursor (ACP) | ❓ | ❓ | ❓ | | |
117
- | `deepagents` | Deep Agents | ❓ | ❓ | ❓ | | |
118
- | `docker-cagent` | Docker cagent | ❓ | ❓ | ❓ | | |
119
- | `factory-droid` | Factory AI Droids | ❓ | ❓ | ❓ | | |
120
- | `fast-agent` | fast-agent | ❓ | ❓ | ❓ | | |
121
- | `gemini-cli` | Gemini CLI (ACP) | ❓ | ❓ | ❓ | | |
122
- | `github-copilot` | GitHub Copilot | ❓ | ❓ | ❓ | | |
123
- | `goose` | Goose | ❓ | ❓ | ❓ | | |
124
- | `junie` | Junie (JetBrains) | ❓ | ❓ | ❓ | | |
125
- | `kilo` | Kilo Code | ❓ | ❓ | ❓ | | |
126
- | `kimi-cli` | Kimi Code CLI | ❓ | ❓ | ❓ | | |
127
- | `mistral-vibe` | Mistral Vibe CLI | ❓ | ❓ | ❓ | | |
128
- | `openclaw` | OpenClaw | ❓ | ❓ | ❓ | | Requires running Gateway |
129
- | `opencode` | OpenCode | ❓ | ❓ | ❓ | | |
130
- | `openhands` | OpenHands | ❓ | ❓ | ❓ | | |
131
- | `pi-acp` | pi | ❓ | ❓ | ❓ | | |
132
- | `qoder` | Qoder CLI | ❓ | ❓ | ❓ | | |
133
- | `qwen-code` | Qwen Code | ❓ | ❓ | ❓ | | |
134
- | `stakpak` | Stakpak | ❓ | ❓ | ❓ | | |
135
- | `vtcode` | VT Code | ❓ | ❓ | ❓ | | |
136
-
137
- ### Supported Operations — ACP
138
-
139
- **Client → Agent (Editor sends to Agent)**
140
-
141
- | Method | Description | Required |
142
- |--------|-------------|----------|
143
- | `initialize` | Handshake, version negotiation, capability exchange | ✅ Required |
144
- | `authenticate` | Token/password auth if agent requires it | Optional |
145
- | `session/new` | Create a new conversation session | ✅ Required |
146
- | `session/prompt` | Send user message with context (files, images) | ✅ Required |
147
- | `session/load` | Resume an existing session | Optional |
148
- | `session/set_mode` | Switch agent operating mode | Optional |
149
- | `session/cancel` | Abort an in-progress prompt (notification) | ✅ Required |
150
-
151
- **Agent → Client (Agent requests from Editor)**
152
-
153
- | Method | Description | Required |
154
- |--------|-------------|----------|
155
- | `session/update` | Stream progress, messages, tool calls (notification) | ✅ Required |
156
- | `session/request_permission` | Ask user approval for an action | Optional |
157
- | `fs/read_text_file` | Read file content including unsaved edits | Optional |
158
- | `fs/write_text_file` | Write or create a file | Optional |
159
- | `terminal/create` | Start a shell command | Optional |
160
- | `terminal/output` | Provide command output | Optional |
161
- | `terminal/wait_for_exit` | Wait for command completion | Optional |
162
- | `terminal/kill` | Terminate a running command | Optional |
163
- | `terminal/release` | Clean up a terminal | Optional |
164
-
165
- ---
166
-
167
- ## How to Test & Report
168
-
169
- ### 1. Run the test
170
-
171
- ```bash
172
- # Start the daemon
173
- adhdev daemon
174
-
175
- # Or standalone mode
176
- node packages/daemon-standalone/dist/index.js
177
- ```
178
-
179
- ### 2. Verify in the dashboard
180
- - Open `http://localhost:3847`
181
- - Check if the provider is detected
182
- - Test: read_chat, send_chat, screenshot (IDE/Extension)
183
- - Test: spawn, input, output (CLI/ACP)
184
-
185
- ### 3. Submit your result
186
- Fork this repo, update the table above with your result, and submit a PR with:
187
-
188
- ```
189
- Provider: <provider-id>
190
- OS: <macOS 15.x / Windows 11 / Ubuntu 24.04 / etc>
191
- Provider Version: <e.g. Cursor 0.48>
192
- Status: ✅ / ⚠️ / ❌
193
- Notes: <any issues encountered>
194
- ```
195
-
196
- ### PR Title Format
197
- ```
198
- compat: <provider-id> <os> <status>
199
- ```
200
- Example: `compat: cursor macOS ✅`
201
-
202
- ---
203
-
204
- ## Version-Specific Notes
205
-
206
- <!--
207
- Add version-specific compatibility notes here as they are discovered.
208
- Example:
209
-
210
- ### Cursor
211
- | Version | macOS | Windows | Linux | Notes |
212
- |---------|-------|---------|-------|-------|
213
- | 0.48.x | ✅ | ❓ | ❓ | |
214
- | 0.47.x | ⚠️ | ❓ | ❓ | CDP port changed |
215
- -->
216
-
217
- _No version-specific notes yet. Submit a PR to add yours!_
@@ -1,141 +0,0 @@
1
- # Contributing to ADHDev Providers
2
-
3
- > How to add new providers or improve existing ones for ADHDev.
4
-
5
- ## Quick Start
6
-
7
- ### 1. Fork & Clone
8
-
9
- ```bash
10
- git clone https://github.com/YOUR_USERNAME/adhdev-providers.git
11
- cd adhdev-providers
12
- ```
13
-
14
- ### 2. Create a Provider
15
-
16
- Create a `provider.js` in the appropriate category directory:
17
-
18
- ```bash
19
- # IDE provider
20
- mkdir -p ide/my-ide && touch ide/my-ide/provider.js
21
-
22
- # CLI agent
23
- mkdir -p cli/my-cli && touch cli/my-cli/provider.js
24
-
25
- # ACP agent
26
- mkdir -p acp/my-agent && touch acp/my-agent/provider.js
27
-
28
- # VS Code extension
29
- mkdir -p extension/my-ext && touch extension/my-ext/provider.js
30
- ```
31
-
32
- ### 3. Provider Structure
33
-
34
- ```javascript
35
- module.exports = {
36
- type: 'my-ide', // unique identifier (must not conflict)
37
- name: 'My IDE', // display name
38
- category: 'ide', // 'ide' | 'extension' | 'cli' | 'acp'
39
- displayName: 'My IDE',
40
- icon: '🔧',
41
-
42
- // IDE: CDP configuration
43
- cdpPorts: [9357, 9358], // use next available ports (see table below)
44
- cli: 'my-ide',
45
- paths: { darwin: ['/Applications/My IDE.app'] },
46
-
47
- // CDP scripts
48
- scripts: {
49
- readChat() { return `(() => { /* ... */ })()`; },
50
- sendMessage(text) { return `(() => { /* ... */ })()`; },
51
- },
52
- };
53
- ```
54
-
55
- > 📖 Full guide: [PROVIDER_GUIDE.md](https://github.com/vilmire/adhdev/blob/main/docs/PROVIDER_GUIDE.md)
56
-
57
- ### 4. Validate
58
-
59
- ```bash
60
- # Syntax check
61
- node -c ide/my-ide/provider.js
62
-
63
- # Schema validation (required fields, port conflicts, etc.)
64
- node validate.js ide/my-ide/provider.js
65
-
66
- # Validate all providers
67
- node validate.js
68
- ```
69
-
70
- ### 5. Local Testing
71
-
72
- ```bash
73
- # If ADHDev is installed:
74
- # Copy your provider to the user directory for instant loading
75
- mkdir -p ~/.adhdev/providers/ide/my-ide
76
- cp ide/my-ide/provider.js ~/.adhdev/providers/ide/my-ide/
77
-
78
- # Restart daemon to pick up changes
79
- adhdev daemon:restart
80
-
81
- # Test scripts via DevConsole
82
- # Open http://127.0.0.1:19280 → IDE tab → Scripts → Run
83
- ```
84
-
85
- ### 6. Submit PR
86
-
87
- ```bash
88
- git checkout -b feat/add-my-ide
89
- git add -A
90
- git commit -m "feat: add My IDE provider"
91
- git push origin feat/add-my-ide
92
- # Open a Pull Request on GitHub
93
- ```
94
-
95
- ---
96
-
97
- ## PR Checklist
98
-
99
- - [ ] `node validate.js` passes with no errors
100
- - [ ] `type` does not conflict with existing providers
101
- - [ ] CDP ports do not overlap with existing ones (for IDE providers)
102
- - [ ] At least `readChat` + `sendMessage` scripts implemented
103
- - [ ] Tested via DevConsole (if ADHDev is available)
104
-
105
- ---
106
-
107
- ## Reference Implementations
108
-
109
- | Category | Reference | Key Features |
110
- |----------|-----------|-------------|
111
- | **IDE (mainframe)** | `ide/cursor/provider.js` | CDP evaluate, `inputMethod` |
112
- | **IDE (webview)** | `ide/kiro/provider.js` | `webviewMatchText`, `webview*` scripts |
113
- | **CLI** | `cli/gemini-cli/provider.js` | `aliases`, spawn config |
114
- | **ACP** | `acp/gemini-cli/provider.js` | `auth`, `spawn`, `settings` |
115
- | **Extension** | `extension/cline/provider.js` | `extensionIdPattern`, webview |
116
-
117
- ---
118
-
119
- ## CDP Port Registry
120
-
121
- | Port | Provider |
122
- |------|----------|
123
- | 9333–9334 | Cursor |
124
- | 9335–9336 | Antigravity |
125
- | 9337–9338 | Windsurf |
126
- | 9339–9340 | VS Code |
127
- | 9341–9342 | VS Code Insiders |
128
- | 9343–9344 | VSCodium |
129
- | 9351–9352 | Kiro |
130
- | 9353–9354 | Trae |
131
- | 9355–9356 | PearAI |
132
-
133
- **Next available: 9357+**
134
-
135
- ---
136
-
137
- ## Need Help?
138
-
139
- - Full provider guide: [PROVIDER_GUIDE.md](https://github.com/vilmire/adhdev/blob/main/docs/PROVIDER_GUIDE.md)
140
- - DOM exploration tips: PROVIDER_GUIDE.md §6
141
- - DevConsole usage: PROVIDER_GUIDE.md §4
@@ -1,51 +0,0 @@
1
- # ADHDev Providers
2
-
3
- > IDE, CLI, Extension, and ACP provider definitions for [ADHDev](https://github.com/vilmire/adhdev).
4
-
5
- ## Structure
6
-
7
- ```
8
- ├── ide/ — IDE providers (Cursor, Windsurf, Kiro, PearAI, etc.)
9
- ├── cli/ — CLI agent providers (Gemini CLI, Claude Code, Codex CLI)
10
- ├── extension/ — VS Code extension providers (Cline, Roo Code)
11
- ├── acp/ — ACP agent providers (40+ agents)
12
- ├── _helpers/ — Shared utility functions
13
- ├── validate.js — Provider schema validator
14
- └── CONTRIBUTING.md — How to add a new provider
15
- ```
16
-
17
- ## Adding a New Provider
18
-
19
- 1. Create `provider.js` in the appropriate category:
20
-
21
- ```bash
22
- mkdir -p ide/my-ide
23
- # Edit ide/my-ide/provider.js
24
- ```
25
-
26
- 2. Validate:
27
-
28
- ```bash
29
- node validate.js ide/my-ide/provider.js
30
- ```
31
-
32
- 3. Submit a PR.
33
-
34
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full workflow, and
35
- [PROVIDER_GUIDE.md](https://github.com/vilmire/adhdev/blob/main/docs/PROVIDER_GUIDE.md) for the complete specification.
36
-
37
- ## How It Works
38
-
39
- This repository is consumed by ADHDev in three ways:
40
-
41
- | Method | When | Directory |
42
- |--------|------|-----------|
43
- | **Bundled** | `npm install -g adhdev` | `_builtin/` (offline fallback) |
44
- | **Auto-updated** | Every daemon start | `~/.adhdev/providers/.upstream/` |
45
- | **User custom** | Manual | `~/.adhdev/providers/` (never overwritten) |
46
-
47
- Loading priority: **User custom > Auto-updated > Bundled**
48
-
49
- ## License
50
-
51
- MIT
@@ -1,188 +0,0 @@
1
- /**
2
- * Provider Helpers — 공유 유틸리티
3
- *
4
- * 각 provider.js에서 require해 사용할 수 있는 공통 함수들.
5
- * 사용은 선택사항 — 각 provider.js는 독립적이어도 됨.
6
- *
7
- * 사용법 (provider.js 내부):
8
- * const { getWebviewDoc, htmlToMd, waitFor } = require('../../_helpers/index.js');
9
- */
10
-
11
- /**
12
- * Extension webview iframe의 contentDocument 접근
13
- * @param {string} [selector='iframe'] - iframe 셀렉터
14
- * @returns {string} CDP evaluate용 JS 코드 (document 변수를 설정)
15
- */
16
- function getWebviewDoc(selector = 'iframe') {
17
- return `
18
- const _iframe = document.querySelector('${selector}');
19
- const _doc = _iframe ? (_iframe.contentDocument || _iframe.contentWindow?.document) : document;
20
- `;
21
- }
22
-
23
- /**
24
- * React Fiber 데이터 추출 헬퍼 코드
25
- * 특정 엔트리 포인트에서 시작해 memoizedState를 순회
26
- * @param {string[]} entrySelectors - 엔트리 포인트 CSS 셀렉터
27
- * @param {number} [maxDepth=200] - Fiber 트리 최대 순회 깊이
28
- * @returns {string} CDP evaluate용 JS 코드 (변수 _fiberData를 설정)
29
- */
30
- function getFiber(entrySelectors, maxDepth = 200) {
31
- const sels = JSON.stringify(entrySelectors);
32
- return `
33
- let _fiberData = null;
34
- const _entryPoints = ${sels};
35
- for (const sel of _entryPoints) {
36
- const el = document.querySelector(sel);
37
- if (!el) continue;
38
- const fk = Object.keys(el).find(k => k.startsWith('__reactFiber'));
39
- if (!fk) continue;
40
- let fib = el[fk];
41
- for (let d = 0; d < ${maxDepth} && fib; d++) {
42
- if (fib.memoizedState) {
43
- let s = fib.memoizedState;
44
- while (s) {
45
- try {
46
- const memo = s.memoizedState;
47
- if (memo && typeof memo === 'object') {
48
- _fiberData = memo;
49
- break;
50
- }
51
- } catch(e) {}
52
- s = s.next;
53
- }
54
- }
55
- if (_fiberData) break;
56
- fib = fib.return;
57
- }
58
- if (_fiberData) break;
59
- }
60
- `;
61
- }
62
-
63
- /**
64
- * 텍스트 입력 + Enter 전송 코드 생성
65
- * @param {string} varName - 텍스트가 저장된 변수명
66
- * @param {string} selectorExpr - 에디터 요소 참조 JS 표현식
67
- * @returns {string} CDP evaluate용 JS 코드
68
- */
69
- function typeAndSubmit(varName, selectorExpr) {
70
- return `
71
- const _editor = ${selectorExpr};
72
- if (_editor) {
73
- _editor.focus();
74
- document.execCommand('selectAll', false, null);
75
- document.execCommand('delete', false, null);
76
- document.execCommand('insertText', false, ${varName});
77
- _editor.dispatchEvent(new Event('input', { bubbles: true }));
78
- await new Promise(r => setTimeout(r, 300));
79
- const _enterOpts = { key: 'Enter', code: 'Enter', keyCode: 13, which: 13, bubbles: true, cancelable: true, composed: true };
80
- _editor.dispatchEvent(new KeyboardEvent('keydown', _enterOpts));
81
- _editor.dispatchEvent(new KeyboardEvent('keypress', _enterOpts));
82
- _editor.dispatchEvent(new KeyboardEvent('keyup', _enterOpts));
83
- }
84
- `;
85
- }
86
-
87
- /**
88
- * 요소 대기 코드 생성
89
- * @param {string} selector - CSS 셀렉터
90
- * @param {number} [timeout=5000] - 최대 대기 시간 (ms)
91
- * @returns {string} CDP evaluate용 JS 코드 (표현식 → 요소 또는 null)
92
- */
93
- function waitFor(selector, timeout = 5000) {
94
- return `
95
- await new Promise((resolve) => {
96
- const _t = Date.now();
97
- const _check = () => {
98
- const el = document.querySelector('${selector}');
99
- if (el && el.offsetWidth > 0) return resolve(el);
100
- if (Date.now() - _t > ${timeout}) return resolve(null);
101
- setTimeout(_check, 200);
102
- };
103
- _check();
104
- })
105
- `;
106
- }
107
-
108
- /**
109
- * HTML → Markdown 변환 함수 (CDP 코드 문자열)
110
- * 대시보드가 ReactMarkdown+remarkGfm을 사용하므로 HTML을 GFM으로 변환 필요
111
- * @returns {string} htmlToMd, childrenToMd 함수 선언 코드
112
- */
113
- function htmlToMdCode() {
114
- return `
115
- function htmlToMd(node) {
116
- if (node.nodeType === 3) return node.textContent || '';
117
- if (node.nodeType !== 1) return '';
118
- const tag = node.tagName;
119
- if (tag === 'STYLE' || tag === 'SCRIPT' || tag === 'SVG') return '';
120
- if (tag === 'TABLE') {
121
- const rows = Array.from(node.querySelectorAll('tr'));
122
- if (rows.length === 0) return '';
123
- const table = rows.map(tr => Array.from(tr.querySelectorAll('th, td')).map(cell => (cell.textContent || '').trim().replace(/\\|/g, '\\\\|')));
124
- if (table.length === 0) return '';
125
- const colCount = Math.max(...table.map(r => r.length));
126
- const header = table[0];
127
- const sep = Array(colCount).fill('---');
128
- const body = table.slice(1);
129
- let md = '| ' + header.join(' | ') + ' |\\n';
130
- md += '| ' + sep.join(' | ') + ' |\\n';
131
- for (const row of body) {
132
- while (row.length < colCount) row.push('');
133
- md += '| ' + row.join(' | ') + ' |\\n';
134
- }
135
- return '\\n' + md + '\\n';
136
- }
137
- if (tag === 'UL') return '\\n' + Array.from(node.children).map(li => '- ' + childrenToMd(li).trim()).join('\\n') + '\\n';
138
- if (tag === 'OL') return '\\n' + Array.from(node.children).map((li, i) => (i + 1) + '. ' + childrenToMd(li).trim()).join('\\n') + '\\n';
139
- if (tag === 'LI') return childrenToMd(node);
140
- if (tag === 'H1') return '\\n# ' + childrenToMd(node).trim() + '\\n';
141
- if (tag === 'H2') return '\\n## ' + childrenToMd(node).trim() + '\\n';
142
- if (tag === 'H3') return '\\n### ' + childrenToMd(node).trim() + '\\n';
143
- if (tag === 'H4') return '\\n#### ' + childrenToMd(node).trim() + '\\n';
144
- if (tag === 'STRONG' || tag === 'B') return '**' + childrenToMd(node).trim() + '**';
145
- if (tag === 'EM' || tag === 'I') return '*' + childrenToMd(node).trim() + '*';
146
- if (tag === 'PRE') {
147
- const codeEl = node.querySelector('code');
148
- const lang = codeEl ? (codeEl.className.match(/language-(\\w+)/)?.[1] || '') : '';
149
- const code = (codeEl || node).textContent || '';
150
- return '\\n\`\`\`' + lang + '\\n' + code.trim() + '\\n\`\`\`\\n';
151
- }
152
- if (tag === 'CODE') {
153
- if (node.parentElement && node.parentElement.tagName === 'PRE') return node.textContent || '';
154
- return '\`' + (node.textContent || '').trim() + '\`';
155
- }
156
- if (tag === 'BLOCKQUOTE') return '\\n> ' + childrenToMd(node).trim().replace(/\\n/g, '\\n> ') + '\\n';
157
- if (tag === 'A') return '[' + childrenToMd(node).trim() + '](' + (node.getAttribute('href') || '') + ')';
158
- if (tag === 'BR') return '\\n';
159
- if (tag === 'P') return '\\n' + childrenToMd(node).trim() + '\\n';
160
- return childrenToMd(node);
161
- }
162
- function childrenToMd(node) {
163
- return Array.from(node.childNodes).map(htmlToMd).join('');
164
- }
165
- `;
166
- }
167
-
168
- /**
169
- * 노이즈 텍스트 필터링 (상태 메시지, MCP 등)
170
- * @param {string} text - 원본 텍스트
171
- * @returns {boolean} true면 노이즈
172
- */
173
- function isNoiseText(text) {
174
- const low = (text || '').trim().toLowerCase();
175
- if (low.length > 60) return false;
176
- if (/^(analyzed\s+\d|edited\s+\d|ran\s+\S|terminal\s|reading|searching)/i.test(low)) return true;
177
- if (/^(mcp|customizationmcp|serversexport)/i.test(low)) return true;
178
- return false;
179
- }
180
-
181
- module.exports = {
182
- getWebviewDoc,
183
- getFiber,
184
- typeAndSubmit,
185
- waitFor,
186
- htmlToMdCode,
187
- isNoiseText,
188
- };
@@ -1,54 +0,0 @@
1
- {
2
- "type": "agentpool-acp",
3
- "name": "AgentPool (ACP)",
4
- "category": "acp",
5
- "displayName": "AgentPool",
6
- "icon": "🏊",
7
- "install": "pip install agentpool (Python/uvx)",
8
- "spawn": {
9
- "command": "agentpool",
10
- "args": [
11
- "acp"
12
- ],
13
- "shell": false
14
- },
15
- "auth": [
16
- {
17
- "type": "agent",
18
- "id": "agentpool",
19
- "name": "AgentPool Auth",
20
- "description": "Configure provider through AgentPool setup"
21
- }
22
- ],
23
- "settings": {
24
- "autoApprove": {
25
- "type": "boolean",
26
- "default": false,
27
- "public": true,
28
- "label": "Auto Approve",
29
- "description": "Automatically approve all tool calls without user confirmation"
30
- },
31
- "approvalAlert": {
32
- "type": "boolean",
33
- "default": true,
34
- "public": true,
35
- "label": "Approval Alerts",
36
- "description": "Show notification when agent requires approval"
37
- },
38
- "longGeneratingAlert": {
39
- "type": "boolean",
40
- "default": true,
41
- "public": true,
42
- "label": "Long Generation Alert",
43
- "description": "Alert when generation takes too long"
44
- },
45
- "longGeneratingThresholdSec": {
46
- "type": "number",
47
- "default": 180,
48
- "public": true,
49
- "label": "Long Generation Threshold (sec)",
50
- "min": 30,
51
- "max": 600
52
- }
53
- }
54
- }