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,232 +1,182 @@
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 { execFileSync } from 'child_process';
12
13
  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
- }
14
+ import { syncFromColony } from '../lib/colony-subscriber.js';
15
+ import { loadConfig } from '../lib/config.js';
16
+ // Critical files TIER 3 block
17
+ const TIER_3_PATTERNS = [
18
+ /\.env$/,
19
+ /secrets?\./i,
20
+ /credentials/i,
21
+ /password/i,
22
+ /api[_-]?key/i,
23
+ /private[_-]?key/i,
24
+ /\.pem$/,
25
+ /auth\.(ts|js)$/,
26
+ /security\.(ts|js)$/,
27
+ ];
28
+ // Important files — TIER 2 pause
29
+ const TIER_2_PATTERNS = [
30
+ /package\.json$/,
31
+ /package-lock\.json$/,
32
+ /tsconfig\.json$/,
33
+ /CLAUDE\.md$/,
34
+ /\.gitignore$/,
35
+ /server\.(ts|js)$/,
36
+ /index\.(ts|js)$/,
37
+ /config\.(ts|js)$/,
38
+ ];
39
+ function classifyTier(file) {
40
+ for (const p of TIER_3_PATTERNS) {
41
+ if (p.test(file))
42
+ return 3;
43
+ }
44
+ for (const p of TIER_2_PATTERNS) {
45
+ if (p.test(file))
46
+ return 2;
47
+ }
48
+ return 1;
21
49
  }
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() {
50
+ function getCurrentBranch() {
34
51
  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
- }
52
+ return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
53
+ encoding: 'utf-8',
54
+ }).trim();
41
55
  }
42
56
  catch {
43
- // Ignore
57
+ return 'unknown';
44
58
  }
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
59
  }
70
60
  export const pulseCommand = new Command('pulse')
71
- .description("Feel the web's heartbeat - the spider's self-awareness")
61
+ .description('Sync from Colony then show active conflicts (quick health-check)')
72
62
  .option('--json', 'Output as JSON')
