superacli 1.1.2 → 1.1.4

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 (61) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +10 -1
  3. package/__tests__/blogwatcher-plugin.test.js +157 -0
  4. package/__tests__/clix-plugin.test.js +143 -0
  5. package/__tests__/config.test.js +46 -1
  6. package/__tests__/himalaya-plugin.test.js +121 -0
  7. package/__tests__/mcp-adapter.test.js +79 -0
  8. package/__tests__/mcp-local.test.js +43 -1
  9. package/__tests__/mongosh-plugin.test.js +106 -0
  10. package/__tests__/mysql-plugin.test.js +94 -0
  11. package/__tests__/plugin-blogwatcher.test.js +55 -0
  12. package/__tests__/plugin-clix.test.js +51 -0
  13. package/__tests__/plugin-xurl.test.js +51 -0
  14. package/__tests__/server-config-service.test.js +8 -1
  15. package/__tests__/skills.test.js +26 -0
  16. package/__tests__/wacli-plugin.test.js +132 -0
  17. package/__tests__/xurl-plugin.test.js +176 -0
  18. package/cli/adapter-schema.js +7 -0
  19. package/cli/adapters/mcp.js +82 -20
  20. package/cli/config.js +65 -8
  21. package/cli/mcp-local.js +50 -4
  22. package/cli/plugin-install-guidance.js +100 -0
  23. package/cli/skills.js +55 -0
  24. package/cli/supercli.js +1 -1
  25. package/docs/features/adapters.md +6 -2
  26. package/docs/initial/mcp-local-mode.md +3 -0
  27. package/docs/skills-catalog.md +50 -0
  28. package/docs/supported-harnesses.md +20 -0
  29. package/package.json +2 -1
  30. package/plugins/blogwatcher/README.md +52 -0
  31. package/plugins/blogwatcher/plugin.json +195 -0
  32. package/plugins/blogwatcher/scripts/post-install.js +66 -0
  33. package/plugins/blogwatcher/scripts/post-uninstall.js +25 -0
  34. package/plugins/clix/README.md +44 -0
  35. package/plugins/clix/plugin.json +126 -0
  36. package/plugins/clix/scripts/post-install.js +66 -0
  37. package/plugins/clix/scripts/post-uninstall.js +25 -0
  38. package/plugins/himalaya/README.md +48 -0
  39. package/plugins/himalaya/plugin.json +157 -0
  40. package/plugins/mongosh/README.md +56 -0
  41. package/plugins/mongosh/plugin.json +88 -0
  42. package/plugins/mysql/README.md +48 -0
  43. package/plugins/mysql/plugin.json +64 -0
  44. package/plugins/plugins.json +63 -0
  45. package/plugins/wacli/README.md +52 -0
  46. package/plugins/wacli/plugin.json +260 -0
  47. package/plugins/xurl/README.md +52 -0
  48. package/plugins/xurl/plugin.json +239 -0
  49. package/plugins/xurl/scripts/post-install.js +66 -0
  50. package/plugins/xurl/scripts/post-uninstall.js +25 -0
  51. package/server/routes/mcp.js +30 -4
  52. package/server/services/configService.js +9 -1
  53. package/tests/test-blogwatcher-smoke.sh +48 -0
  54. package/tests/test-clix-smoke.sh +44 -0
  55. package/tests/test-himalaya-smoke.sh +47 -0
  56. package/tests/test-mcp-browser-use-smoke.sh +141 -0
  57. package/tests/test-mongosh-smoke.sh +40 -0
  58. package/tests/test-mysql-smoke.sh +37 -0
  59. package/tests/test-plugins-registry.js +35 -0
  60. package/tests/test-wacli-smoke.sh +46 -0
  61. package/tests/test-xurl-smoke.sh +46 -0
@@ -217,6 +217,69 @@
217
217
  "manifest_path": "plugins/nextest/plugin.json"
218
218
  }
219
219
  },
