spidersan 0.4.5 → 0.6.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 (189) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +60 -5
  3. package/dist/bin/spidersan.d.ts.map +1 -1
  4. package/dist/bin/spidersan.js +12 -1
  5. package/dist/bin/spidersan.js.map +1 -1
  6. package/dist/commands/abandon.d.ts.map +1 -1
  7. package/dist/commands/abandon.js +4 -2
  8. package/dist/commands/abandon.js.map +1 -1
  9. package/dist/commands/auto.js +6 -6
  10. package/dist/commands/auto.js.map +1 -1
  11. package/dist/commands/cleanup.d.ts.map +1 -1
  12. package/dist/commands/cleanup.js +3 -8
  13. package/dist/commands/cleanup.js.map +1 -1
  14. package/dist/commands/config.js +1 -1
  15. package/dist/commands/config.js.map +1 -1
  16. package/dist/commands/conflicts.d.ts.map +1 -1
  17. package/dist/commands/conflicts.js +209 -56
  18. package/dist/commands/conflicts.js.map +1 -1
  19. package/dist/commands/cross-conflicts.d.ts +17 -0
  20. package/dist/commands/cross-conflicts.d.ts.map +1 -0
  21. package/dist/commands/cross-conflicts.js +308 -0
  22. package/dist/commands/cross-conflicts.js.map +1 -0
  23. package/dist/commands/daily.d.ts +7 -0
  24. package/dist/commands/daily.d.ts.map +1 -0
  25. package/dist/commands/daily.js +171 -0
  26. package/dist/commands/daily.js.map +1 -0
  27. package/dist/commands/dashboard.d.ts +22 -0
  28. package/dist/commands/dashboard.d.ts.map +1 -0
  29. package/dist/commands/dashboard.js +401 -0
  30. package/dist/commands/dashboard.js.map +1 -0
  31. package/dist/commands/depends.js +2 -2
  32. package/dist/commands/depends.js.map +1 -1
  33. package/dist/commands/doctor.d.ts +22 -0
  34. package/dist/commands/doctor.d.ts.map +1 -1
  35. package/dist/commands/doctor.js +320 -61
  36. package/dist/commands/doctor.js.map +1 -1
  37. package/dist/commands/github-sync.d.ts +9 -0
  38. package/dist/commands/github-sync.d.ts.map +1 -0
  39. package/dist/commands/github-sync.js +180 -0
  40. package/dist/commands/github-sync.js.map +1 -0
  41. package/dist/commands/index.d.ts +10 -0
  42. package/dist/commands/index.d.ts.map +1 -1
  43. package/dist/commands/index.js +16 -0
  44. package/dist/commands/index.js.map +1 -1
  45. package/dist/commands/log.d.ts +3 -4
  46. package/dist/commands/log.d.ts.map +1 -1
  47. package/dist/commands/log.js +102 -87
  48. package/dist/commands/log.js.map +1 -1
  49. package/dist/commands/merge-order.js +8 -1
  50. package/dist/commands/merge-order.js.map +1 -1
  51. package/dist/commands/merged.d.ts.map +1 -1
  52. package/dist/commands/merged.js +4 -2
  53. package/dist/commands/merged.js.map +1 -1
  54. package/dist/commands/pulse.d.ts +6 -2
  55. package/dist/commands/pulse.d.ts.map +1 -1
  56. package/dist/commands/pulse.js +144 -202
  57. package/dist/commands/pulse.js.map +1 -1
  58. package/dist/commands/queen.d.ts +25 -0
  59. package/dist/commands/queen.d.ts.map +1 -0
  60. package/dist/commands/queen.js +322 -0
  61. package/dist/commands/queen.js.map +1 -0
  62. package/dist/commands/ready-check.d.ts.map +1 -1
  63. package/dist/commands/ready-check.js +42 -27
  64. package/dist/commands/ready-check.js.map +1 -1
  65. package/dist/commands/rebase-helper.d.ts.map +1 -1
  66. package/dist/commands/rebase-helper.js +13 -5
  67. package/dist/commands/rebase-helper.js.map +1 -1
  68. package/dist/commands/register.d.ts +1 -0
  69. package/dist/commands/register.d.ts.map +1 -1
  70. package/dist/commands/register.js +46 -19
  71. package/dist/commands/register.js.map +1 -1
  72. package/dist/commands/registry-sync.d.ts +9 -0
  73. package/dist/commands/registry-sync.d.ts.map +1 -0
  74. package/dist/commands/registry-sync.js +163 -0
  75. package/dist/commands/registry-sync.js.map +1 -0
  76. package/dist/commands/rescue.d.ts.map +1 -1
  77. package/dist/commands/rescue.js +42 -6
  78. package/dist/commands/rescue.js.map +1 -1
  79. package/dist/commands/stale.d.ts +9 -1
  80. package/dist/commands/stale.d.ts.map +1 -1
  81. package/dist/commands/stale.js +38 -45
  82. package/dist/commands/stale.js.map +1 -1
  83. package/dist/commands/sync-advisor.d.ts +14 -0
  84. package/dist/commands/sync-advisor.d.ts.map +1 -0
  85. package/dist/commands/sync-advisor.js +110 -0
  86. package/dist/commands/sync-advisor.js.map +1 -0
  87. package/dist/commands/sync.d.ts.map +1 -1
  88. package/dist/commands/sync.js +16 -5
  89. package/dist/commands/sync.js.map +1 -1
  90. package/dist/commands/torrent.d.ts.map +1 -1
  91. package/dist/commands/torrent.js +16 -14
  92. package/dist/commands/torrent.js.map +1 -1
  93. package/dist/commands/watch.d.ts.map +1 -1
  94. package/dist/commands/watch.js +197 -6
  95. package/dist/commands/watch.js.map +1 -1
  96. package/dist/lib/activity.d.ts +53 -0
  97. package/dist/lib/activity.d.ts.map +1 -0
  98. package/dist/lib/activity.js +267 -0
  99. package/dist/lib/activity.js.map +1 -0
  100. package/dist/lib/agent-errors.d.ts.map +1 -1
  101. package/dist/lib/agent-errors.js +5 -3
  102. package/dist/lib/agent-errors.js.map +1 -1
  103. package/dist/lib/ast.d.ts.map +1 -1
  104. package/dist/lib/ast.js +66 -19
  105. package/dist/lib/ast.js.map +1 -1
  106. package/dist/lib/colony-subscriber.d.ts +53 -0
  107. package/dist/lib/colony-subscriber.d.ts.map +1 -0
  108. package/dist/lib/colony-subscriber.js +184 -0
  109. package/dist/lib/colony-subscriber.js.map +1 -0
  110. package/dist/lib/config.d.ts.map +1 -1
  111. package/dist/lib/config.js +5 -4
  112. package/dist/lib/config.js.map +1 -1
  113. package/dist/lib/crypto.d.ts.map +1 -1
  114. package/dist/lib/crypto.js +7 -3
  115. package/dist/lib/crypto.js.map +1 -1
  116. package/dist/lib/daily-bridge.d.ts +41 -0
  117. package/dist/lib/daily-bridge.d.ts.map +1 -0
  118. package/dist/lib/daily-bridge.js +186 -0
  119. package/dist/lib/daily-bridge.js.map +1 -0
  120. package/dist/lib/github.d.ts +83 -0
  121. package/dist/lib/github.d.ts.map +1 -0
  122. package/dist/lib/github.js +206 -0
  123. package/dist/lib/github.js.map +1 -0
  124. package/dist/lib/regex-utils.d.ts +6 -0
  125. package/dist/lib/regex-utils.d.ts.map +1 -0
  126. package/dist/lib/regex-utils.js +24 -0
  127. package/dist/lib/regex-utils.js.map +1 -0
  128. package/dist/lib/repo-scanner.d.ts +32 -0
  129. package/dist/lib/repo-scanner.d.ts.map +1 -0
  130. package/dist/lib/repo-scanner.js +160 -0
  131. package/dist/lib/repo-scanner.js.map +1 -0
  132. package/dist/lib/salvage-analyzer.d.ts +29 -0
  133. package/dist/lib/salvage-analyzer.d.ts.map +1 -0
  134. package/dist/lib/salvage-analyzer.js +122 -0
  135. package/dist/lib/salvage-analyzer.js.map +1 -0
  136. package/dist/lib/security.d.ts +11 -0
  137. package/dist/lib/security.d.ts.map +1 -1
  138. package/dist/lib/security.js +20 -0
  139. package/dist/lib/security.js.map +1 -1
  140. package/dist/lib/symbol-extractor.d.ts +41 -0
  141. package/dist/lib/symbol-extractor.d.ts.map +1 -0
  142. package/dist/lib/symbol-extractor.js +78 -0
  143. package/dist/lib/symbol-extractor.js.map +1 -0
  144. package/dist/storage/adapter.d.ts +1 -1
  145. package/dist/storage/adapter.d.ts.map +1 -1
  146. package/dist/storage/index.d.ts +0 -5
  147. package/dist/storage/index.d.ts.map +1 -1
  148. package/dist/storage/index.js +0 -6
  149. package/dist/storage/index.js.map +1 -1
  150. package/dist/storage/local.d.ts +1 -1
  151. package/dist/storage/local.d.ts.map +1 -1
  152. package/dist/storage/local.js +7 -5
  153. package/dist/storage/local.js.map +1 -1
  154. package/dist/storage/supabase.d.ts +21 -1
  155. package/dist/storage/supabase.d.ts.map +1 -1
  156. package/dist/storage/supabase.js +171 -6
  157. package/dist/storage/supabase.js.map +1 -1
  158. package/dist/tui/dashboard.d.ts.map +1 -1
  159. package/dist/tui/dashboard.js +15 -6
  160. package/dist/tui/dashboard.js.map +1 -1
  161. package/dist/types/cloud.d.ts +101 -0
  162. package/dist/types/cloud.d.ts.map +1 -0
  163. package/dist/types/cloud.js +13 -0
  164. package/dist/types/cloud.js.map +1 -0
  165. package/package.json +90 -91
  166. package/dist/commands/sync-all.d.ts +0 -9
  167. package/dist/commands/sync-all.d.ts.map +0 -1
  168. package/dist/commands/sync-all.js +0 -180
  169. package/dist/commands/sync-all.js.map +0 -1
  170. package/dist/storage/git-messages.d.ts +0 -53
  171. package/dist/storage/git-messages.d.ts.map +0 -1
  172. package/dist/storage/git-messages.js +0 -374
  173. package/dist/storage/git-messages.js.map +0 -1
  174. package/dist/storage/local-messages.d.ts +0 -37
  175. package/dist/storage/local-messages.d.ts.map +0 -1
  176. package/dist/storage/local-messages.js +0 -151
  177. package/dist/storage/local-messages.js.map +0 -1
  178. package/dist/storage/message-adapter.d.ts +0 -86
  179. package/dist/storage/message-adapter.d.ts.map +0 -1
  180. package/dist/storage/message-adapter.js +0 -28
  181. package/dist/storage/message-adapter.js.map +0 -1
  182. package/dist/storage/message-factory.d.ts +0 -36
  183. package/dist/storage/message-factory.d.ts.map +0 -1
  184. package/dist/storage/message-factory.js +0 -99
  185. package/dist/storage/message-factory.js.map +0 -1
  186. package/dist/storage/mycmail-adapter.d.ts +0 -38
  187. package/dist/storage/mycmail-adapter.d.ts.map +0 -1
  188. package/dist/storage/mycmail-adapter.js +0 -297
  189. package/dist/storage/mycmail-adapter.js.map +0 -1
