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
@@ -1,232 +1,174 @@
1
1
  /**
2
2
  * spidersan pulse
3
3
  *
4
- * The spider's self-awareness command.
5
- * "I have my senses and my sense of having senses" - Robert Wyatt
4
+ * Quick health-check: sync from Colony, then run local conflict detection.
5
+ * Calls syncFromColony() first so that active work_claim signals from other
6
+ * agents are reflected in the registry before conflicts are computed.
7
+ *
8
+ * Offline mode: if Colony is unreachable, prints a warning and continues
9
+ * with existing local registry data — never crashes.
6
10
  */
7
11
  import { Command } from 'commander';
8
- import { execSync } from 'child_process';
9
- import { existsSync, statSync } from 'fs';
10
- import { homedir } from 'os';
11
- import { join } from 'path';
12
+ import { compilePatterns } from '../lib/regex-utils.js';
13
+ import { execFileSync } from 'child_process';
12
14
  import { getStorage } from '../storage/index.js';
13
- function getGitBranches() {
14
- try {
15
- const output = execSync('git branch --format="%(refname:short)"', { encoding: 'utf-8' });
16
- return output.trim().split('\n').filter(Boolean);
17
- }
18
- catch {
19
- return [];
20
- }
15
+ import { syncFromColony } from '../lib/colony-subscriber.js';
16
+ import { loadConfig } from '../lib/config.js';
17
+ // Critical files TIER 3 block
18
+ const TIER_3_PATTERNS = [
19
+ /\.env$/,
20
+ /secrets?\./i,
21
+ /credentials/i,
22
+ /password/i,
23
+ /api[_-]?key/i,
24
+ /private[_-]?key/i,
25
+ /\.pem$/,
26
+ /auth\.(ts|js)$/,
27
+ /security\.(ts|js)$/,
28
+ ];
29
+ // Important files — TIER 2 pause
30
+ const TIER_2_PATTERNS = [
31
+ /package\.json$/,
32
+ /package-lock\.json$/,
33
+ /tsconfig\.json$/,
34
+ /CLAUDE\.md$/,
35
+ /\.gitignore$/,
36
+ /server\.(ts|js)$/,
37
+ /index\.(ts|js)$/,
38
+ /config\.(ts|js)$/,
39
+ ];
40
+ const COMPILED_TIER_3 = compilePatterns(TIER_3_PATTERNS);
41
+ const COMPILED_TIER_2 = compilePatterns(TIER_2_PATTERNS);
42
+ function classifyTier(file, compiledHigh = [], compiledMedium = []) {
43
+ const tier3 = [...COMPILED_TIER_3, ...compiledHigh];
44
+ for (const p of tier3) {
45
+ if (p.test(file))
46
+ return 3;
47
+ }
48
+ const tier2 = [...COMPILED_TIER_2, ...compiledMedium];
49
+ for (const p of tier2) {
50
+ if (p.test(file))
51
+ return 2;
52
+ }
53
+ return 1;
21
54
  }
22
- function getStorageType() {
23
- if (process.env.SUPABASE_URL && process.env.SUPABASE_KEY) {
24
- return 'supabase';
25
- }
26
- const localPath = join(process.cwd(), '.spidersan', 'registry.json');
27
- const globalPath = join(homedir(), '.spidersan', 'registry.json');
28
- if (existsSync(localPath) || existsSync(globalPath)) {
29
- return 'local';
30
- }
31
- return 'unknown';
32
- }
33
- function getStorageSize() {
55
+ function getCurrentBranch() {
34
56
  try {
35
- const localPath = join(process.cwd(), '.spidersan', 'registry.json');
36
- const globalPath = join(homedir(), '.spidersan', 'registry.json');
37
- const path = existsSync(localPath) ? localPath : globalPath;
38
- if (existsSync(path)) {
39
- return statSync(path).size;
40
- }
57
+ return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
58
+ encoding: 'utf-8',
59
+ }).trim();
41
60
  }
42
61
  catch {
43
- // Ignore
62
+ return 'unknown';
44
63
  }
45
- return null;
46
- }
47
- function daysBetween(date1, date2) {
48
- const diffMs = Math.abs(date2.getTime() - date1.getTime());
49
- return Math.floor(diffMs / (1000 * 60 * 60 * 24));
50
- }
51
- function determineHealth(pulse) {
52
- // Dormant: not initialized or no activity
53
- if (!pulse.registry.initialized)
54
- return 'dormant';
55
- if (pulse.registry.activeBranches === 0)
56
- return 'dormant';
57
- // Weak: high stale count or low completeness
58
- if (pulse.registry.staleBranches > pulse.registry.activeBranches)
59
- return 'weak';
60
- if (pulse.completeness.score < 50)
61
- return 'weak';
62
- // Steady: some issues but functional
63
- if (pulse.completeness.score < 80)
64
- return 'steady';
65
- if (pulse.registry.staleBranches > 0)
66
- return 'steady';
67
- // Strong: healthy web
68
- return 'strong';
69
64
  }
