spidersan 0.2.5 → 0.3.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 (61) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +40 -23
  3. package/dist/bin/spidersan.d.ts.map +1 -1
  4. package/dist/bin/spidersan.js +10 -3
  5. package/dist/bin/spidersan.js.map +1 -1
  6. package/dist/commands/collab-sync.d.ts.map +1 -1
  7. package/dist/commands/collab-sync.js +44 -20
  8. package/dist/commands/collab-sync.js.map +1 -1
  9. package/dist/commands/conflicts.js.map +1 -1
  10. package/dist/commands/doctor.d.ts.map +1 -1
  11. package/dist/commands/doctor.js +40 -0
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/index.d.ts +4 -0
  14. package/dist/commands/index.d.ts.map +1 -1
  15. package/dist/commands/index.js +6 -0
  16. package/dist/commands/index.js.map +1 -1
  17. package/dist/commands/lock.d.ts.map +1 -1
  18. package/dist/commands/lock.js +47 -10
  19. package/dist/commands/lock.js.map +1 -1
  20. package/dist/commands/monitor.d.ts +3 -0
  21. package/dist/commands/monitor.d.ts.map +1 -0
  22. package/dist/commands/monitor.js +153 -0
  23. package/dist/commands/monitor.js.map +1 -0
  24. package/dist/commands/rescue.d.ts +11 -0
  25. package/dist/commands/rescue.d.ts.map +1 -0
  26. package/dist/commands/rescue.js +90 -0
  27. package/dist/commands/rescue.js.map +1 -0
  28. package/dist/commands/semantic.d.ts +3 -0
  29. package/dist/commands/semantic.d.ts.map +1 -0
  30. package/dist/commands/semantic.js +62 -0
  31. package/dist/commands/semantic.js.map +1 -0
  32. package/dist/commands/stale.d.ts +1 -0
  33. package/dist/commands/stale.d.ts.map +1 -1
  34. package/dist/commands/stale.js +101 -1
  35. package/dist/commands/stale.js.map +1 -1
  36. package/dist/commands/tension.d.ts.map +1 -1
  37. package/dist/commands/tension.js +27 -7
  38. package/dist/commands/tension.js.map +1 -1
  39. package/dist/commands/torrent.d.ts.map +1 -1
  40. package/dist/commands/torrent.js +23 -18
  41. package/dist/commands/torrent.js.map +1 -1
  42. package/dist/commands/who-owns.d.ts +3 -0
  43. package/dist/commands/who-owns.d.ts.map +1 -0
  44. package/dist/commands/who-owns.js +68 -0
  45. package/dist/commands/who-owns.js.map +1 -0
  46. package/dist/commands/who-touched.d.ts.map +1 -1
  47. package/dist/commands/who-touched.js +22 -10
  48. package/dist/commands/who-touched.js.map +1 -1
  49. package/dist/lib/ast.d.ts +20 -40
  50. package/dist/lib/ast.d.ts.map +1 -1
  51. package/dist/lib/ast.js +55 -101
  52. package/dist/lib/ast.js.map +1 -1
  53. package/dist/lib/license.d.ts +0 -1
  54. package/dist/lib/license.d.ts.map +1 -1
  55. package/dist/lib/license.js +2 -5
  56. package/dist/lib/license.js.map +1 -1
  57. package/dist/tui/dashboard.d.ts +35 -0
  58. package/dist/tui/dashboard.d.ts.map +1 -0
  59. package/dist/tui/dashboard.js +190 -0
  60. package/dist/tui/dashboard.js.map +1 -0
  61. package/package.json +5 -5