220
+ {
221
+ "name": "mysql",
222
+ "description": "MySQL CLI plugin with version and query wrappers plus passthrough",
223
+ "tags": ["mysql", "database", "sql", "passthrough"],
224
+ "source": {
225
+ "type": "bundled",
226
+ "manifest_path": "plugins/mysql/plugin.json"
227
+ }
228
+ },
229
+ {
230
+ "name": "mongosh",
231
+ "description": "mongosh CLI plugin with ping and eval wrappers plus passthrough",
232
+ "tags": ["mongosh", "mongodb", "mongo", "database", "passthrough"],
233
+ "source": {
234
+ "type": "bundled",
235
+ "manifest_path": "plugins/mongosh/plugin.json"
236
+ }
237
+ },
238
+ {
239
+ "name": "blogwatcher",
240
+ "description": "Hybrid BlogWatcher plugin with remote docs, safe wrappers, and passthrough",
241
+ "tags": ["blogwatcher", "blogs", "rss", "skills", "passthrough"],
242
+ "source": {
243
+ "type": "bundled",
244
+ "manifest_path": "plugins/blogwatcher/plugin.json"
245
+ }
246
+ },
247
+ {
248
+ "name": "himalaya",
249
+ "description": "Himalaya email CLI plugin with safe read-only wrappers and passthrough",
250
+ "tags": ["himalaya", "email", "imap", "smtp", "passthrough"],
251
+ "source": {
252
+ "type": "bundled",
253
+ "manifest_path": "plugins/himalaya/plugin.json"
254
+ }
255
+ },
256
+ {
257
+ "name": "wacli",
258
+ "description": "wacli WhatsApp CLI plugin with safe read-only wrappers",
259
+ "tags": ["wacli", "whatsapp", "messages", "chat", "contacts"],
260
+ "source": {
261
+ "type": "bundled",
262
+ "manifest_path": "plugins/wacli/plugin.json"
263
+ }
264
+ },
265
+ {
266
+ "name": "xurl",
267
+ "description": "Hybrid xurl plugin with remote docs and safe read-only X API wrappers",
268
+ "tags": ["xurl", "x", "twitter", "skills", "api"],
269
+ "source": {
270
+ "type": "bundled",
271
+ "manifest_path": "plugins/xurl/plugin.json"
272
+ }
273
+ },
274
+ {
275
+ "name": "clix",
276
+ "description": "Hybrid clix plugin with remote docs and safe read-only X wrappers",
277
+ "tags": ["clix", "x", "twitter", "skills", "agents"],
278
+ "source": {
279
+ "type": "bundled",
280
+ "manifest_path": "plugins/clix/plugin.json"
281
+ }
282
+ },
220
283
  {
221
284
  "name": "cline",
222
285
  "description": "Cline CLI plugin with rich non-interactive task wrappers and passthrough",
@@ -0,0 +1,52 @@
1
+ # wacli Plugin Harness
2
+
3
+ This plugin integrates `wacli` into dcli with safe read-only wrappers for local WhatsApp state and diagnostics.
4
+
5
+ ## Why This Scope
6
+
7
+ `wacli` manages a personal WhatsApp session and store. The wrapped commands in this plugin are intentionally limited to read-only inspection and diagnostics.
8
+
9
+ - no auth QR flow wrapper
10
+ - no sync loop wrapper
11
+ - no send or group mutation wrappers
12
+ - no wildcard passthrough in v1
13
+
14
+ ## Prerequisites
15
+
16
+ Ensure `wacli` is available on your machine:
17
+
18
+ ```bash
19
+ wacli --version
20
+ ```
21
+
22
+ If you use a non-default store, pass `--store /path/to/store`. The upstream default is `~/.wacli`.
23
+
24
+ ## Available Commands
25
+
26
+ ```bash
27
+ # Version and diagnostics
28
+ dcli wacli cli version --json
29
+ dcli wacli doctor run --json
30
+ dcli wacli auth status --json
31
+
32
+ # Chats and messages
33
+ dcli wacli chats list --json
34
+ dcli wacli chats show --jid 1234567890@s.whatsapp.net --json
35
+ dcli wacli messages list --chat 1234567890@s.whatsapp.net --limit 20 --json
36
+ dcli wacli messages search --query meeting --limit 20 --json
37
+ dcli wacli messages show --chat 1234567890@s.whatsapp.net --id MSG123 --json
38
+ dcli wacli messages context --chat 1234567890@s.whatsapp.net --id MSG123 --before 3 --after 3 --json
39
+
40
+ # Contacts and groups
41
+ dcli wacli contacts search --query alice --json
42
+ dcli wacli contacts show --jid 1234567890@s.whatsapp.net --json
43
+ dcli wacli groups list --json
44
+ dcli wacli groups info --jid 123456789@g.us --json
45
+ ```
46
+
47
+ ## Notes
48
+
49
+ - Wrapped commands always request upstream `--json` output and return parsed data in the dcli envelope.
50
+ - `wacli` stores session keys and message history under `~/.wacli` by default; treat that directory as sensitive.
51
+ - Upstream store locking means read commands can fail if another `wacli` process already holds the same store.
52
+ - Use upstream `wacli` directly for interactive auth, sync, send, media download, and group mutation flows.
@@ -0,0 +1,260 @@
1
+ {
2
+ "name": "wacli",
3
+ "version": "0.1.0",
4
+ "description": "wacli WhatsApp CLI plugin with safe read-only wrappers",
5
+ "source": "https://github.com/steipete/wacli",
6
+ "checks": [
7
+ {
8
+ "type": "binary",
9
+ "name": "wacli"
10
+ }
11
+ ],
12
+ "commands": [
13
+ {
14
+ "namespace": "wacli",
15
+ "resource": "cli",
16
+ "action": "version",
17
+ "description": "Show wacli CLI version",
18
+ "adapter": "process",
19
+ "adapterConfig": {
20
+ "command": "wacli",
21
+ "baseArgs": ["--version"],
22
+ "parseJson": false,
23
+ "missingDependencyHelp": "Please install wacli to use this command."
24
+ },
25
+ "args": []
26
+ },
27
+ {
28
+ "namespace": "wacli",
29
+ "resource": "doctor",
30
+ "action": "run",
31
+ "description": "Run wacli diagnostics as JSON",
32
+ "adapter": "process",
33
+ "adapterConfig": {
34
+ "command": "wacli",
35
+ "baseArgs": ["doctor", "--json"],
36
+ "parseJson": true,
37
+ "timeout_ms": 15000,
38
+ "missingDependencyHelp": "Please install wacli to use this command."
39
+ },
40
+ "args": [
41
+ { "name": "store", "type": "string", "required": false }
42
+ ]
43
+ },
44
+ {
45
+ "namespace": "wacli",
46
+ "resource": "auth",
47
+ "action": "status",
48
+ "description": "Show authentication status as JSON",
49
+ "adapter": "process",
50
+ "adapterConfig": {
51
+ "command": "wacli",
52
+ "baseArgs": ["auth", "status", "--json"],
53
+ "parseJson": true,
54
+ "timeout_ms": 15000,
55
+ "missingDependencyHelp": "Please install wacli to use this command."
56
+ },
57
+ "args": [
58
+ { "name": "store", "type": "string", "required": false }
59
+ ]
60
+ },
61
+ {
62
+ "namespace": "wacli",
63
+ "resource": "chats",
64
+ "action": "list",
65
+ "description": "List chats as JSON",
66
+ "adapter": "process",
67
+ "adapterConfig": {
68
+ "command": "wacli",
69
+ "baseArgs": ["chats", "list", "--json"],
70
+ "parseJson": true,
71
+ "timeout_ms": 15000,
72
+ "missingDependencyHelp": "Please install wacli to use this command."
73
+ },
74
+ "args": [
75
+ { "name": "store", "type": "string", "required": false },
76
+ { "name": "query", "type": "string", "required": false },
77
+ { "name": "limit", "type": "integer", "required": false }
78
+ ]
79
+ },
80
+ {
81
+ "namespace": "wacli",
82
+ "resource": "chats",
83
+ "action": "show",
84
+ "description": "Show a chat by JID as JSON",
85
+ "adapter": "process",
86
+ "adapterConfig": {
87
+ "command": "wacli",
88
+ "baseArgs": ["chats", "show", "--json"],
89
+ "parseJson": true,
90
+ "timeout_ms": 15000,
91
+ "missingDependencyHelp": "Please install wacli to use this command."
92
+ },
93
+ "args": [
94
+ { "name": "jid", "type": "string", "required": true },
95
+ { "name": "store", "type": "string", "required": false }
96
+ ]
97
+ },
98
+ {
99
+ "namespace": "wacli",
100
+ "resource": "messages",
101
+ "action": "list",
102
+ "description": "List messages as JSON",
103
+ "adapter": "process",
104
+ "adapterConfig": {
105
+ "command": "wacli",
106
+ "baseArgs": ["messages", "list", "--json"],
107
+ "parseJson": true,
108
+ "timeout_ms": 15000,
109
+ "missingDependencyHelp": "Please install wacli to use this command."
110
+ },
111
+ "args": [
112
+ { "name": "store", "type": "string", "required": false },
113
+ { "name": "chat", "type": "string", "required": false },
114
+ { "name": "limit", "type": "integer", "required": false },
115
+ { "name": "before", "type": "string", "required": false },
116
+ { "name": "after", "type": "string", "required": false }
117
+ ]
118
+ },
119
+ {
120
+ "namespace": "wacli",
121
+ "resource": "messages",
122
+ "action": "search",
123
+ "description": "Search messages as JSON",
124
+ "adapter": "process",
125
+ "adapterConfig": {
126
+ "command": "wacli",
127
+ "baseArgs": ["messages", "search", "--json"],
128
+ "positionalArgs": ["query"],
129
+ "flagsBeforePositionals": false,
130
+ "parseJson": true,
131
+ "timeout_ms": 15000,
132
+ "missingDependencyHelp": "Please install wacli to use this command."
133
+ },
134
+ "args": [
135
+ { "name": "query", "type": "string", "required": true },
136
+ { "name": "store", "type": "string", "required": false },
137
+ { "name": "chat", "type": "string", "required": false },
138
+ { "name": "from", "type": "string", "required": false },
139
+ { "name": "limit", "type": "integer", "required": false },
140
+ { "name": "before", "type": "string", "required": false },
141
+ { "name": "after", "type": "string", "required": false },
142
+ { "name": "type", "type": "string", "required": false }
143
+ ]
144
+ },
145
+ {
146
+ "namespace": "wacli",
147
+ "resource": "messages",
148
+ "action": "show",
149
+ "description": "Show a specific message as JSON",
150
+ "adapter": "process",
151
+ "adapterConfig": {
152
+ "command": "wacli",
153
+ "baseArgs": ["messages", "show", "--json"],
154
+ "parseJson": true,
155
+ "timeout_ms": 15000,
156
+ "missingDependencyHelp": "Please install wacli to use this command."
157
+ },
158
+ "args": [
159
+ { "name": "chat", "type": "string", "required": true },
160
+ { "name": "id", "type": "string", "required": true },
161
+ { "name": "store", "type": "string", "required": false }
162
+ ]
163
+ },
164
+ {
165
+ "namespace": "wacli",
166
+ "resource": "messages",
167
+ "action": "context",
168
+ "description": "Show message context as JSON",
169
+ "adapter": "process",
170
+ "adapterConfig": {
171
+ "command": "wacli",
172
+ "baseArgs": ["messages", "context", "--json"],
173
+ "parseJson": true,
174
+ "timeout_ms": 15000,
175
+ "missingDependencyHelp": "Please install wacli to use this command."
176
+ },
177
+ "args": [
178
+ { "name": "chat", "type": "string", "required": true },
179
+ { "name": "id", "type": "string", "required": true },
180
+ { "name": "before", "type": "integer", "required": false },
181
+ { "name": "after", "type": "integer", "required": false },
182
+ { "name": "store", "type": "string", "required": false }
183
+ ]
184
+ },
185
+ {
186
+ "namespace": "wacli",
187
+ "resource": "contacts",
188
+ "action": "search",
189
+ "description": "Search contacts as JSON",
190
+ "adapter": "process",
191
+ "adapterConfig": {
192
+ "command": "wacli",
193
+ "baseArgs": ["contacts", "search", "--json"],
194
+ "positionalArgs": ["query"],
195
+ "flagsBeforePositionals": false,
196
+ "parseJson": true,
197
+ "timeout_ms": 15000,
198
+ "missingDependencyHelp": "Please install wacli to use this command."
199
+ },
200
+ "args": [
201
+ { "name": "query", "type": "string", "required": true },
202
+ { "name": "store", "type": "string", "required": false }
203
+ ]
204
+ },
205
+ {
206
+ "namespace": "wacli",
207
+ "resource": "contacts",
208
+ "action": "show",
209
+ "description": "Show a contact by JID as JSON",
210
+ "adapter": "process",
211
+ "adapterConfig": {
212
+ "command": "wacli",
213
+ "baseArgs": ["contacts", "show", "--json"],
214
+ "parseJson": true,
215
+ "timeout_ms": 15000,
216
+ "missingDependencyHelp": "Please install wacli to use this command."
217
+ },
218
+ "args": [
219
+ { "name": "jid", "type": "string", "required": true },
220
+ { "name": "store", "type": "string", "required": false }
221
+ ]
222
+ },
223
+ {
224
+ "namespace": "wacli",
225
+ "resource": "groups",
226
+ "action": "list",
227
+ "description": "List groups as JSON",
228
+ "adapter": "process",
229
+ "adapterConfig": {
230
+ "command": "wacli",
231
+ "baseArgs": ["groups", "list", "--json"],
232
+ "parseJson": true,
233
+ "timeout_ms": 15000,
234
+ "missingDependencyHelp": "Please install wacli to use this command."
235
+ },
236
+ "args": [
237
+ { "name": "store", "type": "string", "required": false },
238
+ { "name": "query", "type": "string", "required": false }
239
+ ]
240
+ },
241
+ {
242
+ "namespace": "wacli",
243
+ "resource": "groups",
244
+ "action": "info",
245
+ "description": "Show group info as JSON",
246
+ "adapter": "process",
247
+ "adapterConfig": {
248
+ "command": "wacli",
249
+ "baseArgs": ["groups", "info", "--json"],
250
+ "parseJson": true,
251
+ "timeout_ms": 15000,
252
+ "missingDependencyHelp": "Please install wacli to use this command."
253
+ },
254
+ "args": [
255
+ { "name": "jid", "type": "string", "required": true },
256
+ { "name": "store", "type": "string", "required": false }
257
+ ]
258
+ }
259
+ ]
260
+ }
@@ -0,0 +1,52 @@
1
+ # xurl Plugin Harness
2
+
3
+ This plugin is a hybrid harness for `xurl`: it indexes the upstream `SKILL.md` and `README.md` into the local skills catalog and exposes a curated set of safe read-only X API wrappers.
4
+
5
+ ## Why This Scope
6
+
7
+ `xurl` can post, like, follow, upload media, manage auth state, and make arbitrary raw API requests. The wrapped commands in this plugin intentionally focus on low-risk inspection workflows.
8
+
9
+ - upstream agent docs are indexed into the skills catalog
10
+ - read-only wrappers are exposed for common account and timeline lookups
11
+ - no wildcard passthrough in v1
12
+ - no auth mutation, posting, social mutations, media upload, stream, or webhook wrappers
13
+
14
+ ## Install
15
+
16
+ ```bash
17
+ supercli plugins install xurl --json
18
+ ```
19
+
20
+ ## Explore Indexed Skills
21
+
22
+ ```bash
23
+ supercli skills list --catalog --provider xurl --json
24
+ supercli skills get xurl:root.skill
25
+ supercli skills get xurl:root.readme
26
+ ```
27
+
28
+ ## Available CLI Commands
29
+
30
+ ```bash
31
+ # Wrapped status commands
32
+ supercli xurl cli version --json
33
+ supercli xurl auth status --json
34
+ supercli xurl apps list --json
35
+
36
+ # Wrapped read-only JSON commands
37
+ supercli xurl account whoami --json
38
+ supercli xurl users show --target XDevelopers --json
39
+ supercli xurl posts show --target https://x.com/XDevelopers/status/123 --json
40
+ supercli xurl posts search --query "from:XDevelopers" --max-results 10 --json
41
+ supercli xurl timeline list --max-results 10 --json
42
+ supercli xurl mentions list --max-results 10 --json
43
+ supercli xurl social followers --of XDevelopers --max-results 20 --json
44
+ supercli xurl social following --of XDevelopers --max-results 20 --json
45
+ ```
46
+
47
+ ## Notes
48
+
49
+ - Wrapped JSON commands force `NO_COLOR=1` so dcli can parse upstream pretty-printed JSON reliably.
50
+ - `~/.xurl` stores app credentials and tokens. Never paste its contents into chat or logs.
51
+ - Use upstream `xurl` directly for OAuth setup, posting, likes, follows, DMs, media upload, raw requests, streams, and webhooks.
52
+ - Removing the plugin also removes its registered skills provider from the local catalog.
@@ -0,0 +1,239 @@
1
+ {
2
+ "name": "xurl",
3
+ "version": "0.1.0",
4
+ "description": "Hybrid xurl plugin with remote agent docs and safe read-only X API wrappers",
5
+ "source": "https://github.com/xdevplatform/xurl",
6
+ "checks": [
7
+ { "type": "binary", "name": "curl" },
8
+ { "type": "binary", "name": "xurl" }
9
+ ],
10
+ "post_install": {
11
+ "script": "scripts/post-install.js",
12
+ "runtime": "node",
13
+ "timeout_ms": 15000
14
+ },
15
+ "post_uninstall": {
16
+ "script": "scripts/post-uninstall.js",
17
+ "runtime": "node",
18
+ "timeout_ms": 15000
19
+ },
20
+ "commands": [
21
+ {
22
+ "namespace": "xurl",
23
+ "resource": "cli",
24
+ "action": "version",
25
+ "description": "Show xurl CLI version",
26
+ "adapter": "process",
27
+ "adapterConfig": {
28
+ "command": "xurl",
29
+ "baseArgs": ["version"],
30
+ "parseJson": false,
31
+ "missingDependencyHelp": "Please install xurl to use this command."
32
+ },
33
+ "args": []
34
+ },
35
+ {
36
+ "namespace": "xurl",
37
+ "resource": "auth",
38
+ "action": "status",
39
+ "description": "Show xurl authentication status",
40
+ "adapter": "process",
41
+ "adapterConfig": {
42
+ "command": "xurl",
43
+ "baseArgs": ["auth", "status"],
44
+ "parseJson": false,
45
+ "timeout_ms": 15000,
46
+ "missingDependencyHelp": "Please install xurl to use this command."
47
+ },
48
+ "args": []
49
+ },
50
+ {
51
+ "namespace": "xurl",
52
+ "resource": "apps",
53
+ "action": "list",
54
+ "description": "List registered xurl apps",
55
+ "adapter": "process",
56
+ "adapterConfig": {
57
+ "command": "xurl",
58
+ "baseArgs": ["auth", "apps", "list"],
59
+ "parseJson": false,
60
+ "timeout_ms": 15000,
61
+ "missingDependencyHelp": "Please install xurl to use this command."
62
+ },
63
+ "args": []
64
+ },
65
+ {
66
+ "namespace": "xurl",
67
+ "resource": "account",
68
+ "action": "whoami",
69
+ "description": "Show the authenticated X account as JSON",
70
+ "adapter": "process",
71
+ "adapterConfig": {
72
+ "command": "xurl",
73
+ "baseArgs": ["whoami"],
74
+ "parseJson": true,
75
+ "timeout_ms": 15000,
76
+ "env": { "NO_COLOR": "1" },
77
+ "missingDependencyHelp": "Please install xurl to use this command."
78
+ },
79
+ "args": [
80
+ { "name": "app", "type": "string", "required": false },
81
+ { "name": "auth", "type": "string", "required": false },
82
+ { "name": "username", "type": "string", "required": false }
83
+ ]
84
+ },
85
+ {
86
+ "namespace": "xurl",
87
+ "resource": "users",
88
+ "action": "show",
89
+ "description": "Look up an X user by username as JSON",
90
+ "adapter": "process",
91
+ "adapterConfig": {
92
+ "command": "xurl",
93
+ "baseArgs": ["user"],
94
+ "positionalArgs": ["target"],
95
+ "parseJson": true,
96
+ "timeout_ms": 15000,
97
+ "env": { "NO_COLOR": "1" },
98
+ "missingDependencyHelp": "Please install xurl to use this command."
99
+ },
100
+ "args": [
101
+ { "name": "target", "type": "string", "required": true },
102
+ { "name": "app", "type": "string", "required": false },
103
+ { "name": "auth", "type": "string", "required": false },
104
+ { "name": "username", "type": "string", "required": false }
105
+ ]
106
+ },
107
+ {
108
+ "namespace": "xurl",
109
+ "resource": "posts",
110
+ "action": "show",
111
+ "description": "Read a post by ID or URL as JSON",
112
+ "adapter": "process",
113
+ "adapterConfig": {
114
+ "command": "xurl",
115
+ "baseArgs": ["read"],
116
+ "positionalArgs": ["target"],
117
+ "parseJson": true,
118
+ "timeout_ms": 15000,
119
+ "env": { "NO_COLOR": "1" },
120
+ "missingDependencyHelp": "Please install xurl to use this command."
121
+ },
122
+ "args": [
123
+ { "name": "target", "type": "string", "required": true },
124
+ { "name": "app", "type": "string", "required": false },
125
+ { "name": "auth", "type": "string", "required": false },
126
+ { "name": "username", "type": "string", "required": false }
127
+ ]
128
+ },
129
+ {
130
+ "namespace": "xurl",
131
+ "resource": "posts",
132
+ "action": "search",
133
+ "description": "Search recent posts as JSON",
134
+ "adapter": "process",
135
+ "adapterConfig": {
136
+ "command": "xurl",
137
+ "baseArgs": ["search"],
138
+ "positionalArgs": ["query"],
139
+ "parseJson": true,
140
+ "timeout_ms": 15000,
141
+ "env": { "NO_COLOR": "1" },
142
+ "missingDependencyHelp": "Please install xurl to use this command."
143
+ },
144
+ "args": [
145
+ { "name": "query", "type": "string", "required": true },
146
+ { "name": "max-results", "type": "integer", "required": false },
147
+ { "name": "app", "type": "string", "required": false },
148
+ { "name": "auth", "type": "string", "required": false },
149
+ { "name": "username", "type": "string", "required": false }
150
+ ]
151
+ },
152
+ {
153
+ "namespace": "xurl",
154
+ "resource": "timeline",
155
+ "action": "list",
156
+ "description": "Show the home timeline as JSON",
157
+ "adapter": "process",
158
+ "adapterConfig": {
159
+ "command": "xurl",
160
+ "baseArgs": ["timeline"],
161
+ "parseJson": true,
162
+ "timeout_ms": 15000,
163
+ "env": { "NO_COLOR": "1" },
164
+ "missingDependencyHelp": "Please install xurl to use this command."
165
+ },
166
+ "args": [
167
+ { "name": "max-results", "type": "integer", "required": false },
168
+ { "name": "app", "type": "string", "required": false },
169
+ { "name": "auth", "type": "string", "required": false },
170
+ { "name": "username", "type": "string", "required": false }
171
+ ]
172
+ },
173
+ {
174
+ "namespace": "xurl",
175
+ "resource": "mentions",
176
+ "action": "list",
177
+ "description": "Show mentions as JSON",
178
+ "adapter": "process",
179
+ "adapterConfig": {
180
+ "command": "xurl",
181
+ "baseArgs": ["mentions"],
182
+ "parseJson": true,
183
+ "timeout_ms": 15000,
184
+ "env": { "NO_COLOR": "1" },
185
+ "missingDependencyHelp": "Please install xurl to use this command."
186
+ },
187
+ "args": [
188
+ { "name": "max-results", "type": "integer", "required": false },
189
+ { "name": "app", "type": "string", "required": false },
190
+ { "name": "auth", "type": "string", "required": false },
191
+ { "name": "username", "type": "string", "required": false }
192
+ ]
193
+ },
194
+ {
195
+ "namespace": "xurl",
196
+ "resource": "social",
197
+ "action": "followers",
198
+ "description": "List followers as JSON",
199
+ "adapter": "process",
200
+ "adapterConfig": {
201
+ "command": "xurl",
202
+ "baseArgs": ["followers"],
203
+ "parseJson": true,
204
+ "timeout_ms": 15000,
205
+ "env": { "NO_COLOR": "1" },
206
+ "missingDependencyHelp": "Please install xurl to use this command."
207
+ },
208
+ "args": [
209
+ { "name": "of", "type": "string", "required": false },
210
+ { "name": "max-results", "type": "integer", "required": false },
211
+ { "name": "app", "type": "string", "required": false },
212
+ { "name": "auth", "type": "string", "required": false },
213
+ { "name": "username", "type": "string", "required": false }
214
+ ]
215
+ },
216
+ {
217
+ "namespace": "xurl",
218
+ "resource": "social",
219
+ "action": "following",
220
+ "description": "List following accounts as JSON",
221
+ "adapter": "process",
222
+ "adapterConfig": {
223
+ "command": "xurl",
224
+ "baseArgs": ["following"],
225
+ "parseJson": true,
226
+ "timeout_ms": 15000,
227
+ "env": { "NO_COLOR": "1" },
228
+ "missingDependencyHelp": "Please install xurl to use this command."
229
+ },
230
+ "args": [
231
+ { "name": "of", "type": "string", "required": false },
232
+ { "name": "max-results", "type": "integer", "required": false },
233
+ { "name": "app", "type": "string", "required": false },
234
+ { "name": "auth", "type": "string", "required": false },
235
+ { "name": "username", "type": "string", "required": false }
236
+ ]
237
+ }
238
+ ]
239
+ }