@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.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +431 -0
  3. package/dist/adapters/base.d.ts +27 -0
  4. package/dist/adapters/base.d.ts.map +1 -0
  5. package/dist/adapters/base.js +9 -0
  6. package/dist/adapters/base.js.map +1 -0
  7. package/dist/adapters/claude.d.ts +31 -0
  8. package/dist/adapters/claude.d.ts.map +1 -0
  9. package/dist/adapters/claude.js +96 -0
  10. package/dist/adapters/claude.js.map +1 -0
  11. package/dist/adapters/cursor.d.ts +30 -0
  12. package/dist/adapters/cursor.d.ts.map +1 -0
  13. package/dist/adapters/cursor.js +60 -0
  14. package/dist/adapters/cursor.js.map +1 -0
  15. package/dist/adapters/factory.d.ts +5 -0
  16. package/dist/adapters/factory.d.ts.map +1 -0
  17. package/dist/adapters/factory.js +40 -0
  18. package/dist/adapters/factory.js.map +1 -0
  19. package/dist/adapters/gemini.d.ts +31 -0
  20. package/dist/adapters/gemini.d.ts.map +1 -0
  21. package/dist/adapters/gemini.js +99 -0
  22. package/dist/adapters/gemini.js.map +1 -0
  23. package/dist/adapters/github-copilot-cli.d.ts +30 -0
  24. package/dist/adapters/github-copilot-cli.d.ts.map +1 -0
  25. package/dist/adapters/github-copilot-cli.js +65 -0
  26. package/dist/adapters/github-copilot-cli.js.map +1 -0
  27. package/dist/adapters/github-copilot.d.ts +32 -0
  28. package/dist/adapters/github-copilot.d.ts.map +1 -0
  29. package/dist/adapters/github-copilot.js +86 -0
  30. package/dist/adapters/github-copilot.js.map +1 -0
  31. package/dist/adapters/openclaw.d.ts +28 -0
  32. package/dist/adapters/openclaw.d.ts.map +1 -0
  33. package/dist/adapters/openclaw.js +62 -0
  34. package/dist/adapters/openclaw.js.map +1 -0
  35. package/dist/adapters/opencode.d.ts +32 -0
  36. package/dist/adapters/opencode.d.ts.map +1 -0
  37. package/dist/adapters/opencode.js +102 -0
  38. package/dist/adapters/opencode.js.map +1 -0
  39. package/dist/cli/commands/config.d.ts +7 -0
  40. package/dist/cli/commands/config.d.ts.map +1 -0
  41. package/dist/cli/commands/config.js +66 -0
  42. package/dist/cli/commands/config.js.map +1 -0
  43. package/dist/cli/commands/install.d.ts +2 -0
  44. package/dist/cli/commands/install.d.ts.map +1 -0
  45. package/dist/cli/commands/install.js +27 -0
  46. package/dist/cli/commands/install.js.map +1 -0
  47. package/dist/cli/commands/register.d.ts +6 -0
  48. package/dist/cli/commands/register.d.ts.map +1 -0
  49. package/dist/cli/commands/register.js +56 -0
  50. package/dist/cli/commands/register.js.map +1 -0
  51. package/dist/cli/commands/status.d.ts +6 -0
  52. package/dist/cli/commands/status.d.ts.map +1 -0
  53. package/dist/cli/commands/status.js +37 -0
  54. package/dist/cli/commands/status.js.map +1 -0
  55. package/dist/cli/commands/sync-to.d.ts +8 -0
  56. package/dist/cli/commands/sync-to.d.ts.map +1 -0
  57. package/dist/cli/commands/sync-to.js +35 -0
  58. package/dist/cli/commands/sync-to.js.map +1 -0
  59. package/dist/cli/commands/sync.d.ts +6 -0
  60. package/dist/cli/commands/sync.d.ts.map +1 -0
  61. package/dist/cli/commands/sync.js +27 -0
  62. package/dist/cli/commands/sync.js.map +1 -0
  63. package/dist/cli/commands/visualizer.d.ts +11 -0
  64. package/dist/cli/commands/visualizer.d.ts.map +1 -0
  65. package/dist/cli/commands/visualizer.js +241 -0
  66. package/dist/cli/commands/visualizer.js.map +1 -0
  67. package/dist/cli/commands/watch.d.ts +6 -0
  68. package/dist/cli/commands/watch.d.ts.map +1 -0
  69. package/dist/cli/commands/watch.js +86 -0
  70. package/dist/cli/commands/watch.js.map +1 -0
  71. package/dist/cli/index.d.ts +3 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js +59 -0
  74. package/dist/cli/index.js.map +1 -0
  75. package/dist/core/registry.d.ts +20 -0
  76. package/dist/core/registry.d.ts.map +1 -0
  77. package/dist/core/registry.js +103 -0
  78. package/dist/core/registry.js.map +1 -0
  79. package/dist/core/scanner.d.ts +17 -0
  80. package/dist/core/scanner.d.ts.map +1 -0
  81. package/dist/core/scanner.js +227 -0
  82. package/dist/core/scanner.js.map +1 -0
  83. package/dist/core/types.d.ts +78 -0
  84. package/dist/core/types.d.ts.map +1 -0
  85. package/dist/core/types.js +2 -0
  86. package/dist/core/types.js.map +1 -0
  87. package/dist/core/visualizer-types.d.ts +39 -0
  88. package/dist/core/visualizer-types.d.ts.map +1 -0
  89. package/dist/core/visualizer-types.js +2 -0
  90. package/dist/core/visualizer-types.js.map +1 -0
  91. package/dist/syncer/index.d.ts +31 -0
  92. package/dist/syncer/index.d.ts.map +1 -0
  93. package/dist/syncer/index.js +544 -0
  94. package/dist/syncer/index.js.map +1 -0
  95. package/dist/utils/cli-output.d.ts +12 -0
  96. package/dist/utils/cli-output.d.ts.map +1 -0
  97. package/dist/utils/cli-output.js +45 -0
  98. package/dist/utils/cli-output.js.map +1 -0
  99. package/dist/utils/fs.d.ts +14 -0
  100. package/dist/utils/fs.d.ts.map +1 -0
  101. package/dist/utils/fs.js +74 -0
  102. package/dist/utils/fs.js.map +1 -0
  103. package/dist/utils/paths.d.ts +7 -0
  104. package/dist/utils/paths.d.ts.map +1 -0
  105. package/dist/utils/paths.js +84 -0
  106. package/dist/utils/paths.js.map +1 -0
  107. package/package.json +122 -0
  108. package/src/visualizer/dist/assets/index-BRmeXR7T.js +144 -0
  109. package/src/visualizer/dist/index.html +12 -0
  110. 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,7 @@
1
+ interface ConfigOptions {
2
+ scope?: string;
3
+ show?: boolean;
4
+ }
5
+ export declare function configCommand(options: ConfigOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=config.d.ts.map
@@ -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,2 @@
1
+ export declare function installCommand(): Promise<void>;
2
+ //# sourceMappingURL=install.d.ts.map
@@ -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,6 @@
1
+ interface RegisterOptions {
2
+ to?: string;
3
+ }
4
+ export declare function registerCommand(options?: RegisterOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=register.d.ts.map
@@ -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,6 @@
1
+ interface StatusOptions {
2
+ scope?: string;
3
+ }
4
+ export declare function statusCommand(options: StatusOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=status.d.ts.map
@@ -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,8 @@
1
+ interface SyncToOptions {
2
+ scope?: string;
3
+ from?: string;
4
+ to?: string;
5
+ }
6
+ export declare function syncToCommand(options: SyncToOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=sync-to.d.ts.map
@@ -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,6 @@
1
+ interface SyncOptions {
2
+ scope?: string;
3
+ }
4
+ export declare function syncCommand(options: SyncOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=sync.d.ts.map
@@ -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"}