70
65
  export const pulseCommand = new Command('pulse')
71
- .description("Feel the web's heartbeat - the spider's self-awareness")
66
+ .description('Sync from Colony then show active conflicts (quick health-check)')
72
67
  .option('--json', 'Output as JSON')
73
- .option('-q, --quiet', 'Minimal output')
68
+ .option('--no-sync', 'Skip Colony sync, use local registry only')
74
69
  .action(async (options) => {
75
70
  const storage = await getStorage();
76
- const now = new Date();
77
- const STALE_DAYS = 7;
78
- const pulse = {
79
- health: 'dormant',
80
- registry: {
81
- initialized: false,
82
- totalBranches: 0,
83
- activeBranches: 0,
84
- staleBranches: 0,
85
- abandonedBranches: 0,
86
- agents: [],
87
- oldestActive: null,
88
- newestActive: null,
89
- },
90
- completeness: {
91
- unregisteredBranches: [],
92
- score: 0,
93
- },
94
- lastActivity: {
95
- lastSync: null,
96
- daysSinceActivity: null,
97
- },
98
- storage: {
99
- type: getStorageType(),
100
- sizeBytes: getStorageSize(),
101
- },
102
- };
103
- // Check if initialized
104
- pulse.registry.initialized = await storage.isInitialized();
105
- if (pulse.registry.initialized) {
106
- const branches = await storage.list();
107
- const gitBranches = new Set(getGitBranches());
108
- // Count by status
109
- const active = branches.filter(b => b.status === 'active');
110
- const stale = active.filter(b => daysBetween(new Date(b.registeredAt), now) > STALE_DAYS);
111
- const abandoned = branches.filter(b => b.status === 'abandoned');
112
- pulse.registry.totalBranches = branches.length;
113
- pulse.registry.activeBranches = active.length;
114
- pulse.registry.staleBranches = stale.length;
115
- pulse.registry.abandonedBranches = abandoned.length;
116
- // Unique agents
117
- const agents = new Set(branches.map(b => b.agent).filter((a) => !!a));
118
- pulse.registry.agents = Array.from(agents);
119
- // Date ranges
120
- if (active.length > 0) {
121
- const dates = active.map(b => new Date(b.registeredAt).getTime());
122
- pulse.registry.oldestActive = new Date(Math.min(...dates));
123
- pulse.registry.newestActive = new Date(Math.max(...dates));
124
- pulse.lastActivity.lastSync = pulse.registry.newestActive;
125
- pulse.lastActivity.daysSinceActivity = daysBetween(pulse.registry.newestActive, now);
126
- }
127
- // Completeness: find git branches not in registry
128
- const registeredNames = new Set(branches.map(b => b.name));
129
- const unregistered = Array.from(gitBranches).filter(b => !registeredNames.has(b) && b !== 'main' && b !== 'master');
130
- pulse.completeness.unregisteredBranches = unregistered;
131
- // Calculate completeness score
132
- const relevantBranches = Array.from(gitBranches).filter(b => b !== 'main' && b !== 'master');
133
- if (relevantBranches.length === 0) {
134
- pulse.completeness.score = 100; // No branches to track
71
+ if (!await storage.isInitialized()) {
72
+ console.error('❌ Spidersan not initialized. Run: spidersan init');
73
+ process.exit(1);
74
+ }
75
+ const config = await loadConfig();
76
+ const highSeverity = (config.conflicts?.highSeverityPatterns || []).map((p) => new RegExp(p));
77
+ const mediumSeverity = (config.conflicts?.mediumSeverityPatterns || []).map((p) => new RegExp(p));
78
+ const compiledHigh = compilePatterns(highSeverity);
79
+ const compiledMedium = compilePatterns(mediumSeverity);
80
+ // ── Colony sync ───────────────────────────────────────────────────────
81
+ let colonySynced = 0;
82
+ let colonyOffline = true;
83
+ if (options.sync !== false) {
84
+ const result = await syncFromColony();
85
+ colonySynced = result.synced;
86
+ colonyOffline = result.offline;
87
+ }
88
+ else {
89
+ console.log('ℹ Colony sync skipped (--no-sync)');
90
+ }
91
+ // ── Local conflict detection ──────────────────────────────────────────
92
+ const currentBranch = getCurrentBranch();
93
+ const allBranches = await storage.list();
94
+ const target = allBranches.find(b => b.name === currentBranch);
95
+ if (!target) {
96
+ if (options.json) {
97
+ console.log(JSON.stringify({ branch: currentBranch, registered: false, conflicts: [], colonySynced, colonyOffline }));
135
98
  }
136
99
  else {
137
- const tracked = relevantBranches.filter(b => registeredNames.has(b)).length;
138
- pulse.completeness.score = Math.round((tracked / relevantBranches.length) * 100);
100
+ console.log(`🕷️ Branch "${currentBranch}" is not registered.`);
101
+ console.log(' Run: spidersan register --files "..."');
102
+ if (!colonyOffline) {
103
+ console.log(` Colony: synced ${colonySynced} claim(s)`);
104
+ }
139
105
  }
140
- }
141
- // Determine overall health
142
- pulse.health = determineHealth(pulse);
143
- // JSON output
144
- if (options.json) {
145
- console.log(JSON.stringify(pulse, null, 2));
146
106
  return;
147
107
  }
148
- // Quiet output
149
- if (options.quiet) {
150
- const healthEmoji = { strong: '💚', steady: '💛', weak: '🧡', dormant: '💤' };
151
- console.log(`${healthEmoji[pulse.health]} ${pulse.health} | ${pulse.registry.activeBranches} active | ${pulse.completeness.score}% tracked`);
108
+ const targetFilesSet = new Set(target.files);
109
+ const conflicts = [];
110
+ for (const branch of allBranches) {
111
+ if (branch.name === currentBranch || branch.status !== 'active')
112
+ continue;
113
+ const overlapping = branch.files.filter(f => targetFilesSet.has(f));
114
+ if (overlapping.length === 0)
115
+ continue;
116
+ // Determine max tier for this conflict group
117
+ let maxTier = 1;
118
+ for (const file of overlapping) {
119
+ const tier = classifyTier(file, compiledHigh, compiledMedium);
120
+ if (tier > maxTier)
121
+ maxTier = tier;
122
+ }
123
+ conflicts.push({
124
+ branch: branch.name,
125
+ files: overlapping,
126
+ tier: maxTier,
127
+ agent: branch.agent,
128
+ });
129
+ }
130
+ conflicts.sort((a, b) => b.tier - a.tier);
131
+ if (options.json) {
132
+ console.log(JSON.stringify({
133
+ branch: currentBranch,
134
+ registered: true,
135
+ conflicts,
136
+ colonySynced,
137
+ colonyOffline,
138
+ }, null, 2));
152
139
  return;
153
140
  }
154
- // ═══════════════════════════════════════════════════════════
155
- // CEREMONIAL OUTPUT: "The Spider Feels Its Web"
156
- // ═══════════════════════════════════════════════════════════
157
- console.log('');
158
- console.log('🕷️ Spidersan Pulse');
141
+ // ── Human-readable output ─────────────────────────────────────────────
142
+ const colonyStatus = colonyOffline
143
+ ? '⚠ offline'
144
+ : `✅ synced ${colonySynced} claim(s)`;
145
+ console.log(`
146
+ 🕷️ SPIDERSAN PULSE — "${currentBranch}"
147
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
148
+ Colony: ${colonyStatus}
149
+ Branches: ${allBranches.filter(b => b.status === 'active').length} active
150
+ `.trim());
159
151
  console.log('');
160
- // Health indicator
161
- const healthDisplay = {
162
- strong: ['💚', 'STRONG', 'The web holds firm.'],
163
- steady: ['💛', 'STEADY', 'The web is functional.'],
164
- weak: ['🧡', 'WEAK', 'The web needs attention.'],
165
- dormant: ['💤', 'DORMANT', 'The spider sleeps...'],
166
- };
167
- const [emoji, label, tagline] = healthDisplay[pulse.health];
168
- console.log(' ╭─────────────────────────────────────╮');
169
- console.log(` │ ${emoji} Web Health: ${label.padEnd(23)} │`);
170
- console.log(' ╰─────────────────────────────────────╯');
171
- console.log(` "${tagline}"`);
172
- console.log('');
173
- // Registry overview
174
- console.log(' 📊 Registry:');
175
- console.log(` • ${pulse.registry.activeBranches} active thread${pulse.registry.activeBranches !== 1 ? 's' : ''}`);
176
- if (pulse.registry.staleBranches > 0) {
177
- console.log(` • ${pulse.registry.staleBranches} stale (older than ${STALE_DAYS} days)`);
178
- }
179
- if (pulse.registry.abandonedBranches > 0) {
180
- console.log(` • ${pulse.registry.abandonedBranches} abandoned`);
181
- }
182
- if (pulse.registry.agents.length > 0) {
183
- console.log(` • Agents: ${pulse.registry.agents.join(', ')}`);
152
+ if (conflicts.length === 0) {
153
+ console.log('✅ No conflicts detected. You\'re good to go!');
154
+ return;
184
155
  }
185
- // Completeness
186
- console.log('');
187
- console.log(' 🎯 Completeness:');
188
- const scoreBar = '█'.repeat(Math.floor(pulse.completeness.score / 10)) +
189
- '░'.repeat(10 - Math.floor(pulse.completeness.score / 10));
190
- console.log(` [${scoreBar}] ${pulse.completeness.score}%`);
191
- if (pulse.completeness.unregisteredBranches.length > 0) {
192
- console.log(' ⚠️ Untracked branches:');
193
- for (const branch of pulse.completeness.unregisteredBranches.slice(0, 3)) {
194
- console.log(` └─ ${branch}`);
195
- }
196
- if (pulse.completeness.unregisteredBranches.length > 3) {
197
- console.log(` └─ +${pulse.completeness.unregisteredBranches.length - 3} more`);
156
+ const tierIcons = { 1: '🟡', 2: '🟠', 3: '🔴' };
157
+ const tierLabels = { 1: 'WARN', 2: 'PAUSE', 3: 'BLOCK' };
158
+ for (const c of conflicts) {
159
+ const icon = tierIcons[c.tier] ?? '🟡';
160
+ const label = tierLabels[c.tier] ?? 'WARN';
161
+ const agentTag = c.agent ? ` [@${c.agent}]` : '';
162
+ console.log(`${icon} TIER ${c.tier} ${label}: ${c.branch}${agentTag}`);
163
+ for (const f of c.files) {
164
+ console.log(` • ${f}`);
198
165
  }
199
- }
200
- else if (pulse.completeness.score === 100) {
201
- console.log(' ✅ All branches tracked');
202
- }
203
- // Activity
204
- if (pulse.lastActivity.daysSinceActivity !== null) {
205
166
  console.log('');
206
- console.log(' ⏱️ Activity:');
207
- if (pulse.lastActivity.daysSinceActivity === 0) {
208
- console.log(' • Last activity: today');
209
- }
210
- else if (pulse.lastActivity.daysSinceActivity === 1) {
211
- console.log(' • Last activity: yesterday');
212
- }
213
- else {
214
- console.log(` • Last activity: ${pulse.lastActivity.daysSinceActivity} days ago`);
215
- }
216
167
  }
217
- // Storage info
218
- console.log('');
219
- console.log(' 💾 Storage:');
220
- console.log(` • Type: ${pulse.storage.type}`);
221
- if (pulse.storage.sizeBytes !== null) {
222
- const kb = (pulse.storage.sizeBytes / 1024).toFixed(1);
223
- console.log(` • Size: ${kb} KB`);
224
- }
225
- // Wyatt's question
226
- console.log('');
227
- console.log(' ╭─────────────────────────────────────╮');
228
- console.log(' │ "Do I guide them? Or they me?" │');
229
- console.log(' ╰─────────────────────────────────────╯');
230
- console.log('');
168
+ const t3 = conflicts.filter(c => c.tier === 3).length;
169
+ const t2 = conflicts.filter(c => c.tier === 2).length;
170
+ const t1 = conflicts.filter(c => c.tier === 1).length;
171
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
172
+ console.log(`📊 Summary: 🔴 ${t3} BLOCK | 🟠 ${t2} PAUSE | 🟡 ${t1} WARN`);
231
173
  });
232
174
  //# sourceMappingURL=pulse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pulse.js","sourceRoot":"","sources":["../../src/commands/pulse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pulse.js","sourceRoot":"","sources":["../../src/commands/pulse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * spidersan queen
3
+ *
4
+ * Mode 3: Queen Spider — sub-spidersan dispatch for parallel ground jobs.
5
+ *
6
+ * The queen never does ground work. It spawns scoped, ephemeral sub-spidersans,
7
+ * watches them via the colony gradient, and integrates results. Each sub fires,
8
+ * completes its single job, and dissolves back into the colony.
9
+ *
10
+ * Subcommands:
11
+ * spawn — define a ground job, emit colony assignment, print launch script
12
+ * status — show active sub-spidersans spawned by this queen signal
13
+ * dissolve — manually close a stuck sub-spidersan
14
+ *
15
+ * Colony shape:
16
+ * Queen emits a signal (status=in-progress, type=work_claim, task="queen dispatch")
17
+ * Each sub emits a signal with payload.spawned_by = queen_signal_id
18
+ * Sub closes via colony_close on completion (fire-complete-dissolve)
19
+ *
20
+ * Note: Actual claude spawning (via nanoclaw/INFRA-A) is stubbed until Phase 0
21
+ * is proven. spawn prints the launch script — execution is manual or via birdsan.
22
+ */
23
+ import { Command } from 'commander';
24
+ export declare const queenCommand: Command;
25
+ //# sourceMappingURL=queen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queen.d.ts","sourceRoot":"","sources":["../../src/commands/queen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiYpC,eAAO,MAAM,YAAY,SAIY,CAAC"}