jaspervault_cli 1.0.25 → 1.0.26
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 +7 -7
- package/dist/bin/jv.js +2 -2
- package/dist/bin/jv.js.map +1 -1
- package/dist/src/commands/skill.d.ts +4 -0
- package/dist/src/commands/skill.js +117 -0
- package/dist/src/commands/skill.js.map +1 -0
- package/dist/src/templates/skill-body.d.ts +1 -1
- package/dist/src/templates/skill-body.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,14 +21,14 @@ jv --version
|
|
|
21
21
|
### 2. Install JasperVault Skill to OpenClaw
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
jv
|
|
24
|
+
jv skill install --ai openclaw
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
This installs the trading skill to `~/.openclaw/skills/jasper-vault-cli/SKILL.md`. OpenClaw will now know how to trade on your behalf.
|
|
28
28
|
|
|
29
29
|
> If the skill already exists, add `--force` to overwrite:
|
|
30
30
|
> ```bash
|
|
31
|
-
> jv
|
|
31
|
+
> jv skill install --ai openclaw --force
|
|
32
32
|
> ```
|
|
33
33
|
|
|
34
34
|
### 3. Initialize Your Wallet (One-Time Setup)
|
|
@@ -58,11 +58,11 @@ Just talk to OpenClaw. Examples:
|
|
|
58
58
|
## Install for Other AI Platforms
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
jv
|
|
62
|
-
jv
|
|
63
|
-
jv
|
|
64
|
-
jv
|
|
65
|
-
jv
|
|
61
|
+
jv skill install --ai cursor # Cursor (current project)
|
|
62
|
+
jv skill install --ai cursor --global # Cursor (user-level)
|
|
63
|
+
jv skill install --ai claude # Claude Code (current project)
|
|
64
|
+
jv skill install --ai claude --global # Claude Code (user-level)
|
|
65
|
+
jv skill install --ai all # All platforms at once
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
Options:
|
package/dist/bin/jv.js
CHANGED
|
@@ -11,7 +11,7 @@ import { registerTpCommand } from '../src/commands/tp.js';
|
|
|
11
11
|
import { registerSlCommand } from '../src/commands/sl.js';
|
|
12
12
|
import { registerVaultCommand } from '../src/commands/vault.js';
|
|
13
13
|
import { registerDepositCommand } from '../src/commands/deposit.js';
|
|
14
|
-
import {
|
|
14
|
+
import { registerSkillCommand } from '../src/commands/skill.js';
|
|
15
15
|
import { registerPriceCommand } from '../src/commands/price.js';
|
|
16
16
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
const { version } = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
|
|
@@ -28,7 +28,7 @@ registerLimitOrderCommand(program);
|
|
|
28
28
|
registerOrdersCommand(program);
|
|
29
29
|
registerVaultCommand(program);
|
|
30
30
|
registerDepositCommand(program);
|
|
31
|
-
|
|
31
|
+
registerSkillCommand(program);
|
|
32
32
|
registerPriceCommand(program);
|
|
33
33
|
program.parse();
|
|
34
34
|
//# sourceMappingURL=jv.js.map
|
package/dist/bin/jv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jv.js","sourceRoot":"","sources":["../../bin/jv.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"jv.js","sourceRoot":"","sources":["../../bin/jv.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACtC,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { BANNER, buildSkillContent } from '../templates/skill-body.js';
|
|
5
|
+
export const PLATFORMS = ['openclaw', 'cursor', 'claude', 'all'];
|
|
6
|
+
const SKILL_DIR = 'jasper-vault-cli';
|
|
7
|
+
function getTargetPath(platform, global) {
|
|
8
|
+
const home = homedir();
|
|
9
|
+
const cwd = process.cwd();
|
|
10
|
+
switch (platform) {
|
|
11
|
+
case 'openclaw':
|
|
12
|
+
return [path.join(home, '.openclaw', 'skills', SKILL_DIR)];
|
|
13
|
+
case 'cursor':
|
|
14
|
+
return global
|
|
15
|
+
? [path.join(home, '.cursor', 'skills', SKILL_DIR)]
|
|
16
|
+
: [path.join(cwd, '.cursor', 'skills', SKILL_DIR)];
|
|
17
|
+
case 'claude':
|
|
18
|
+
return global
|
|
19
|
+
? [path.join(home, '.claude', 'skills', SKILL_DIR)]
|
|
20
|
+
: [path.join(cwd, '.claude', 'skills', SKILL_DIR)];
|
|
21
|
+
case 'all':
|
|
22
|
+
return [
|
|
23
|
+
path.join(home, '.openclaw', 'skills', SKILL_DIR),
|
|
24
|
+
path.join(cwd, '.cursor', 'skills', SKILL_DIR),
|
|
25
|
+
path.join(cwd, '.claude', 'skills', SKILL_DIR),
|
|
26
|
+
];
|
|
27
|
+
default:
|
|
28
|
+
throw new Error(`Unknown platform: ${platform}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function getPlatformFromPath(pathStr) {
|
|
32
|
+
if (pathStr.includes('.openclaw'))
|
|
33
|
+
return 'openclaw';
|
|
34
|
+
if (pathStr.includes('.cursor'))
|
|
35
|
+
return 'cursor';
|
|
36
|
+
if (pathStr.includes('.claude'))
|
|
37
|
+
return 'claude';
|
|
38
|
+
throw new Error(`Cannot determine platform from path: ${pathStr}`);
|
|
39
|
+
}
|
|
40
|
+
function getPlatformDisplayName(p) {
|
|
41
|
+
return p === 'openclaw' ? 'OpenClaw' : p === 'cursor' ? 'Cursor' : 'Claude Code';
|
|
42
|
+
}
|
|
43
|
+
export function registerSkillCommand(program) {
|
|
44
|
+
const skill = program
|
|
45
|
+
.command('skill')
|
|
46
|
+
.description('Manage JasperVault AI skills');
|
|
47
|
+
skill
|
|
48
|
+
.command('install')
|
|
49
|
+
.description('Install JasperVault skill to AI platform (OpenClaw, Cursor, Claude Code)')
|
|
50
|
+
.requiredOption('--ai <platform>', `Target platform: ${PLATFORMS.join(', ')}`)
|
|
51
|
+
.option('--global', 'Install to user home directory (cursor/claude only)')
|
|
52
|
+
.option('--force', 'Overwrite existing skill files without prompting')
|
|
53
|
+
.action(async (opts) => {
|
|
54
|
+
const platform = opts.ai;
|
|
55
|
+
if (!PLATFORMS.includes(platform)) {
|
|
56
|
+
process.stderr.write(`Error: Invalid platform "${platform}". Use one of: ${PLATFORMS.join(', ')}\n`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const globalFlag = opts.global ?? false;
|
|
60
|
+
const force = opts.force ?? false;
|
|
61
|
+
const targetPaths = getTargetPath(platform, globalFlag);
|
|
62
|
+
process.stdout.write(BANNER + '\n\n');
|
|
63
|
+
const results = [];
|
|
64
|
+
for (const targetDir of targetPaths) {
|
|
65
|
+
const skillPlatform = platform === 'all' ? getPlatformFromPath(targetDir) : platform;
|
|
66
|
+
const platDisplay = getPlatformDisplayName(skillPlatform);
|
|
67
|
+
try {
|
|
68
|
+
const skillMdPath = path.join(targetDir, 'SKILL.md');
|
|
69
|
+
const exists = await fs
|
|
70
|
+
.access(skillMdPath)
|
|
71
|
+
.then(() => true)
|
|
72
|
+
.catch(() => false);
|
|
73
|
+
if (exists && !force) {
|
|
74
|
+
process.stderr.write(`Error: Skill already exists at ${targetDir}\n` +
|
|
75
|
+
'Use --force to overwrite.\n');
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const files = buildSkillContent(skillPlatform);
|
|
79
|
+
let fileCount = 0;
|
|
80
|
+
for (const [relPath, content] of Object.entries(files)) {
|
|
81
|
+
const filePath = path.join(targetDir, relPath);
|
|
82
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
83
|
+
await fs.writeFile(filePath, content, 'utf8');
|
|
84
|
+
fileCount++;
|
|
85
|
+
}
|
|
86
|
+
// Make scripts executable
|
|
87
|
+
const scriptsDir = path.join(targetDir, 'scripts');
|
|
88
|
+
const scriptsDirExists = await fs
|
|
89
|
+
.access(scriptsDir)
|
|
90
|
+
.then(() => true)
|
|
91
|
+
.catch(() => false);
|
|
92
|
+
if (scriptsDirExists) {
|
|
93
|
+
const scriptFiles = await fs.readdir(scriptsDir);
|
|
94
|
+
for (const sf of scriptFiles) {
|
|
95
|
+
if (sf.endsWith('.sh')) {
|
|
96
|
+
await fs.chmod(path.join(scriptsDir, sf), 0o755);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
results.push({ path: targetDir, platform: platDisplay, fileCount });
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
process.stderr.write(`Error installing to ${platDisplay}: ${err.message}\n`);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
process.stdout.write('\n ✓ Skill installed successfully!\n\n' +
|
|
108
|
+
results
|
|
109
|
+
.map((r) => ` Platform: ${r.platform}\n Location: ${r.path}\n Files: ${r.fileCount} (SKILL.md + references/ + scripts/)`)
|
|
110
|
+
.join('\n\n') +
|
|
111
|
+
'\n\n Next steps:\n' +
|
|
112
|
+
' 1. First-time setup: jv vault setup --network jaspervault\n' +
|
|
113
|
+
' 2. (Optional) Override API URL for local debugging: export JV_API_URL=http://localhost:3000\n' +
|
|
114
|
+
' 3. Start using jv commands or let your AI agent call them\n');
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Skill template content and banner for jv
|
|
2
|
+
* Skill template content and banner for jv skill install command.
|
|
3
3
|
* Generates a multi-file skill structure:
|
|
4
4
|
* SKILL.md — compact core rules + activation + intent table
|
|
5
5
|
* references/ — detailed docs loaded on demand by the agent
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Skill template content and banner for jv
|
|
2
|
+
* Skill template content and banner for jv skill install command.
|
|
3
3
|
* Generates a multi-file skill structure:
|
|
4
4
|
* SKILL.md — compact core rules + activation + intent table
|
|
5
5
|
* references/ — detailed docs loaded on demand by the agent
|