@wooblaymcp/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/adapters/openclaw.d.ts +32 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +102 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/registry.d.ts +7 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +17 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/types.d.ts +40 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/commands/deploy.d.ts +25 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +230 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +29 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/disable.d.ts +8 -0
- package/dist/commands/disable.d.ts.map +1 -0
- package/dist/commands/disable.js +81 -0
- package/dist/commands/disable.js.map +1 -0
- package/dist/commands/enable.d.ts +14 -0
- package/dist/commands/enable.d.ts.map +1 -0
- package/dist/commands/enable.js +178 -0
- package/dist/commands/enable.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +36 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/setup.d.ts +8 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +183 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +33 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/keys.d.ts +15 -0
- package/dist/config/keys.d.ts.map +1 -0
- package/dist/config/keys.js +30 -0
- package/dist/config/keys.js.map +1 -0
- package/dist/config/paths.d.ts +7 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +9 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { loadKeyPairFromDisk, storeKeyPair } from '@wooblay/crypto';
|
|
3
|
+
import { KEYS_DIR } from './paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* Load a named keypair from ~/.wooblay/keys/.
|
|
6
|
+
* Returns null if the keys don't exist yet.
|
|
7
|
+
*/
|
|
8
|
+
export function loadKeys(name) {
|
|
9
|
+
const pubPath = `${KEYS_DIR}/${name}.pub`;
|
|
10
|
+
const keyPath = `${KEYS_DIR}/${name}.key`;
|
|
11
|
+
if (!existsSync(pubPath) || !existsSync(keyPath)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return loadKeyPairFromDisk(KEYS_DIR, name);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Store a named keypair to ~/.wooblay/keys/ with secure permissions.
|
|
18
|
+
*/
|
|
19
|
+
export function saveKeys(name, kp) {
|
|
20
|
+
storeKeyPair(KEYS_DIR, name, kp);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if a named keypair exists in ~/.wooblay/keys/.
|
|
24
|
+
*/
|
|
25
|
+
export function keysExist(name) {
|
|
26
|
+
const pubPath = `${KEYS_DIR}/${name}.pub`;
|
|
27
|
+
const keyPath = `${KEYS_DIR}/${name}.key`;
|
|
28
|
+
return existsSync(pubPath) && existsSync(keyPath);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/config/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,IAAI,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,IAAI,MAAM,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,EAAW;IAChD,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,IAAI,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,IAAI,MAAM,CAAC;IAC1C,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Root Wooblay config directory: ~/.wooblay */
|
|
2
|
+
export declare const WOOBLAY_HOME: string;
|
|
3
|
+
/** Directory for signing keys: ~/.wooblay/keys */
|
|
4
|
+
export declare const KEYS_DIR: string;
|
|
5
|
+
/** Directory for config backups: ~/.wooblay/backups */
|
|
6
|
+
export declare const BACKUPS_DIR: string;
|
|
7
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAGA,gDAAgD;AAChD,eAAO,MAAM,YAAY,QAA8B,CAAC;AAExD,kDAAkD;AAClD,eAAO,MAAM,QAAQ,QAA6B,CAAC;AAEnD,uDAAuD;AACvD,eAAO,MAAM,WAAW,QAAgC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
/** Root Wooblay config directory: ~/.wooblay */
|
|
4
|
+
export const WOOBLAY_HOME = join(homedir(), '.wooblay');
|
|
5
|
+
/** Directory for signing keys: ~/.wooblay/keys */
|
|
6
|
+
export const KEYS_DIR = join(WOOBLAY_HOME, 'keys');
|
|
7
|
+
/** Directory for config backups: ~/.wooblay/backups */
|
|
8
|
+
export const BACKUPS_DIR = join(WOOBLAY_HOME, 'backups');
|
|
9
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,gDAAgD;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAExD,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEnD,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { setup } from './commands/setup.js';
|
|
8
|
+
import { status } from './commands/status.js';
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
11
|
+
const program = new Command();
|
|
12
|
+
program
|
|
13
|
+
.name('wooblay')
|
|
14
|
+
.description('Wooblay CLI – configure agents, check status, manage integrations')
|
|
15
|
+
.version(pkg.version);
|
|
16
|
+
// ── Setup (default command) ─────────────────────────────────────────
|
|
17
|
+
program
|
|
18
|
+
.command('setup', { isDefault: true })
|
|
19
|
+
.description('Configure all detected AI agents to use Wooblay (one command, all agents)')
|
|
20
|
+
.option('--api-key <key>', 'Wooblay API key (wbl_ak_...)')
|
|
21
|
+
.option('--endpoint <url>', 'Wooblay Gate URL', 'https://gate.wooblay.com')
|
|
22
|
+
.option('--instance-id <id>', 'Proxy instance ID')
|
|
23
|
+
.action(async (opts) => {
|
|
24
|
+
await setup({ apiKey: opts.apiKey, endpoint: opts.endpoint, instanceId: opts.instanceId });
|
|
25
|
+
});
|
|
26
|
+
// ── Status ──────────────────────────────────────────────────────────
|
|
27
|
+
program
|
|
28
|
+
.command('status')
|
|
29
|
+
.description('Check Gate health status')
|
|
30
|
+
.option('--tenant <name>', 'Tenant name (defaults to local)')
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
await status(opts);
|
|
33
|
+
});
|
|
34
|
+
// ── Init (local dev setup) ──────────────────────────────────────────
|
|
35
|
+
program
|
|
36
|
+
.command('init')
|
|
37
|
+
.description('Initialize local development environment')
|
|
38
|
+
.action(async () => {
|
|
39
|
+
const { init } = await import('./commands/init.js');
|
|
40
|
+
await init();
|
|
41
|
+
});
|
|
42
|
+
// ── Dev ─────────────────────────────────────────────────────────────
|
|
43
|
+
program
|
|
44
|
+
.command('dev')
|
|
45
|
+
.description('Start local development environment')
|
|
46
|
+
.option('--sqlite', 'Use SQLite instead of Postgres')
|
|
47
|
+
.action(async (opts) => {
|
|
48
|
+
const { dev } = await import('./commands/dev.js');
|
|
49
|
+
await dev(opts);
|
|
50
|
+
});
|
|
51
|
+
// ── Enable adapter integration ──────────────────────────────────────
|
|
52
|
+
program
|
|
53
|
+
.command('enable <framework>')
|
|
54
|
+
.description('Enable Wooblay supervision for an agent framework (openclaw, mcp, generic)')
|
|
55
|
+
.option('--gate-url <url>', 'Wooblay Gate URL', 'http://localhost:4800')
|
|
56
|
+
.action(async (framework, opts) => {
|
|
57
|
+
const { enable } = await import('./commands/enable.js');
|
|
58
|
+
await enable(framework, { gateUrl: opts.gateUrl });
|
|
59
|
+
});
|
|
60
|
+
// ── Disable adapter integration ────────────────────────────────────
|
|
61
|
+
program
|
|
62
|
+
.command('disable <framework>')
|
|
63
|
+
.description('Disable Wooblay supervision for an agent framework')
|
|
64
|
+
.action(async (framework) => {
|
|
65
|
+
const { disable } = await import('./commands/disable.js');
|
|
66
|
+
await disable(framework);
|
|
67
|
+
});
|
|
68
|
+
// ── Deploy a secure runtime to EC2 ──────────────────────────────────
|
|
69
|
+
program
|
|
70
|
+
.command('deploy')
|
|
71
|
+
.description('Build, push, and provision a secure agent runtime on EC2')
|
|
72
|
+
.requiredOption('--runtime <name>', 'Runtime manifest name (e.g. openclaw)', 'openclaw')
|
|
73
|
+
.requiredOption('--tenant <name>', 'Tenant name (lowercase, alphanumeric + hyphens)')
|
|
74
|
+
.option('--region <region>', 'AWS region', 'us-east-1')
|
|
75
|
+
.option('--instance-type <type>', 'EC2 instance type', 't4g.medium')
|
|
76
|
+
.option('--skip-build', 'Skip Docker image build', false)
|
|
77
|
+
.option('--skip-push', 'Skip pushing images to ECR', false)
|
|
78
|
+
.option('--dry-run', 'Plan only, do not create resources', false)
|
|
79
|
+
.action(async (opts) => {
|
|
80
|
+
const { deploy } = await import('./commands/deploy.js');
|
|
81
|
+
await deploy({
|
|
82
|
+
runtime: opts.runtime,
|
|
83
|
+
tenant: opts.tenant,
|
|
84
|
+
region: opts.region,
|
|
85
|
+
instanceType: opts.instanceType,
|
|
86
|
+
skipBuild: opts.skipBuild,
|
|
87
|
+
skipPush: opts.skipPush,
|
|
88
|
+
dryRun: opts.dryRun,
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
92
|
+
console.error(chalk.red('Error:'), err instanceof Error ? err.message : err);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wooblaymcp/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"bin": {
|
|
9
|
+
"wooblay": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=18.0.0"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -b && node --input-type=commonjs -e \"const f=require('fs');const p='dist/index.js';const c=f.readFileSync(p,'utf8');if(!c.startsWith('#!')){f.writeFileSync(p,'#!/usr/bin/env node\\n'+c)}\"",
|
|
19
|
+
"dev": "tsx src/index.ts",
|
|
20
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
21
|
+
"prepublishOnly": "pnpm build"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"chalk": "^5.4.0",
|
|
25
|
+
"commander": "^13.1.0"
|
|
26
|
+
},
|
|
27
|
+
"optionalDependencies": {
|
|
28
|
+
"@wooblay/crypto": "workspace:*",
|
|
29
|
+
"@wooblay/gate-client": "workspace:*",
|
|
30
|
+
"@wooblay/types": "workspace:*"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^25.2.3",
|
|
34
|
+
"tsx": "^4.19.0",
|
|
35
|
+
"typescript": "^5.9.3"
|
|
36
|
+
}
|
|
37
|
+
}
|