@shadowob/connector 1.1.6 → 1.1.8
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/README.md +39 -7
- package/dist/cli.js +9756 -48
- package/dist/index.cjs +199 -6
- package/dist/index.d.cts +24 -1
- package/dist/index.d.ts +24 -1
- package/dist/index.js +194 -6
- package/hermes-shadowob-plugin/adapter.py +308 -13
- package/hermes-shadowob-plugin/shadow_sdk.py +100 -3
- package/package.json +2 -1
- package/skills/shadowob/SKILL.md +485 -0
package/dist/index.cjs
CHANGED
|
@@ -20,6 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
+
CONNECTOR_RUNTIME_CATALOG: () => CONNECTOR_RUNTIME_CATALOG,
|
|
24
|
+
connectorRuntimeById: () => connectorRuntimeById,
|
|
25
|
+
connectorRuntimeCatalog: () => connectorRuntimeCatalog,
|
|
26
|
+
connectorRuntimeInstallCommand: () => connectorRuntimeInstallCommand,
|
|
27
|
+
connectorRuntimeInstallCommands: () => connectorRuntimeInstallCommands,
|
|
23
28
|
createConnectorPlan: () => createConnectorPlan,
|
|
24
29
|
createConnectorPlans: () => createConnectorPlans
|
|
25
30
|
});
|
|
@@ -31,6 +36,184 @@ var CC_CONNECT_FORK_REF = "63b5d59127b3004bc7002f2d51892b1f2a91ea83";
|
|
|
31
36
|
var CC_CONNECT_FORK_SHORT_REF = CC_CONNECT_FORK_REF.slice(0, 7);
|
|
32
37
|
var CC_CONNECT_FORK_DOCS_URL = `https://github.com/${CC_CONNECT_FORK_REPO}/blob/main/docs/shadowob.md`;
|
|
33
38
|
|
|
39
|
+
// src/runtime-catalog.ts
|
|
40
|
+
var CONNECTOR_RUNTIME_CATALOG = [
|
|
41
|
+
{
|
|
42
|
+
id: "openclaw",
|
|
43
|
+
label: "OpenClaw",
|
|
44
|
+
kind: "openclaw",
|
|
45
|
+
command: "openclaw",
|
|
46
|
+
iconId: "openclaw",
|
|
47
|
+
install: {
|
|
48
|
+
commands: {
|
|
49
|
+
darwin: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"],
|
|
50
|
+
linux: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"],
|
|
51
|
+
win32: [
|
|
52
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard"'
|
|
53
|
+
],
|
|
54
|
+
default: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"]
|
|
55
|
+
},
|
|
56
|
+
helpUrl: "https://docs.openclaw.ai/install/index"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "hermes",
|
|
61
|
+
label: "Hermes Agent",
|
|
62
|
+
kind: "cli",
|
|
63
|
+
command: "hermes",
|
|
64
|
+
iconId: "hermes",
|
|
65
|
+
install: {
|
|
66
|
+
commands: {
|
|
67
|
+
darwin: [
|
|
68
|
+
"curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash"
|
|
69
|
+
],
|
|
70
|
+
linux: [
|
|
71
|
+
"curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash"
|
|
72
|
+
],
|
|
73
|
+
win32: [
|
|
74
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "iex (irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1)"'
|
|
75
|
+
],
|
|
76
|
+
default: ["pipx install hermes-agent"]
|
|
77
|
+
},
|
|
78
|
+
helpUrl: "https://hermes-agent.nousresearch.com/docs/getting-started/installation"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "claude-code",
|
|
83
|
+
label: "Claude Code",
|
|
84
|
+
kind: "cli",
|
|
85
|
+
command: "claude",
|
|
86
|
+
iconId: "claude-code",
|
|
87
|
+
install: {
|
|
88
|
+
commands: {
|
|
89
|
+
default: ["npm install -g @anthropic-ai/claude-code"]
|
|
90
|
+
},
|
|
91
|
+
helpUrl: "https://code.claude.com/docs/en/installation"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "codex",
|
|
96
|
+
label: "Codex CLI",
|
|
97
|
+
kind: "cli",
|
|
98
|
+
command: "codex",
|
|
99
|
+
iconId: "codex",
|
|
100
|
+
install: {
|
|
101
|
+
commands: {
|
|
102
|
+
default: ["npm install -g @openai/codex"]
|
|
103
|
+
},
|
|
104
|
+
helpUrl: "https://help.openai.com/en/articles/11096431-openai-codex-cli-getting-started"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: "opencode",
|
|
109
|
+
label: "OpenCode",
|
|
110
|
+
kind: "cli",
|
|
111
|
+
command: "opencode",
|
|
112
|
+
iconId: "opencode",
|
|
113
|
+
install: {
|
|
114
|
+
commands: {
|
|
115
|
+
default: ["npm install -g opencode-ai"]
|
|
116
|
+
},
|
|
117
|
+
helpUrl: "https://opencli.co/cli/opencode"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "gemini",
|
|
122
|
+
label: "Gemini CLI",
|
|
123
|
+
kind: "cli",
|
|
124
|
+
command: "gemini",
|
|
125
|
+
iconId: "gemini",
|
|
126
|
+
install: {
|
|
127
|
+
commands: {
|
|
128
|
+
default: ["npm install -g @google/gemini-cli"]
|
|
129
|
+
},
|
|
130
|
+
helpUrl: "https://github.com/google-gemini/gemini-cli"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "cursor",
|
|
135
|
+
label: "Cursor CLI",
|
|
136
|
+
kind: "cli",
|
|
137
|
+
command: "cursor-agent",
|
|
138
|
+
commands: ["cursor-agent", "cursor"],
|
|
139
|
+
iconId: "cursor",
|
|
140
|
+
install: {
|
|
141
|
+
commands: {
|
|
142
|
+
default: ["curl https://cursor.com/install -fsS | bash"],
|
|
143
|
+
win32: ["curl.exe https://cursor.com/install -fsS | bash"]
|
|
144
|
+
},
|
|
145
|
+
helpUrl: "https://docs.cursor.com/en/cli/installation"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: "kimi",
|
|
150
|
+
label: "Kimi Code",
|
|
151
|
+
kind: "cli",
|
|
152
|
+
command: "kimi",
|
|
153
|
+
iconId: "kimi",
|
|
154
|
+
install: {
|
|
155
|
+
commands: {
|
|
156
|
+
darwin: ["curl -LsSf https://code.kimi.com/install.sh | bash"],
|
|
157
|
+
linux: ["curl -LsSf https://code.kimi.com/install.sh | bash"],
|
|
158
|
+
win32: [
|
|
159
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://code.kimi.com/install.ps1 | iex"'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
helpUrl: "https://www.kimi.com/code/docs/en/"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "copilot",
|
|
167
|
+
label: "GitHub Copilot CLI",
|
|
168
|
+
kind: "cli",
|
|
169
|
+
command: "copilot",
|
|
170
|
+
iconId: "copilot",
|
|
171
|
+
install: {
|
|
172
|
+
commands: {
|
|
173
|
+
darwin: ["brew install copilot-cli", "curl -fsSL https://gh.io/copilot-install | bash"],
|
|
174
|
+
linux: ["brew install copilot-cli", "curl -fsSL https://gh.io/copilot-install | bash"],
|
|
175
|
+
win32: ["winget install GitHub.Copilot.Prerelease"]
|
|
176
|
+
},
|
|
177
|
+
helpUrl: "https://docs.github.com/en/copilot/how-tos/copilot-cli/install-copilot-cli"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: "antigravity",
|
|
182
|
+
label: "Antigravity CLI",
|
|
183
|
+
kind: "cli",
|
|
184
|
+
command: "agy",
|
|
185
|
+
commands: ["agy", "antigravity"],
|
|
186
|
+
iconId: "antigravity",
|
|
187
|
+
install: {
|
|
188
|
+
commands: {
|
|
189
|
+
darwin: ["open https://www.antigravity.google/product/antigravity-cli"],
|
|
190
|
+
linux: ["xdg-open https://www.antigravity.google/product/antigravity-cli"],
|
|
191
|
+
win32: ["start https://www.antigravity.google/product/antigravity-cli"]
|
|
192
|
+
},
|
|
193
|
+
helpUrl: "https://www.antigravity.google/product/antigravity-cli"
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
];
|
|
197
|
+
function connectorRuntimeCatalog() {
|
|
198
|
+
return CONNECTOR_RUNTIME_CATALOG.map((entry) => ({ ...entry }));
|
|
199
|
+
}
|
|
200
|
+
function connectorRuntimeById(runtimeId) {
|
|
201
|
+
if (!runtimeId) return null;
|
|
202
|
+
return CONNECTOR_RUNTIME_CATALOG.find((entry) => entry.id === runtimeId) ?? null;
|
|
203
|
+
}
|
|
204
|
+
function currentRuntimePlatform() {
|
|
205
|
+
return typeof process !== "undefined" && process.platform ? process.platform : "default";
|
|
206
|
+
}
|
|
207
|
+
function connectorRuntimeInstallCommands(runtimeId, targetPlatform = currentRuntimePlatform()) {
|
|
208
|
+
const runtime = connectorRuntimeById(runtimeId);
|
|
209
|
+
if (!runtime) return [];
|
|
210
|
+
const commands = runtime.install.commands;
|
|
211
|
+
return commands?.[targetPlatform] ?? commands?.default ?? [];
|
|
212
|
+
}
|
|
213
|
+
function connectorRuntimeInstallCommand(runtimeId, targetPlatform = currentRuntimePlatform()) {
|
|
214
|
+
return connectorRuntimeInstallCommands(runtimeId, targetPlatform)[0] ?? null;
|
|
215
|
+
}
|
|
216
|
+
|
|
34
217
|
// src/index.ts
|
|
35
218
|
var DEFAULT_SERVER_URL = "https://shadowob.com";
|
|
36
219
|
var DEFAULT_WORK_DIR = ".";
|
|
@@ -88,17 +271,20 @@ function buildOpenClawPlan(input) {
|
|
|
88
271
|
return {
|
|
89
272
|
target: "openclaw",
|
|
90
273
|
title: "OpenClaw",
|
|
91
|
-
summary: "Install the Shadow channel plugin and
|
|
274
|
+
summary: "Install the Shadow channel plugin, Shadow CLI bin/skills, and a Buddy CLI profile for OpenClaw.",
|
|
92
275
|
connectCommand,
|
|
93
276
|
quickCommand,
|
|
94
277
|
commands,
|
|
95
|
-
configBlocks: [{ label: "openclaw.json", language: "json", content: jsonConfig }],
|
|
278
|
+
configBlocks: [{ label: "~/.openclaw/openclaw.json", language: "json", content: jsonConfig }],
|
|
96
279
|
aiPrompt: [
|
|
97
280
|
"Configure this Shadow Buddy in OpenClaw.",
|
|
98
281
|
"",
|
|
99
282
|
`Shadow server URL: ${serverUrl}`,
|
|
100
283
|
`Buddy token: ${token}`,
|
|
101
284
|
"",
|
|
285
|
+
`Preferred one-line setup: ${connectCommand}`,
|
|
286
|
+
"The connector installs/configures the Shadow CLI, official Shadow skill files, and the Buddy profile before applying the OpenClaw channel config.",
|
|
287
|
+
"",
|
|
102
288
|
"Run these steps in order:",
|
|
103
289
|
...commands.map((item, index) => `${index + 1}. ${item.command}`),
|
|
104
290
|
"",
|
|
@@ -183,7 +369,7 @@ function buildHermesPlan(input) {
|
|
|
183
369
|
return {
|
|
184
370
|
target: "hermes",
|
|
185
371
|
title: "Hermes Agent",
|
|
186
|
-
summary: "Install the ShadowOB Hermes platform plugin
|
|
372
|
+
summary: "Install the ShadowOB Hermes platform plugin, Shadow CLI bin/skills, and a Buddy CLI profile.",
|
|
187
373
|
connectCommand,
|
|
188
374
|
quickCommand: commands.map((item) => item.command).join(" && "),
|
|
189
375
|
commands,
|
|
@@ -197,7 +383,8 @@ function buildHermesPlan(input) {
|
|
|
197
383
|
`Shadow server URL: ${serverUrl}`,
|
|
198
384
|
`Buddy token: ${token}`,
|
|
199
385
|
"",
|
|
200
|
-
|
|
386
|
+
`Preferred one-line setup: ${connectCommand}`,
|
|
387
|
+
"The connector installs/configures the Shadow CLI, official Shadow skill files, and the Buddy profile before writing Hermes config. The plugin resolves the Buddy agent id and channel policy from Shadow at runtime."
|
|
201
388
|
].join("\n"),
|
|
202
389
|
docsUrl: "https://hermes-agent.nousresearch.com/docs/user-guide/messaging",
|
|
203
390
|
capabilities: [
|
|
@@ -275,7 +462,7 @@ function buildCcConnectPlan(input) {
|
|
|
275
462
|
return {
|
|
276
463
|
target: "cc-connect",
|
|
277
464
|
title: "cc-connect",
|
|
278
|
-
summary: `Use ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF} with ShadowOB Socket.IO
|
|
465
|
+
summary: `Use ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF} with ShadowOB Socket.IO support, Shadow CLI bin/skills, and a Buddy CLI profile.`,
|
|
279
466
|
connectCommand: startCommand,
|
|
280
467
|
quickCommand: startCommand,
|
|
281
468
|
commands,
|
|
@@ -288,7 +475,8 @@ function buildCcConnectPlan(input) {
|
|
|
288
475
|
`Project work_dir: ${workDir}`,
|
|
289
476
|
`Agent type: ${agentType}`,
|
|
290
477
|
"",
|
|
291
|
-
`
|
|
478
|
+
`Preferred one-line setup: ${startCommand}`,
|
|
479
|
+
`Install ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF}, install/configure the Shadow CLI and official Shadow skill files, add the TOML platform block, and start cc-connect.`
|
|
292
480
|
].join("\n"),
|
|
293
481
|
docsUrl: CC_CONNECT_FORK_DOCS_URL,
|
|
294
482
|
capabilities: [
|
|
@@ -322,6 +510,11 @@ function createConnectorPlans(input) {
|
|
|
322
510
|
}
|
|
323
511
|
// Annotate the CommonJS export names for ESM import in node:
|
|
324
512
|
0 && (module.exports = {
|
|
513
|
+
CONNECTOR_RUNTIME_CATALOG,
|
|
514
|
+
connectorRuntimeById,
|
|
515
|
+
connectorRuntimeCatalog,
|
|
516
|
+
connectorRuntimeInstallCommand,
|
|
517
|
+
connectorRuntimeInstallCommands,
|
|
325
518
|
createConnectorPlan,
|
|
326
519
|
createConnectorPlans
|
|
327
520
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
type ConnectorRuntimeKind = 'openclaw' | 'cli';
|
|
2
|
+
type ConnectorRuntimeId = 'openclaw' | 'hermes' | 'claude-code' | 'codex' | 'opencode' | 'gemini' | 'cursor' | 'kimi' | 'copilot' | 'antigravity';
|
|
3
|
+
type ConnectorRuntimePlatform = NodeJS.Platform | 'default';
|
|
4
|
+
interface ConnectorRuntimeInstallSpec {
|
|
5
|
+
commands?: Partial<Record<ConnectorRuntimePlatform, string[]>>;
|
|
6
|
+
helpUrl: string;
|
|
7
|
+
}
|
|
8
|
+
interface ConnectorRuntimeCatalogEntry {
|
|
9
|
+
id: ConnectorRuntimeId;
|
|
10
|
+
label: string;
|
|
11
|
+
kind: ConnectorRuntimeKind;
|
|
12
|
+
command: string;
|
|
13
|
+
commands?: string[];
|
|
14
|
+
versionArgs?: string[];
|
|
15
|
+
iconId: string;
|
|
16
|
+
install: ConnectorRuntimeInstallSpec;
|
|
17
|
+
}
|
|
18
|
+
declare const CONNECTOR_RUNTIME_CATALOG: ConnectorRuntimeCatalogEntry[];
|
|
19
|
+
declare function connectorRuntimeCatalog(): ConnectorRuntimeCatalogEntry[];
|
|
20
|
+
declare function connectorRuntimeById(runtimeId: string | null | undefined): ConnectorRuntimeCatalogEntry | null;
|
|
21
|
+
declare function connectorRuntimeInstallCommands(runtimeId: string, targetPlatform?: ConnectorRuntimePlatform): string[];
|
|
22
|
+
declare function connectorRuntimeInstallCommand(runtimeId: string, targetPlatform?: ConnectorRuntimePlatform): string | null;
|
|
23
|
+
|
|
1
24
|
type ShadowConnectorTarget = 'openclaw' | 'hermes' | 'cc-connect';
|
|
2
25
|
interface ShadowConnectorInput {
|
|
3
26
|
target: ShadowConnectorTarget;
|
|
@@ -32,4 +55,4 @@ interface ConnectorPlan {
|
|
|
32
55
|
declare function createConnectorPlan(input: ShadowConnectorInput): ConnectorPlan;
|
|
33
56
|
declare function createConnectorPlans(input: Omit<ShadowConnectorInput, 'target'>): ConnectorPlan[];
|
|
34
57
|
|
|
35
|
-
export { type ConnectorCommand, type ConnectorConfigBlock, type ConnectorPlan, type ShadowConnectorInput, type ShadowConnectorTarget, createConnectorPlan, createConnectorPlans };
|
|
58
|
+
export { CONNECTOR_RUNTIME_CATALOG, type ConnectorCommand, type ConnectorConfigBlock, type ConnectorPlan, type ConnectorRuntimeCatalogEntry, type ConnectorRuntimeId, type ConnectorRuntimeInstallSpec, type ConnectorRuntimeKind, type ConnectorRuntimePlatform, type ShadowConnectorInput, type ShadowConnectorTarget, connectorRuntimeById, connectorRuntimeCatalog, connectorRuntimeInstallCommand, connectorRuntimeInstallCommands, createConnectorPlan, createConnectorPlans };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
type ConnectorRuntimeKind = 'openclaw' | 'cli';
|
|
2
|
+
type ConnectorRuntimeId = 'openclaw' | 'hermes' | 'claude-code' | 'codex' | 'opencode' | 'gemini' | 'cursor' | 'kimi' | 'copilot' | 'antigravity';
|
|
3
|
+
type ConnectorRuntimePlatform = NodeJS.Platform | 'default';
|
|
4
|
+
interface ConnectorRuntimeInstallSpec {
|
|
5
|
+
commands?: Partial<Record<ConnectorRuntimePlatform, string[]>>;
|
|
6
|
+
helpUrl: string;
|
|
7
|
+
}
|
|
8
|
+
interface ConnectorRuntimeCatalogEntry {
|
|
9
|
+
id: ConnectorRuntimeId;
|
|
10
|
+
label: string;
|
|
11
|
+
kind: ConnectorRuntimeKind;
|
|
12
|
+
command: string;
|
|
13
|
+
commands?: string[];
|
|
14
|
+
versionArgs?: string[];
|
|
15
|
+
iconId: string;
|
|
16
|
+
install: ConnectorRuntimeInstallSpec;
|
|
17
|
+
}
|
|
18
|
+
declare const CONNECTOR_RUNTIME_CATALOG: ConnectorRuntimeCatalogEntry[];
|
|
19
|
+
declare function connectorRuntimeCatalog(): ConnectorRuntimeCatalogEntry[];
|
|
20
|
+
declare function connectorRuntimeById(runtimeId: string | null | undefined): ConnectorRuntimeCatalogEntry | null;
|
|
21
|
+
declare function connectorRuntimeInstallCommands(runtimeId: string, targetPlatform?: ConnectorRuntimePlatform): string[];
|
|
22
|
+
declare function connectorRuntimeInstallCommand(runtimeId: string, targetPlatform?: ConnectorRuntimePlatform): string | null;
|
|
23
|
+
|
|
1
24
|
type ShadowConnectorTarget = 'openclaw' | 'hermes' | 'cc-connect';
|
|
2
25
|
interface ShadowConnectorInput {
|
|
3
26
|
target: ShadowConnectorTarget;
|
|
@@ -32,4 +55,4 @@ interface ConnectorPlan {
|
|
|
32
55
|
declare function createConnectorPlan(input: ShadowConnectorInput): ConnectorPlan;
|
|
33
56
|
declare function createConnectorPlans(input: Omit<ShadowConnectorInput, 'target'>): ConnectorPlan[];
|
|
34
57
|
|
|
35
|
-
export { type ConnectorCommand, type ConnectorConfigBlock, type ConnectorPlan, type ShadowConnectorInput, type ShadowConnectorTarget, createConnectorPlan, createConnectorPlans };
|
|
58
|
+
export { CONNECTOR_RUNTIME_CATALOG, type ConnectorCommand, type ConnectorConfigBlock, type ConnectorPlan, type ConnectorRuntimeCatalogEntry, type ConnectorRuntimeId, type ConnectorRuntimeInstallSpec, type ConnectorRuntimeKind, type ConnectorRuntimePlatform, type ShadowConnectorInput, type ShadowConnectorTarget, connectorRuntimeById, connectorRuntimeCatalog, connectorRuntimeInstallCommand, connectorRuntimeInstallCommands, createConnectorPlan, createConnectorPlans };
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,184 @@ var CC_CONNECT_FORK_REF = "63b5d59127b3004bc7002f2d51892b1f2a91ea83";
|
|
|
4
4
|
var CC_CONNECT_FORK_SHORT_REF = CC_CONNECT_FORK_REF.slice(0, 7);
|
|
5
5
|
var CC_CONNECT_FORK_DOCS_URL = `https://github.com/${CC_CONNECT_FORK_REPO}/blob/main/docs/shadowob.md`;
|
|
6
6
|
|
|
7
|
+
// src/runtime-catalog.ts
|
|
8
|
+
var CONNECTOR_RUNTIME_CATALOG = [
|
|
9
|
+
{
|
|
10
|
+
id: "openclaw",
|
|
11
|
+
label: "OpenClaw",
|
|
12
|
+
kind: "openclaw",
|
|
13
|
+
command: "openclaw",
|
|
14
|
+
iconId: "openclaw",
|
|
15
|
+
install: {
|
|
16
|
+
commands: {
|
|
17
|
+
darwin: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"],
|
|
18
|
+
linux: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"],
|
|
19
|
+
win32: [
|
|
20
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard"'
|
|
21
|
+
],
|
|
22
|
+
default: ["curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard"]
|
|
23
|
+
},
|
|
24
|
+
helpUrl: "https://docs.openclaw.ai/install/index"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "hermes",
|
|
29
|
+
label: "Hermes Agent",
|
|
30
|
+
kind: "cli",
|
|
31
|
+
command: "hermes",
|
|
32
|
+
iconId: "hermes",
|
|
33
|
+
install: {
|
|
34
|
+
commands: {
|
|
35
|
+
darwin: [
|
|
36
|
+
"curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash"
|
|
37
|
+
],
|
|
38
|
+
linux: [
|
|
39
|
+
"curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash"
|
|
40
|
+
],
|
|
41
|
+
win32: [
|
|
42
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "iex (irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1)"'
|
|
43
|
+
],
|
|
44
|
+
default: ["pipx install hermes-agent"]
|
|
45
|
+
},
|
|
46
|
+
helpUrl: "https://hermes-agent.nousresearch.com/docs/getting-started/installation"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "claude-code",
|
|
51
|
+
label: "Claude Code",
|
|
52
|
+
kind: "cli",
|
|
53
|
+
command: "claude",
|
|
54
|
+
iconId: "claude-code",
|
|
55
|
+
install: {
|
|
56
|
+
commands: {
|
|
57
|
+
default: ["npm install -g @anthropic-ai/claude-code"]
|
|
58
|
+
},
|
|
59
|
+
helpUrl: "https://code.claude.com/docs/en/installation"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "codex",
|
|
64
|
+
label: "Codex CLI",
|
|
65
|
+
kind: "cli",
|
|
66
|
+
command: "codex",
|
|
67
|
+
iconId: "codex",
|
|
68
|
+
install: {
|
|
69
|
+
commands: {
|
|
70
|
+
default: ["npm install -g @openai/codex"]
|
|
71
|
+
},
|
|
72
|
+
helpUrl: "https://help.openai.com/en/articles/11096431-openai-codex-cli-getting-started"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "opencode",
|
|
77
|
+
label: "OpenCode",
|
|
78
|
+
kind: "cli",
|
|
79
|
+
command: "opencode",
|
|
80
|
+
iconId: "opencode",
|
|
81
|
+
install: {
|
|
82
|
+
commands: {
|
|
83
|
+
default: ["npm install -g opencode-ai"]
|
|
84
|
+
},
|
|
85
|
+
helpUrl: "https://opencli.co/cli/opencode"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: "gemini",
|
|
90
|
+
label: "Gemini CLI",
|
|
91
|
+
kind: "cli",
|
|
92
|
+
command: "gemini",
|
|
93
|
+
iconId: "gemini",
|
|
94
|
+
install: {
|
|
95
|
+
commands: {
|
|
96
|
+
default: ["npm install -g @google/gemini-cli"]
|
|
97
|
+
},
|
|
98
|
+
helpUrl: "https://github.com/google-gemini/gemini-cli"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "cursor",
|
|
103
|
+
label: "Cursor CLI",
|
|
104
|
+
kind: "cli",
|
|
105
|
+
command: "cursor-agent",
|
|
106
|
+
commands: ["cursor-agent", "cursor"],
|
|
107
|
+
iconId: "cursor",
|
|
108
|
+
install: {
|
|
109
|
+
commands: {
|
|
110
|
+
default: ["curl https://cursor.com/install -fsS | bash"],
|
|
111
|
+
win32: ["curl.exe https://cursor.com/install -fsS | bash"]
|
|
112
|
+
},
|
|
113
|
+
helpUrl: "https://docs.cursor.com/en/cli/installation"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: "kimi",
|
|
118
|
+
label: "Kimi Code",
|
|
119
|
+
kind: "cli",
|
|
120
|
+
command: "kimi",
|
|
121
|
+
iconId: "kimi",
|
|
122
|
+
install: {
|
|
123
|
+
commands: {
|
|
124
|
+
darwin: ["curl -LsSf https://code.kimi.com/install.sh | bash"],
|
|
125
|
+
linux: ["curl -LsSf https://code.kimi.com/install.sh | bash"],
|
|
126
|
+
win32: [
|
|
127
|
+
'powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://code.kimi.com/install.ps1 | iex"'
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
helpUrl: "https://www.kimi.com/code/docs/en/"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "copilot",
|
|
135
|
+
label: "GitHub Copilot CLI",
|
|
136
|
+
kind: "cli",
|
|
137
|
+
command: "copilot",
|
|
138
|
+
iconId: "copilot",
|
|
139
|
+
install: {
|
|
140
|
+
commands: {
|
|
141
|
+
darwin: ["brew install copilot-cli", "curl -fsSL https://gh.io/copilot-install | bash"],
|
|
142
|
+
linux: ["brew install copilot-cli", "curl -fsSL https://gh.io/copilot-install | bash"],
|
|
143
|
+
win32: ["winget install GitHub.Copilot.Prerelease"]
|
|
144
|
+
},
|
|
145
|
+
helpUrl: "https://docs.github.com/en/copilot/how-tos/copilot-cli/install-copilot-cli"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: "antigravity",
|
|
150
|
+
label: "Antigravity CLI",
|
|
151
|
+
kind: "cli",
|
|
152
|
+
command: "agy",
|
|
153
|
+
commands: ["agy", "antigravity"],
|
|
154
|
+
iconId: "antigravity",
|
|
155
|
+
install: {
|
|
156
|
+
commands: {
|
|
157
|
+
darwin: ["open https://www.antigravity.google/product/antigravity-cli"],
|
|
158
|
+
linux: ["xdg-open https://www.antigravity.google/product/antigravity-cli"],
|
|
159
|
+
win32: ["start https://www.antigravity.google/product/antigravity-cli"]
|
|
160
|
+
},
|
|
161
|
+
helpUrl: "https://www.antigravity.google/product/antigravity-cli"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
];
|
|
165
|
+
function connectorRuntimeCatalog() {
|
|
166
|
+
return CONNECTOR_RUNTIME_CATALOG.map((entry) => ({ ...entry }));
|
|
167
|
+
}
|
|
168
|
+
function connectorRuntimeById(runtimeId) {
|
|
169
|
+
if (!runtimeId) return null;
|
|
170
|
+
return CONNECTOR_RUNTIME_CATALOG.find((entry) => entry.id === runtimeId) ?? null;
|
|
171
|
+
}
|
|
172
|
+
function currentRuntimePlatform() {
|
|
173
|
+
return typeof process !== "undefined" && process.platform ? process.platform : "default";
|
|
174
|
+
}
|
|
175
|
+
function connectorRuntimeInstallCommands(runtimeId, targetPlatform = currentRuntimePlatform()) {
|
|
176
|
+
const runtime = connectorRuntimeById(runtimeId);
|
|
177
|
+
if (!runtime) return [];
|
|
178
|
+
const commands = runtime.install.commands;
|
|
179
|
+
return commands?.[targetPlatform] ?? commands?.default ?? [];
|
|
180
|
+
}
|
|
181
|
+
function connectorRuntimeInstallCommand(runtimeId, targetPlatform = currentRuntimePlatform()) {
|
|
182
|
+
return connectorRuntimeInstallCommands(runtimeId, targetPlatform)[0] ?? null;
|
|
183
|
+
}
|
|
184
|
+
|
|
7
185
|
// src/index.ts
|
|
8
186
|
var DEFAULT_SERVER_URL = "https://shadowob.com";
|
|
9
187
|
var DEFAULT_WORK_DIR = ".";
|
|
@@ -61,17 +239,20 @@ function buildOpenClawPlan(input) {
|
|
|
61
239
|
return {
|
|
62
240
|
target: "openclaw",
|
|
63
241
|
title: "OpenClaw",
|
|
64
|
-
summary: "Install the Shadow channel plugin and
|
|
242
|
+
summary: "Install the Shadow channel plugin, Shadow CLI bin/skills, and a Buddy CLI profile for OpenClaw.",
|
|
65
243
|
connectCommand,
|
|
66
244
|
quickCommand,
|
|
67
245
|
commands,
|
|
68
|
-
configBlocks: [{ label: "openclaw.json", language: "json", content: jsonConfig }],
|
|
246
|
+
configBlocks: [{ label: "~/.openclaw/openclaw.json", language: "json", content: jsonConfig }],
|
|
69
247
|
aiPrompt: [
|
|
70
248
|
"Configure this Shadow Buddy in OpenClaw.",
|
|
71
249
|
"",
|
|
72
250
|
`Shadow server URL: ${serverUrl}`,
|
|
73
251
|
`Buddy token: ${token}`,
|
|
74
252
|
"",
|
|
253
|
+
`Preferred one-line setup: ${connectCommand}`,
|
|
254
|
+
"The connector installs/configures the Shadow CLI, official Shadow skill files, and the Buddy profile before applying the OpenClaw channel config.",
|
|
255
|
+
"",
|
|
75
256
|
"Run these steps in order:",
|
|
76
257
|
...commands.map((item, index) => `${index + 1}. ${item.command}`),
|
|
77
258
|
"",
|
|
@@ -156,7 +337,7 @@ function buildHermesPlan(input) {
|
|
|
156
337
|
return {
|
|
157
338
|
target: "hermes",
|
|
158
339
|
title: "Hermes Agent",
|
|
159
|
-
summary: "Install the ShadowOB Hermes platform plugin
|
|
340
|
+
summary: "Install the ShadowOB Hermes platform plugin, Shadow CLI bin/skills, and a Buddy CLI profile.",
|
|
160
341
|
connectCommand,
|
|
161
342
|
quickCommand: commands.map((item) => item.command).join(" && "),
|
|
162
343
|
commands,
|
|
@@ -170,7 +351,8 @@ function buildHermesPlan(input) {
|
|
|
170
351
|
`Shadow server URL: ${serverUrl}`,
|
|
171
352
|
`Buddy token: ${token}`,
|
|
172
353
|
"",
|
|
173
|
-
|
|
354
|
+
`Preferred one-line setup: ${connectCommand}`,
|
|
355
|
+
"The connector installs/configures the Shadow CLI, official Shadow skill files, and the Buddy profile before writing Hermes config. The plugin resolves the Buddy agent id and channel policy from Shadow at runtime."
|
|
174
356
|
].join("\n"),
|
|
175
357
|
docsUrl: "https://hermes-agent.nousresearch.com/docs/user-guide/messaging",
|
|
176
358
|
capabilities: [
|
|
@@ -248,7 +430,7 @@ function buildCcConnectPlan(input) {
|
|
|
248
430
|
return {
|
|
249
431
|
target: "cc-connect",
|
|
250
432
|
title: "cc-connect",
|
|
251
|
-
summary: `Use ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF} with ShadowOB Socket.IO
|
|
433
|
+
summary: `Use ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF} with ShadowOB Socket.IO support, Shadow CLI bin/skills, and a Buddy CLI profile.`,
|
|
252
434
|
connectCommand: startCommand,
|
|
253
435
|
quickCommand: startCommand,
|
|
254
436
|
commands,
|
|
@@ -261,7 +443,8 @@ function buildCcConnectPlan(input) {
|
|
|
261
443
|
`Project work_dir: ${workDir}`,
|
|
262
444
|
`Agent type: ${agentType}`,
|
|
263
445
|
"",
|
|
264
|
-
`
|
|
446
|
+
`Preferred one-line setup: ${startCommand}`,
|
|
447
|
+
`Install ${CC_CONNECT_FORK_REPO}@${CC_CONNECT_FORK_SHORT_REF}, install/configure the Shadow CLI and official Shadow skill files, add the TOML platform block, and start cc-connect.`
|
|
265
448
|
].join("\n"),
|
|
266
449
|
docsUrl: CC_CONNECT_FORK_DOCS_URL,
|
|
267
450
|
capabilities: [
|
|
@@ -294,6 +477,11 @@ function createConnectorPlans(input) {
|
|
|
294
477
|
);
|
|
295
478
|
}
|
|
296
479
|
export {
|
|
480
|
+
CONNECTOR_RUNTIME_CATALOG,
|
|
481
|
+
connectorRuntimeById,
|
|
482
|
+
connectorRuntimeCatalog,
|
|
483
|
+
connectorRuntimeInstallCommand,
|
|
484
|
+
connectorRuntimeInstallCommands,
|
|
297
485
|
createConnectorPlan,
|
|
298
486
|
createConnectorPlans
|
|
299
487
|
};
|