@@ -0,0 +1,190 @@
1
+ import blessed from 'blessed';
2
+ export class SpidersanDashboard {
3
+ screen;
4
+ headerBox;
5
+ taskList;
6
+ radarBox;
7
+ locksBox; // NEW
8
+ logBox;
9
+ state;
10
+ constructor() {
11
+ this.screen = blessed.screen({
12
+ smartCSR: true,
13
+ title: '🕷️ Spidersan Monitor'
14
+ });
15
+ this.state = {
16
+ connectedAgents: [],
17
+ activeTasks: [],
18
+ activeFiles: new Map(),
19
+ activeLocks: [],
20
+ logs: []
21
+ };
22
+ // --- Layout ---
23
+ // 1. Header (Top)
24
+ this.headerBox = blessed.box({
25
+ top: 0,
26
+ left: 0,
27
+ width: '100%',
28
+ height: 3,
29
+ content: '🕷️ SPIDERSAN MONITOR | initializing...',
30
+ tags: true,
31
+ style: {
32
+ fg: 'white',
33
+ bg: 'blue',
34
+ bold: true
35
+ }
36
+ });
37
+ // 2. Task List (Left Top)
38
+ const taskBox = blessed.box({
39
+ top: 3,
40
+ left: 0,
41
+ width: '50%',
42
+ height: '40%', // Reduced height
43
+ label: ' 📋 ACTIVE TASKS ',
44
+ border: { type: 'line' },
45
+ style: { border: { fg: 'green' } }
46
+ });
47
+ this.taskList = blessed.list({
48
+ parent: taskBox,
49
+ top: 0,
50
+ left: 0,
51
+ width: '100%-2',
52
+ height: '100%-2',
53
+ keys: true,
54
+ mouse: true,
55
+ tags: true,
56
+ style: {
57
+ selected: { bg: 'green', fg: 'black' }
58
+ }
59
+ });
60
+ // 2.5 Locks List (Left Bottom) - NEW
61
+ const locksContainer = blessed.box({
62
+ top: '40%+3',
63
+ left: 0,
64
+ width: '50%',
65
+ height: '30%',
66
+ label: ' 🔒 ACTIVE LOCKS ',
67
+ border: { type: 'line' },
68
+ style: { border: { fg: 'yellow' } }
69
+ });
70
+ this.locksBox = blessed.list({
71
+ parent: locksContainer,
72
+ top: 0,
73
+ left: 0,
74
+ width: '100%-2',
75
+ height: '100%-2',
76
+ tags: true
77
+ });
78
+ // 3. Conflict Radar (Right)
79
+ this.radarBox = blessed.box({
80
+ top: 3,
81
+ left: '50%',
82
+ width: '50%',
83
+ height: '70%',
84
+ label: ' 🕸️ CONFLICT RADAR ',
85
+ border: { type: 'line' },
86
+ tags: true,
87
+ style: { border: { fg: 'red' } }
88
+ });
89
+ // 4. Logs (Bottom)
90
+ const logContainer = blessed.box({
91
+ top: '70%+3',
92
+ left: 0,
93
+ width: '100%',
94
+ height: '30%-3',
95
+ label: ' 📜 SYSTEM LOGS ',
96
+ border: { type: 'line' },
97
+ style: { border: { fg: 'cyan' } }
98
+ });
99
+ this.logBox = blessed.list({
100
+ parent: logContainer,
101
+ top: 0,
102
+ left: 0,
103
+ width: '100%-2',
104
+ height: '100%-2',
105
+ tags: true,
106
+ scrollable: true,
107
+ alwaysScroll: true,
108
+ scrollbar: {
109
+ ch: ' ',
110
+ track: { bg: 'grey' },
111
+ style: { bg: 'cyan' }
112
+ }
113
+ });
114
+ // Append everything
115
+ this.screen.append(this.headerBox);
116
+ this.screen.append(taskBox);
117
+ this.screen.append(locksContainer); // NEW
118
+ this.screen.append(this.radarBox);
119
+ this.screen.append(logContainer);
120
+ // Key bindings
121
+ this.screen.key(['escape', 'q', 'C-c'], () => {
122
+ return process.exit(0);
123
+ });
124
+ }
125
+ render() {
126
+ this.updateHeader();
127
+ this.updateTasks();
128
+ this.updateLocks(); // NEW
129
+ this.updateRadar();
130
+ // Logs are appended incrementally
131
+ this.screen.render();
132
+ }
133
+ updateHeader() {
134
+ const time = new Date().toLocaleTimeString();
135
+ const agents = this.state.connectedAgents.join(', ') || 'Waiting for heartbeats...';
136
+ this.headerBox.setContent(` 🕷️ SPIDERSAN MONITOR | 🕒 ${time}\n` +
137
+ ` 📡 AGENTS: ${agents}`);
138
+ }
139
+ updateLocks() {
140
+ if (this.state.activeLocks.length === 0) {
141
+ this.locksBox.setItems(['(No active locks)']);
142
+ return;
143
+ }
144
+ const items = this.state.activeLocks.map(l => {
145
+ const age = Math.floor((Date.now() - l.time) / 1000 / 60);
146
+ return `🔒 ${l.symbol} ({yellow-fg}${l.agent}{/}) - ${age}m`;
147
+ });
148
+ this.locksBox.setItems(items);
149
+ }
150
+ updateTasks() {
151
+ const items = this.state.activeTasks.map(t => {
152
+ const statusIcon = t.status === 'implementing' ? '⚙️' : '⏳';
153
+ return `${statusIcon} [${t.title}] - ${t.owner}`;
154
+ });
155
+ if (items.length === 0) {
156
+ this.taskList.setItems(['(No active tasks)']);
157
+ }
158
+ else {
159
+ this.taskList.setItems(items);
160
+ }
161
+ }
162
+ updateRadar() {
163
+ // Simple visualization: List conflicting files with red agents
164
+ let content = '';
165
+ if (this.state.activeFiles.size === 0) {
166
+ content = '{center}✨ No active file locks{/center}';
167
+ }
168
+ else {
169
+ this.state.activeFiles.forEach((agents, file) => {
170
+ const isConflict = agents.length > 1;
171
+ const color = isConflict ? '{red-fg}' : '{green-fg}';
172
+ const icon = isConflict ? '🔴' : '🟢';
173
+ content += `${color}${icon} ${file}{/}\n`;
174
+ content += ` └─ 👥 ${agents.join(', ')}\n\n`;
175
+ });
176
+ }
177
+ this.radarBox.setContent(content);
178
+ }
179
+ updateState(updates) {
180
+ this.state = { ...this.state, ...updates };
181
+ this.render();
182
+ }
183
+ addLog(message) {
184
+ const time = new Date().toLocaleTimeString();
185
+ this.logBox.add(`${time} | ${message}`);
186
+ this.logBox.scrollTo(this.logBox.getLines().length); // Scroll to bottom
187
+ this.screen.render();
188
+ }
189
+ }
190
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spidersan",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "Branch coordination for AI coding agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -53,12 +53,12 @@
53
53
  "license": "MIT",
54
54
  "repository": {
55
55
  "type": "git",
56
- "url": "git+https://github.com/treebird7/spidersan-oss.git"
56
+ "url": "git+https://github.com/treebird7/Spidersan.git"
57
57
  },
58
58
  "bugs": {
59
- "url": "https://github.com/treebird7/spidersan-oss/issues"
59
+ "url": "https://github.com/treebird7/Spidersan/issues"
60
60
  },
61
- "homepage": "https://github.com/treebird7/spidersan-oss#readme",
61
+ "homepage": "https://github.com/treebird7/Spidersan#readme",
62
62
  "engines": {
63
63
  "node": ">=18.0.0"
64
64
  },
@@ -87,4 +87,4 @@
87
87
  "typescript": "^5.3.0",
88
88
  "vitest": "^4.0.17"
89
89
  }
90
- }
90
+ }