package/package.json CHANGED
@@ -1,92 +1,91 @@
1
1
  {
2
- "name": "spidersan",
3
- "version": "0.4.5",
4
- "description": "Branch coordination for AI coding agents",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "bin": {
9
- "spidersan": "dist/bin/spidersan.js"
10
- },
11
- "files": [
12
- "dist",
13
- "README.md",
14
- "LICENSE",
15
- "LICENSE.md",
16
- "CHANGELOG.md"
17
- ],
18
- "publishConfig": {
19
- "access": "public"
20
- },
21
- "funding": {
22
- "type": "individual",
23
- "url": "https://github.com/sponsors/treebird7"
24
- },
25
- "scripts": {
26
- "build": "tsc",
27
- "dev": "tsc --watch",
28
- "start": "node dist/bin/spidersan.js",
29
- "test": "vitest",
30
- "test:run": "vitest run",
31
- "test:coverage": "vitest run --coverage",
32
- "lint": "eslint 'src/**/*.ts'",
33
- "typecheck": "tsc --noEmit",
34
- "prepublishOnly": "npm run typecheck && npm run lint && npm run build",
35
- "prepare": "npm run build",
36
- "stress-test": "node scripts/stress-test.js",
37
- "stress-test:clean": "node scripts/stress-test.js --clean",
38
- "stress-test:report": "node scripts/stress-test.js --report"
39
- },
40
- "keywords": [
41
- "ai",
42
- "agents",
43
- "git",
44
- "branch",
45
- "coordination",
46
- "merge",
47
- "conflicts",
48
- "claude",
49
- "cursor",
50
- "copilot",
51
- "mcp",
52
- "cli"
53
- ],
54
- "author": "treebird7",
55
- "license": "MIT",
56
- "repository": {
57
- "type": "git",
58
- "url": "git+https://github.com/treebird7/spidersan-oss.git"
59
- },
60
- "bugs": {
61
- "url": "https://github.com/treebird7/spidersan-oss/issues"
62
- },
63
- "homepage": "https://github.com/treebird7/spidersan-oss#readme",
64
- "engines": {
65
- "node": ">=18.0.0"
66
- },
67
- "dependencies": {
68
- "@types/blessed": "^0.1.27",
69
- "blessed": "^0.1.81",
70
- "chalk": "^5.6.2",
71
- "chokidar": "^5.0.0",
72
- "commander": "^12.0.0",
73
- "dotenv": "^17.2.3",
74
- "execa": "^9.6.1",
75
- "minimatch": "^10.1.1",
76
- "moment": "^2.30.1",
77
- "socket.io-client": "^4.8.3",
78
- "tree-sitter": "^0.21.1",
79
- "tree-sitter-typescript": "^0.23.2",
80
- "tweetnacl": "^1.0.3",
81
- "tweetnacl-util": "^0.15.1",
82
- "yjs": "^13.6.29"
83
- },
84
- "devDependencies": {
85
- "@types/node": "^20.0.0",
86
- "@typescript-eslint/eslint-plugin": "^6.0.0",
87
- "@typescript-eslint/parser": "^6.0.0",
88
- "eslint": "^8.0.0",
89
- "typescript": "^5.3.0",
90
- "vitest": "^4.0.17"
91
- }
92
- }
2
+ "name": "spidersan",
3
+ "version": "0.6.0",
4
+ "description": "Branch coordination for AI coding agents",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "spidersan": "dist/bin/spidersan.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE",
15
+ "LICENSE.md",
16
+ "CHANGELOG.md"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "funding": {
22
+ "type": "individual",
23
+ "url": "https://github.com/sponsors/treebird7"
24
+ },
25
+ "keywords": [
26
+ "ai",
27
+ "agents",
28
+ "git",
29
+ "branch",
30
+ "coordination",
31
+ "merge",
32
+ "conflicts",
33
+ "claude",
34
+ "cursor",
35
+ "copilot",
36
+ "mcp",
37
+ "cli"
38
+ ],
39
+ "author": "treebird7",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/treebird7/spidersan-oss.git"
44
+ },
45
+ "bugs": {
46
+ "url": "https://github.com/treebird7/spidersan-oss/issues"
47
+ },
48
+ "homepage": "https://github.com/treebird7/spidersan-oss#readme",
49
+ "engines": {
50
+ "node": ">=18.0.0"
51
+ },
52
+ "dependencies": {
53
+ "@types/blessed": "^0.1.27",
54
+ "blessed": "^0.1.81",
55
+ "chalk": "^5.6.2",
56
+ "chokidar": "^5.0.0",
57
+ "commander": "^12.1.0",
58
+ "dotenv": "^17.2.3",
59
+ "execa": "^9.6.1",
60
+ "minimatch": "^10.2.4",
61
+ "moment": "^2.30.1",
62
+ "socket.io-client": "^4.8.3",
63
+ "tree-sitter": "^0.21.1",
64
+ "tree-sitter-typescript": "^0.23.2",
65
+ "ts-morph": "^27.0.2",
66
+ "tweetnacl": "^1.0.3",
67
+ "tweetnacl-util": "^0.15.1",
68
+ "yjs": "^13.6.29"
69
+ },
70
+ "devDependencies": {
71
+ "@types/node": "^20.0.0",
72
+ "@typescript-eslint/eslint-plugin": "^8.57.0",
73
+ "@typescript-eslint/parser": "^8.56.1",
74
+ "eslint": "^8.0.0",
75
+ "typescript": "^5.3.0",
76
+ "vitest": "^4.0.17"
77
+ },
78
+ "scripts": {
79
+ "build": "tsc",
80
+ "dev": "tsc --watch",
81
+ "start": "node dist/bin/spidersan.js",
82
+ "test": "vitest",
83
+ "test:run": "vitest run",
84
+ "test:coverage": "vitest run --coverage",
85
+ "lint": "eslint 'src/**/*.ts'",
86
+ "typecheck": "tsc --noEmit",
87
+ "stress-test": "node scripts/stress-test.js",
88
+ "stress-test:clean": "node scripts/stress-test.js --clean",
89
+ "stress-test:report": "node scripts/stress-test.js --report"
90
+ }
91
+ }
@@ -1,9 +0,0 @@
1
- /**
2
- * spidersan sync-all
3
- *
4
- * Scan and sync all /Dev repositories.
5
- * Global git coordination for the entire ecosystem.
6
- */
7
- import { Command } from 'commander';
8
- export declare const syncAllCommand: Command;
9
- //# sourceMappingURL=sync-all.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-all.d.ts","sourceRoot":"","sources":["../../src/commands/sync-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8GpC,eAAO,MAAM,cAAc,SAuGrB,CAAC"}
@@ -1,180 +0,0 @@
1
- /**
2
- * spidersan sync-all
3
- *
4
- * Scan and sync all /Dev repositories.
5
- * Global git coordination for the entire ecosystem.
6
- */
7
- import { Command } from 'commander';
8
- import { execSync } from 'child_process';
9
- import { existsSync, readdirSync, statSync } from 'fs';
10
- import { join, basename } from 'path';
11
- const DEV_DIR = '/Users/freedbird/Dev';
12
- function runGitInRepo(repoPath, cmd) {
13
- try {
14
- const output = execSync(`git ${cmd}`, {
15
- cwd: repoPath,
16
- encoding: 'utf-8',
17
- stdio: 'pipe'
18
- }).trim();
19
- return { success: true, output };
20
- }
21
- catch (error) {
22
- const output = error instanceof Error && 'stdout' in error
23
- ? error.stdout?.trim() || ''
24
- : '';
25
- return { success: false, output };
26
- }
27
- }
28
- function discoverRepos(baseDir) {
29
- const repos = [];
30
- try {
31
- const entries = readdirSync(baseDir);
32
- for (const entry of entries) {
33
- const fullPath = join(baseDir, entry);
34
- // Skip non-directories
35
- if (!statSync(fullPath).isDirectory())
36
- continue;
37
- // Skip hidden directories except .git
38
- if (entry.startsWith('.') && entry !== '.git')
39
- continue;
40
- // Check if it's a git repo
41
- const gitPath = join(fullPath, '.git');
42
- if (existsSync(gitPath)) {
43
- repos.push(fullPath);
44
- }
45
- }
46
- }
47
- catch {
48
- // Directory doesn't exist or can't be read
49
- }
50
- return repos.sort();
51
- }
52
- function getRepoStatus(repoPath) {
53
- const name = basename(repoPath);
54
- const status = {
55
- name,
56
- path: repoPath,
57
- uncommitted: 0,
58
- unpushed: 0,
59
- behind: 0,
60
- branch: 'unknown'
61
- };
62
- // Get current branch
63
- const branchResult = runGitInRepo(repoPath, 'rev-parse --abbrev-ref HEAD');
64
- if (branchResult.success) {
65
- status.branch = branchResult.output;
66
- }
67
- // Count uncommitted changes
68
- const statusResult = runGitInRepo(repoPath, 'status --porcelain');
69
- if (statusResult.success) {
70
- const lines = statusResult.output.split('\n').filter(Boolean);
71
- status.uncommitted = lines.length;
72
- }
73
- // Count unpushed commits
74
- const unpushedResult = runGitInRepo(repoPath, 'log @{u}..HEAD --oneline');
75
- if (unpushedResult.success) {
76
- const lines = unpushedResult.output.split('\n').filter(Boolean);
77
- status.unpushed = lines.length;
78
- }
79
- // Count behind remote
80
- const behindResult = runGitInRepo(repoPath, 'log HEAD..@{u} --oneline');
81
- if (behindResult.success) {
82
- const lines = behindResult.output.split('\n').filter(Boolean);
83
- status.behind = lines.length;
84
- }
85
- return status;
86
- }
87
- export const syncAllCommand = new Command('sync-all')
88
- .description('Scan and sync all /Dev repositories')
89
- .option('--status', 'Show status of all repos (default)')
90
- .option('--pull', 'Pull all repos from remote')
91
- .option('--push', 'Push all repos to remote')
92
- .option('--repos <names>', 'Comma-separated repo names to sync')
93
- .option('--json', 'Output as JSON')
94
- .addHelpText('after', `
95
- Examples:
96
- $ spidersan sync-all # Show status of all repos
97
- $ spidersan sync-all --pull # Pull all repos
98
- $ spidersan sync-all --push # Push all repos with commits
99
- $ spidersan sync-all --pull --push # Full sync cycle
100
- $ spidersan sync-all --repos "Envoak,Sherlocksan" --pull
101
- `)
102
- .action(async (options) => {
103
- // Default to status if no action specified
104
- const showStatus = options.status || (!options.pull && !options.push);
105
- // Discover repos
106
- let repos = discoverRepos(DEV_DIR);
107
- // Filter by name if specified
108
- if (options.repos) {
109
- const filterNames = options.repos.split(',').map(n => n.trim().toLowerCase());
110
- repos = repos.filter(r => filterNames.includes(basename(r).toLowerCase()));
111
- }
112
- if (repos.length === 0) {
113
- console.log('šŸ•·ļø No repositories found.');
114
- return;
115
- }
116
- const statuses = [];
117
- if (!options.json) {
118
- console.log(`\nšŸ•·ļø SYNC-ALL — ${repos.length} repositories\n`);
119
- console.log('━'.repeat(50));
120
- }
121
- for (const repoPath of repos) {
122
- const name = basename(repoPath);
123
- let status = getRepoStatus(repoPath);
124
- // Pull if requested
125
- if (options.pull) {
126
- if (!options.json)
127
- process.stdout.write(`šŸ“„ ${name}: pulling... `);
128
- const result = runGitInRepo(repoPath, 'pull --rebase');
129
- if (!options.json) {
130
- console.log(result.success ? 'āœ…' : 'āš ļø');
131
- }
132
- // Refresh status after pull
133
- status = getRepoStatus(repoPath);
134
- }
135
- // Push if requested and has unpushed commits
136
- if (options.push && status.unpushed > 0) {
137
- if (!options.json)
138
- process.stdout.write(`šŸ“¤ ${name}: pushing ${status.unpushed} commit(s)... `);
139
- const result = runGitInRepo(repoPath, 'push');
140
- if (!options.json) {
141
- console.log(result.success ? 'āœ…' : 'āš ļø');
142
- }
143
- // Refresh status after push
144
- status = getRepoStatus(repoPath);
145
- }
146
- statuses.push(status);
147
- // Show status
148
- if (showStatus && !options.json) {
149
- let icon = 'āœ…';
150
- if (status.uncommitted > 0)
151
- icon = 'šŸ“';
152
- if (status.unpushed > 0)
153
- icon = 'šŸ“¤';
154
- if (status.behind > 0)
155
- icon = 'šŸ“„';
156
- if (status.uncommitted > 0 && status.behind > 0)
157
- icon = 'āš ļø';
158
- console.log(`${icon} ${name.padEnd(20)} ${status.branch.padEnd(10)} | ${status.uncommitted} uncommitted | ${status.unpushed} unpushed | ${status.behind} behind`);
159
- }
160
- }
161
- if (options.json) {
162
- console.log(JSON.stringify({ repos: statuses }, null, 2));
163
- return;
164
- }
165
- console.log('━'.repeat(50));
166
- // Summary
167
- const withUncommitted = statuses.filter(s => s.uncommitted > 0).length;
168
- const withUnpushed = statuses.filter(s => s.unpushed > 0).length;
169
- const withBehind = statuses.filter(s => s.behind > 0).length;
170
- const clean = statuses.filter(s => s.uncommitted === 0 && s.unpushed === 0 && s.behind === 0).length;
171
- console.log(`\nšŸ“Š Summary: ${clean} clean | ${withUncommitted} uncommitted | ${withUnpushed} unpushed | ${withBehind} behind`);
172
- if (withBehind > 0 && !options.pull) {
173
- console.log('\nšŸ’” Run: spidersan sync-all --pull');
174
- }
175
- if (withUnpushed > 0 && !options.push) {
176
- console.log('šŸ’” Run: spidersan sync-all --push');
177
- }
178
- console.log('');
179
- });
180
- //# sourceMappingURL=sync-all.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-all.js","sourceRoot":"","sources":["../../src/commands/sync-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAoBtC,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAEvC,SAAS,YAAY,CAAC,QAAgB,EAAE,GAAW;IAC/C,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;YAClC,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK;YACtD,CAAC,CAAE,KAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAEtC,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEhD,sCAAsC;YACtC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,MAAM;gBAAE,SAAS;YAExD,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,2CAA2C;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,MAAM,GAAe;QACvB,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,SAAS;KACpB,CAAC;IAEF,qBAAqB;IACrB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC3E,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,4BAA4B;IAC5B,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAClE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAC1E,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IACxE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAChD,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,UAAU,EAAE,oCAAoC,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC;KACG,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACtC,2CAA2C;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,iBAAiB;IACjB,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEnC,8BAA8B;IAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9E,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACX,CAAC;IAED,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAErC,oBAAoB;QACpB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YACD,4BAA4B;YAC5B,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,MAAM,CAAC,QAAQ,gBAAgB,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YACD,4BAA4B;YAC5B,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,cAAc;QACd,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,GAAG,GAAG,CAAC;YACf,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC;YACnC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC;YAE7D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,WAAW,kBAAkB,MAAM,CAAC,QAAQ,eAAe,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QACtK,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,UAAU;IACV,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAErG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,YAAY,eAAe,kBAAkB,YAAY,eAAe,UAAU,SAAS,CAAC,CAAC;IAE/H,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Git Coordination Branch Message Storage Adapter (Tier 2)
3
- *
4
- * Stores messages in an orphan branch: spidersan/messages
5
- * Structure:
6
- * inbox/<agent-id>/<timestamp>_<from>_<subject-slug>.json
7
- * outbox/<agent-id>/<timestamp>_<to>_<subject-slug>.json
8
- *
9
- * Near-real-time coordination on pull. Works across machines with git remote.
10
- */
11
- import type { MessageStorageAdapter, Message, SendMessageInput, InboxOptions, TierStatus } from './message-adapter.js';
12
- export declare class GitMessagesAdapter implements MessageStorageAdapter {
13
- private basePath;
14
- private branchInitialized;
15
- constructor(basePath?: string);
16
- getTier(): number;
17
- getTierName(): string;
18
- isAvailable(): Promise<boolean>;
19
- getStatus(): Promise<TierStatus>;
20
- /**
21
- * Check if the messages branch exists
22
- */
23
- private branchExists;
24
- /**
25
- * Initialize the orphan branch if it doesn't exist
26
- */
27
- private ensureBranch;
28
- /**
29
- * Generate filename for a message
30
- */
31
- private generateFilename;
32
- /**
33
- * Read a file from the messages branch without checkout
34
- */
35
- private readFromBranch;
36
- /**
37
- * List files in a directory on the messages branch
38
- */
39
- private listFromBranch;
40
- /**
41
- * Write a file to the messages branch
42
- */
43
- private writeToBranch;
44
- /**
45
- * Update a file on the messages branch (for marking read)
46
- */
47
- private updateOnBranch;
48
- send(input: SendMessageInput): Promise<Message>;
49
- inbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
50
- read(messageId: string): Promise<Message | null>;
51
- markRead(messageId: string): Promise<boolean>;
52
- }
53
- //# sourceMappingURL=git-messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAqF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA6CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}