spidersan 0.4.3 → 0.5.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 (172) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/README.md +95 -23
  3. package/dist/bin/spidersan.d.ts.map +1 -1
  4. package/dist/bin/spidersan.js +22 -2
  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.d.ts +7 -0
  15. package/dist/commands/config.d.ts.map +1 -1
  16. package/dist/commands/config.js +12 -0
  17. package/dist/commands/config.js.map +1 -1
  18. package/dist/commands/conflicts.d.ts.map +1 -1
  19. package/dist/commands/conflicts.js +238 -34
  20. package/dist/commands/conflicts.js.map +1 -1
  21. package/dist/commands/cross-conflicts.d.ts +17 -0
  22. package/dist/commands/cross-conflicts.d.ts.map +1 -0
  23. package/dist/commands/cross-conflicts.js +305 -0
  24. package/dist/commands/cross-conflicts.js.map +1 -0
  25. package/dist/commands/daily.d.ts +7 -0
  26. package/dist/commands/daily.d.ts.map +1 -0
  27. package/dist/commands/daily.js +171 -0
  28. package/dist/commands/daily.js.map +1 -0
  29. package/dist/commands/dashboard.d.ts +22 -0
  30. package/dist/commands/dashboard.d.ts.map +1 -0
  31. package/dist/commands/dashboard.js +401 -0
  32. package/dist/commands/dashboard.js.map +1 -0
  33. package/dist/commands/depends.js +2 -2
  34. package/dist/commands/depends.js.map +1 -1
  35. package/dist/commands/doctor.d.ts +22 -0
  36. package/dist/commands/doctor.d.ts.map +1 -1
  37. package/dist/commands/doctor.js +215 -14
  38. package/dist/commands/doctor.js.map +1 -1
  39. package/dist/commands/github-sync.d.ts +9 -0
  40. package/dist/commands/github-sync.d.ts.map +1 -0
  41. package/dist/commands/github-sync.js +180 -0
  42. package/dist/commands/github-sync.js.map +1 -0
  43. package/dist/commands/index.d.ts +11 -0
  44. package/dist/commands/index.d.ts.map +1 -1
  45. package/dist/commands/index.js +17 -0
  46. package/dist/commands/index.js.map +1 -1
  47. package/dist/commands/log.d.ts +3 -4
  48. package/dist/commands/log.d.ts.map +1 -1
  49. package/dist/commands/log.js +102 -87
  50. package/dist/commands/log.js.map +1 -1
  51. package/dist/commands/merge-order.js +8 -1
  52. package/dist/commands/merge-order.js.map +1 -1
  53. package/dist/commands/merged.d.ts.map +1 -1
  54. package/dist/commands/merged.js +4 -2
  55. package/dist/commands/merged.js.map +1 -1
  56. package/dist/commands/pulse.d.ts +6 -2
  57. package/dist/commands/pulse.d.ts.map +1 -1
  58. package/dist/commands/pulse.js +152 -202
  59. package/dist/commands/pulse.js.map +1 -1
  60. package/dist/commands/queen.d.ts +25 -0
  61. package/dist/commands/queen.d.ts.map +1 -0
  62. package/dist/commands/queen.js +309 -0
  63. package/dist/commands/queen.js.map +1 -0
  64. package/dist/commands/ready-check.d.ts +1 -0
  65. package/dist/commands/ready-check.d.ts.map +1 -1
  66. package/dist/commands/ready-check.js +43 -28
  67. package/dist/commands/ready-check.js.map +1 -1
  68. package/dist/commands/rebase-helper.d.ts +3 -0
  69. package/dist/commands/rebase-helper.d.ts.map +1 -0
  70. package/dist/commands/rebase-helper.js +52 -0
  71. package/dist/commands/rebase-helper.js.map +1 -0
  72. package/dist/commands/register.d.ts +2 -0
  73. package/dist/commands/register.d.ts.map +1 -1
  74. package/dist/commands/register.js +66 -10
  75. package/dist/commands/register.js.map +1 -1
  76. package/dist/commands/registry-sync.d.ts +9 -0
  77. package/dist/commands/registry-sync.d.ts.map +1 -0
  78. package/dist/commands/registry-sync.js +163 -0
  79. package/dist/commands/registry-sync.js.map +1 -0
  80. package/dist/commands/rescue.d.ts.map +1 -1
  81. package/dist/commands/rescue.js +69 -12
  82. package/dist/commands/rescue.js.map +1 -1
  83. package/dist/commands/stale.d.ts +16 -0
  84. package/dist/commands/stale.d.ts.map +1 -1
  85. package/dist/commands/stale.js +55 -21
  86. package/dist/commands/stale.js.map +1 -1
  87. package/dist/commands/sync-advisor.d.ts +14 -0
  88. package/dist/commands/sync-advisor.d.ts.map +1 -0
  89. package/dist/commands/sync-advisor.js +110 -0
  90. package/dist/commands/sync-advisor.js.map +1 -0
  91. package/dist/commands/sync.d.ts.map +1 -1
  92. package/dist/commands/sync.js +16 -5
  93. package/dist/commands/sync.js.map +1 -1
  94. package/dist/commands/torrent.d.ts.map +1 -1
  95. package/dist/commands/torrent.js +45 -22
  96. package/dist/commands/torrent.js.map +1 -1
  97. package/dist/commands/watch.d.ts.map +1 -1
  98. package/dist/commands/watch.js +198 -7
  99. package/dist/commands/watch.js.map +1 -1
  100. package/dist/lib/activity.d.ts +53 -0
  101. package/dist/lib/activity.d.ts.map +1 -0
  102. package/dist/lib/activity.js +267 -0
  103. package/dist/lib/activity.js.map +1 -0
  104. package/dist/lib/agent-errors.d.ts.map +1 -1
  105. package/dist/lib/agent-errors.js +3 -1
  106. package/dist/lib/agent-errors.js.map +1 -1
  107. package/dist/lib/ast.d.ts.map +1 -1
  108. package/dist/lib/ast.js +66 -19
  109. package/dist/lib/ast.js.map +1 -1
  110. package/dist/lib/colony-subscriber.d.ts +53 -0
  111. package/dist/lib/colony-subscriber.d.ts.map +1 -0
  112. package/dist/lib/colony-subscriber.js +184 -0
  113. package/dist/lib/colony-subscriber.js.map +1 -0
  114. package/dist/lib/config.d.ts +1 -0
  115. package/dist/lib/config.d.ts.map +1 -1
  116. package/dist/lib/config.js +7 -3
  117. package/dist/lib/config.js.map +1 -1
  118. package/dist/lib/crypto.d.ts.map +1 -1
  119. package/dist/lib/crypto.js +7 -3
  120. package/dist/lib/crypto.js.map +1 -1
  121. package/dist/lib/daily-bridge.d.ts +41 -0
  122. package/dist/lib/daily-bridge.d.ts.map +1 -0
  123. package/dist/lib/daily-bridge.js +185 -0
  124. package/dist/lib/daily-bridge.js.map +1 -0
  125. package/dist/lib/github.d.ts +83 -0
  126. package/dist/lib/github.d.ts.map +1 -0
  127. package/dist/lib/github.js +206 -0
  128. package/dist/lib/github.js.map +1 -0
  129. package/dist/lib/repo-scanner.d.ts +36 -0
  130. package/dist/lib/repo-scanner.d.ts.map +1 -0
  131. package/dist/lib/repo-scanner.js +159 -0
  132. package/dist/lib/repo-scanner.js.map +1 -0
  133. package/dist/lib/salvage-analyzer.d.ts +29 -0
  134. package/dist/lib/salvage-analyzer.d.ts.map +1 -0
  135. package/dist/lib/salvage-analyzer.js +122 -0
  136. package/dist/lib/salvage-analyzer.js.map +1 -0
  137. package/dist/lib/security.d.ts +15 -8
  138. package/dist/lib/security.d.ts.map +1 -1
  139. package/dist/lib/security.js +36 -1
  140. package/dist/lib/security.js.map +1 -1
  141. package/dist/lib/symbol-extractor.d.ts +41 -0
  142. package/dist/lib/symbol-extractor.d.ts.map +1 -0
  143. package/dist/lib/symbol-extractor.js +78 -0
  144. package/dist/lib/symbol-extractor.js.map +1 -0
  145. package/dist/storage/adapter.d.ts +1 -1
  146. package/dist/storage/adapter.d.ts.map +1 -1
  147. package/dist/storage/git-messages.d.ts.map +1 -1
  148. package/dist/storage/git-messages.js +57 -53
  149. package/dist/storage/git-messages.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/mycmail-adapter.d.ts.map +1 -1
  155. package/dist/storage/mycmail-adapter.js +11 -6
  156. package/dist/storage/mycmail-adapter.js.map +1 -1
  157. package/dist/storage/supabase.d.ts +21 -1
  158. package/dist/storage/supabase.d.ts.map +1 -1
  159. package/dist/storage/supabase.js +171 -6
  160. package/dist/storage/supabase.js.map +1 -1
  161. package/dist/tui/dashboard.d.ts.map +1 -1
  162. package/dist/tui/dashboard.js +15 -6
  163. package/dist/tui/dashboard.js.map +1 -1
  164. package/dist/types/cloud.d.ts +101 -0
  165. package/dist/types/cloud.d.ts.map +1 -0
  166. package/dist/types/cloud.js +13 -0
  167. package/dist/types/cloud.js.map +1 -0
  168. package/package.json +9 -6
  169. package/dist/commands/sync-all.d.ts +0 -9
  170. package/dist/commands/sync-all.d.ts.map +0 -1
  171. package/dist/commands/sync-all.js +0 -180
  172. package/dist/commands/sync-all.js.map +0 -1
@@ -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":"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"}