@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,14 @@
1
+ export declare function fileExists(path: string): Promise<boolean>;
2
+ export declare function isDirectory(path: string): Promise<boolean>;
3
+ export declare function readJSON<T>(path: string): Promise<T>;
4
+ export declare function writeJSON<T>(path: string, data: T): Promise<void>;
5
+ export declare function readText(path: string): Promise<string>;
6
+ export declare function writeText(path: string, content: string): Promise<void>;
7
+ export declare function ensureDir(path: string): Promise<void>;
8
+ export declare function removePath(path: string): Promise<void>;
9
+ export declare function listFiles(dir: string, extension?: string): Promise<string[]>;
10
+ export declare function listDirs(dir: string): Promise<string[]>;
11
+ export declare function getFileName(path: string): string;
12
+ export declare function getFileNameWithoutExt(path: string): string;
13
+ export declare function getFileExtension(path: string): string;
14
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAG1D;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUlF;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO7D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD"}
@@ -0,0 +1,74 @@
1
+ import { readdir, readFile, writeFile, stat, mkdir, rm } from 'fs/promises';
2
+ import { basename, extname } from 'path';
3
+ export async function fileExists(path) {
4
+ try {
5
+ await stat(path);
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ export async function isDirectory(path) {
13
+ try {
14
+ const stats = await stat(path);
15
+ return stats.isDirectory();
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ export async function readJSON(path) {
22
+ const content = await readFile(path, 'utf-8');
23
+ return JSON.parse(content);
24
+ }
25
+ export async function writeJSON(path, data) {
26
+ const content = JSON.stringify(data, null, 2);
27
+ await writeFile(path, content, 'utf-8');
28
+ }
29
+ export async function readText(path) {
30
+ return readFile(path, 'utf-8');
31
+ }
32
+ export async function writeText(path, content) {
33
+ await writeFile(path, content, 'utf-8');
34
+ }
35
+ export async function ensureDir(path) {
36
+ await mkdir(path, { recursive: true });
37
+ }
38
+ export async function removePath(path) {
39
+ await rm(path, { recursive: true, force: true });
40
+ }
41
+ export async function listFiles(dir, extension) {
42
+ try {
43
+ const files = await readdir(dir, { withFileTypes: true });
44
+ return files
45
+ .filter((f) => f.isFile())
46
+ .map((f) => f.name)
47
+ .filter((name) => !extension || name.endsWith(extension));
48
+ }
49
+ catch {
50
+ return [];
51
+ }
52
+ }
53
+ export async function listDirs(dir) {
54
+ try {
55
+ const files = await readdir(dir, { withFileTypes: true });
56
+ return files.filter((f) => f.isDirectory()).map((f) => f.name);
57
+ }
58
+ catch {
59
+ return [];
60
+ }
61
+ }
62
+ export function getFileName(path) {
63
+ return basename(path);
64
+ }
65
+ export function getFileNameWithoutExt(path) {
66
+ const fileName = basename(path);
67
+ const ext = extname(fileName);
68
+ return fileName.slice(0, fileName.length - ext.length);
69
+ }
70
+ export function getFileExtension(path) {
71
+ const ext = extname(path);
72
+ return ext.startsWith('.') ? ext.slice(1) : ext;
73
+ }
74
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function expandTilde(path: string): string;
2
+ export declare function getRegistryPath(scope: 'user' | 'workspace'): string;
3
+ export declare function getRegistryDir(scope: 'user' | 'workspace'): string;
4
+ export declare function getToolMarkers(scope?: 'user' | 'workspace'): Record<string, string>;
5
+ export declare function getToolName(toolPath: string): string | null;
6
+ export declare function getToolDisplayName(toolName: string): string;
7
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAQnE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAQlE;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,MAAM,GAAG,WAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiC3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW3D"}
@@ -0,0 +1,84 @@
1
+ import { homedir } from 'os';
2
+ import { resolve, join } from 'path';
3
+ export function expandTilde(path) {
4
+ if (path.startsWith('~')) {
5
+ return resolve(join(homedir(), path.slice(1)));
6
+ }
7
+ return resolve(path);
8
+ }
9
+ export function getRegistryPath(scope) {
10
+ if (process.env.NODE_ENV === 'test') {
11
+ return resolve(`output/tests/${scope}-registry.json`);
12
+ }
13
+ if (scope === 'user') {
14
+ return expandTilde('~/.waslagenie/registry.json');
15
+ }
16
+ return resolve('.waslagenie/registry.json');
17
+ }
18
+ export function getRegistryDir(scope) {
19
+ if (process.env.NODE_ENV === 'test') {
20
+ return resolve('output/tests');
21
+ }
22
+ if (scope === 'user') {
23
+ return expandTilde('~/.waslagenie');
24
+ }
25
+ return resolve('.waslagenie');
26
+ }
27
+ export function getToolMarkers(scope = 'user') {
28
+ if (scope === 'workspace') {
29
+ return {
30
+ claude: resolve('.claude'),
31
+ gemini: resolve('.gemini'),
32
+ openclaw: resolve('.openclaw'),
33
+ opencode: resolve('.opencode'),
34
+ cursor: resolve('.cursor'),
35
+ 'github-copilot': resolve('.vscode'),
36
+ 'github-copilot-cli': resolve('.github'),
37
+ };
38
+ }
39
+ const markers = {
40
+ claude: expandTilde('~/.claude'),
41
+ gemini: expandTilde('~/.gemini'),
42
+ openclaw: expandTilde('~/.openclaw'),
43
+ opencode: expandTilde('~/.config/opencode'),
44
+ cursor: expandTilde('~/.cursor'),
45
+ 'github-copilot': expandTilde('~/.config/Code/User'),
46
+ 'github-copilot-cli': expandTilde('~/.copilot'),
47
+ };
48
+ // Adjust for Windows if necessary
49
+ if (process.platform === 'win32') {
50
+ const appData = process.env.APPDATA;
51
+ if (appData) {
52
+ markers['github-copilot'] = resolve(join(appData, 'Code/User'));
53
+ markers['opencode'] = resolve(join(appData, 'opencode'));
54
+ }
55
+ }
56
+ return markers;
57
+ }
58
+ export function getToolName(toolPath) {
59
+ const normalizedToolPath = resolve(toolPath);
60
+ const userMarkers = getToolMarkers('user');
61
+ const workspaceMarkers = getToolMarkers('workspace');
62
+ for (const [name, path] of Object.entries(userMarkers)) {
63
+ if (normalizedToolPath === resolve(path))
64
+ return name;
65
+ }
66
+ for (const [name, path] of Object.entries(workspaceMarkers)) {
67
+ if (normalizedToolPath === resolve(path))
68
+ return name;
69
+ }
70
+ return null;
71
+ }
72
+ export function getToolDisplayName(toolName) {
73
+ const displayNames = {
74
+ claude: 'Claude Code',
75
+ gemini: 'Gemini CLI',
76
+ openclaw: 'OpenClaw',
77
+ opencode: 'OpenCode',
78
+ cursor: 'Cursor',
79
+ 'github-copilot': 'GitHub Copilot',
80
+ 'github-copilot-cli': 'GitHub Copilot CLI',
81
+ };
82
+ return displayNames[toolName] || toolName;
83
+ }
84
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,122 @@
1
+ {
2
+ "name": "@untitled-devs/wasla",
3
+ "version": "0.1.0",
4
+ "description": "Universal synchronization layer for AI agent orchestrators",
5
+ "type": "module",
6
+ "main": "dist/cli/index.js",
7
+ "bin": {
8
+ "waslagenie": "dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "src/visualizer/dist"
13
+ ],
14
+ "scripts": {
15
+ "prepublishOnly": "npm run visualizer:build && npm run build",
16
+ "build": "npm run check && node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\" && tsc",
17
+ "dev": "tsc --watch",
18
+ "start": "node dist/cli/index.js",
19
+ "sync": "npm run build && node dist/cli/index.js sync --scope workspace",
20
+ "watch": "npm run build && node dist/cli/index.js watch --scope workspace",
21
+ "sync:claude:gemini": "npm run build && node dist/cli/index.js sync-to --from claude --to gemini --scope workspace",
22
+ "sync:claude:openclaw": "npm run build && node dist/cli/index.js sync-to --from claude --to openclaw --scope workspace",
23
+ "sync:claude:opencode": "npm run build && node dist/cli/index.js sync-to --from claude --to opencode --scope workspace",
24
+ "sync:claude:cursor": "npm run build && node dist/cli/index.js sync-to --from claude --to cursor --scope workspace",
25
+ "sync:claude:github-copilot": "npm run build && node dist/cli/index.js sync-to --from claude --to github-copilot --scope workspace",
26
+ "sync:claude:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from claude --to github-copilot-cli --scope workspace",
27
+ "sync:gemini:claude": "npm run build && node dist/cli/index.js sync-to --from gemini --to claude --scope workspace",
28
+ "sync:gemini:openclaw": "npm run build && node dist/cli/index.js sync-to --from gemini --to openclaw --scope workspace",
29
+ "sync:gemini:opencode": "npm run build && node dist/cli/index.js sync-to --from gemini --to opencode --scope workspace",
30
+ "sync:gemini:cursor": "npm run build && node dist/cli/index.js sync-to --from gemini --to cursor --scope workspace",
31
+ "sync:gemini:github-copilot": "npm run build && node dist/cli/index.js sync-to --from gemini --to github-copilot --scope workspace",
32
+ "sync:gemini:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from gemini --to github-copilot-cli --scope workspace",
33
+ "sync:openclaw:claude": "npm run build && node dist/cli/index.js sync-to --from openclaw --to claude --scope workspace",
34
+ "sync:openclaw:gemini": "npm run build && node dist/cli/index.js sync-to --from openclaw --to gemini --scope workspace",
35
+ "sync:openclaw:opencode": "npm run build && node dist/cli/index.js sync-to --from openclaw --to opencode --scope workspace",
36
+ "sync:openclaw:cursor": "npm run build && node dist/cli/index.js sync-to --from openclaw --to cursor --scope workspace",
37
+ "sync:openclaw:github-copilot": "npm run build && node dist/cli/index.js sync-to --from openclaw --to github-copilot --scope workspace",
38
+ "sync:openclaw:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from openclaw --to github-copilot-cli --scope workspace",
39
+ "sync:opencode:claude": "npm run build && node dist/cli/index.js sync-to --from opencode --to claude --scope workspace",
40
+ "sync:opencode:gemini": "npm run build && node dist/cli/index.js sync-to --from opencode --to gemini --scope workspace",
41
+ "sync:opencode:openclaw": "npm run build && node dist/cli/index.js sync-to --from opencode --to openclaw --scope workspace",
42
+ "sync:opencode:cursor": "npm run build && node dist/cli/index.js sync-to --from opencode --to cursor --scope workspace",
43
+ "sync:opencode:github-copilot": "npm run build && node dist/cli/index.js sync-to --from opencode --to github-copilot --scope workspace",
44
+ "sync:opencode:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from opencode --to github-copilot-cli --scope workspace",
45
+ "sync:cursor:claude": "npm run build && node dist/cli/index.js sync-to --from cursor --to claude --scope workspace",
46
+ "sync:cursor:gemini": "npm run build && node dist/cli/index.js sync-to --from cursor --to gemini --scope workspace",
47
+ "sync:cursor:openclaw": "npm run build && node dist/cli/index.js sync-to --from cursor --to openclaw --scope workspace",
48
+ "sync:cursor:opencode": "npm run build && node dist/cli/index.js sync-to --from cursor --to opencode --scope workspace",
49
+ "sync:cursor:github-copilot": "npm run build && node dist/cli/index.js sync-to --from cursor --to github-copilot --scope workspace",
50
+ "sync:cursor:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from cursor --to github-copilot-cli --scope workspace",
51
+ "sync:github-copilot:claude": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to claude --scope workspace",
52
+ "sync:github-copilot:gemini": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to gemini --scope workspace",
53
+ "sync:github-copilot:openclaw": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to openclaw --scope workspace",
54
+ "sync:github-copilot:opencode": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to opencode --scope workspace",
55
+ "sync:github-copilot:cursor": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to cursor --scope workspace",
56
+ "sync:github-copilot:github-copilot-cli": "npm run build && node dist/cli/index.js sync-to --from github-copilot --to github-copilot-cli --scope workspace",
57
+ "sync:github-copilot-cli:claude": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to claude --scope workspace",
58
+ "sync:github-copilot-cli:gemini": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to gemini --scope workspace",
59
+ "sync:github-copilot-cli:openclaw": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to openclaw --scope workspace",
60
+ "sync:github-copilot-cli:opencode": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to opencode --scope workspace",
61
+ "sync:github-copilot-cli:cursor": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to cursor --scope workspace",
62
+ "sync:github-copilot-cli:github-copilot": "npm run build && node dist/cli/index.js sync-to --from github-copilot-cli --to github-copilot --scope workspace",
63
+ "test": "vitest",
64
+ "test:run": "vitest run",
65
+ "test:watch": "vitest --watch",
66
+ "test:unit": "vitest run tests/unit",
67
+ "test:integration": "vitest run tests/integration",
68
+ "test:validation": "vitest run tests/validation",
69
+ "test:coverage": "vitest run --coverage",
70
+ "coverage:open": "open output/index.html",
71
+ "docs": "cd docs && npm run start",
72
+ "docs:install": "npm --prefix docs install",
73
+ "docs:build": "cd docs && npm run build",
74
+ "visualizer": "npm run visualizer:install && npm run visualizer:build && npm run build && node dist/cli/index.js visualizer --scope workspace",
75
+ "ui": "npm run visualizer",
76
+ "visualizer:install": "npm --prefix src/visualizer install",
77
+ "visualizer:dev": "npm --prefix src/visualizer run dev",
78
+ "visualizer:build": "npm --prefix src/visualizer run build",
79
+ "visualizer:preview": "npm --prefix src/visualizer run preview",
80
+ "lint": "tsc --noEmit",
81
+ "lint:check": "tsc --noEmit",
82
+ "lint:fix": "tsc --noEmit && prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
83
+ "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \".prettierrc\"",
84
+ "format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \".prettierrc\"",
85
+ "type:check": "tsc --noEmit",
86
+ "type:fix": "tsc --noEmit && prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
87
+ "check": "npm run type:check && npm run format:check",
88
+ "fix": "npm run format && npm run lint:fix",
89
+ "clean": "node -e \"['dist', '.nyc_output', 'output', 'coverage'].forEach(p => require('fs').rmSync(p, { recursive: true, force: true }))\"",
90
+ "all": "npm run clean && npm run build && npm run check && npm test"
91
+ },
92
+ "keywords": [
93
+ "agents",
94
+ "orchestrators",
95
+ "sync",
96
+ "ai",
97
+ "claude",
98
+ "gemini",
99
+ "opencode"
100
+ ],
101
+ "author": "Mustafa BAHAA",
102
+ "license": "MIT",
103
+ "dependencies": {
104
+ "chokidar": "^3.5.3",
105
+ "commander": "^11.1.0",
106
+ "prompts": "^2.4.2",
107
+ "ws": "^8.21.0"
108
+ },
109
+ "devDependencies": {
110
+ "@ai-hero/sandcastle": "^0.6.6",
111
+ "@types/node": "^20.10.6",
112
+ "@types/ws": "^8.18.1",
113
+ "@vitest/coverage-v8": "^1.6.1",
114
+ "@vitest/ui": "^1.0.0",
115
+ "prettier": "^3.1.0",
116
+ "typescript": "^5.3.3",
117
+ "vitest": "^1.6.1"
118
+ },
119
+ "engines": {
120
+ "node": ">=18.0.0"
121
+ }
122
+ }