73
- .option('-q, --quiet', 'Minimal output')
63
+ .option('--no-sync', 'Skip Colony sync, use local registry only')
74
64
  .action(async (options) => {
75
65
  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
66
+ if (!await storage.isInitialized()) {
67
+ console.error('❌ Spidersan not initialized. Run: spidersan init');
68
+ process.exit(1);
69
+ }
70
+ const config = await loadConfig();
71
+ const highSeverity = (config.conflicts?.highSeverityPatterns || []).map((p) => new RegExp(p));
72
+ const mediumSeverity = (config.conflicts?.mediumSeverityPatterns || []).map((p) => new RegExp(p));
73
+ // ── Colony sync ───────────────────────────────────────────────────────
74
+ let colonySynced = 0;
75
+ let colonyOffline = true;
76
+ if (options.sync !== false) {
77
+ const result = await syncFromColony();
78
+ colonySynced = result.synced;
79
+ colonyOffline = result.offline;
80
+ }
81
+ else {
82
+ console.log('ℹ Colony sync skipped (--no-sync)');
83
+ }
84
+ // ── Local conflict detection ──────────────────────────────────────────
85
+ const currentBranch = getCurrentBranch();
86
+ const allBranches = await storage.list();
87
+ const target = allBranches.find(b => b.name === currentBranch);
88
+ if (!target) {
89
+ if (options.json) {
90
+ console.log(JSON.stringify({ branch: currentBranch, registered: false, conflicts: [], colonySynced, colonyOffline }));
135
91
  }
136
92
  else {
137
- const tracked = relevantBranches.filter(b => registeredNames.has(b)).length;
138
- pulse.completeness.score = Math.round((tracked / relevantBranches.length) * 100);
93
+ console.log(`🕷️ Branch "${currentBranch}" is not registered.`);
94
+ console.log(' Run: spidersan register --files "..."');
95
+ if (!colonyOffline) {
96
+ console.log(` Colony: synced ${colonySynced} claim(s)`);
97
+ }
139
98
  }
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
99
  return;
147
100
  }
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`);
101
+ const targetFilesSet = new Set(target.files);
102
+ const conflicts = [];
103
+ for (const branch of allBranches) {
104
+ if (branch.name === currentBranch || branch.status !== 'active')
105
+ continue;
106
+ const overlapping = branch.files.filter(f => targetFilesSet.has(f));
107
+ if (overlapping.length === 0)
108
+ continue;
109
+ // Determine max tier for this conflict group
110
+ let maxTier = 1;
111
+ for (const file of overlapping) {
112
+ let tier = classifyTier(file);
113
+ // Also apply config-level patterns
114
+ for (const p of highSeverity) {
115
+ if (p.test(file)) {
116
+ tier = 3;
117
+ break;
118
+ }
119
+ }
120
+ if (tier < 3) {
121
+ for (const p of mediumSeverity) {
122
+ if (p.test(file)) {
123
+ tier = Math.max(tier, 2);
124
+ break;
125
+ }
126
+ }
127
+ }
128
+ if (tier > maxTier)
129
+ maxTier = tier;
130
+ }
131
+ conflicts.push({
132
+ branch: branch.name,
133
+ files: overlapping,
134
+ tier: maxTier,
135
+ agent: branch.agent,
136
+ });
137
+ }
138
+ conflicts.sort((a, b) => b.tier - a.tier);
139
+ if (options.json) {
140
+ console.log(JSON.stringify({
141
+ branch: currentBranch,
142
+ registered: true,
143
+ conflicts,
144
+ colonySynced,
145
+ colonyOffline,
146
+ }, null, 2));
152
147
  return;
153
148
  }
154
- // ═══════════════════════════════════════════════════════════
155
- // CEREMONIAL OUTPUT: "The Spider Feels Its Web"
156
- // ═══════════════════════════════════════════════════════════
157
- console.log('');
158
- console.log('🕷️ Spidersan Pulse');
149
+ // ── Human-readable output ─────────────────────────────────────────────
150
+ const colonyStatus = colonyOffline
151
+ ? '⚠ offline'
152
+ : `✅ synced ${colonySynced} claim(s)`;
153
+ console.log(`
154
+ 🕷️ SPIDERSAN PULSE — "${currentBranch}"
155
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
156
+ Colony: ${colonyStatus}
157
+ Branches: ${allBranches.filter(b => b.status === 'active').length} active
158
+ `.trim());
159
159
  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(', ')}`);
160
+ if (conflicts.length === 0) {
161
+ console.log('✅ No conflicts detected. You\'re good to go!');
162
+ return;
184
163
  }
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`);
164
+ const tierIcons = { 1: '🟡', 2: '🟠', 3: '🔴' };
165
+ const tierLabels = { 1: 'WARN', 2: 'PAUSE', 3: 'BLOCK' };
166
+ for (const c of conflicts) {
167
+ const icon = tierIcons[c.tier] ?? '🟡';
168
+ const label = tierLabels[c.tier] ?? 'WARN';
169
+ const agentTag = c.agent ? ` [@${c.agent}]` : '';
170
+ console.log(`${icon} TIER ${c.tier} ${label}: ${c.branch}${agentTag}`);
171
+ for (const f of c.files) {
172
+ console.log(` • ${f}`);
198
173
  }
199
- }
200
- else if (pulse.completeness.score === 100) {
201
- console.log(' ✅ All branches tracked');
202
- }
203
- // Activity
204
- if (pulse.lastActivity.daysSinceActivity !== null) {
205
174
  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
175
  }
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('');
176
+ const t3 = conflicts.filter(c => c.tier === 3).length;
177
+ const t2 = conflicts.filter(c => c.tier === 2).length;
178
+ const t1 = conflicts.filter(c => c.tier === 1).length;
179
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
180
+ console.log(`📊 Summary: 🔴 ${t3} BLOCK | 🟠 ${t2} PAUSE | 🟡 ${t1} WARN`);
231
181
  });
232
182
  //# 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;AAkXpC,eAAO,MAAM,YAAY,SAIY,CAAC"}