@archznn/crewloop-skills 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +15 -3
- package/packages/cli/README.md +55 -0
- package/packages/cli/bin/crewloop.js +6 -0
- package/packages/cli/dist/agents.d.ts +7 -0
- package/packages/cli/dist/agents.d.ts.map +1 -0
- package/packages/cli/dist/agents.js +31 -0
- package/packages/cli/dist/agents.js.map +1 -0
- package/packages/cli/dist/cli.d.ts +14 -0
- package/packages/cli/dist/cli.d.ts.map +1 -0
- package/packages/cli/dist/cli.js +255 -0
- package/packages/cli/dist/cli.js.map +1 -0
- package/packages/cli/dist/installer.d.ts +19 -0
- package/packages/cli/dist/installer.d.ts.map +1 -0
- package/packages/cli/dist/installer.js +89 -0
- package/packages/cli/dist/installer.js.map +1 -0
- package/packages/cli/dist/mcp.d.ts +20 -0
- package/packages/cli/dist/mcp.d.ts.map +1 -0
- package/packages/cli/dist/mcp.js +130 -0
- package/packages/cli/dist/mcp.js.map +1 -0
- package/packages/cli/dist/resolver.d.ts +7 -0
- package/packages/cli/dist/resolver.d.ts.map +1 -0
- package/packages/cli/dist/resolver.js +57 -0
- package/packages/cli/dist/resolver.js.map +1 -0
- package/packages/cli/dist/tests/agents.test.d.ts +2 -0
- package/packages/cli/dist/tests/agents.test.d.ts.map +1 -0
- package/packages/cli/dist/tests/agents.test.js +27 -0
- package/packages/cli/dist/tests/agents.test.js.map +1 -0
- package/packages/cli/dist/tests/cli.test.d.ts +2 -0
- package/packages/cli/dist/tests/cli.test.d.ts.map +1 -0
- package/packages/cli/dist/tests/cli.test.js +103 -0
- package/packages/cli/dist/tests/cli.test.js.map +1 -0
- package/packages/cli/dist/tests/installer.test.d.ts +2 -0
- package/packages/cli/dist/tests/installer.test.d.ts.map +1 -0
- package/packages/cli/dist/tests/installer.test.js +129 -0
- package/packages/cli/dist/tests/installer.test.js.map +1 -0
- package/packages/cli/dist/tests/mcp.test.d.ts +2 -0
- package/packages/cli/dist/tests/mcp.test.d.ts.map +1 -0
- package/packages/cli/dist/tests/mcp.test.js +153 -0
- package/packages/cli/dist/tests/mcp.test.js.map +1 -0
- package/packages/cli/dist/tests/resolver.test.d.ts +2 -0
- package/packages/cli/dist/tests/resolver.test.d.ts.map +1 -0
- package/packages/cli/dist/tests/resolver.test.js +41 -0
- package/packages/cli/dist/tests/resolver.test.js.map +1 -0
- package/servers/dashboard/bin/crewloop-dashboard.js +0 -0
- package/servers/dashboard/dist/adapters/codex.d.ts +23 -0
- package/servers/dashboard/dist/adapters/codex.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/codex.js +28 -0
- package/servers/dashboard/dist/adapters/codex.js.map +1 -0
- package/servers/dashboard/dist/adapters/kimi.d.ts +13 -0
- package/servers/dashboard/dist/adapters/kimi.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/kimi.js +28 -0
- package/servers/dashboard/dist/adapters/kimi.js.map +1 -0
- package/servers/dashboard/dist/adapters/opencode.d.ts +9 -0
- package/servers/dashboard/dist/adapters/opencode.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/opencode.js +26 -0
- package/servers/dashboard/dist/adapters/opencode.js.map +1 -0
- package/servers/dashboard/dist/adapters/shim.d.ts +7 -0
- package/servers/dashboard/dist/adapters/shim.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/shim.js +107 -0
- package/servers/dashboard/dist/adapters/shim.js.map +1 -0
- package/servers/dashboard/dist/adapters/shim.test.d.ts +2 -0
- package/servers/dashboard/dist/adapters/shim.test.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/shim.test.js +72 -0
- package/servers/dashboard/dist/adapters/shim.test.js.map +1 -0
- package/servers/dashboard/dist/api/event.d.ts +13 -0
- package/servers/dashboard/dist/api/event.d.ts.map +1 -0
- package/servers/dashboard/dist/api/event.js +52 -0
- package/servers/dashboard/dist/api/event.js.map +1 -0
- package/servers/dashboard/dist/api/skills.d.ts +4 -0
- package/servers/dashboard/dist/api/skills.d.ts.map +1 -0
- package/servers/dashboard/dist/api/skills.js +12 -0
- package/servers/dashboard/dist/api/skills.js.map +1 -0
- package/servers/dashboard/dist/config.d.ts +11 -0
- package/servers/dashboard/dist/config.d.ts.map +1 -0
- package/servers/dashboard/dist/config.js +65 -0
- package/servers/dashboard/dist/config.js.map +1 -0
- package/servers/dashboard/dist/filters/sanitize.d.ts +14 -0
- package/servers/dashboard/dist/filters/sanitize.d.ts.map +1 -0
- package/servers/dashboard/dist/filters/sanitize.js +64 -0
- package/servers/dashboard/dist/filters/sanitize.js.map +1 -0
- package/servers/dashboard/dist/filters/sanitize.test.d.ts +2 -0
- package/servers/dashboard/dist/filters/sanitize.test.d.ts.map +1 -0
- package/servers/dashboard/dist/filters/sanitize.test.js +71 -0
- package/servers/dashboard/dist/filters/sanitize.test.js.map +1 -0
- package/servers/dashboard/dist/index.d.ts +2 -0
- package/servers/dashboard/dist/index.d.ts.map +1 -0
- package/servers/dashboard/dist/index.js +22 -0
- package/servers/dashboard/dist/index.js.map +1 -0
- package/servers/dashboard/dist/presenter.d.ts +7 -0
- package/servers/dashboard/dist/presenter.d.ts.map +1 -0
- package/servers/dashboard/dist/presenter.js +54 -0
- package/servers/dashboard/dist/presenter.js.map +1 -0
- package/servers/dashboard/dist/presenter.test.d.ts +2 -0
- package/servers/dashboard/dist/presenter.test.d.ts.map +1 -0
- package/servers/dashboard/dist/presenter.test.js +66 -0
- package/servers/dashboard/dist/presenter.test.js.map +1 -0
- package/servers/dashboard/dist/server.d.ts +13 -0
- package/servers/dashboard/dist/server.d.ts.map +1 -0
- package/servers/dashboard/dist/server.js +162 -0
- package/servers/dashboard/dist/server.js.map +1 -0
- package/servers/dashboard/dist/server.test.d.ts +2 -0
- package/servers/dashboard/dist/server.test.d.ts.map +1 -0
- package/servers/dashboard/dist/server.test.js +113 -0
- package/servers/dashboard/dist/server.test.js.map +1 -0
- package/servers/dashboard/dist/skills/infer.d.ts +8 -0
- package/servers/dashboard/dist/skills/infer.d.ts.map +1 -0
- package/servers/dashboard/dist/skills/infer.js +48 -0
- package/servers/dashboard/dist/skills/infer.js.map +1 -0
- package/servers/dashboard/dist/skills/infer.test.d.ts +2 -0
- package/servers/dashboard/dist/skills/infer.test.d.ts.map +1 -0
- package/servers/dashboard/dist/skills/infer.test.js +82 -0
- package/servers/dashboard/dist/skills/infer.test.js.map +1 -0
- package/servers/dashboard/dist/skills/mapping.d.ts +5 -0
- package/servers/dashboard/dist/skills/mapping.d.ts.map +1 -0
- package/servers/dashboard/dist/skills/mapping.js +28 -0
- package/servers/dashboard/dist/skills/mapping.js.map +1 -0
- package/servers/dashboard/dist/skills/registry.d.ts +11 -0
- package/servers/dashboard/dist/skills/registry.d.ts.map +1 -0
- package/servers/dashboard/dist/skills/registry.js +59 -0
- package/servers/dashboard/dist/skills/registry.js.map +1 -0
- package/servers/dashboard/dist/state.d.ts +18 -0
- package/servers/dashboard/dist/state.d.ts.map +1 -0
- package/servers/dashboard/dist/state.js +91 -0
- package/servers/dashboard/dist/state.js.map +1 -0
- package/servers/dashboard/dist/state.test.d.ts +2 -0
- package/servers/dashboard/dist/state.test.d.ts.map +1 -0
- package/servers/dashboard/dist/state.test.js +83 -0
- package/servers/dashboard/dist/state.test.js.map +1 -0
- package/servers/dashboard/dist/types.d.ts +86 -0
- package/servers/dashboard/dist/types.d.ts.map +1 -0
- package/servers/dashboard/dist/types.js +3 -0
- package/servers/dashboard/dist/types.js.map +1 -0
|
@@ -0,0 +1,130 @@
|
|
|
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.installMcpServer = installMcpServer;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
+
const node_child_process_1 = require("node:child_process");
|
|
11
|
+
function defaultPythonCmd() {
|
|
12
|
+
return node_os_1.default.platform() === 'win32' ? 'python' : 'python3';
|
|
13
|
+
}
|
|
14
|
+
function defaultLocalBinDir() {
|
|
15
|
+
return node_path_1.default.join(node_os_1.default.homedir(), '.local', 'bin');
|
|
16
|
+
}
|
|
17
|
+
function venvBinDir() {
|
|
18
|
+
return node_os_1.default.platform() === 'win32' ? 'Scripts' : 'bin';
|
|
19
|
+
}
|
|
20
|
+
function runCommand(cmd, args) {
|
|
21
|
+
const result = spawnPlatform(cmd, args);
|
|
22
|
+
if (result.error || result.status !== 0) {
|
|
23
|
+
throw result.error || new Error(`Command failed: ${cmd} ${args.join(' ')}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function commandExists(cmd) {
|
|
27
|
+
const result = spawnPlatform(cmd, ['--version']);
|
|
28
|
+
return result.status === 0;
|
|
29
|
+
}
|
|
30
|
+
function spawnPlatform(cmd, args) {
|
|
31
|
+
if (node_os_1.default.platform() === 'win32') {
|
|
32
|
+
return (0, node_child_process_1.spawnSync)('cmd', ['/c', cmd, ...args], { stdio: 'ignore' });
|
|
33
|
+
}
|
|
34
|
+
return (0, node_child_process_1.spawnSync)(cmd, args, { stdio: 'ignore' });
|
|
35
|
+
}
|
|
36
|
+
function ensureVenv(mcpSourceDir, pythonCmd, force) {
|
|
37
|
+
const venvDir = node_path_1.default.join(mcpSourceDir, '.venv');
|
|
38
|
+
if (force && node_fs_1.default.existsSync(venvDir)) {
|
|
39
|
+
node_fs_1.default.rmSync(venvDir, { recursive: true, force: true });
|
|
40
|
+
}
|
|
41
|
+
if (!node_fs_1.default.existsSync(venvDir)) {
|
|
42
|
+
runCommand(pythonCmd, ['-m', 'venv', venvDir]);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function findExecutable(basePath) {
|
|
46
|
+
if (node_os_1.default.platform() !== 'win32') {
|
|
47
|
+
return basePath;
|
|
48
|
+
}
|
|
49
|
+
for (const ext of ['.exe', '.cmd']) {
|
|
50
|
+
const candidate = `${basePath}${ext}`;
|
|
51
|
+
if (node_fs_1.default.existsSync(candidate)) {
|
|
52
|
+
return candidate;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return basePath;
|
|
56
|
+
}
|
|
57
|
+
function venvPip(mcpSourceDir) {
|
|
58
|
+
const venvDir = node_path_1.default.join(mcpSourceDir, '.venv');
|
|
59
|
+
const basePath = node_path_1.default.join(venvDir, venvBinDir(), 'pip');
|
|
60
|
+
return findExecutable(basePath);
|
|
61
|
+
}
|
|
62
|
+
function venvBinary(mcpSourceDir) {
|
|
63
|
+
const venvDir = node_path_1.default.join(mcpSourceDir, '.venv');
|
|
64
|
+
const basePath = node_path_1.default.join(venvDir, venvBinDir(), 'obsidian-mcp');
|
|
65
|
+
return findExecutable(basePath);
|
|
66
|
+
}
|
|
67
|
+
function createWindowsWrapper(binaryPath, wrapperPath) {
|
|
68
|
+
const content = `@echo off\r\n"${binaryPath}" %*\r\n`;
|
|
69
|
+
node_fs_1.default.writeFileSync(wrapperPath, content);
|
|
70
|
+
}
|
|
71
|
+
function exposeBinary(mcpSourceDir, localBinDir, force) {
|
|
72
|
+
node_fs_1.default.mkdirSync(localBinDir, { recursive: true });
|
|
73
|
+
const sourceBinary = venvBinary(mcpSourceDir);
|
|
74
|
+
const isWindows = node_os_1.default.platform() === 'win32';
|
|
75
|
+
if (isWindows) {
|
|
76
|
+
const wrapperPath = node_path_1.default.join(localBinDir, 'obsidian-mcp.cmd');
|
|
77
|
+
const created = force || !node_fs_1.default.existsSync(wrapperPath);
|
|
78
|
+
if (created) {
|
|
79
|
+
createWindowsWrapper(sourceBinary, wrapperPath);
|
|
80
|
+
}
|
|
81
|
+
return { binaryPath: wrapperPath, created };
|
|
82
|
+
}
|
|
83
|
+
const targetBinary = node_path_1.default.join(localBinDir, 'obsidian-mcp');
|
|
84
|
+
const created = force || !node_fs_1.default.existsSync(targetBinary);
|
|
85
|
+
if (created) {
|
|
86
|
+
if (node_fs_1.default.existsSync(targetBinary)) {
|
|
87
|
+
node_fs_1.default.rmSync(targetBinary, { force: true });
|
|
88
|
+
}
|
|
89
|
+
node_fs_1.default.symlinkSync(sourceBinary, targetBinary);
|
|
90
|
+
}
|
|
91
|
+
return { binaryPath: targetBinary, created };
|
|
92
|
+
}
|
|
93
|
+
function installMcpServer(mcpSourceDir, options = {}) {
|
|
94
|
+
const pythonCmd = options.pythonCmd || defaultPythonCmd();
|
|
95
|
+
const localBinDir = options.localBinDir || defaultLocalBinDir();
|
|
96
|
+
if (!commandExists(pythonCmd)) {
|
|
97
|
+
return {
|
|
98
|
+
installed: false,
|
|
99
|
+
skipped: false,
|
|
100
|
+
error: new Error(`Python not found: ${pythonCmd}`),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (options.dryRun) {
|
|
104
|
+
const binaryName = node_os_1.default.platform() === 'win32' ? 'obsidian-mcp.cmd' : 'obsidian-mcp';
|
|
105
|
+
return {
|
|
106
|
+
installed: true,
|
|
107
|
+
skipped: false,
|
|
108
|
+
binaryPath: node_path_1.default.join(localBinDir, binaryName),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
ensureVenv(mcpSourceDir, pythonCmd, options.force || false);
|
|
113
|
+
const pip = venvPip(mcpSourceDir);
|
|
114
|
+
runCommand(pip, ['install', '-q', '-e', mcpSourceDir]);
|
|
115
|
+
const { binaryPath, created } = exposeBinary(mcpSourceDir, localBinDir, options.force || false);
|
|
116
|
+
return {
|
|
117
|
+
installed: created,
|
|
118
|
+
skipped: !created,
|
|
119
|
+
binaryPath,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
installed: false,
|
|
125
|
+
skipped: false,
|
|
126
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAyBD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAgCtF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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.resolveSkills = resolveSkills;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
function parseFrontmatter(content) {
|
|
10
|
+
const result = {};
|
|
11
|
+
if (!content.startsWith('---')) {
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
const end = content.indexOf('---', 3);
|
|
15
|
+
if (end === -1) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
const frontmatter = content.slice(3, end).trim();
|
|
19
|
+
for (const line of frontmatter.split('\n')) {
|
|
20
|
+
const colonIndex = line.indexOf(':');
|
|
21
|
+
if (colonIndex === -1)
|
|
22
|
+
continue;
|
|
23
|
+
const key = line.slice(0, colonIndex).trim();
|
|
24
|
+
const value = line.slice(colonIndex + 1).trim().replace(/^["']|["']$/g, '');
|
|
25
|
+
result[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
function resolveSkills(packageRoot, filters) {
|
|
30
|
+
const skillsDir = node_path_1.default.join(packageRoot, 'skills');
|
|
31
|
+
if (!node_fs_1.default.existsSync(skillsDir)) {
|
|
32
|
+
throw new Error(`Skills directory not found: ${skillsDir}`);
|
|
33
|
+
}
|
|
34
|
+
const entries = node_fs_1.default.readdirSync(skillsDir, { withFileTypes: true });
|
|
35
|
+
const skills = [];
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
if (!entry.isDirectory())
|
|
38
|
+
continue;
|
|
39
|
+
const skillName = entry.name;
|
|
40
|
+
if (filters && filters.length > 0 && !filters.includes(skillName)) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const skillFile = node_path_1.default.join(skillsDir, skillName, 'SKILL.md');
|
|
44
|
+
if (!node_fs_1.default.existsSync(skillFile))
|
|
45
|
+
continue;
|
|
46
|
+
const content = node_fs_1.default.readFileSync(skillFile, 'utf-8');
|
|
47
|
+
const frontmatter = parseFrontmatter(content);
|
|
48
|
+
skills.push({
|
|
49
|
+
name: skillName,
|
|
50
|
+
description: frontmatter.description || '',
|
|
51
|
+
sourcePath: node_path_1.default.join(skillsDir, skillName),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
55
|
+
return skills;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.test.d.ts","sourceRoot":"","sources":["../../src/tests/agents.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const agents_1 = require("../agents");
|
|
9
|
+
(0, node_test_1.describe)('agents', () => {
|
|
10
|
+
(0, node_test_1.it)('returns default agent directory when no agent is specified', () => {
|
|
11
|
+
const dir = (0, agents_1.resolveAgentDir)();
|
|
12
|
+
node_assert_1.default.ok(dir.includes('.agents'));
|
|
13
|
+
});
|
|
14
|
+
(0, node_test_1.it)('resolves known agents', () => {
|
|
15
|
+
const dir = (0, agents_1.resolveAgentDir)('claude');
|
|
16
|
+
node_assert_1.default.ok(dir.includes('.claude'));
|
|
17
|
+
});
|
|
18
|
+
(0, node_test_1.it)('throws for unknown agents', () => {
|
|
19
|
+
node_assert_1.default.throws(() => (0, agents_1.resolveAgentDir)('unknown'), /Unknown agent/);
|
|
20
|
+
});
|
|
21
|
+
(0, node_test_1.it)('lists supported agents', () => {
|
|
22
|
+
const agents = (0, agents_1.listSupportedAgents)();
|
|
23
|
+
node_assert_1.default.ok(agents.length > 0);
|
|
24
|
+
node_assert_1.default.ok(agents.some((a) => a.id === 'kimi'));
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=agents.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/tests/agents.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,8DAAiC;AACjC,sCAAiE;AAEjE,IAAA,oBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAA,cAAE,EAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,GAAG,GAAG,IAAA,wBAAe,GAAE,CAAC;QAC9B,qBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,GAAG,GAAG,IAAA,wBAAe,EAAC,QAAQ,CAAC,CAAC;QACtC,qBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,wBAAe,EAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,IAAA,4BAAmB,GAAE,CAAC;QACrC,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7B,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../src/tests/cli.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
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
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const cli_1 = require("../cli");
|
|
9
|
+
(0, node_test_1.describe)('cli', () => {
|
|
10
|
+
(0, node_test_1.it)('parses install command', () => {
|
|
11
|
+
const args = (0, cli_1.parseArgs)(['node', 'crewloop', 'install']);
|
|
12
|
+
node_assert_1.default.strictEqual(args.command, 'install');
|
|
13
|
+
});
|
|
14
|
+
(0, node_test_1.it)('parses list command', () => {
|
|
15
|
+
const args = (0, cli_1.parseArgs)(['node', 'crewloop', 'list']);
|
|
16
|
+
node_assert_1.default.strictEqual(args.command, 'list');
|
|
17
|
+
});
|
|
18
|
+
(0, node_test_1.it)('parses dashboard command', () => {
|
|
19
|
+
const args = (0, cli_1.parseArgs)(['node', 'crewloop', 'dashboard']);
|
|
20
|
+
node_assert_1.default.strictEqual(args.command, 'dashboard');
|
|
21
|
+
});
|
|
22
|
+
(0, node_test_1.it)('parses --version flag', () => {
|
|
23
|
+
const args = (0, cli_1.parseArgs)(['node', 'crewloop', '--version']);
|
|
24
|
+
node_assert_1.default.strictEqual(args.command, 'version');
|
|
25
|
+
});
|
|
26
|
+
(0, node_test_1.it)('parses -v flag', () => {
|
|
27
|
+
const args = (0, cli_1.parseArgs)(['node', 'crewloop', '-v']);
|
|
28
|
+
node_assert_1.default.strictEqual(args.command, 'version');
|
|
29
|
+
});
|
|
30
|
+
(0, node_test_1.it)('parses dashboard flags', () => {
|
|
31
|
+
const args = (0, cli_1.parseArgs)([
|
|
32
|
+
'node',
|
|
33
|
+
'crewloop',
|
|
34
|
+
'dashboard',
|
|
35
|
+
'--port',
|
|
36
|
+
'8080',
|
|
37
|
+
'--host',
|
|
38
|
+
'0.0.0.0',
|
|
39
|
+
]);
|
|
40
|
+
node_assert_1.default.strictEqual(args.command, 'dashboard');
|
|
41
|
+
node_assert_1.default.strictEqual(args.port, 8080);
|
|
42
|
+
node_assert_1.default.strictEqual(args.host, '0.0.0.0');
|
|
43
|
+
});
|
|
44
|
+
(0, node_test_1.it)('throws when dashboard --port has no value', () => {
|
|
45
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'dashboard', '--port']), /--port requires a value/);
|
|
46
|
+
});
|
|
47
|
+
(0, node_test_1.it)('throws when dashboard --host has no value', () => {
|
|
48
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'dashboard', '--host']), /--host requires a value/);
|
|
49
|
+
});
|
|
50
|
+
(0, node_test_1.it)('parses all flags', () => {
|
|
51
|
+
const args = (0, cli_1.parseArgs)([
|
|
52
|
+
'node',
|
|
53
|
+
'crewloop',
|
|
54
|
+
'install',
|
|
55
|
+
'--target',
|
|
56
|
+
'/tmp/skills',
|
|
57
|
+
'--skill',
|
|
58
|
+
'architect',
|
|
59
|
+
'--skill',
|
|
60
|
+
'engineer',
|
|
61
|
+
'--agent',
|
|
62
|
+
'claude',
|
|
63
|
+
'--symlink',
|
|
64
|
+
'--force',
|
|
65
|
+
'--dry-run',
|
|
66
|
+
]);
|
|
67
|
+
node_assert_1.default.strictEqual(args.command, 'install');
|
|
68
|
+
node_assert_1.default.strictEqual(args.target, '/tmp/skills');
|
|
69
|
+
node_assert_1.default.deepStrictEqual(args.skills, ['architect', 'engineer']);
|
|
70
|
+
node_assert_1.default.strictEqual(args.agent, 'claude');
|
|
71
|
+
node_assert_1.default.strictEqual(args.symlink, true);
|
|
72
|
+
node_assert_1.default.strictEqual(args.force, true);
|
|
73
|
+
node_assert_1.default.strictEqual(args.dryRun, true);
|
|
74
|
+
});
|
|
75
|
+
(0, node_test_1.it)('throws when --target has no value', () => {
|
|
76
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'install', '--target']), /--target requires a value/);
|
|
77
|
+
});
|
|
78
|
+
(0, node_test_1.it)('throws when --skill has no value', () => {
|
|
79
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'install', '--skill']), /--skill requires a value/);
|
|
80
|
+
});
|
|
81
|
+
(0, node_test_1.it)('throws when --agent has no value', () => {
|
|
82
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'install', '--agent']), /--agent requires a value/);
|
|
83
|
+
});
|
|
84
|
+
(0, node_test_1.it)('throws when flag value looks like another flag', () => {
|
|
85
|
+
node_assert_1.default.throws(() => (0, cli_1.parseArgs)(['node', 'crewloop', 'install', '--target', '--force']), /--target requires a value/);
|
|
86
|
+
});
|
|
87
|
+
(0, node_test_1.it)('returns help text', () => {
|
|
88
|
+
const help = (0, cli_1.printHelp)();
|
|
89
|
+
node_assert_1.default.ok(help.includes('install'));
|
|
90
|
+
node_assert_1.default.ok(help.includes('list'));
|
|
91
|
+
node_assert_1.default.ok(help.includes('dashboard'));
|
|
92
|
+
node_assert_1.default.ok(help.includes('--target'));
|
|
93
|
+
node_assert_1.default.ok(help.includes('--port'));
|
|
94
|
+
node_assert_1.default.ok(help.includes('--version'));
|
|
95
|
+
node_assert_1.default.ok(help.includes('version'));
|
|
96
|
+
});
|
|
97
|
+
(0, node_test_1.it)('help text does not change command surface', () => {
|
|
98
|
+
const help = (0, cli_1.printHelp)();
|
|
99
|
+
node_assert_1.default.ok(!help.includes('doctor'));
|
|
100
|
+
node_assert_1.default.ok(!help.includes('validate'));
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=cli.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../src/tests/cli.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.test.d.ts","sourceRoot":"","sources":["../../src/tests/installer.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
11
|
+
const installer_1 = require("../installer");
|
|
12
|
+
(0, node_test_1.describe)('installer', () => {
|
|
13
|
+
let sourceDir;
|
|
14
|
+
let targetDir;
|
|
15
|
+
(0, node_test_1.before)(() => {
|
|
16
|
+
sourceDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-source-'));
|
|
17
|
+
targetDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-target-'));
|
|
18
|
+
node_fs_1.default.mkdirSync(node_path_1.default.join(sourceDir, 'architect'), { recursive: true });
|
|
19
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(sourceDir, 'architect', 'SKILL.md'), '# Architect\n');
|
|
20
|
+
});
|
|
21
|
+
(0, node_test_1.after)(() => {
|
|
22
|
+
node_fs_1.default.rmSync(sourceDir, { recursive: true, force: true });
|
|
23
|
+
node_fs_1.default.rmSync(targetDir, { recursive: true, force: true });
|
|
24
|
+
});
|
|
25
|
+
(0, node_test_1.it)('copies skills to target directory', () => {
|
|
26
|
+
const skills = [
|
|
27
|
+
{ name: 'architect', description: '', sourcePath: node_path_1.default.join(sourceDir, 'architect') },
|
|
28
|
+
];
|
|
29
|
+
const result = (0, installer_1.installSkills)(skills, targetDir, {});
|
|
30
|
+
node_assert_1.default.deepStrictEqual(result.installed, ['architect']);
|
|
31
|
+
node_assert_1.default.strictEqual(result.skipped.length, 0);
|
|
32
|
+
node_assert_1.default.strictEqual(result.errors.length, 0);
|
|
33
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(targetDir, 'architect', 'SKILL.md')));
|
|
34
|
+
});
|
|
35
|
+
(0, node_test_1.it)('skips existing skills without force', () => {
|
|
36
|
+
const skills = [
|
|
37
|
+
{ name: 'architect', description: '', sourcePath: node_path_1.default.join(sourceDir, 'architect') },
|
|
38
|
+
];
|
|
39
|
+
const result = (0, installer_1.installSkills)(skills, targetDir, {});
|
|
40
|
+
node_assert_1.default.strictEqual(result.installed.length, 0);
|
|
41
|
+
node_assert_1.default.deepStrictEqual(result.skipped, ['architect']);
|
|
42
|
+
});
|
|
43
|
+
(0, node_test_1.it)('overwrites existing skills with force', () => {
|
|
44
|
+
const skills = [
|
|
45
|
+
{ name: 'architect', description: '', sourcePath: node_path_1.default.join(sourceDir, 'architect') },
|
|
46
|
+
];
|
|
47
|
+
const result = (0, installer_1.installSkills)(skills, targetDir, { force: true });
|
|
48
|
+
node_assert_1.default.deepStrictEqual(result.installed, ['architect']);
|
|
49
|
+
node_assert_1.default.strictEqual(result.skipped.length, 0);
|
|
50
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(targetDir, 'architect', 'SKILL.md')));
|
|
51
|
+
});
|
|
52
|
+
(0, node_test_1.it)('dry-run does not write files', () => {
|
|
53
|
+
const dryTarget = node_path_1.default.join(targetDir, 'dry');
|
|
54
|
+
const skills = [
|
|
55
|
+
{ name: 'architect', description: '', sourcePath: node_path_1.default.join(sourceDir, 'architect') },
|
|
56
|
+
];
|
|
57
|
+
const result = (0, installer_1.installSkills)(skills, dryTarget, { dryRun: true });
|
|
58
|
+
node_assert_1.default.deepStrictEqual(result.installed, ['architect']);
|
|
59
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(dryTarget));
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, node_test_1.describe)('mergeSharedDirs', () => {
|
|
63
|
+
let sharedRoot;
|
|
64
|
+
let targetDir;
|
|
65
|
+
(0, node_test_1.before)(() => {
|
|
66
|
+
sharedRoot = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-shared-'));
|
|
67
|
+
targetDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-skill-'));
|
|
68
|
+
node_fs_1.default.mkdirSync(node_path_1.default.join(sharedRoot, 'references'), { recursive: true });
|
|
69
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(sharedRoot, 'references', 'conventions.md'), '# Conventions\n');
|
|
70
|
+
node_fs_1.default.mkdirSync(node_path_1.default.join(sharedRoot, 'assets', 'templates'), { recursive: true });
|
|
71
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(sharedRoot, 'assets', 'templates', 'skill.md'), '# Template\n');
|
|
72
|
+
});
|
|
73
|
+
(0, node_test_1.after)(() => {
|
|
74
|
+
node_fs_1.default.rmSync(sharedRoot, { recursive: true, force: true });
|
|
75
|
+
node_fs_1.default.rmSync(targetDir, { recursive: true, force: true });
|
|
76
|
+
});
|
|
77
|
+
(0, node_test_1.it)('copies shared references and assets into target skill', () => {
|
|
78
|
+
(0, installer_1.mergeSharedDirs)(targetDir, sharedRoot, {});
|
|
79
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(targetDir, 'references', 'conventions.md')));
|
|
80
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(targetDir, 'assets', 'templates', 'skill.md')));
|
|
81
|
+
});
|
|
82
|
+
(0, node_test_1.it)('overwrites existing skill files with shared copies', () => {
|
|
83
|
+
node_fs_1.default.mkdirSync(node_path_1.default.join(targetDir, 'references'), { recursive: true });
|
|
84
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(targetDir, 'references', 'conventions.md'), '# Skill-specific\n');
|
|
85
|
+
(0, installer_1.mergeSharedDirs)(targetDir, sharedRoot, {});
|
|
86
|
+
const content = node_fs_1.default.readFileSync(node_path_1.default.join(targetDir, 'references', 'conventions.md'), 'utf-8');
|
|
87
|
+
node_assert_1.default.strictEqual(content, '# Conventions\n');
|
|
88
|
+
});
|
|
89
|
+
(0, node_test_1.it)('respects dry-run', () => {
|
|
90
|
+
const dryTarget = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-dry-'));
|
|
91
|
+
(0, installer_1.mergeSharedDirs)(dryTarget, sharedRoot, { dryRun: true });
|
|
92
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(dryTarget, 'references')));
|
|
93
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(dryTarget, 'assets')));
|
|
94
|
+
node_fs_1.default.rmSync(dryTarget, { recursive: true, force: true });
|
|
95
|
+
});
|
|
96
|
+
(0, node_test_1.it)('merges shared dirs into each installed skill', () => {
|
|
97
|
+
const skillSource = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-skillsource-'));
|
|
98
|
+
const skillTarget = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-skilltarget-'));
|
|
99
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(skillSource, 'SKILL.md'), '# Skill\n');
|
|
100
|
+
const skills = [
|
|
101
|
+
{ name: 'example', description: '', sourcePath: skillSource },
|
|
102
|
+
];
|
|
103
|
+
const result = (0, installer_1.installSkills)(skills, skillTarget, {}, sharedRoot);
|
|
104
|
+
node_assert_1.default.deepStrictEqual(result.installed, ['example']);
|
|
105
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(skillTarget, 'example', 'references', 'conventions.md')));
|
|
106
|
+
node_assert_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(skillTarget, 'example', 'assets', 'templates', 'skill.md')));
|
|
107
|
+
node_fs_1.default.rmSync(skillSource, { recursive: true, force: true });
|
|
108
|
+
node_fs_1.default.rmSync(skillTarget, { recursive: true, force: true });
|
|
109
|
+
});
|
|
110
|
+
(0, node_test_1.it)('does not merge shared dirs in symlink mode and leaves source unchanged', () => {
|
|
111
|
+
const skillSource = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-skillsource-'));
|
|
112
|
+
const skillTarget = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'crewloop-skilltarget-'));
|
|
113
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(skillSource, 'SKILL.md'), '# Skill\n');
|
|
114
|
+
const skills = [
|
|
115
|
+
{ name: 'example', description: '', sourcePath: skillSource },
|
|
116
|
+
];
|
|
117
|
+
const result = (0, installer_1.installSkills)(skills, skillTarget, { symlink: true }, sharedRoot);
|
|
118
|
+
node_assert_1.default.deepStrictEqual(result.installed, ['example']);
|
|
119
|
+
const installedSkillPath = node_path_1.default.join(skillTarget, 'example');
|
|
120
|
+
node_assert_1.default.ok(node_fs_1.default.lstatSync(installedSkillPath).isSymbolicLink() || node_fs_1.default.lstatSync(installedSkillPath).isDirectory());
|
|
121
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(installedSkillPath, 'references')));
|
|
122
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(installedSkillPath, 'assets')));
|
|
123
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(skillSource, 'references')));
|
|
124
|
+
node_assert_1.default.ok(!node_fs_1.default.existsSync(node_path_1.default.join(skillSource, 'assets')));
|
|
125
|
+
node_fs_1.default.rmSync(skillSource, { recursive: true, force: true });
|
|
126
|
+
node_fs_1.default.rmSync(skillTarget, { recursive: true, force: true });
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=installer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.test.js","sourceRoot":"","sources":["../../src/tests/installer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.test.d.ts","sourceRoot":"","sources":["../../src/tests/mcp.test.ts"],"names":[],"mappings":""}
|