@wowok/skills 1.2.7 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -17
- package/dist/cli.js +316 -10
- package/dist/cli.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -5
- package/dist/types.js.map +1 -1
- package/examples/MyShop/MyShop.md +2 -2
- package/package.json +1 -1
- package/scripts/install.js +342 -5
- package/wowok-machine/SKILL.md +3 -3
- package/wowok-messenger/SKILL.md +4 -4
- package/wowok-order/SKILL.md +8 -6
- package/wowok-provider/SKILL.md +10 -0
- package/wowok-safety/SKILL.md +8 -5
- package/wowok-tools/SKILL.md +3 -3
package/README.md
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
# WoWok Skills
|
|
2
2
|
|
|
3
|
-
WoWok AI Skills for Claude Code, OpenAI Codex, Trae IDE, CodeBuddy, Cursor, and GitHub Copilot — Helping AI use WoWok MCP tools correctly.
|
|
3
|
+
WoWok AI Skills for Claude Code, OpenAI Codex, ChatGPT Desktop (Codex Mode), Trae IDE, CodeBuddy, Cursor, Windsurf, Qoder, Roo Code, and GitHub Copilot — Helping AI use WoWok MCP tools correctly.
|
|
4
4
|
|
|
5
5
|
## Supported AI Clients
|
|
6
6
|
|
|
7
|
-
| Client | Skills Directory | Format |
|
|
8
|
-
|
|
9
|
-
| **Claude Code** | `.claude/skills/` | SKILL.md (native) |
|
|
10
|
-
| **OpenAI Codex** | `.codex/skills/` | SKILL.md (native) |
|
|
11
|
-
| **
|
|
12
|
-
| **
|
|
13
|
-
| **
|
|
14
|
-
| **
|
|
7
|
+
| Client | Skills Directory | Format | MCP Support |
|
|
8
|
+
|--------|-----------------|--------|-------------|
|
|
9
|
+
| **Claude Code** | `.claude/skills/` | SKILL.md (native) | ✅ `~/.claude/settings.json` |
|
|
10
|
+
| **OpenAI Codex CLI** | `.codex/skills/` | SKILL.md (native) | ✅ `~/.codex/config.toml` |
|
|
11
|
+
| **ChatGPT Desktop (Codex Mode)** | `.codex/skills/` | SKILL.md (native) | ✅ Shares Codex CLI config (`~/.codex/config.toml`) |
|
|
12
|
+
| **Trae IDE** | `.agents/skills/` | SKILL.md (native) | ⚙️ IDE-managed via `~/.trae-cn/mcps/` |
|
|
13
|
+
| **CodeBuddy** | `.codebuddy/skills/` | SKILL.md (native) | ✅ `~/.codebuddy/mcp.json` |
|
|
14
|
+
| **Cursor IDE** | `.cursor/rules/` | `.mdc` (frontmatter adapted) | ✅ Project-level `.cursor/mcp.json` |
|
|
15
|
+
| **Windsurf** | `.windsurf/skills/` | SKILL.md (native) | ✅ `~/.codeium/windsurf/mcp_config.json` |
|
|
16
|
+
| **Qoder** | `.qoder/skills/` | SKILL.md (native) | ✅ `~/.qoder/mcp-settings.json` (project: `.qoder/mcp.json`) |
|
|
17
|
+
| **Roo Code** | `.roo/skills/` | SKILL.md (native) | ✅ `~/.roo/mcp_settings.json` (project: `.roo/mcp.json`) |
|
|
18
|
+
| **GitHub Copilot** | `.github/prompts/` | `.prompt.md` (plain markdown) | ✅ `~/.copilot/mcp-config.json` |
|
|
15
19
|
|
|
16
20
|
> **Format notes**: For Cursor, the YAML frontmatter is adapted to `description` + `alwaysApply`. For Copilot, frontmatter is stripped — pure Markdown instructions. Codex follows the [Agent Skills](https://agentskills.io) open standard natively. All other clients use the native SKILL.md format directly.
|
|
21
|
+
>
|
|
22
|
+
> **ChatGPT Desktop (Chat Mode)** does **not** support local skills or stdio MCP. Only the **Codex Mode** (built into ChatGPT Desktop) inherits Codex CLI's skills and MCP configuration. Full MCP (write operations) in ChatGPT Desktop requires **Business, Enterprise, or Edu** plans (beta).
|
|
17
23
|
|
|
18
24
|
|
|
19
25
|
## How It Works
|
|
@@ -23,13 +29,17 @@ Each skill is a `SKILL.md` file with YAML frontmatter. AI clients discover them
|
|
|
23
29
|
```
|
|
24
30
|
npm install -g @wowok/skills
|
|
25
31
|
│
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
├── postinstall ──→ Copies SKILL.md to ~/.claude/skills/wowok-*/
|
|
33
|
+
└── auto MCP ──→ Installs/upgrades @wowok/agent-mcp
|
|
34
|
+
Registers MCP in client config
|
|
35
|
+
Restarts MCP server process
|
|
36
|
+
AI discovers on next session ✅
|
|
28
37
|
|
|
29
38
|
# For other clients, set the WOWOK_SKILLS_TARGETS env var:
|
|
30
39
|
WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
|
|
31
40
|
│
|
|
32
|
-
|
|
41
|
+
├── postinstall ──→ Copies to ~/.claude/skills/ AND ~/.agents/skills/
|
|
42
|
+
└── auto MCP ──→ Same MCP install/register/restart for each client
|
|
33
43
|
```
|
|
34
44
|
|
|
35
45
|
**Two loading modes:**
|
|
@@ -43,7 +53,9 @@ WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
|
|
|
43
53
|
|
|
44
54
|
### 1. Prerequisites
|
|
45
55
|
|
|
46
|
-
|
|
56
|
+
The `@wowok/skills` package will **automatically install and configure** the `@wowok/agent-mcp` MCP server for you. No manual setup needed.
|
|
57
|
+
|
|
58
|
+
To configure MCP manually for a specific client, see the [MCP Support](#supported-ai-clients) table above. The standard WoWok MCP server entry is:
|
|
47
59
|
|
|
48
60
|
```json
|
|
49
61
|
{
|
|
@@ -68,7 +80,7 @@ npm install -g @wowok/skills
|
|
|
68
80
|
WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
|
|
69
81
|
|
|
70
82
|
# All supported clients:
|
|
71
|
-
WOWOK_SKILLS_TARGETS=claude,codex,agents,codebuddy,cursor,copilot npm install -g @wowok/skills
|
|
83
|
+
WOWOK_SKILLS_TARGETS=claude,codex,agents,codebuddy,cursor,windsurf,qoder,roo,copilot npm install -g @wowok/skills
|
|
72
84
|
```
|
|
73
85
|
|
|
74
86
|
This copies skills to the respective `~/.*/skills/` directories. They will be available in your next session.
|
|
@@ -82,7 +94,7 @@ cd your-project
|
|
|
82
94
|
# Claude Code (default):
|
|
83
95
|
wowok-skills init
|
|
84
96
|
|
|
85
|
-
# OpenAI Codex:
|
|
97
|
+
# OpenAI Codex / ChatGPT Desktop (Codex Mode):
|
|
86
98
|
wowok-skills init --target codex
|
|
87
99
|
|
|
88
100
|
# Trae IDE:
|
|
@@ -145,15 +157,20 @@ wowok-skills uninit
|
|
|
145
157
|
| `wowok-skills role <role>` | — | List skills by role |
|
|
146
158
|
| `wowok-skills recommend <intent>` | — | Recommend skills by intent |
|
|
147
159
|
| `wowok-skills init` | Project | Install to `.claude/skills/` (default) |
|
|
148
|
-
| `wowok-skills init --target codex` | Project | Install to `.codex/skills/` (Codex) |
|
|
160
|
+
| `wowok-skills init --target codex` | Project | Install to `.codex/skills/` (Codex / ChatGPT Desktop) |
|
|
149
161
|
| `wowok-skills init --target agents` | Project | Install to `.agents/skills/` (Trae) |
|
|
150
162
|
| `wowok-skills init --target cursor` | Project | Install to `.cursor/rules/` (Cursor) |
|
|
151
163
|
| `wowok-skills init --target copilot` | Project | Install to `.github/prompts/` (Copilot) |
|
|
152
|
-
| `wowok-skills init --target
|
|
164
|
+
| `wowok-skills init --target windsurf` | Project | Install to `.windsurf/skills/` (Windsurf) |
|
|
165
|
+
| `wowok-skills init --target qoder` | Project | Install to `.qoder/skills/` (Qoder) |
|
|
166
|
+
| `wowok-skills init --target roo` | Project | Install to `.roo/skills/` (Roo Code) |
|
|
167
|
+
| `wowok-skills init --target all` | Project | Install to all 10 clients |
|
|
153
168
|
| `wowok-skills uninit` | Project | Remove from `.claude/skills/` (default) |
|
|
154
169
|
| `wowok-skills uninit --target all` | Project | Remove from all clients |
|
|
155
170
|
|
|
156
171
|
> **Note**: `init` / `uninit` require `@wowok/skills` to be globally installed first.
|
|
172
|
+
>
|
|
173
|
+
> **MCP auto-install**: `npm install -g @wowok/skills` (postinstall) and `wowok-skills init` automatically install/upgrade the `@wowok/agent-mcp` MCP server and register it in each client's config. Set `WOWOK_SKILLS_NO_MCP=1` to skip MCP management.
|
|
157
174
|
|
|
158
175
|
## Programmatic API
|
|
159
176
|
|
package/dist/cli.js
CHANGED
|
@@ -36,6 +36,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const child_process_1 = require("child_process");
|
|
40
|
+
const os = __importStar(require("os"));
|
|
39
41
|
const skills_1 = require("./skills");
|
|
40
42
|
const types_1 = require("./types");
|
|
41
43
|
/**
|
|
@@ -166,6 +168,280 @@ function convertSkillContent(content, target, skillDir) {
|
|
|
166
168
|
return convertToCopilot(content);
|
|
167
169
|
return content;
|
|
168
170
|
}
|
|
171
|
+
// =========================================================================
|
|
172
|
+
// MCP Server Management — shared by postinstall and `wowok-skills init`
|
|
173
|
+
// =========================================================================
|
|
174
|
+
const MCP_PACKAGE = '@wowok/agent-mcp';
|
|
175
|
+
const MCP_TARGET_CONFIGS = {
|
|
176
|
+
claude: {
|
|
177
|
+
configPath: path.join(os.homedir(), '.claude', 'settings.json'),
|
|
178
|
+
merge: (config) => {
|
|
179
|
+
config.mcpServers = config.mcpServers || {};
|
|
180
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
181
|
+
return config;
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
codebuddy: {
|
|
185
|
+
configPath: path.join(os.homedir(), '.codebuddy', 'mcp.json'),
|
|
186
|
+
merge: (config) => {
|
|
187
|
+
config.mcpServers = config.mcpServers || {};
|
|
188
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
189
|
+
return config;
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
windsurf: {
|
|
193
|
+
configPath: path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
|
|
194
|
+
merge: (config) => {
|
|
195
|
+
config.mcpServers = config.mcpServers || {};
|
|
196
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
197
|
+
return config;
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
qoder: {
|
|
201
|
+
configPath: process.platform === 'win32'
|
|
202
|
+
? path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Qoder', 'mcp-settings.json')
|
|
203
|
+
: path.join(os.homedir(), '.config', 'qoder', 'mcp-settings.json'),
|
|
204
|
+
merge: (config) => {
|
|
205
|
+
config.mcpServers = config.mcpServers || {};
|
|
206
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
207
|
+
return config;
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
roo: {
|
|
211
|
+
configPath: path.join(os.homedir(), '.roo', 'mcp_settings.json'),
|
|
212
|
+
merge: (config) => {
|
|
213
|
+
config.mcpServers = config.mcpServers || {};
|
|
214
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
215
|
+
return config;
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
// trae / agents: IDE-managed MCP via ~/.trae-cn/mcps/ directory structure
|
|
219
|
+
trae: null,
|
|
220
|
+
agents: null,
|
|
221
|
+
// cursor: project-level only
|
|
222
|
+
cursor: null,
|
|
223
|
+
// copilot: user-level MCP config (Copilot CLI)
|
|
224
|
+
copilot: {
|
|
225
|
+
configPath: path.join(os.homedir(), '.copilot', 'mcp-config.json'),
|
|
226
|
+
merge: (config) => {
|
|
227
|
+
config.mcpServers = config.mcpServers || {};
|
|
228
|
+
config.mcpServers.wowok = { type: 'local', command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
229
|
+
return config;
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
// codex: global TOML config (~/.codex/config.toml)
|
|
233
|
+
codex: {
|
|
234
|
+
configPath: path.join(os.homedir(), '.codex', 'config.toml'),
|
|
235
|
+
format: 'toml',
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
/** Project-level MCP configs (written relative to cwd). */
|
|
239
|
+
const MCP_PROJECT_CONFIGS = {
|
|
240
|
+
cursor: {
|
|
241
|
+
configPath: '.cursor/mcp.json',
|
|
242
|
+
merge: (config) => {
|
|
243
|
+
config.mcpServers = config.mcpServers || {};
|
|
244
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
245
|
+
return config;
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
windsurf: {
|
|
249
|
+
configPath: '.windsurf/mcp.json',
|
|
250
|
+
merge: (config) => {
|
|
251
|
+
config.mcpServers = config.mcpServers || {};
|
|
252
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
253
|
+
return config;
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
trae: {
|
|
257
|
+
configPath: '.trae/mcp.json',
|
|
258
|
+
merge: (config) => {
|
|
259
|
+
config.mcpServers = config.mcpServers || {};
|
|
260
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
261
|
+
return config;
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
agents: {
|
|
265
|
+
configPath: '.trae/mcp.json',
|
|
266
|
+
merge: (config) => {
|
|
267
|
+
config.mcpServers = config.mcpServers || {};
|
|
268
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
269
|
+
return config;
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
qoder: {
|
|
273
|
+
configPath: '.qoder/mcp.json',
|
|
274
|
+
merge: (config) => {
|
|
275
|
+
config.mcpServers = config.mcpServers || {};
|
|
276
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
277
|
+
return config;
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
roo: {
|
|
281
|
+
configPath: '.roo/mcp.json',
|
|
282
|
+
merge: (config) => {
|
|
283
|
+
config.mcpServers = config.mcpServers || {};
|
|
284
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
285
|
+
return config;
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
function getInstalledMcpVersion() {
|
|
290
|
+
try {
|
|
291
|
+
const output = (0, child_process_1.execSync)(`npm ls -g ${MCP_PACKAGE} --depth=0 --json`, {
|
|
292
|
+
encoding: 'utf-8',
|
|
293
|
+
stdio: 'pipe',
|
|
294
|
+
timeout: 15000,
|
|
295
|
+
});
|
|
296
|
+
const parsed = JSON.parse(output);
|
|
297
|
+
const pkg = parsed.dependencies?.[MCP_PACKAGE] || parsed[MCP_PACKAGE];
|
|
298
|
+
return pkg?.version || null;
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function getLatestMcpVersion() {
|
|
305
|
+
try {
|
|
306
|
+
const output = (0, child_process_1.execSync)(`npm view ${MCP_PACKAGE} version`, {
|
|
307
|
+
encoding: 'utf-8',
|
|
308
|
+
stdio: 'pipe',
|
|
309
|
+
timeout: 15000,
|
|
310
|
+
});
|
|
311
|
+
return output.trim();
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
function semverMajor(version) {
|
|
318
|
+
if (!version)
|
|
319
|
+
return 0;
|
|
320
|
+
const parts = version.split('.');
|
|
321
|
+
return parseInt(parts[0], 10) || 0;
|
|
322
|
+
}
|
|
323
|
+
function npmInstallGlobal(pkg, retries = 2) {
|
|
324
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
325
|
+
try {
|
|
326
|
+
(0, child_process_1.execSync)(`npm install -g ${pkg}`, { stdio: 'inherit', timeout: 120000 });
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
if (attempt < retries) {
|
|
331
|
+
console.log(`[wowok-skills] npm install attempt ${attempt} failed, retrying...`);
|
|
332
|
+
const waitCmd = process.platform === 'win32'
|
|
333
|
+
? 'ping -n 3 127.0.0.1 >nul'
|
|
334
|
+
: 'sleep 2';
|
|
335
|
+
(0, child_process_1.execSync)(waitCmd, { stdio: 'pipe', timeout: 5000 });
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
console.error(`[wowok-skills] npm install failed after ${retries} attempts: ${err.message}`);
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
function ensureMcpServer() {
|
|
346
|
+
const currentVersion = getInstalledMcpVersion();
|
|
347
|
+
const latestVersion = getLatestMcpVersion();
|
|
348
|
+
if (currentVersion) {
|
|
349
|
+
console.log(`[wowok-skills] MCP server ${MCP_PACKAGE} v${currentVersion} found.`);
|
|
350
|
+
if (!latestVersion) {
|
|
351
|
+
console.log(`[wowok-skills] Cannot check latest version (offline or registry unreachable). Keeping v${currentVersion}.`);
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
if (currentVersion === latestVersion) {
|
|
355
|
+
console.log(`[wowok-skills] MCP server is up to date (v${currentVersion}).`);
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
const currentMajor = semverMajor(currentVersion);
|
|
359
|
+
const latestMajor = semverMajor(latestVersion);
|
|
360
|
+
if (latestMajor > currentMajor) {
|
|
361
|
+
console.warn(`[wowok-skills] ⚠ WARNING: Major version bump detected v${currentVersion} → v${latestVersion}.`);
|
|
362
|
+
console.warn(`[wowok-skills] Skipping auto-upgrade to avoid breaking changes.`);
|
|
363
|
+
console.warn(`[wowok-skills] To upgrade manually: npm install -g ${MCP_PACKAGE}@latest`);
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
console.log(`[wowok-skills] Upgrading MCP server v${currentVersion} → v${latestVersion}...`);
|
|
367
|
+
if (npmInstallGlobal(`${MCP_PACKAGE}@latest`)) {
|
|
368
|
+
console.log(`[wowok-skills] MCP server upgraded to v${latestVersion}.`);
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
console.error(`[wowok-skills] MCP server upgrade FAILED. Keeping v${currentVersion}.`);
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
console.log(`[wowok-skills] Installing MCP server ${MCP_PACKAGE}...`);
|
|
375
|
+
if (npmInstallGlobal(MCP_PACKAGE)) {
|
|
376
|
+
console.log(`[wowok-skills] MCP server installed.`);
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
console.error(`[wowok-skills] MCP server installation FAILED.`);
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
function writeMcpConfig(target, configMap, cwd) {
|
|
383
|
+
const cfg = configMap[target];
|
|
384
|
+
if (!cfg) {
|
|
385
|
+
console.log(`[wowok-skills] MCP config: ${target} does not support external MCP registration (skipped).`);
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
try {
|
|
389
|
+
const configPath = cwd ? path.join(cwd, cfg.configPath) : cfg.configPath;
|
|
390
|
+
// ── TOML format (Codex CLI uses ~/.codex/config.toml) ──────────────
|
|
391
|
+
if (cfg.format === 'toml') {
|
|
392
|
+
const tomlEntry = '\n[mcp_servers.wowok]\ncommand = "npx"\nargs = ["-y", "@wowok/agent-mcp"]\n';
|
|
393
|
+
let content = '';
|
|
394
|
+
if (fs.existsSync(configPath)) {
|
|
395
|
+
content = fs.readFileSync(configPath, 'utf-8');
|
|
396
|
+
}
|
|
397
|
+
if (content.includes('[mcp_servers.wowok]')) {
|
|
398
|
+
console.log(`[wowok-skills] MCP config already up to date: ${configPath}`);
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
402
|
+
fs.writeFileSync(configPath, content + tomlEntry, 'utf-8');
|
|
403
|
+
console.log(`[wowok-skills] MCP config written: ${configPath}`);
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
406
|
+
// ── JSON format (all other clients) ────────────────────────────────
|
|
407
|
+
let config = {};
|
|
408
|
+
if (fs.existsSync(configPath)) {
|
|
409
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
410
|
+
}
|
|
411
|
+
const before = JSON.stringify(config);
|
|
412
|
+
config = cfg.merge(config);
|
|
413
|
+
const after = JSON.stringify(config);
|
|
414
|
+
if (before !== after) {
|
|
415
|
+
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
416
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
417
|
+
console.log(`[wowok-skills] MCP config written: ${configPath}`);
|
|
418
|
+
return true;
|
|
419
|
+
}
|
|
420
|
+
console.log(`[wowok-skills] MCP config already up to date: ${configPath}`);
|
|
421
|
+
return false;
|
|
422
|
+
}
|
|
423
|
+
catch (err) {
|
|
424
|
+
console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
|
|
425
|
+
return false;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
function restartMcpServer() {
|
|
429
|
+
try {
|
|
430
|
+
if (process.platform === 'win32') {
|
|
431
|
+
const psScript = 'Get-CimInstance Win32_Process -Filter "Name=\'node.exe\' AND CommandLine LIKE \'%wowok%agent-mcp%\'" | ' +
|
|
432
|
+
'ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }';
|
|
433
|
+
const encoded = Buffer.from(psScript, 'utf16le').toString('base64');
|
|
434
|
+
(0, child_process_1.execSync)(`powershell -NoProfile -EncodedCommand ${encoded}`, { stdio: 'pipe', timeout: 10000 });
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
(0, child_process_1.execSync)('pkill -f "wowok.*agent-mcp" 2>/dev/null || true', { stdio: 'pipe', timeout: 5000 });
|
|
438
|
+
}
|
|
439
|
+
console.log('[wowok-skills] MCP server process terminated (IDE will auto-restart).');
|
|
440
|
+
}
|
|
441
|
+
catch {
|
|
442
|
+
console.log('[wowok-skills] No running MCP server process found. Start your IDE to launch it.');
|
|
443
|
+
}
|
|
444
|
+
}
|
|
169
445
|
function getTargets(targetArg) {
|
|
170
446
|
if (!targetArg || targetArg === 'claude') {
|
|
171
447
|
return ['claude'];
|
|
@@ -177,10 +453,10 @@ function getTargets(targetArg) {
|
|
|
177
453
|
return [targetArg];
|
|
178
454
|
}
|
|
179
455
|
console.error(`Invalid target: ${targetArg}`);
|
|
180
|
-
console.error(`Valid targets: claude,
|
|
456
|
+
console.error(`Valid targets: claude, cursor, windsurf, codebuddy, codex, trae, qoder, roo, copilot, all`);
|
|
181
457
|
process.exit(1);
|
|
182
458
|
}
|
|
183
|
-
function cmdInit(targetArg) {
|
|
459
|
+
function cmdInit(targetArg, withMcp) {
|
|
184
460
|
const cwd = process.cwd();
|
|
185
461
|
const pkgRoot = getPackageRoot();
|
|
186
462
|
const targets = getTargets(targetArg);
|
|
@@ -215,6 +491,28 @@ function cmdInit(targetArg) {
|
|
|
215
491
|
if (targets.length > 1) {
|
|
216
492
|
console.log(`[wowok-skills] Total: ${totalCount} skills across ${targets.length} clients.`);
|
|
217
493
|
}
|
|
494
|
+
// ─── MCP setup (default: enabled, use --no-mcp to skip) ────────────
|
|
495
|
+
if (withMcp) {
|
|
496
|
+
console.log('');
|
|
497
|
+
console.log('[wowok-skills] Setting up MCP server (use --no-mcp to skip)...');
|
|
498
|
+
const mcpChanged = ensureMcpServer();
|
|
499
|
+
console.log('[wowok-skills] Registering MCP server in client config...');
|
|
500
|
+
for (const target of targets) {
|
|
501
|
+
// Global-level config (Claude, CodeBuddy, Windsurf, Qoder, Roo)
|
|
502
|
+
writeMcpConfig(target, MCP_TARGET_CONFIGS);
|
|
503
|
+
// Project-level config (Cursor, Windsurf, Trae, Qoder, Roo)
|
|
504
|
+
writeMcpConfig(target, MCP_PROJECT_CONFIGS, cwd);
|
|
505
|
+
}
|
|
506
|
+
if (mcpChanged) {
|
|
507
|
+
console.log('[wowok-skills] Restarting MCP server...');
|
|
508
|
+
restartMcpServer();
|
|
509
|
+
}
|
|
510
|
+
console.log('[wowok-skills] MCP server setup complete.');
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
console.log('');
|
|
514
|
+
console.log('[wowok-skills] --no-mcp: MCP server setup skipped (skills only).');
|
|
515
|
+
}
|
|
218
516
|
}
|
|
219
517
|
function cmdUninit(targetArg) {
|
|
220
518
|
const cwd = process.cwd();
|
|
@@ -316,16 +614,20 @@ function printUsage() {
|
|
|
316
614
|
console.log(' get <name> Show skill details');
|
|
317
615
|
console.log(' role <role> List skills for a role (customer|provider|arbitrator|shared)');
|
|
318
616
|
console.log(' recommend <intent> Recommend skills based on user intent');
|
|
319
|
-
console.log(' init [--target <t>] Install skills to project (default: .claude/skills/)');
|
|
617
|
+
console.log(' init [--target <t>] [--no-mcp] Install skills to project (default: .claude/skills/ with MCP)');
|
|
618
|
+
console.log(' --no-mcp Skip MCP server setup (skills only)');
|
|
320
619
|
console.log(' uninit [--target <t>] Remove skills from project');
|
|
321
620
|
console.log('');
|
|
322
621
|
console.log('Targets:');
|
|
323
|
-
console.log(' claude .claude/skills/ (Claude Code
|
|
324
|
-
console.log(' codex .codex/skills/ (OpenAI Codex)');
|
|
325
|
-
console.log(' agents .agents/skills/ (Trae IDE)');
|
|
326
|
-
console.log(' codebuddy .codebuddy/skills/ (CodeBuddy)');
|
|
622
|
+
console.log(' claude .claude/skills/ (Claude Code)');
|
|
327
623
|
console.log(' cursor .cursor/rules/ (Cursor IDE)');
|
|
328
|
-
console.log('
|
|
624
|
+
console.log(' windsurf .windsurf/skills/ (Windsurf / Codeium)');
|
|
625
|
+
console.log(' codebuddy .codebuddy/skills/ (CodeBuddy)');
|
|
626
|
+
console.log(' codex .codex/skills/ (OpenAI Codex, no MCP)');
|
|
627
|
+
console.log(' trae .agents/skills/ (Trae CN & Trae Work)');
|
|
628
|
+
console.log(' qoder .qoder/skills/ (Qoder / Qoder CN)');
|
|
629
|
+
console.log(' roo .roo/skills/ (Roo Code)');
|
|
630
|
+
console.log(' copilot .github/prompts/ (GitHub Copilot, no MCP)');
|
|
329
631
|
console.log(' all All of the above');
|
|
330
632
|
console.log('');
|
|
331
633
|
console.log('Examples:');
|
|
@@ -336,6 +638,8 @@ function printUsage() {
|
|
|
336
638
|
console.log(' wowok-skills init');
|
|
337
639
|
console.log(' wowok-skills init --target agents');
|
|
338
640
|
console.log(' wowok-skills init --target all');
|
|
641
|
+
console.log(' wowok-skills init --no-mcp');
|
|
642
|
+
console.log(' wowok-skills init --target cursor --no-mcp');
|
|
339
643
|
}
|
|
340
644
|
function main() {
|
|
341
645
|
const args = process.argv.slice(2);
|
|
@@ -369,9 +673,11 @@ function main() {
|
|
|
369
673
|
}
|
|
370
674
|
cmdRecommend(args.slice(1).join(' '));
|
|
371
675
|
break;
|
|
372
|
-
case 'init':
|
|
373
|
-
|
|
676
|
+
case 'init': {
|
|
677
|
+
const withMcp = !args.includes('--no-mcp');
|
|
678
|
+
cmdInit(parseTargetArg(args.slice(1)), withMcp);
|
|
374
679
|
break;
|
|
680
|
+
}
|
|
375
681
|
case 'uninit':
|
|
376
682
|
cmdUninit(parseTargetArg(args.slice(1)));
|
|
377
683
|
break;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export type SkillRole = 'customer' | 'provider' | 'arbitrator' | 'shared';
|
|
|
8
8
|
* - 'on-demand': Loaded only when description matches task
|
|
9
9
|
*/
|
|
10
10
|
export type LoadingMode = 'always' | 'on-demand';
|
|
11
|
-
export type ClientTarget = 'claude' | '
|
|
11
|
+
export type ClientTarget = 'claude' | 'cursor' | 'windsurf' | 'codebuddy' | 'codex' | 'trae' | 'qoder' | 'roo' | 'agents' | 'copilot' | 'all';
|
|
12
12
|
export declare const CLIENT_SKILL_DIRS: Record<Exclude<ClientTarget, 'all'>, string>;
|
|
13
13
|
export declare const CLIENT_FILE_EXT: Record<Exclude<ClientTarget, 'all'>, string>;
|
|
14
14
|
export declare const ALL_CLIENT_TARGETS: Exclude<ClientTarget, 'all'>[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,OAAO,GACP,MAAM,GACN,OAAO,GACP,KAAK,GACL,QAAQ,GACR,SAAS,GACT,KAAK,CAAC;AAEV,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAW1E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAWxE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAE5D,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,mBAAmB;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB"}
|
package/dist/types.js
CHANGED
|
@@ -3,19 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ALL_CLIENT_TARGETS = exports.CLIENT_FILE_EXT = exports.CLIENT_SKILL_DIRS = void 0;
|
|
4
4
|
exports.CLIENT_SKILL_DIRS = {
|
|
5
5
|
claude: '.claude/skills',
|
|
6
|
+
cursor: '.cursor/rules',
|
|
7
|
+
windsurf: '.windsurf/skills',
|
|
8
|
+
codebuddy: '.codebuddy/skills',
|
|
6
9
|
codex: '.codex/skills',
|
|
10
|
+
trae: '.agents/skills',
|
|
11
|
+
qoder: '.qoder/skills',
|
|
12
|
+
roo: '.roo/skills',
|
|
7
13
|
agents: '.agents/skills',
|
|
8
|
-
codebuddy: '.codebuddy/skills',
|
|
9
|
-
cursor: '.cursor/rules',
|
|
10
14
|
copilot: '.github/prompts',
|
|
11
15
|
};
|
|
12
16
|
exports.CLIENT_FILE_EXT = {
|
|
13
17
|
claude: '.md',
|
|
18
|
+
cursor: '.mdc',
|
|
19
|
+
windsurf: '.md',
|
|
20
|
+
codebuddy: '.md',
|
|
14
21
|
codex: '.md',
|
|
22
|
+
trae: '.md',
|
|
23
|
+
qoder: '.md',
|
|
24
|
+
roo: '.md',
|
|
15
25
|
agents: '.md',
|
|
16
|
-
codebuddy: '.md',
|
|
17
|
-
cursor: '.mdc',
|
|
18
26
|
copilot: '.prompt.md',
|
|
19
27
|
};
|
|
20
|
-
exports.ALL_CLIENT_TARGETS = [
|
|
28
|
+
exports.ALL_CLIENT_TARGETS = [
|
|
29
|
+
'claude', 'cursor', 'windsurf', 'codebuddy', 'codex', 'trae', 'qoder', 'roo', 'copilot',
|
|
30
|
+
];
|
|
21
31
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAyBa,QAAA,iBAAiB,GAAiD;IAC7E,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,mBAAmB;IAC9B,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,eAAe;IACtB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEW,QAAA,eAAe,GAAiD;IAC3E,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,YAAY;CACtB,CAAC;AAEW,QAAA,kBAAkB,GAAmC;IAChE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;CACxF,CAAC"}
|
|
@@ -420,7 +420,7 @@ Create a Contact object to enable encrypted communication between customers and
|
|
|
420
420
|
"tool": "messenger_operation",
|
|
421
421
|
"data": {
|
|
422
422
|
"messenger": {
|
|
423
|
-
"
|
|
423
|
+
"enabled": true,
|
|
424
424
|
"name_or_account": "myshop_merchant"
|
|
425
425
|
}
|
|
426
426
|
}
|
|
@@ -1050,7 +1050,7 @@ After creating the order, the customer sends their shipping address and contact
|
|
|
1050
1050
|
"tool": "messenger_operation",
|
|
1051
1051
|
"data": {
|
|
1052
1052
|
"messenger": {
|
|
1053
|
-
"
|
|
1053
|
+
"enabled": true,
|
|
1054
1054
|
"name_or_account": "myshop_customer"
|
|
1055
1055
|
}
|
|
1056
1056
|
}
|
package/package.json
CHANGED
package/scripts/install.js
CHANGED
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
* preuninstall → remove SKILL.md folders from all installed client dirs
|
|
7
7
|
*
|
|
8
8
|
* Environment variables:
|
|
9
|
-
* WOWOK_SKILLS_TARGETS Comma-separated client targets (claude,
|
|
10
|
-
* Defaults to "claude". Example: "claude,
|
|
9
|
+
* WOWOK_SKILLS_TARGETS Comma-separated client targets (claude,cursor,windsurf,codebuddy,codex,trae,qoder,roo,copilot)
|
|
10
|
+
* Defaults to "claude". Example: "claude,cursor,trae"
|
|
11
|
+
* WOWOK_SKILLS_NO_MCP Set to "1" or "true" to skip MCP server management (default: auto-install MCP)
|
|
11
12
|
*/
|
|
12
13
|
|
|
13
14
|
const fs = require('fs');
|
|
14
15
|
const path = require('path');
|
|
15
16
|
const os = require('os');
|
|
17
|
+
const { execSync } = require('child_process');
|
|
16
18
|
|
|
17
19
|
const SKILL_DIRS = [
|
|
18
20
|
'wowok-provider',
|
|
@@ -32,10 +34,14 @@ const SKILL_DIRS = [
|
|
|
32
34
|
|
|
33
35
|
const CLIENT_DIRS = {
|
|
34
36
|
claude: path.join(os.homedir(), '.claude', 'skills'),
|
|
35
|
-
codex: path.join(os.homedir(), '.codex', 'skills'),
|
|
36
|
-
agents: path.join(os.homedir(), '.agents', 'skills'),
|
|
37
|
-
codebuddy: path.join(os.homedir(), '.codebuddy', 'skills'),
|
|
38
37
|
cursor: path.join(os.homedir(), '.cursor', 'rules'),
|
|
38
|
+
windsurf: path.join(os.homedir(), '.windsurf', 'skills'),
|
|
39
|
+
codebuddy: path.join(os.homedir(), '.codebuddy', 'skills'),
|
|
40
|
+
codex: path.join(os.homedir(), '.codex', 'skills'),
|
|
41
|
+
trae: path.join(os.homedir(), '.agents', 'skills'),
|
|
42
|
+
qoder: path.join(os.homedir(), '.qoder', 'skills'),
|
|
43
|
+
roo: path.join(os.homedir(), '.roo', 'skills'),
|
|
44
|
+
agents: path.join(os.homedir(), '.agents', 'skills'), // deprecated alias
|
|
39
45
|
copilot: path.join(os.homedir(), '.github', 'prompts'),
|
|
40
46
|
};
|
|
41
47
|
|
|
@@ -188,6 +194,7 @@ function getTargets() {
|
|
|
188
194
|
|
|
189
195
|
function main() {
|
|
190
196
|
const event = process.env.npm_lifecycle_event || '';
|
|
197
|
+
const skipMcp = process.env.WOWOK_SKILLS_NO_MCP === '1' || process.env.WOWOK_SKILLS_NO_MCP === 'true';
|
|
191
198
|
|
|
192
199
|
if (event === 'postinstall') {
|
|
193
200
|
const targets = getTargets();
|
|
@@ -202,6 +209,34 @@ function main() {
|
|
|
202
209
|
}
|
|
203
210
|
|
|
204
211
|
console.log(`[wowok-skills] Done — ${total} skills installed across ${targets.length} client(s).`);
|
|
212
|
+
|
|
213
|
+
// ─── MCP Server Management ───────────────────────────────────────
|
|
214
|
+
console.log('');
|
|
215
|
+
|
|
216
|
+
if (skipMcp) {
|
|
217
|
+
console.log('[wowok-skills] WOWOK_SKILLS_NO_MCP=1 — skipping MCP server management.');
|
|
218
|
+
} else {
|
|
219
|
+
console.log('[wowok-skills] Checking MCP server...');
|
|
220
|
+
|
|
221
|
+
// Step 1: Install or upgrade the MCP server
|
|
222
|
+
const mcpChanged = ensureMcpServer();
|
|
223
|
+
|
|
224
|
+
// Step 2: Write MCP config for each target client
|
|
225
|
+
console.log('[wowok-skills] Registering MCP server in client config...');
|
|
226
|
+
for (const target of targets) {
|
|
227
|
+
writeMcpConfig(target);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Step 3: Restart MCP server so the new version takes effect
|
|
231
|
+
if (mcpChanged) {
|
|
232
|
+
console.log('[wowok-skills] Restarting MCP server (so IDE picks up the new version)...');
|
|
233
|
+
restartMcpServer();
|
|
234
|
+
} else {
|
|
235
|
+
console.log('[wowok-skills] MCP server unchanged — no restart needed.');
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
console.log('[wowok-skills] MCP server setup complete.');
|
|
239
|
+
}
|
|
205
240
|
} else if (event === 'preuninstall') {
|
|
206
241
|
const targets = Object.keys(CLIENT_DIRS);
|
|
207
242
|
console.log('[wowok-skills] Removing skills from all client dirs...');
|
|
@@ -229,4 +264,306 @@ function countExisting(targetDir) {
|
|
|
229
264
|
return count;
|
|
230
265
|
}
|
|
231
266
|
|
|
267
|
+
// =========================================================================
|
|
268
|
+
// MCP Server Management — auto-install, upgrade, config, and restart
|
|
269
|
+
// =========================================================================
|
|
270
|
+
|
|
271
|
+
/** MCP server npm package name */
|
|
272
|
+
const MCP_PACKAGE = '@wowok/agent-mcp';
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* MCP config entries per client target.
|
|
276
|
+
* null means the client does not support MCP or manages it internally.
|
|
277
|
+
*/
|
|
278
|
+
const MCP_TARGET_CONFIGS = {
|
|
279
|
+
claude: {
|
|
280
|
+
configPath: path.join(os.homedir(), '.claude', 'settings.json'),
|
|
281
|
+
merge: (config) => {
|
|
282
|
+
config.mcpServers = config.mcpServers || {};
|
|
283
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
284
|
+
return config;
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
codebuddy: {
|
|
288
|
+
configPath: path.join(os.homedir(), '.codebuddy', 'mcp.json'),
|
|
289
|
+
merge: (config) => {
|
|
290
|
+
config.mcpServers = config.mcpServers || {};
|
|
291
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
292
|
+
return config;
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
windsurf: {
|
|
296
|
+
configPath: path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
|
|
297
|
+
merge: (config) => {
|
|
298
|
+
config.mcpServers = config.mcpServers || {};
|
|
299
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
300
|
+
return config;
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
qoder: {
|
|
304
|
+
configPath: process.platform === 'win32'
|
|
305
|
+
? path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Qoder', 'mcp-settings.json')
|
|
306
|
+
: path.join(os.homedir(), '.config', 'qoder', 'mcp-settings.json'),
|
|
307
|
+
merge: (config) => {
|
|
308
|
+
config.mcpServers = config.mcpServers || {};
|
|
309
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
310
|
+
return config;
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
roo: {
|
|
314
|
+
configPath: path.join(os.homedir(), '.roo', 'mcp_settings.json'),
|
|
315
|
+
merge: (config) => {
|
|
316
|
+
config.mcpServers = config.mcpServers || {};
|
|
317
|
+
config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
318
|
+
return config;
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
// trae / agents: IDE-managed MCP via ~/.trae-cn/mcps/ directory structure — skip global config
|
|
322
|
+
trae: null,
|
|
323
|
+
agents: null,
|
|
324
|
+
// cursor: MCP config is project-level, handled by `wowok-skills init` in project dir
|
|
325
|
+
cursor: null,
|
|
326
|
+
// copilot: user-level MCP config (Copilot CLI)
|
|
327
|
+
copilot: {
|
|
328
|
+
configPath: path.join(os.homedir(), '.copilot', 'mcp-config.json'),
|
|
329
|
+
merge: (config) => {
|
|
330
|
+
config.mcpServers = config.mcpServers || {};
|
|
331
|
+
config.mcpServers.wowok = { type: 'local', command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
|
|
332
|
+
return config;
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
// codex: global TOML config (~/.codex/config.toml)
|
|
336
|
+
codex: {
|
|
337
|
+
configPath: path.join(os.homedir(), '.codex', 'config.toml'),
|
|
338
|
+
format: 'toml',
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Parse a semver string to its major version number.
|
|
344
|
+
* Returns 0 for invalid/missing versions.
|
|
345
|
+
*/
|
|
346
|
+
function semverMajor(version) {
|
|
347
|
+
if (!version) return 0;
|
|
348
|
+
const parts = version.split('.');
|
|
349
|
+
return parseInt(parts[0], 10) || 0;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Get the currently installed global version of the MCP server.
|
|
354
|
+
* Uses `npm ls -g <package>` (targeted, no tree scan) for speed.
|
|
355
|
+
* Returns null if not installed.
|
|
356
|
+
*/
|
|
357
|
+
function getInstalledMcpVersion() {
|
|
358
|
+
try {
|
|
359
|
+
// npm ls -g <pkg> is faster than npm list -g because it skips
|
|
360
|
+
// scanning unrelated packages in the global node_modules.
|
|
361
|
+
const output = execSync(`npm ls -g ${MCP_PACKAGE} --depth=0 --json`, {
|
|
362
|
+
encoding: 'utf-8',
|
|
363
|
+
stdio: 'pipe',
|
|
364
|
+
timeout: 15000,
|
|
365
|
+
});
|
|
366
|
+
const parsed = JSON.parse(output);
|
|
367
|
+
// npm ls output has the package as a top-level key, not under dependencies
|
|
368
|
+
const pkg = parsed.dependencies?.[MCP_PACKAGE] || parsed[MCP_PACKAGE];
|
|
369
|
+
return pkg?.version || null;
|
|
370
|
+
} catch {
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Get the latest available version from the npm registry.
|
|
377
|
+
* Returns null on failure (offline, registry unreachable, etc.).
|
|
378
|
+
*/
|
|
379
|
+
function getLatestMcpVersion() {
|
|
380
|
+
try {
|
|
381
|
+
const output = execSync(`npm view ${MCP_PACKAGE} version`, {
|
|
382
|
+
encoding: 'utf-8',
|
|
383
|
+
stdio: 'pipe',
|
|
384
|
+
timeout: 15000,
|
|
385
|
+
});
|
|
386
|
+
return output.trim();
|
|
387
|
+
} catch {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Install an npm package globally with retry logic.
|
|
394
|
+
* Retries up to 2 times on failure (covers transient network errors).
|
|
395
|
+
*/
|
|
396
|
+
function npmInstallGlobal(pkg, retries = 2) {
|
|
397
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
398
|
+
try {
|
|
399
|
+
execSync(`npm install -g ${pkg}`, { stdio: 'inherit', timeout: 120000 });
|
|
400
|
+
return true;
|
|
401
|
+
} catch (err) {
|
|
402
|
+
if (attempt < retries) {
|
|
403
|
+
console.log(`[wowok-skills] npm install attempt ${attempt} failed, retrying...`);
|
|
404
|
+
// Wait 2s before retry to let network recover
|
|
405
|
+
execSync('ping -n 3 127.0.0.1 >nul', { stdio: 'pipe', timeout: 5000 });
|
|
406
|
+
} else {
|
|
407
|
+
console.error(`[wowok-skills] npm install failed after ${retries} attempts: ${err.message}`);
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return false;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Ensure the MCP server is installed and up to date.
|
|
417
|
+
*
|
|
418
|
+
* - Not installed → install latest
|
|
419
|
+
* - Outdated (same major) → upgrade to latest
|
|
420
|
+
* - Major version bump → warn user, skip auto-upgrade
|
|
421
|
+
* - Up to date → skip
|
|
422
|
+
*
|
|
423
|
+
* Returns true if the package was installed or upgraded (changed).
|
|
424
|
+
*/
|
|
425
|
+
function ensureMcpServer() {
|
|
426
|
+
const currentVersion = getInstalledMcpVersion();
|
|
427
|
+
const latestVersion = getLatestMcpVersion();
|
|
428
|
+
|
|
429
|
+
if (currentVersion) {
|
|
430
|
+
console.log(`[wowok-skills] MCP server ${MCP_PACKAGE} v${currentVersion} found.`);
|
|
431
|
+
|
|
432
|
+
if (!latestVersion) {
|
|
433
|
+
console.log(`[wowok-skills] Cannot check latest version (offline or registry unreachable). Keeping v${currentVersion}.`);
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
if (currentVersion === latestVersion) {
|
|
438
|
+
console.log(`[wowok-skills] MCP server is up to date (v${currentVersion}).`);
|
|
439
|
+
return false;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
// Major version guard: warn if the latest version has a different major
|
|
443
|
+
const currentMajor = semverMajor(currentVersion);
|
|
444
|
+
const latestMajor = semverMajor(latestVersion);
|
|
445
|
+
|
|
446
|
+
if (latestMajor > currentMajor) {
|
|
447
|
+
console.warn(`[wowok-skills] ⚠ WARNING: Major version bump detected v${currentVersion} → v${latestVersion}.`);
|
|
448
|
+
console.warn(`[wowok-skills] Skipping auto-upgrade to avoid breaking changes.`);
|
|
449
|
+
console.warn(`[wowok-skills] To upgrade manually: npm install -g ${MCP_PACKAGE}@latest`);
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
console.log(`[wowok-skills] Upgrading MCP server v${currentVersion} → v${latestVersion}...`);
|
|
454
|
+
if (npmInstallGlobal(`${MCP_PACKAGE}@latest`)) {
|
|
455
|
+
console.log(`[wowok-skills] MCP server upgraded to v${latestVersion}.`);
|
|
456
|
+
return true;
|
|
457
|
+
}
|
|
458
|
+
console.error(`[wowok-skills] MCP server upgrade FAILED. Keeping v${currentVersion}.`);
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
console.log(`[wowok-skills] Installing MCP server ${MCP_PACKAGE}...`);
|
|
463
|
+
if (npmInstallGlobal(MCP_PACKAGE)) {
|
|
464
|
+
console.log(`[wowok-skills] MCP server installed.`);
|
|
465
|
+
return true;
|
|
466
|
+
}
|
|
467
|
+
console.error(`[wowok-skills] MCP server installation FAILED.`);
|
|
468
|
+
return false;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Write MCP server config entry for a given client target.
|
|
473
|
+
* Safely merges with any existing MCP configuration.
|
|
474
|
+
* Supports JSON format (most clients) and TOML format (Codex).
|
|
475
|
+
*/
|
|
476
|
+
function writeMcpConfig(target) {
|
|
477
|
+
const cfg = MCP_TARGET_CONFIGS[target];
|
|
478
|
+
if (!cfg) {
|
|
479
|
+
console.log(`[wowok-skills] MCP config: ${target} does not support external MCP registration (skipped).`);
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// ── TOML format (Codex CLI uses ~/.codex/config.toml) ──────────────
|
|
484
|
+
if (cfg.format === 'toml') {
|
|
485
|
+
try {
|
|
486
|
+
const tomlEntry = '\n[mcp_servers.wowok]\ncommand = "npx"\nargs = ["-y", "@wowok/agent-mcp"]\n';
|
|
487
|
+
let content = '';
|
|
488
|
+
if (fs.existsSync(cfg.configPath)) {
|
|
489
|
+
content = fs.readFileSync(cfg.configPath, 'utf-8');
|
|
490
|
+
}
|
|
491
|
+
if (content.includes('[mcp_servers.wowok]')) {
|
|
492
|
+
console.log(`[wowok-skills] MCP config already up to date: ${cfg.configPath}`);
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
fs.mkdirSync(path.dirname(cfg.configPath), { recursive: true });
|
|
496
|
+
fs.writeFileSync(cfg.configPath, content + tomlEntry, 'utf-8');
|
|
497
|
+
console.log(`[wowok-skills] MCP config written: ${cfg.configPath}`);
|
|
498
|
+
return true;
|
|
499
|
+
} catch (err) {
|
|
500
|
+
console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// ── JSON format (all other clients) ────────────────────────────────
|
|
506
|
+
try {
|
|
507
|
+
let config = {};
|
|
508
|
+
const dir = path.dirname(cfg.configPath);
|
|
509
|
+
if (fs.existsSync(cfg.configPath)) {
|
|
510
|
+
config = JSON.parse(fs.readFileSync(cfg.configPath, 'utf-8'));
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
const before = JSON.stringify(config);
|
|
514
|
+
config = cfg.merge(config);
|
|
515
|
+
const after = JSON.stringify(config);
|
|
516
|
+
|
|
517
|
+
if (before !== after) {
|
|
518
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
519
|
+
fs.writeFileSync(cfg.configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
520
|
+
console.log(`[wowok-skills] MCP config written: ${cfg.configPath}`);
|
|
521
|
+
return true;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
console.log(`[wowok-skills] MCP config already up to date: ${cfg.configPath}`);
|
|
525
|
+
return false;
|
|
526
|
+
} catch (err) {
|
|
527
|
+
console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Attempt to restart the running MCP server process.
|
|
534
|
+
*
|
|
535
|
+
* The MCP server is a child process of the IDE (Claude Code, Trae, etc.).
|
|
536
|
+
* We cannot directly "start" it — only kill the existing process so the IDE
|
|
537
|
+
* detects the exit and auto-restarts it with the new version.
|
|
538
|
+
*
|
|
539
|
+
* Best-effort: if the kill fails (no process running), it's harmless.
|
|
540
|
+
*/
|
|
541
|
+
function restartMcpServer() {
|
|
542
|
+
try {
|
|
543
|
+
if (process.platform === 'win32') {
|
|
544
|
+
// Windows: use PowerShell (via -EncodedCommand to avoid quoting hell)
|
|
545
|
+
const psScript =
|
|
546
|
+
'Get-CimInstance Win32_Process -Filter "Name=\'node.exe\' AND CommandLine LIKE \'%wowok%agent-mcp%\'" | ' +
|
|
547
|
+
'ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }';
|
|
548
|
+
const encoded = Buffer.from(psScript, 'utf16le').toString('base64');
|
|
549
|
+
execSync(`powershell -NoProfile -EncodedCommand ${encoded}`, {
|
|
550
|
+
stdio: 'pipe',
|
|
551
|
+
timeout: 10000,
|
|
552
|
+
});
|
|
553
|
+
} else {
|
|
554
|
+
// Unix: pkill by command-line pattern
|
|
555
|
+
execSync('pkill -f "wowok.*agent-mcp" 2>/dev/null || true', {
|
|
556
|
+
stdio: 'pipe',
|
|
557
|
+
timeout: 5000,
|
|
558
|
+
shell: true,
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
console.log('[wowok-skills] MCP server process terminated (IDE will auto-restart).');
|
|
562
|
+
return true;
|
|
563
|
+
} catch (e) {
|
|
564
|
+
console.log('[wowok-skills] No running MCP server process found. Start your IDE to launch it.');
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
232
569
|
main();
|
package/wowok-machine/SKILL.md
CHANGED
|
@@ -65,9 +65,9 @@ This Skill keeps the **workflow conversation guidance**, **business flow design
|
|
|
65
65
|
| `permissionIndex` | Shared across ALL Progress instances | Internal staff (warehouse, admin, platform) — same for every order |
|
|
66
66
|
| `namedOperator` | Per-Progress namespace | Roles that differ per order (delivery person, reviewer, agent) |
|
|
67
67
|
|
|
68
|
-
- `namedOperator: ""` (empty string): grants **order owner and agents** the right to execute. Standard way to let customers operate.
|
|
69
|
-
- `namedOperator: "<role_name>"`: role-based operators managed per Progress instance. Each Progress independently assigns addresses to role names.
|
|
70
|
-
- **Both fields set**: executor needs EITHER permission — internal staff OR external roles.
|
|
68
|
+
- `namedOperator: ""` (empty string): grants **order owner and agents** the right to execute. Standard way to let customers operate. **⚠ Must be advanced via `order.progress`** (uses `order.has_op_permission`); direct `progress::next` aborts with Permission denied (code 5).
|
|
69
|
+
- `namedOperator: "<role_name>"`: role-based operators managed per Progress instance. Each Progress independently assigns addresses to role names. **Advanced via `progress.operate`** directly.
|
|
70
|
+
- **Both fields set**: executor needs EITHER permission — internal staff OR external roles. **Advanced via `progress.operate`** (the non-empty namedOperator takes precedence for routing).
|
|
71
71
|
- **Design principle**: Use custom permissions (dedicated Permission object with custom indices), not built-in indices. Define workflow-specific roles, reference those indices in Forwards.
|
|
72
72
|
|
|
73
73
|
### Guard on Forwards
|
package/wowok-messenger/SKILL.md
CHANGED
|
@@ -56,14 +56,14 @@ Every conversation between two addresses has a deterministic session. Messages a
|
|
|
56
56
|
Before any communication:
|
|
57
57
|
|
|
58
58
|
1. **Account must exist** → `account_operation` (gen)
|
|
59
|
-
2. **Enable messenger** → `account_operation` (messenger), set
|
|
59
|
+
2. **Enable messenger** → `account_operation` (messenger), set `enabled: true`
|
|
60
60
|
3. **Get your address** → `account_operation` (get) — share this address with your counterparties
|
|
61
61
|
|
|
62
|
-
>
|
|
62
|
+
> Messenger must be enabled for message delivery. Without it, your account has no messenger endpoint and cannot receive messages. Account name is used for messenger identity lookup.
|
|
63
63
|
|
|
64
64
|
### Account Limit
|
|
65
65
|
|
|
66
|
-
A single device supports up to 1000 messenger accounts. Exceeding this returns "Maximum 1000 messenger accounts allowed". Use `account_operation → messenger {
|
|
66
|
+
A single device supports up to 1000 messenger accounts. Exceeding this returns "Maximum 1000 messenger accounts allowed". Use `account_operation → messenger { enabled: false }` to disable unused accounts.
|
|
67
67
|
|
|
68
68
|
### Contact Object (On-Chain Bridge)
|
|
69
69
|
|
|
@@ -225,7 +225,7 @@ When a dispute requires evidence: (1) `generate_wts` → export messages by time
|
|
|
225
225
|
## Common Pitfalls
|
|
226
226
|
|
|
227
227
|
- **One-message limit trap**: Sending a vague first message to a stranger wastes your only chance. Make the first message complete and actionable.
|
|
228
|
-
- **Disabled messenger**: Without
|
|
228
|
+
- **Disabled messenger**: Without messenger enabled, your account has no endpoint — counterparties cannot find or message you.
|
|
229
229
|
- **WTS range too narrow**: Selecting only favorable messages undermines evidence credibility. Include the full conversation.
|
|
230
230
|
- **Guard list without strategy**: Adding a Guard to your list without testing it (`gen_passport`) means you don't know what conditions strangers must meet — you may be blocking legitimate contacts.
|
|
231
231
|
- **`allowStrangerMessages: false` with no guard list and no friends**: Nobody can contact you. Always ensure at least one inbound path exists.
|
package/wowok-order/SKILL.md
CHANGED
|
@@ -79,12 +79,14 @@ Use `wip_file` → `op: "verify"`, `wipFilePath: "<wip_url>"`, `hash_equal: "<wi
|
|
|
79
79
|
|
|
80
80
|
**Step 3: Classify every forward**:
|
|
81
81
|
|
|
82
|
-
| `namedOperator` | `guard` | User Can Execute? |
|
|
83
|
-
|
|
84
|
-
| `Some("")` | `None` | ✅ Independently
|
|
85
|
-
| `Some("")` | `Some({...})` | ⚠️ Need Guard passport — **no bypass** |
|
|
86
|
-
| `None` | Any | ❌ Provider/permission-holder only |
|
|
87
|
-
| `Some("<other>")` | Any | ❌ Named operator required |
|
|
82
|
+
| `namedOperator` | `guard` | User Can Execute? | Operation Path |
|
|
83
|
+
|-----------------|---------|-------------------|----------------|
|
|
84
|
+
| `Some("")` | `None` | ✅ Independently | **`order.progress`** (uses `order.has_op_permission`) |
|
|
85
|
+
| `Some("")` | `Some({...})` | ⚠️ Need Guard passport — **no bypass** | **`order.progress`** + Passport |
|
|
86
|
+
| `None` | Any | ❌ Provider/permission-holder only | `progress.operate` (provider path) |
|
|
87
|
+
| `Some("<other>")` | Any | ❌ Named operator required | `progress.operate` (named operator path) |
|
|
88
|
+
|
|
89
|
+
> **⚠ CRITICAL ROUTING RULE**: When `namedOperator=""` (empty string = OrderHolder), you MUST use `order.progress` (NOT `progress.operate`). Direct `progress::next` will abort with "Permission denied" (code 5) because the Progress-level permission check does not recognize the OrderHolder short-circuit. The empty-string `namedOperator` is set automatically by `service::buy` when an Order is created — the customer (order.builder) becomes the operator for the `""` namespace. In ALL other cases (non-empty `namedOperator` or `permissionIndex`-only), use `progress.operate` on the Progress object directly.
|
|
88
90
|
|
|
89
91
|
**Step 4: Detect paths**:
|
|
90
92
|
- Terminal nodes (no outgoing forwards) → order ends
|
package/wowok-provider/SKILL.md
CHANGED
|
@@ -311,6 +311,16 @@ Before forking, verify necessity via `get_project_detail` → `has_published_obj
|
|
|
311
311
|
| Order | Fund escrow | Read-only |
|
|
312
312
|
| **Progress** | Workflow state | **Operate this** — `hold: true` (lock) → work → `hold: false` (submit) |
|
|
313
313
|
|
|
314
|
+
**⚠ Progress Routing Rule** (critical):
|
|
315
|
+
|
|
316
|
+
| Forward `namedOperator` | Required Operation | Why |
|
|
317
|
+
|------------------------|--------------------|-----|
|
|
318
|
+
| `""` (empty = OrderHolder) | `order.progress` | Uses `order.has_op_permission` — order owner/agents authorized |
|
|
319
|
+
| `"<role_name>"` (non-empty) | `progress.operate` | Uses Progress named_operator namespace |
|
|
320
|
+
| `None` + `permissionIndex` | `progress.operate` | Uses Permission object entity table |
|
|
321
|
+
|
|
322
|
+
Wrong path → "Permission denied" (Move abort code 5). The empty-string `namedOperator` is set automatically by `service::buy` — the customer becomes the operator. Providers who need to act on a forward should either use a non-empty `namedOperator` (and `progress.operate`) or use `permissionIndex` (requiring a custom permission grant in the Service's Permission object).
|
|
323
|
+
|
|
314
324
|
**AI Reminder**: When fulfilling, check `customer_required` fields. Missing → prompt via Messenger.
|
|
315
325
|
|
|
316
326
|
---
|
package/wowok-safety/SKILL.md
CHANGED
|
@@ -118,16 +118,19 @@ When users request complex systems without naming, propose this scheme:
|
|
|
118
118
|
|
|
119
119
|
### 4.1 `replaceExistName` Flag
|
|
120
120
|
|
|
121
|
-
Controls name collision behavior
|
|
121
|
+
Controls name collision behavior. **DISCOURAGED** — prefer versioned names (`_v1`, `_v2`).
|
|
122
122
|
|
|
123
123
|
| Value | Effect |
|
|
124
124
|
|-------|--------|
|
|
125
125
|
| `false` (default) | Throws error if name is in use — safe default |
|
|
126
|
-
| `true` |
|
|
126
|
+
| `true` | Existing object/account with the same name is **suspended** (deactivated) to free the name |
|
|
127
127
|
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
128
|
+
**Account-specific rules** (stricter than on-chain objects):
|
|
129
|
+
- `replaceExistName: true` on the **default account** (`name=''` or omitted) is **FORBIDDEN** — throws error. The default account is unique and cannot be suspended by replacement; use `suspend()` explicitly if needed.
|
|
130
|
+
- On non-default account names, `replaceExistName: true` **suspends** the old account (moves to Suspended tab, clears name + messenger). The old account can be reactivated via `resume(address, new_name)`.
|
|
131
|
+
- This prevents the "orphan unnamed account" bug where old accounts leaked into the Active list without a name.
|
|
132
|
+
|
|
133
|
+
**On-chain objects** (NamedObjectSchema): `replaceExistName: true` steals the name; the old object becomes unnamed (address-only reference). Prefer versioned names for production.
|
|
131
134
|
|
|
132
135
|
---
|
|
133
136
|
|
package/wowok-tools/SKILL.md
CHANGED
|
@@ -152,11 +152,11 @@ Step 3: MODIFY reward { object: "reward_v1", guard_add: [...] } // bind guard
|
|
|
152
152
|
|-----------------|----------------------------------|
|
|
153
153
|
| `service` | `machine` must be **published**. Allocators: array order = priority (first-Guard-wins). Publish locks `machine`/`order_allocators`; `sales`/`discount`/`description` stay mutable. |
|
|
154
154
|
| `machine` | Nodes immutable after publish. Forward needs ≥1 of `namedOperator`/`permissionIndex` (both empty = SDK error). `""` = entry node. → [wowok-machine](../wowok-machine/SKILL.md) |
|
|
155
|
-
| `progress` | Two-phase: `hold:true` (lock) → `hold:false` (submit). `adminUnhold:true` force-releases. SDK auto-fetches Machine when resolving `object_address`. |
|
|
155
|
+
| `progress` | Two-phase: `hold:true` (lock) → `hold:false` (submit). `adminUnhold:true` force-releases. SDK auto-fetches Machine when resolving `object_address`. **⚠ Routing rule**: Use `progress.operate` ONLY for forwards with non-empty `namedOperator` or `permissionIndex`-only. For forwards with `namedOperator=""` (OrderHolder), use `order.progress` instead — direct `progress::next` aborts with Permission denied (code 5). |
|
|
156
156
|
| `arbitration` | MAX 20 propositions, 520 voters. Verdict (2→3) **irreversible** — only customer can `order.arb_objection`. Non-Finished withdrawal = 30-day wait. → [wowok-arbitrator](../wowok-arbitrator/SKILL.md) |
|
|
157
157
|
| `guard` | `root.type:"node"` (inline) or `"file"` (JSON/MD). MAX 4 `rely`. `rep:false` Guards excluded from others' `rely`. System addresses `0xaab`/`0xaaa` need table entries. → [wowok-guard](../wowok-guard/SKILL.md) |
|
|
158
158
|
| `gen_passport` | MAX 20 Guards/call (AND-ed). Omit `info` to auto-fetch. Passport = frozen immutable credential. |
|
|
159
|
-
| `order` | Agents can operate but **cannot withdraw** — only builder. `order.progress`+Guard requires Passport. Arb via `order.arb_confirm`/`arb_objection` (not `arbitration` directly). `arb_claim_compensation` once-only. → [wowok-order](../wowok-order/SKILL.md) |
|
|
159
|
+
| `order` | Agents can operate but **cannot withdraw** — only builder. `order.progress`+Guard requires Passport. **⚠ Routing rule**: `order.progress` works ONLY for forwards with `namedOperator=""` (OrderHolder) — uses `order.has_op_permission`. For non-empty `namedOperator` or `permissionIndex`-only forwards, use `progress.operate` on the Progress object directly. Arb via `order.arb_confirm`/`arb_objection` (not `arbitration` directly). `arb_claim_compensation` once-only. → [wowok-order](../wowok-order/SKILL.md) |
|
|
160
160
|
| `payment` | `type_parameter` required. **Irreversible** — no refund. |
|
|
161
161
|
| `personal` | **Permanently public** — warn users before writing sensitive data. |
|
|
162
162
|
| `demand` | Guard-gated: `guards` filter presenters. Separate from Service. |
|
|
@@ -177,7 +177,7 @@ Step 3: MODIFY reward { object: "reward_v1", guard_add: [...] } // bind guard
|
|
|
177
177
|
|------|----------------|
|
|
178
178
|
| `query_toolkit` | `token_list` cached (first query populates). `account_balance`: `balance=true` for totals, `coin={cursor,limit}` for paginated. `onchain_objects` batches 50/req. `local_names` resolves accounts + marks. |
|
|
179
179
|
| `onchain_table_data` | 12 types. Global (no `parent`): `entity_registrar`, `entity_linker`. `onchain_table_item_generic` = universal fallback. |
|
|
180
|
-
| `account_operation` | `faucet` testnet/localnet only. Mainnet funding: `transfer` from existing account (1 WOW = 10^9 base units). `gen` with `
|
|
180
|
+
| `account_operation` | `faucet` testnet/localnet only. Mainnet funding: `transfer` from existing account (1 WOW = 10^9 base units). `gen` with `messenger: true` enables Messenger. **Naming convention**: `<role>-<number>` (e.g. `shop-001`, `user-001`, `arb-001`) for easy filtering. `gen.replaceExistName:true` is DISCOURAGED — suspends old account; FORBIDDEN on default account (name=''). Private keys never leave device. |
|
|
181
181
|
| `local_mark_operation` | Max 50 tags/entry (64 chars). `replaceExistName:true` steals names — prefer `_v1`/`_v2`. |
|
|
182
182
|
| `local_info_operation` | Max 50 contents/entry, 300 chars each. |
|
|
183
183
|
| `messenger_operation` | Stranger: 1 msg before reply (~480 chars). Guard block → rejection includes guard list; sender needs Passport. WTS: `generate` needs continuous sequences. → [wowok-messenger](../wowok-messenger/SKILL.md) |
|