@untitled-devs/wasla 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/LICENSE +21 -0
- package/README.md +431 -0
- package/dist/adapters/base.d.ts +27 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +9 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +31 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +96 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/cursor.d.ts +30 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +60 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/factory.d.ts +5 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +40 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/gemini.d.ts +31 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +99 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/github-copilot-cli.d.ts +30 -0
- package/dist/adapters/github-copilot-cli.d.ts.map +1 -0
- package/dist/adapters/github-copilot-cli.js +65 -0
- package/dist/adapters/github-copilot-cli.js.map +1 -0
- package/dist/adapters/github-copilot.d.ts +32 -0
- package/dist/adapters/github-copilot.d.ts.map +1 -0
- package/dist/adapters/github-copilot.js +86 -0
- package/dist/adapters/github-copilot.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +28 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +62 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/opencode.d.ts +32 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +102 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/cli/commands/config.d.ts +7 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +66 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +27 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/register.d.ts +6 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +56 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +37 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync-to.d.ts +8 -0
- package/dist/cli/commands/sync-to.d.ts.map +1 -0
- package/dist/cli/commands/sync-to.js +35 -0
- package/dist/cli/commands/sync-to.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +6 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +27 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/visualizer.d.ts +11 -0
- package/dist/cli/commands/visualizer.d.ts.map +1 -0
- package/dist/cli/commands/visualizer.js +241 -0
- package/dist/cli/commands/visualizer.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +6 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +86 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +59 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/registry.d.ts +20 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +103 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/scanner.d.ts +17 -0
- package/dist/core/scanner.d.ts.map +1 -0
- package/dist/core/scanner.js +227 -0
- package/dist/core/scanner.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/visualizer-types.d.ts +39 -0
- package/dist/core/visualizer-types.d.ts.map +1 -0
- package/dist/core/visualizer-types.js +2 -0
- package/dist/core/visualizer-types.js.map +1 -0
- package/dist/syncer/index.d.ts +31 -0
- package/dist/syncer/index.d.ts.map +1 -0
- package/dist/syncer/index.js +544 -0
- package/dist/syncer/index.js.map +1 -0
- package/dist/utils/cli-output.d.ts +12 -0
- package/dist/utils/cli-output.d.ts.map +1 -0
- package/dist/utils/cli-output.js +45 -0
- package/dist/utils/cli-output.js.map +1 -0
- package/dist/utils/fs.d.ts +14 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +74 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +84 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +122 -0
- package/src/visualizer/dist/assets/index-BRmeXR7T.js +144 -0
- package/src/visualizer/dist/index.html +12 -0
- package/src/visualizer/dist/logo.png +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class OpenCodeAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'opencode';
|
|
9
|
+
this.displayName = 'OpenCode';
|
|
10
|
+
this.mcpKey = 'mcp';
|
|
11
|
+
this.contextFile = 'AGENTS.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
agent: 'md',
|
|
14
|
+
skill: 'md',
|
|
15
|
+
mcp: 'json',
|
|
16
|
+
context: 'md',
|
|
17
|
+
};
|
|
18
|
+
this.scope = scope;
|
|
19
|
+
}
|
|
20
|
+
get paths() {
|
|
21
|
+
const markers = getToolMarkers(this.scope);
|
|
22
|
+
const base = markers['opencode'];
|
|
23
|
+
const configPath = this.scope === 'workspace'
|
|
24
|
+
? join(dirname(base), 'opencode.json')
|
|
25
|
+
: join(base, 'opencode.json');
|
|
26
|
+
return {
|
|
27
|
+
agent: join(base, 'agents'),
|
|
28
|
+
skill: join(base, 'skills'),
|
|
29
|
+
mcp: configPath,
|
|
30
|
+
context: this.scope === 'workspace' ? join(dirname(base), 'AGENTS.md') : join(base, 'AGENTS.md'),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
get skillDirs() {
|
|
34
|
+
return [this.paths.skill];
|
|
35
|
+
}
|
|
36
|
+
async isInstalled() {
|
|
37
|
+
const base = getToolMarkers(this.scope).opencode;
|
|
38
|
+
return ((await fileExists(base)) ||
|
|
39
|
+
(await fileExists(this.paths.mcp)) ||
|
|
40
|
+
(await fileExists(this.paths.agent)) ||
|
|
41
|
+
(await fileExists(this.paths.skill)));
|
|
42
|
+
}
|
|
43
|
+
mcpFromNative(server) {
|
|
44
|
+
if (server.type === 'local' && Array.isArray(server.command)) {
|
|
45
|
+
const [command, ...args] = server.command;
|
|
46
|
+
return {
|
|
47
|
+
command,
|
|
48
|
+
args,
|
|
49
|
+
...(server.environment ? { env: server.environment } : {}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (server.type === 'remote') {
|
|
53
|
+
return {
|
|
54
|
+
url: server.url,
|
|
55
|
+
...(server.headers ? { headers: server.headers } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return server;
|
|
59
|
+
}
|
|
60
|
+
mcpToNative(server) {
|
|
61
|
+
if (typeof server.command === 'string') {
|
|
62
|
+
return {
|
|
63
|
+
type: 'local',
|
|
64
|
+
command: [server.command, ...(Array.isArray(server.args) ? server.args : [])],
|
|
65
|
+
enabled: true,
|
|
66
|
+
...(server.env ? { environment: server.env } : {}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (typeof server.url === 'string') {
|
|
70
|
+
return {
|
|
71
|
+
type: 'remote',
|
|
72
|
+
url: server.url,
|
|
73
|
+
enabled: true,
|
|
74
|
+
...(server.headers ? { headers: server.headers } : {}),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return server;
|
|
78
|
+
}
|
|
79
|
+
async writeStub(asset, content, targetPath) {
|
|
80
|
+
if (asset.type === 'agent') {
|
|
81
|
+
await this.writeAgentStub(targetPath, content);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
await this.writeMcpStub(targetPath, content);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async writeAgentStub(targetPath, content) {
|
|
88
|
+
await ensureDir(dirname(targetPath));
|
|
89
|
+
await writeText(targetPath, content);
|
|
90
|
+
}
|
|
91
|
+
async writeMcpStub(targetPath, content) {
|
|
92
|
+
await ensureDir(dirname(targetPath));
|
|
93
|
+
await writeText(targetPath, content);
|
|
94
|
+
}
|
|
95
|
+
async installSkill() {
|
|
96
|
+
// TBD
|
|
97
|
+
}
|
|
98
|
+
getRootConfigAppend() {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEzE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { RegistryManager } from '../../core/registry.js';
|
|
2
|
+
import { section, success, error, spacer, info } from '../../utils/cli-output.js';
|
|
3
|
+
import { getRegistryPath } from '../../utils/paths.js';
|
|
4
|
+
import { fileExists } from '../../utils/fs.js';
|
|
5
|
+
export async function configCommand(options) {
|
|
6
|
+
try {
|
|
7
|
+
// Determine current scope
|
|
8
|
+
const userPath = getRegistryPath('user');
|
|
9
|
+
const workspacePath = getRegistryPath('workspace');
|
|
10
|
+
const userExists = await fileExists(userPath);
|
|
11
|
+
const workspaceExists = await fileExists(workspacePath);
|
|
12
|
+
let currentScope = 'user';
|
|
13
|
+
if (workspaceExists && !userExists) {
|
|
14
|
+
currentScope = 'workspace';
|
|
15
|
+
}
|
|
16
|
+
// Show current config
|
|
17
|
+
if (options.show) {
|
|
18
|
+
section('Current Configuration');
|
|
19
|
+
spacer();
|
|
20
|
+
info(`Scope: ${currentScope}`);
|
|
21
|
+
info(`Registry: ${getRegistryPath(currentScope)}`);
|
|
22
|
+
spacer();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Change scope if requested
|
|
26
|
+
if (options.scope) {
|
|
27
|
+
const newScope = options.scope;
|
|
28
|
+
if (newScope !== 'user' && newScope !== 'workspace') {
|
|
29
|
+
error('Invalid scope. Use: user or workspace');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const registry = new RegistryManager(currentScope);
|
|
33
|
+
// Load existing registry if it exists, otherwise it will be created on first sync
|
|
34
|
+
if ((currentScope === 'user' && userExists) ||
|
|
35
|
+
(currentScope === 'workspace' && workspaceExists)) {
|
|
36
|
+
await registry.load();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Create empty registry
|
|
40
|
+
await registry.load();
|
|
41
|
+
}
|
|
42
|
+
// Change scope and save
|
|
43
|
+
registry.setScope(newScope);
|
|
44
|
+
await registry.save();
|
|
45
|
+
success(`Scope changed to: ${newScope}`);
|
|
46
|
+
info(`Registry: ${getRegistryPath(newScope)}`);
|
|
47
|
+
spacer();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// If no option provided, show current config
|
|
51
|
+
section('Current Configuration');
|
|
52
|
+
spacer();
|
|
53
|
+
info(`Scope: ${currentScope}`);
|
|
54
|
+
info(`Registry: ${getRegistryPath(currentScope)}`);
|
|
55
|
+
spacer();
|
|
56
|
+
console.log('Usage:');
|
|
57
|
+
console.log(' waslagenie config --scope user # Store registry in ~/.waslagenie/');
|
|
58
|
+
console.log(' waslagenie config --scope workspace # Store registry in .waslagenie/');
|
|
59
|
+
console.log(' waslagenie config --show # Show current config');
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
error(`Config failed: ${err}`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBpD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { section, success, error, highlight, spacer } from '../../utils/cli-output.js';
|
|
2
|
+
import { getRegistryDir } from '../../utils/paths.js';
|
|
3
|
+
import { ensureDir } from '../../utils/fs.js';
|
|
4
|
+
export async function installCommand() {
|
|
5
|
+
try {
|
|
6
|
+
section('Preparing WaslaGenie CLI...');
|
|
7
|
+
spacer();
|
|
8
|
+
// Ensure registry directory exists
|
|
9
|
+
await ensureDir(getRegistryDir('user'));
|
|
10
|
+
success('Registry directory ready');
|
|
11
|
+
spacer();
|
|
12
|
+
highlight('CLI setup complete!');
|
|
13
|
+
console.log('');
|
|
14
|
+
console.log('This command does not write skills into Claude, Gemini, or other tools.');
|
|
15
|
+
console.log('');
|
|
16
|
+
console.log('Common commands:');
|
|
17
|
+
console.log(' waslagenie sync');
|
|
18
|
+
console.log(' waslagenie sync-to --from gemini --to claude');
|
|
19
|
+
console.log(' waslagenie register # optional: add WaslaGenie helper skills to tools');
|
|
20
|
+
console.log('');
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
error(`CLI setup failed: ${err}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC;QAET,mCAAmC;QACnC,MAAM,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAExC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAEpC,MAAM,EAAE,CAAC;QACT,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DlF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getInstalledAdapters } from '../../adapters/factory.js';
|
|
2
|
+
import { section, success, error, warning, highlight, spacer } from '../../utils/cli-output.js';
|
|
3
|
+
import { getRegistryDir } from '../../utils/paths.js';
|
|
4
|
+
import { ensureDir } from '../../utils/fs.js';
|
|
5
|
+
export async function registerCommand(options = {}) {
|
|
6
|
+
try {
|
|
7
|
+
section('Detecting installed orchestrators...');
|
|
8
|
+
spacer();
|
|
9
|
+
const adapters = await getInstalledAdapters();
|
|
10
|
+
if (adapters.length === 0) {
|
|
11
|
+
error('No supported orchestrators found');
|
|
12
|
+
warning('Please install Claude Code, Gemini CLI, or OpenCode first');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
adapters.forEach((adapter) => {
|
|
16
|
+
success(`${adapter.displayName} found`);
|
|
17
|
+
});
|
|
18
|
+
let targets = adapters;
|
|
19
|
+
if (options.to) {
|
|
20
|
+
const requested = options.to
|
|
21
|
+
.split(',')
|
|
22
|
+
.map((value) => value.trim().toLowerCase())
|
|
23
|
+
.filter(Boolean);
|
|
24
|
+
const installedByName = new Map(adapters.map((adapter) => [adapter.name.toLowerCase(), adapter]));
|
|
25
|
+
const invalid = requested.filter((name) => !installedByName.has(name));
|
|
26
|
+
if (invalid.length > 0) {
|
|
27
|
+
error(`Unsupported or not installed provider(s): ${invalid.join(', ')}. Installed providers: ${adapters
|
|
28
|
+
.map((adapter) => adapter.name)
|
|
29
|
+
.join(', ')}`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
targets = requested.map((name) => installedByName.get(name));
|
|
34
|
+
}
|
|
35
|
+
spacer();
|
|
36
|
+
section('Registering WaslaGenie helper skills...');
|
|
37
|
+
spacer();
|
|
38
|
+
await ensureDir(getRegistryDir('user'));
|
|
39
|
+
for (const adapter of targets) {
|
|
40
|
+
try {
|
|
41
|
+
await adapter.installSkill();
|
|
42
|
+
success(`Registered in ${adapter.displayName}`);
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
error(`Failed to register in ${adapter.displayName}: ${e}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
spacer();
|
|
49
|
+
highlight('Registration complete!');
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
error(`Registration failed: ${err}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RegistryManager } from '../../core/registry.js';
|
|
2
|
+
import { section, error, spacer, table } from '../../utils/cli-output.js';
|
|
3
|
+
import { fileExists } from '../../utils/fs.js';
|
|
4
|
+
import { getRegistryPath } from '../../utils/paths.js';
|
|
5
|
+
export async function statusCommand(options) {
|
|
6
|
+
try {
|
|
7
|
+
const scope = (options.scope || 'workspace');
|
|
8
|
+
const registryPath = getRegistryPath(scope);
|
|
9
|
+
if (!(await fileExists(registryPath))) {
|
|
10
|
+
error('Registry not found. Run: waslagenie sync');
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const registry = new RegistryManager(scope);
|
|
14
|
+
await registry.load();
|
|
15
|
+
const registryData = registry.get();
|
|
16
|
+
if (registryData.assets.length === 0) {
|
|
17
|
+
section('No assets synced yet');
|
|
18
|
+
spacer();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
section('Synced Assets');
|
|
22
|
+
spacer();
|
|
23
|
+
const rows = registryData.assets.map((asset) => [
|
|
24
|
+
asset.name,
|
|
25
|
+
asset.type,
|
|
26
|
+
asset.stubs.map((s) => s.tool).join(', ') || 'none',
|
|
27
|
+
new Date(asset.last_modified_at).toLocaleString(),
|
|
28
|
+
]);
|
|
29
|
+
table([['ASSET', 'TYPE', 'STUBS', 'LAST MODIFIED'], ...rows.map((row) => row.map(String))], [20, 8, 20, 24]);
|
|
30
|
+
spacer();
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
error(`Status check failed: ${err}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAyB,CAAC;QACrE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEpC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,OAAO,CAAC,eAAe,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC;QAET,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,cAAc,EAAE;SAClD,CAAC,CAAC;QAEH,KAAK,CACH,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EACpF,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAChB,CAAC;QAEF,MAAM,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-to.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-to.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { RegistryManager } from '../../core/registry.js';
|
|
2
|
+
import { Scanner } from '../../core/scanner.js';
|
|
3
|
+
import { Syncer } from '../../syncer/index.js';
|
|
4
|
+
import { section, error, highlight, spacer } from '../../utils/cli-output.js';
|
|
5
|
+
export async function syncToCommand(options) {
|
|
6
|
+
try {
|
|
7
|
+
const scope = (options.scope || 'workspace');
|
|
8
|
+
const from = options.from;
|
|
9
|
+
const to = options.to;
|
|
10
|
+
if (!from || !to) {
|
|
11
|
+
error('Error: --from and --to are required');
|
|
12
|
+
console.log('Usage: waslagenie sync-to --from <source> --to <target> [--scope workspace|user]');
|
|
13
|
+
console.log('Example: waslagenie sync-to --from gemini --to claude');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const targets = to.split(',').map((t) => t.trim());
|
|
17
|
+
section(`Syncing from ${from} to ${targets.join(', ')}...`);
|
|
18
|
+
spacer();
|
|
19
|
+
const registry = new RegistryManager(scope);
|
|
20
|
+
await registry.load();
|
|
21
|
+
const scanner = new Scanner(scope);
|
|
22
|
+
const syncer = new Syncer(registry, scanner, scope);
|
|
23
|
+
const result = await syncer.syncToTool(from, targets);
|
|
24
|
+
spacer();
|
|
25
|
+
highlight('Sync complete!');
|
|
26
|
+
console.log(` ${result.assetsDiscovered} assets discovered`);
|
|
27
|
+
console.log(` ${result.stubsWritten} stubs written`);
|
|
28
|
+
console.log(` ${result.stubsDeleted} stubs deleted`);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
error(`Sync failed: ${err}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sync-to.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-to.js","sourceRoot":"","sources":["../../../src/cli/commands/sync-to.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAQ9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAyB,CAAC;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAEtB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CACT,kFAAkF,CACnF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,gBAAgB,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC;QAET,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,EAAE,CAAC;QACT,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,gBAAgB,oBAAoB,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RegistryManager } from '../../core/registry.js';
|
|
2
|
+
import { Scanner } from '../../core/scanner.js';
|
|
3
|
+
import { Syncer } from '../../syncer/index.js';
|
|
4
|
+
import { section, error, highlight, spacer } from '../../utils/cli-output.js';
|
|
5
|
+
export async function syncCommand(options) {
|
|
6
|
+
try {
|
|
7
|
+
const scope = (options.scope || 'workspace');
|
|
8
|
+
section('Scanning...');
|
|
9
|
+
spacer();
|
|
10
|
+
const registry = new RegistryManager(scope);
|
|
11
|
+
await registry.load();
|
|
12
|
+
const scanner = new Scanner(scope);
|
|
13
|
+
const syncer = new Syncer(registry, scanner, scope);
|
|
14
|
+
const result = await syncer.sync(true);
|
|
15
|
+
spacer();
|
|
16
|
+
highlight('Sync complete!');
|
|
17
|
+
console.log(' Note: sync only mirrors assets. It does not install helper skills.');
|
|
18
|
+
console.log(` ${result.assetsDiscovered} assets discovered`);
|
|
19
|
+
console.log(` ${result.stubsWritten} stubs written`);
|
|
20
|
+
console.log(` ${result.stubsDeleted} stubs deleted`);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
error(`Sync failed: ${err}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAM9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAyB,CAAC;QAErE,OAAO,CAAC,aAAa,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC;QAET,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,EAAE,CAAC;QACT,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,gBAAgB,oBAAoB,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function resolveVisualizerDist(moduleUrl: string): string;
|
|
2
|
+
interface VisualizerOptions {
|
|
3
|
+
scope?: string;
|
|
4
|
+
port?: string;
|
|
5
|
+
host?: string;
|
|
6
|
+
noOpen?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const PROVIDER_ICONS: Record<string, string>;
|
|
9
|
+
export declare function visualizerCommand(options: VisualizerOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=visualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizer.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/visualizer.ts"],"names":[],"mappings":"AAkBA,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyDD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASjD,CAAC;AAsEF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuIjF"}
|