@wire-protocol/cli 0.1.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/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +334 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.js +100 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/registry.d.ts +3 -0
- package/dist/commands/registry.js +383 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/run.d.ts +7 -0
- package/dist/commands/run.js +137 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/validate.d.ts +1 -0
- package/dist/commands/validate.js +47 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +114 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +16 -0
- package/dist/utils.js +47 -0
- package/dist/utils.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registryCommand = registryCommand;
|
|
40
|
+
const path_1 = __importDefault(require("path"));
|
|
41
|
+
const https_1 = __importDefault(require("https"));
|
|
42
|
+
const fs_1 = require("fs");
|
|
43
|
+
const js_yaml_1 = require("js-yaml");
|
|
44
|
+
// ─── Registry config ─────────────────────────────────────────────────────────
|
|
45
|
+
// Official registry: the skills/ folder of the wire-protocol GitHub repo
|
|
46
|
+
const REGISTRY_BASE = 'https://raw.githubusercontent.com/YuvakiranGC/wire-protocol/main/skills';
|
|
47
|
+
const REGISTRY_INDEX = 'https://raw.githubusercontent.com/YuvakiranGC/wire-protocol/main/registry/index.json';
|
|
48
|
+
// Local install dir: ~/.wire/skills/
|
|
49
|
+
const LOCAL_SKILLS_DIR = path_1.default.join(process.env.HOME || '~', '.wire', 'skills');
|
|
50
|
+
// Local published skills dir: ~/.wire/published/
|
|
51
|
+
const LOCAL_PUBLISHED_DIR = path_1.default.join(process.env.HOME || '~', '.wire', 'published');
|
|
52
|
+
// ─── Entry point ─────────────────────────────────────────────────────────────
|
|
53
|
+
async function registryCommand(action, arg) {
|
|
54
|
+
switch (action) {
|
|
55
|
+
case 'add':
|
|
56
|
+
case 'install':
|
|
57
|
+
await installSkill(arg);
|
|
58
|
+
break;
|
|
59
|
+
case 'list':
|
|
60
|
+
await listSkills();
|
|
61
|
+
break;
|
|
62
|
+
case 'remove':
|
|
63
|
+
case 'uninstall':
|
|
64
|
+
await removeSkill(arg);
|
|
65
|
+
break;
|
|
66
|
+
case 'search':
|
|
67
|
+
await searchSkills(arg);
|
|
68
|
+
break;
|
|
69
|
+
case 'info':
|
|
70
|
+
await infoSkill(arg);
|
|
71
|
+
break;
|
|
72
|
+
case 'publish':
|
|
73
|
+
await publishSkill(arg);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ─── install ─────────────────────────────────────────────────────────────────
|
|
78
|
+
async function installSkill(nameOrPath) {
|
|
79
|
+
(0, fs_1.mkdirSync)(LOCAL_SKILLS_DIR, { recursive: true });
|
|
80
|
+
// Local file path
|
|
81
|
+
if (nameOrPath.endsWith('.wire.yaml') && (0, fs_1.existsSync)(path_1.default.resolve(nameOrPath))) {
|
|
82
|
+
const dest = path_1.default.join(LOCAL_SKILLS_DIR, path_1.default.basename(nameOrPath));
|
|
83
|
+
(0, fs_1.copyFileSync)(path_1.default.resolve(nameOrPath), dest);
|
|
84
|
+
console.log(`✅ Installed skill from ${nameOrPath}`);
|
|
85
|
+
console.log(` Location: ${dest}`);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Scoped name: @scope/skill — treat as just skill name for now
|
|
89
|
+
const skillName = nameOrPath.startsWith('@') ? nameOrPath.split('/')[1] : nameOrPath;
|
|
90
|
+
console.log(`\n📦 Installing @wire/${skillName}...`);
|
|
91
|
+
// Try to load index to get metadata
|
|
92
|
+
let entry;
|
|
93
|
+
try {
|
|
94
|
+
const index = await fetchIndex();
|
|
95
|
+
entry = index.skills.find(s => s.name === skillName);
|
|
96
|
+
if (!entry) {
|
|
97
|
+
console.error(`\n❌ Skill "${skillName}" not found in the Wire registry.`);
|
|
98
|
+
console.log('\nAvailable skills:');
|
|
99
|
+
index.skills.forEach(s => console.log(` • ${s.name} — ${s.description}`));
|
|
100
|
+
console.log('\nRun `wire registry search <query>` to find skills.');
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Index unavailable — try direct download
|
|
106
|
+
}
|
|
107
|
+
const url = `${REGISTRY_BASE}/${skillName}/${skillName}.wire.yaml`;
|
|
108
|
+
console.log(` Fetching from registry...`);
|
|
109
|
+
try {
|
|
110
|
+
const content = await fetchUrl(url);
|
|
111
|
+
const dest = path_1.default.join(LOCAL_SKILLS_DIR, `${skillName}.wire.yaml`);
|
|
112
|
+
(0, fs_1.writeFileSync)(dest, content);
|
|
113
|
+
if (entry) {
|
|
114
|
+
console.log(`\n✅ Installed @wire/${skillName} v${entry.version}`);
|
|
115
|
+
console.log(` ${entry.description}`);
|
|
116
|
+
console.log(` Endpoints: ${entry.endpoints}`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(`\n✅ Installed @wire/${skillName}`);
|
|
120
|
+
}
|
|
121
|
+
console.log(` Location: ${dest}`);
|
|
122
|
+
console.log(`\n Add to your project:`);
|
|
123
|
+
console.log(` wire config claude --skills ${LOCAL_SKILLS_DIR}`);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
console.error(`\n❌ Could not download skill "${skillName}".`);
|
|
127
|
+
console.error(` Make sure the skill exists: wire registry search ${skillName}`);
|
|
128
|
+
console.error(` Or install from a local file: wire registry install ./path/to/skill.wire.yaml`);
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// ─── list ─────────────────────────────────────────────────────────────────────
|
|
133
|
+
async function listSkills() {
|
|
134
|
+
// Locally installed
|
|
135
|
+
const hasLocal = (0, fs_1.existsSync)(LOCAL_SKILLS_DIR);
|
|
136
|
+
const localFiles = hasLocal
|
|
137
|
+
? (0, fs_1.readdirSync)(LOCAL_SKILLS_DIR).filter(f => f.endsWith('.wire.yaml'))
|
|
138
|
+
: [];
|
|
139
|
+
console.log('\n📋 Installed Wire skills:\n');
|
|
140
|
+
if (localFiles.length === 0) {
|
|
141
|
+
console.log(' No skills installed locally.');
|
|
142
|
+
console.log(' Run `wire registry install github` to install a skill.\n');
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
for (const f of localFiles) {
|
|
146
|
+
const name = f.replace('.wire.yaml', '');
|
|
147
|
+
const skillPath = path_1.default.join(LOCAL_SKILLS_DIR, f);
|
|
148
|
+
let version = '';
|
|
149
|
+
try {
|
|
150
|
+
const raw = (0, fs_1.readFileSync)(skillPath, 'utf8');
|
|
151
|
+
const parsed = (0, js_yaml_1.load)(raw);
|
|
152
|
+
version = parsed?.skill?.version ? `v${parsed.skill.version}` : '';
|
|
153
|
+
}
|
|
154
|
+
catch { }
|
|
155
|
+
console.log(` • ${name.padEnd(18)} ${version.padEnd(8)} ${skillPath}`);
|
|
156
|
+
}
|
|
157
|
+
console.log();
|
|
158
|
+
}
|
|
159
|
+
// Registry index
|
|
160
|
+
console.log('🌐 Available in Wire registry:\n');
|
|
161
|
+
try {
|
|
162
|
+
const index = await fetchIndex();
|
|
163
|
+
for (const s of index.skills) {
|
|
164
|
+
const installed = localFiles.includes(`${s.name}.wire.yaml`) ? ' [installed]' : '';
|
|
165
|
+
const tags = s.tags?.length ? ` [${s.tags.join(', ')}]` : '';
|
|
166
|
+
console.log(` • ${s.name.padEnd(18)} v${s.version.padEnd(8)} — ${s.description}${tags}${installed}`);
|
|
167
|
+
}
|
|
168
|
+
console.log(`\n ${index.skills.length} skills in registry. Last updated: ${index.updated}`);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
console.log(' (Could not reach registry — showing locally installed skills only)');
|
|
172
|
+
}
|
|
173
|
+
console.log();
|
|
174
|
+
}
|
|
175
|
+
// ─── search ───────────────────────────────────────────────────────────────────
|
|
176
|
+
async function searchSkills(query) {
|
|
177
|
+
let index;
|
|
178
|
+
try {
|
|
179
|
+
index = await fetchIndex();
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
console.error('❌ Could not reach the Wire registry. Check your internet connection.');
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
const results = query
|
|
186
|
+
? index.skills.filter(s => s.name.includes(query.toLowerCase()) ||
|
|
187
|
+
s.description.toLowerCase().includes(query.toLowerCase()) ||
|
|
188
|
+
s.tags?.some(t => t.includes(query.toLowerCase())))
|
|
189
|
+
: index.skills;
|
|
190
|
+
if (results.length === 0) {
|
|
191
|
+
console.log(`\n🔍 No skills found for "${query}"`);
|
|
192
|
+
console.log(' Try a broader search or contribute a skill: https://github.com/YuvakiranGC/wire-protocol\n');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
console.log(`\n🔍 Wire registry — ${query ? `results for "${query}"` : 'all skills'} (${results.length} found)\n`);
|
|
196
|
+
for (const s of results) {
|
|
197
|
+
const tags = s.tags?.length ? ` [${s.tags.join(', ')}]` : '';
|
|
198
|
+
console.log(` ${s.name} v${s.version}`);
|
|
199
|
+
console.log(` ${s.description}${tags}`);
|
|
200
|
+
console.log(` ${s.endpoints} endpoints • wire registry install ${s.name}\n`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// ─── info ─────────────────────────────────────────────────────────────────────
|
|
204
|
+
async function infoSkill(skillName) {
|
|
205
|
+
// Check local first
|
|
206
|
+
const localPath = path_1.default.join(LOCAL_SKILLS_DIR, `${skillName}.wire.yaml`);
|
|
207
|
+
const sourcePath = (0, fs_1.existsSync)(localPath) ? localPath : undefined;
|
|
208
|
+
if (sourcePath) {
|
|
209
|
+
console.log(`\n📄 Skill: ${skillName} (installed locally)\n`);
|
|
210
|
+
printSkillInfo(sourcePath);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Fetch from registry
|
|
214
|
+
const url = `${REGISTRY_BASE}/${skillName}/${skillName}.wire.yaml`;
|
|
215
|
+
try {
|
|
216
|
+
const content = await fetchUrl(url);
|
|
217
|
+
const parsed = (0, js_yaml_1.load)(content);
|
|
218
|
+
console.log(`\n📄 Skill: @wire/${skillName}\n`);
|
|
219
|
+
console.log(` Description : ${parsed?.skill?.description?.trim() ?? '—'}`);
|
|
220
|
+
console.log(` Version : ${parsed?.skill?.version ?? '—'}`);
|
|
221
|
+
console.log(` Base URL : ${parsed?.skill?.base_url ?? '—'}`);
|
|
222
|
+
console.log(` Auth type : ${parsed?.auth?.type ?? '—'}`);
|
|
223
|
+
console.log(` Endpoints : ${(parsed?.endpoints ?? []).length}`);
|
|
224
|
+
if (parsed?.endpoints?.length) {
|
|
225
|
+
console.log('\n Endpoints:');
|
|
226
|
+
for (const ep of parsed.endpoints) {
|
|
227
|
+
console.log(` • ${ep.id.padEnd(28)} ${ep.method.padEnd(7)} ${ep.path}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
console.log();
|
|
231
|
+
console.log(` Install with: wire registry install ${skillName}`);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
console.error(`❌ Skill "${skillName}" not found.`);
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// ─── remove ───────────────────────────────────────────────────────────────────
|
|
239
|
+
async function removeSkill(skillName) {
|
|
240
|
+
const skillPath = path_1.default.join(LOCAL_SKILLS_DIR, `${skillName}.wire.yaml`);
|
|
241
|
+
if (!(0, fs_1.existsSync)(skillPath)) {
|
|
242
|
+
console.error(`❌ Skill "${skillName}" is not installed.`);
|
|
243
|
+
console.error(` Run \`wire registry list\` to see installed skills.`);
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
(0, fs_1.unlinkSync)(skillPath);
|
|
247
|
+
console.log(`✅ Removed @wire/${skillName}`);
|
|
248
|
+
}
|
|
249
|
+
// ─── publish ──────────────────────────────────────────────────────────────────
|
|
250
|
+
// Publishing = validates the skill file and writes it to skills/<name>/ in the
|
|
251
|
+
// local repo so the author can commit and open a PR to the official registry.
|
|
252
|
+
async function publishSkill(filePath) {
|
|
253
|
+
const resolved = path_1.default.resolve(filePath);
|
|
254
|
+
if (!(0, fs_1.existsSync)(resolved)) {
|
|
255
|
+
console.error(`❌ File not found: ${filePath}`);
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
if (!resolved.endsWith('.wire.yaml')) {
|
|
259
|
+
console.error('❌ File must be a .wire.yaml skill file.');
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
// Parse the skill
|
|
263
|
+
let parsed;
|
|
264
|
+
try {
|
|
265
|
+
const raw = (0, fs_1.readFileSync)(resolved, 'utf8');
|
|
266
|
+
parsed = (0, js_yaml_1.load)(raw);
|
|
267
|
+
}
|
|
268
|
+
catch (e) {
|
|
269
|
+
console.error(`❌ Failed to parse skill file: ${e.message}`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
const skillName = parsed?.skill?.name;
|
|
273
|
+
const skillVersion = parsed?.skill?.version;
|
|
274
|
+
const endpointCount = (parsed?.endpoints ?? []).length;
|
|
275
|
+
if (!skillName) {
|
|
276
|
+
console.error('❌ skill.name is required in your skill file.');
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
console.log(`\n📤 Publishing @wire/${skillName} v${skillVersion}...\n`);
|
|
280
|
+
// Validate first
|
|
281
|
+
const { validateCommand } = await Promise.resolve().then(() => __importStar(require('./validate.js')));
|
|
282
|
+
await validateCommand(resolved);
|
|
283
|
+
// Determine where to copy — look for skills/ dir up from cwd
|
|
284
|
+
let skillsDir = path_1.default.join(process.cwd(), 'skills', skillName);
|
|
285
|
+
if (!(0, fs_1.existsSync)(path_1.default.join(process.cwd(), 'skills'))) {
|
|
286
|
+
// Fall back to published dir
|
|
287
|
+
skillsDir = path_1.default.join(LOCAL_PUBLISHED_DIR, skillName);
|
|
288
|
+
}
|
|
289
|
+
(0, fs_1.mkdirSync)(skillsDir, { recursive: true });
|
|
290
|
+
const dest = path_1.default.join(skillsDir, `${skillName}.wire.yaml`);
|
|
291
|
+
(0, fs_1.copyFileSync)(resolved, dest);
|
|
292
|
+
// Update registry index
|
|
293
|
+
await updateLocalIndex(skillName, skillVersion, parsed);
|
|
294
|
+
console.log(`\n✅ Skill staged for publishing:`);
|
|
295
|
+
console.log(` File : ${dest}`);
|
|
296
|
+
console.log(` Name : @wire/${skillName}`);
|
|
297
|
+
console.log(` Version : v${skillVersion}`);
|
|
298
|
+
console.log(` Endpoints: ${endpointCount}`);
|
|
299
|
+
console.log(`\n📋 Next steps to publish to the Wire registry:`);
|
|
300
|
+
console.log(` 1. git add skills/${skillName}/`);
|
|
301
|
+
console.log(` 2. git add registry/index.json`);
|
|
302
|
+
console.log(` 3. git commit -m "feat(registry): add @wire/${skillName} v${skillVersion}"`);
|
|
303
|
+
console.log(` 4. Open a PR at https://github.com/YuvakiranGC/wire-protocol`);
|
|
304
|
+
console.log(`\n Once merged, anyone can install it with:`);
|
|
305
|
+
console.log(` wire registry install ${skillName}\n`);
|
|
306
|
+
}
|
|
307
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
308
|
+
function printSkillInfo(filePath) {
|
|
309
|
+
try {
|
|
310
|
+
const raw = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
311
|
+
const parsed = (0, js_yaml_1.load)(raw);
|
|
312
|
+
console.log(` Description : ${parsed?.skill?.description?.trim() ?? '—'}`);
|
|
313
|
+
console.log(` Version : ${parsed?.skill?.version ?? '—'}`);
|
|
314
|
+
console.log(` Base URL : ${parsed?.skill?.base_url ?? '—'}`);
|
|
315
|
+
console.log(` Auth type : ${parsed?.auth?.type ?? '—'}`);
|
|
316
|
+
console.log(` Endpoints : ${(parsed?.endpoints ?? []).length}`);
|
|
317
|
+
if (parsed?.endpoints?.length) {
|
|
318
|
+
console.log('\n Endpoints:');
|
|
319
|
+
for (const ep of parsed.endpoints) {
|
|
320
|
+
console.log(` • ${ep.id.padEnd(28)} ${ep.method.padEnd(7)} ${ep.path}`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
console.log();
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
console.error(`Failed to read skill: ${e.message}`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
async function updateLocalIndex(skillName, skillVersion, parsed) {
|
|
330
|
+
const indexPath = path_1.default.join(process.cwd(), 'registry', 'index.json');
|
|
331
|
+
let index = {
|
|
332
|
+
version: '1',
|
|
333
|
+
updated: new Date().toISOString().split('T')[0],
|
|
334
|
+
skills: []
|
|
335
|
+
};
|
|
336
|
+
if ((0, fs_1.existsSync)(indexPath)) {
|
|
337
|
+
try {
|
|
338
|
+
index = JSON.parse((0, fs_1.readFileSync)(indexPath, 'utf8'));
|
|
339
|
+
}
|
|
340
|
+
catch { }
|
|
341
|
+
}
|
|
342
|
+
// Remove existing entry for this skill
|
|
343
|
+
index.skills = index.skills.filter(s => s.name !== skillName);
|
|
344
|
+
// Add new entry
|
|
345
|
+
index.skills.push({
|
|
346
|
+
name: skillName,
|
|
347
|
+
version: skillVersion,
|
|
348
|
+
description: (parsed?.skill?.description ?? '').trim(),
|
|
349
|
+
author: parsed?.skill?.author,
|
|
350
|
+
tags: parsed?.skill?.tags ?? [],
|
|
351
|
+
endpoints: (parsed?.endpoints ?? []).length,
|
|
352
|
+
file: `skills/${skillName}/${skillName}.wire.yaml`
|
|
353
|
+
});
|
|
354
|
+
// Sort alphabetically
|
|
355
|
+
index.skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
356
|
+
index.updated = new Date().toISOString().split('T')[0];
|
|
357
|
+
(0, fs_1.mkdirSync)(path_1.default.dirname(indexPath), { recursive: true });
|
|
358
|
+
(0, fs_1.writeFileSync)(indexPath, JSON.stringify(index, null, 2) + '\n');
|
|
359
|
+
console.log(` Updated registry/index.json`);
|
|
360
|
+
}
|
|
361
|
+
async function fetchIndex() {
|
|
362
|
+
const content = await fetchUrl(REGISTRY_INDEX);
|
|
363
|
+
return JSON.parse(content);
|
|
364
|
+
}
|
|
365
|
+
function fetchUrl(url) {
|
|
366
|
+
return new Promise((resolve, reject) => {
|
|
367
|
+
https_1.default.get(url, (res) => {
|
|
368
|
+
// Follow redirects
|
|
369
|
+
if (res.statusCode === 301 || res.statusCode === 302) {
|
|
370
|
+
fetchUrl(res.headers.location).then(resolve).catch(reject);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
if (res.statusCode !== 200) {
|
|
374
|
+
reject(new Error(`HTTP ${res.statusCode} for ${url}`));
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
let data = '';
|
|
378
|
+
res.on('data', chunk => { data += chunk; });
|
|
379
|
+
res.on('end', () => resolve(data));
|
|
380
|
+
}).on('error', reject);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runCommand = runCommand;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const core_1 = require("@wire/core");
|
|
10
|
+
const readline_1 = __importDefault(require("readline"));
|
|
11
|
+
function respond(id, result, error) {
|
|
12
|
+
const response = { jsonrpc: '2.0', id };
|
|
13
|
+
if (error)
|
|
14
|
+
response.error = error;
|
|
15
|
+
else
|
|
16
|
+
response.result = result;
|
|
17
|
+
process.stdout.write(JSON.stringify(response) + '\n');
|
|
18
|
+
}
|
|
19
|
+
async function runCommand(opts = {}) {
|
|
20
|
+
const skillsDir = path_1.default.resolve(opts.skills || '.wire');
|
|
21
|
+
if (!(0, fs_1.existsSync)(skillsDir)) {
|
|
22
|
+
console.error(`❌ Skills directory not found: ${skillsDir}`);
|
|
23
|
+
console.error(' Run `wire init` to create your first skill file.');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
// Discover all .wire.yaml files
|
|
27
|
+
const skillFiles = (0, fs_1.readdirSync)(skillsDir)
|
|
28
|
+
.filter(f => f.endsWith('.wire.yaml'))
|
|
29
|
+
.map(f => path_1.default.join(skillsDir, f));
|
|
30
|
+
if (skillFiles.length === 0) {
|
|
31
|
+
console.error(`❌ No .wire.yaml skill files found in ${skillsDir}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
// Set up secrets provider
|
|
35
|
+
let secrets;
|
|
36
|
+
if (opts.provider === 'aws') {
|
|
37
|
+
secrets = new core_1.AWSSecretsProvider(opts.region);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
secrets = new core_1.EnvSecretsProvider();
|
|
41
|
+
}
|
|
42
|
+
const engine = new core_1.WireEngine({
|
|
43
|
+
skills: skillFiles,
|
|
44
|
+
secrets,
|
|
45
|
+
onBlock: (reason) => {
|
|
46
|
+
process.stderr.write(`[Wire] BLOCKED: ${reason}\n`);
|
|
47
|
+
},
|
|
48
|
+
onConfirm: async (endpoint) => {
|
|
49
|
+
// In stdio mode, confirm via stderr prompt + stdin response
|
|
50
|
+
process.stderr.write(`[Wire] CONFIRM: ${endpoint.id} — ${endpoint.description}\n`);
|
|
51
|
+
process.stderr.write('[Wire] Execute? (y/N): ');
|
|
52
|
+
return new Promise(resolve => {
|
|
53
|
+
const rl = readline_1.default.createInterface({ input: process.stdin, terminal: false });
|
|
54
|
+
rl.once('line', (line) => {
|
|
55
|
+
rl.close();
|
|
56
|
+
resolve(line.trim().toLowerCase() === 'y');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
await engine.init();
|
|
62
|
+
const loadedSkills = engine.getLoadedSkills();
|
|
63
|
+
process.stderr.write(`[Wire] Ready. Loaded skills: ${loadedSkills.join(', ')}\n`);
|
|
64
|
+
process.stderr.write('[Wire] Listening for JSON-RPC requests on stdin...\n');
|
|
65
|
+
// Track in-flight async handlers so we don't exit before they finish
|
|
66
|
+
let pending = 0;
|
|
67
|
+
let stdinClosed = false;
|
|
68
|
+
function maybeExit() {
|
|
69
|
+
if (stdinClosed && pending === 0) {
|
|
70
|
+
process.stderr.write('[Wire] stdin closed, shutting down.\n');
|
|
71
|
+
process.exit(0);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Listen for JSON-RPC requests on stdin
|
|
75
|
+
const rl = readline_1.default.createInterface({ input: process.stdin });
|
|
76
|
+
rl.on('line', async (line) => {
|
|
77
|
+
line = line.trim();
|
|
78
|
+
if (!line)
|
|
79
|
+
return;
|
|
80
|
+
let req;
|
|
81
|
+
try {
|
|
82
|
+
req = JSON.parse(line);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
respond('null', undefined, { code: -32700, message: 'Parse error' });
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const { id, method, params } = req;
|
|
89
|
+
pending++;
|
|
90
|
+
try {
|
|
91
|
+
switch (method) {
|
|
92
|
+
case 'run': {
|
|
93
|
+
const cmd = params?.cmd;
|
|
94
|
+
if (!cmd) {
|
|
95
|
+
respond(id, undefined, { code: -32602, message: 'Missing params.cmd' });
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
const result = await engine.run(cmd);
|
|
99
|
+
respond(id, result);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'intercept': {
|
|
103
|
+
const cmd = params?.cmd;
|
|
104
|
+
if (!cmd) {
|
|
105
|
+
respond(id, undefined, { code: -32602, message: 'Missing params.cmd' });
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
const result = await engine.intercept(cmd);
|
|
109
|
+
respond(id, result);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case 'context': {
|
|
113
|
+
respond(id, { context: engine.getSystemContext() });
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case 'skills': {
|
|
117
|
+
respond(id, { skills: engine.getLoadedSkills() });
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
default:
|
|
121
|
+
respond(id, undefined, { code: -32601, message: `Method not found: ${method}` });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
respond(id, undefined, { code: -32603, message: err.message });
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
pending--;
|
|
129
|
+
maybeExit();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
rl.on('close', () => {
|
|
133
|
+
stdinClosed = true;
|
|
134
|
+
maybeExit();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function validateCommand(filePath: string): Promise<void>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateCommand = validateCommand;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
10
|
+
const core_1 = require("@wire/core");
|
|
11
|
+
async function validateCommand(filePath) {
|
|
12
|
+
const absPath = path_1.default.resolve(filePath);
|
|
13
|
+
if (!(0, fs_1.existsSync)(absPath)) {
|
|
14
|
+
console.error(`❌ File not found: ${absPath}`);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
if (!absPath.endsWith('.wire.yaml')) {
|
|
18
|
+
console.warn(`⚠️ Warning: file does not end with .wire.yaml — continuing anyway`);
|
|
19
|
+
}
|
|
20
|
+
console.log(`\n🔍 Validating ${absPath}...\n`);
|
|
21
|
+
// Step 1: YAML parse check
|
|
22
|
+
let raw;
|
|
23
|
+
try {
|
|
24
|
+
raw = (0, fs_1.readFileSync)(absPath, 'utf-8');
|
|
25
|
+
js_yaml_1.default.load(raw);
|
|
26
|
+
console.log(' ✅ YAML syntax valid');
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.error(` ❌ YAML parse error: ${e.message}`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Step 2: Wire schema validation via SkillLoader
|
|
33
|
+
const loader = new core_1.SkillLoader();
|
|
34
|
+
try {
|
|
35
|
+
const skill = await loader.load(absPath);
|
|
36
|
+
console.log(' ✅ Wire schema valid');
|
|
37
|
+
console.log(` ✅ ${skill.endpoints.length} endpoint(s) defined: ${skill.endpoints.map(e => e.id).join(', ')}`);
|
|
38
|
+
console.log(` ✅ Auth type: ${skill.auth.type}`);
|
|
39
|
+
console.log(` ✅ Allowed domains: ${skill.security.allowed_domains.join(', ')}`);
|
|
40
|
+
console.log(`\n✅ Skill "${skill.skill.name}" is valid and ready to use.\n`);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(`\n ❌ Validation failed: ${e.message}\n`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;;;AAOA,0CAsCC;AA7CD,gDAAuB;AACvB,2BAA6C;AAC7C,sDAA0B;AAC1B,qCAAwC;AAIjC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,OAAO,CAAC,CAAA;IAE9C,2BAA2B;IAC3B,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpC,iBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACtC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,iDAAiD;IACjD,MAAM,MAAM,GAAG,IAAI,kBAAW,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACpC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,yBAAyB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9G,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,gCAAgC,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED