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
@@ -5,10 +5,10 @@
5
5
  * Quick forensics for multi-agent coordination.
6
6
  */
7
7
  import { Command } from 'commander';
8
- import { execSync } from 'child_process';
8
+ import { execFileSync } from 'child_process';
9
9
  import { existsSync } from 'fs';
10
10
  // Security: Input validation
11
- const VALID_FILE_PATH = /^[./a-zA-Z0-9][a-zA-Z0-9/_.@-]{0,200}$/;
11
+ const VALID_FILE_PATH = /^[a-zA-Z0-9._/-]+$/;
12
12
  function validateFilePath(path) {
13
13
  if (!VALID_FILE_PATH.test(path)) {
14
14
  throw new Error(`Invalid file path: "${path.slice(0, 50)}..."`);
@@ -80,7 +80,7 @@ function getFileHistory(filePath, limit) {
80
80
  try {
81
81
  // Use %x00 as delimiter for safety
82
82
  const format = '%H%x00%h%x00%an%x00%ae%x00%ai%x00%ar%x00%s';
83
- const output = execSync(`git log -n ${limit} --follow --format="${format}" -- "${filePath}"`, { encoding: 'utf-8', maxBuffer: 1024 * 1024 });
83
+ const output = execFileSync('git', ['log', '-n', `${limit}`, '--follow', `--format=${format}`, '--', filePath], { encoding: 'utf-8', maxBuffer: 1024 * 1024 });
84
84
  const entries = [];
85
85
  const lines = output.trim().split('\n').filter(l => l);
86
86
  for (const line of lines) {
@@ -105,6 +105,22 @@ function getFileHistory(filePath, limit) {
105
105
  throw new Error(`Failed to get git history for "${filePath}"`);
106
106
  }
107
107
  }
108
+ function parseSinceDate(since) {
109
+ try {
110
+ const output = execFileSync('date', ['-d', since, '+%s'], { encoding: 'utf-8' }).trim();
111
+ return parseInt(output, 10);
112
+ }
113
+ catch {
114
+ // GNU date failed; try BSD date format (macOS)
115
+ }
116
+ try {
117
+ const output = execFileSync('date', ['-j', '-f', '%Y-%m-%d', since, '+%s'], { encoding: 'utf-8' }).trim();
118
+ return parseInt(output, 10);
119
+ }
120
+ catch {
121
+ return null;
122
+ }
123
+ }
108
124
  export const whoTouchedCommand = new Command('who-touched')
109
125
  .description('Show who touched a file (git history with agent detection)')
110
126
  .argument('<file>', 'File path to check history for')
@@ -119,7 +135,7 @@ export const whoTouchedCommand = new Command('who-touched')
119
135
  // Check if file exists or is tracked
120
136
  if (!existsSync(safePath)) {
121
137
  try {
122
- execSync(`git ls-files --error-unmatch "${safePath}"`, {
138
+ execFileSync('git', ['ls-files', '--error-unmatch', safePath], {
123
139
  encoding: 'utf-8',
124
140
  stdio: 'pipe'
125
141
  });
@@ -136,17 +152,13 @@ export const whoTouchedCommand = new Command('who-touched')
136
152
  }
137
153
  // Filter by --since
138
154
  if (options.since) {
139
- try {
140
- const sinceDate = execSync(`date -d "${options.since}" +%s 2>/dev/null || date -j -f "%Y-%m-%d" "${options.since}" +%s`, { encoding: 'utf-8' }).trim();
141
- const sinceTimestamp = parseInt(sinceDate, 10);
155
+ const sinceTimestamp = parseSinceDate(options.since);
156
+ if (sinceTimestamp !== null) {
142
157
  entries = entries.filter(e => {
143
158
  const commitDate = new Date(e.date).getTime() / 1000;
144
159
  return commitDate >= sinceTimestamp;
145
160
  });
146
161
  }
147
- catch {
148
- // If date parsing fails, skip the filter
149
- }
150
162
  }
151
163
  // Limit results
152
164
  entries = entries.slice(0, limit);
@@ -1 +1 @@
1
- {"version":3,"file":"who-touched.js","sourceRoot":"","sources":["../../src/commands/who-touched.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"who-touched.js","sourceRoot":"","sources":["../../src/commands/who-touched.ts"],"names":[],"mappings":"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"}
package/dist/lib/ast.d.ts CHANGED
@@ -1,56 +1,36 @@
1
- /**
2
- * Spidersan AST Parser
3
- *
4
- * Semantic conflict detection using Tree-sitter.
5
- * Detects function/class/method-level changes instead of just file-level.
6
- *
7
- * @module ast
8
- */
9
- export interface CodeSymbol {
1
+ import Parser from 'tree-sitter';
2
+ export interface SymbolInfo {
10
3
  name: string;
11
- type: 'function' | 'class' | 'method' | 'variable' | 'interface';
4
+ type: 'function' | 'class' | 'method';
12
5
  startLine: number;
13
6
  endLine: number;
14
- hash: string;
15
- }
16
- export interface FileSymbols {
17
- filePath: string;
18
- symbols: CodeSymbol[];
19
- parseTime: number;
20
- }
21
- export interface CodeSymbolConflict {
22
- symbolName: string;
23
- symbolType: string;
24
- fileA: string;
25
- fileB: string;
26
- hashA: string;
27
- hashB: string;
7
+ content?: string;
8
+ hash?: string;
28
9
  }
29
10
  export declare class ASTParser {
30
11
  private parser;
31
12
  constructor();
13
+ parse(code: string): Parser.Tree;
32
14
  /**
33
- * Parse a TypeScript/JavaScript file and extract symbols
15
+ * Parse a file and return all defined symbols (functions, classes, methods)
34
16
  */
35
- parseCode(code: string, filePath?: string): FileSymbols;
17
+ getSymbols(filePath: string): SymbolInfo[];
36
18
  /**
37
- * Extract all symbols from an AST
19
+ * Compute SHA-256 hash of code content
38
20
  */
21
+ computeHash(content: string): string;
39
22
  private extractSymbols;
40
23
  /**
41
- * Hash symbol content for change detection
42
- */
43
- private hashContent;
44
- /**
45
- * Compare two file versions and find symbol-level conflicts
24
+ * Compare two versions of code and find symbols that differ in content
46
25
  */
47
- findSymbolConflicts(codeA: string, fileA: string, codeB: string, fileB: string): CodeSymbolConflict[];
48
- /**
49
- * Check if a specific symbol was modified between two versions
50
- */
51
- isSymbolModified(codeA: string, codeB: string, symbolName: string): boolean;
26
+ findSymbolConflicts(contentA: string, labelA: string, contentB: string, labelB: string): SymbolConflict[];
27
+ }
28
+ export interface SymbolConflict {
29
+ symbolName: string;
30
+ symbolType: string;
31
+ locations: {
32
+ file: string;
33
+ range: [number, number];
34
+ }[];
52
35
  }
53
- export declare const astParser: ASTParser;
54
- export type Symbol = CodeSymbol;
55
- export type SymbolConflict = CodeSymbolConflict;
56
36
  //# sourceMappingURL=ast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAS;;IAOvB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,WAAW;IAYlE;;OAEG;IACH,OAAO,CAAC,cAAc;IAyDtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,mBAAmB,CACf,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAC5B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC7B,kBAAkB,EAAE;IAwBvB;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;CAW9E;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC;AAGzC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAS;;IAQvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI;IAIhC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAS1C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpC,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,mBAAmB,CACf,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAChC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GACjC,cAAc,EAAE;CA8BtB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;CAC1D"}
package/dist/lib/ast.js CHANGED
@@ -1,134 +1,88 @@
1
- /**
2
- * Spidersan AST Parser
3
- *
4
- * Semantic conflict detection using Tree-sitter.
5
- * Detects function/class/method-level changes instead of just file-level.
6
- *
7
- * @module ast
8
- */
9
1
  import Parser from 'tree-sitter';
10
2
  import TypeScript from 'tree-sitter-typescript';
3
+ import fs from 'fs';
11
4
  import { createHash } from 'crypto';
12
5
  export class ASTParser {
13
6
  parser;
14
7
  constructor() {
15
8
  this.parser = new Parser();
9
+ // TypeScript binding quirk
16
10
  this.parser.setLanguage(TypeScript.typescript);
17
11
  }
12
+ parse(code) {
13
+ return this.parser.parse(code);
14
+ }
18
15
  /**
19
- * Parse a TypeScript/JavaScript file and extract symbols
16
+ * Parse a file and return all defined symbols (functions, classes, methods)
20
17
  */
21
- parseCode(code, filePath = 'unknown') {
22
- const start = Date.now();
23
- const tree = this.parser.parse(code);
24
- const symbols = this.extractSymbols(tree.rootNode, code);
25
- return {
26
- filePath,
27
- symbols,
28
- parseTime: Date.now() - start,
29
- };
18
+ getSymbols(filePath) {
19
+ if (!fs.existsSync(filePath)) {
20
+ return [];
21
+ }
22
+ const code = fs.readFileSync(filePath, 'utf-8');
23
+ const tree = this.parse(code);
24
+ return this.extractSymbols(tree);
30
25
  }
31
26
  /**
32
- * Extract all symbols from an AST
27
+ * Compute SHA-256 hash of code content
33
28
  */
34
- extractSymbols(node, code) {
29
+ computeHash(content) {
30
+ return createHash('sha256').update(content).digest('hex');
31
+ }
32
+ extractSymbols(tree) {
35
33
  const symbols = [];
36
- const visit = (n) => {
37
- let symbolType = null;
38
- let nameNode = null;
39
- switch (n.type) {
40
- case 'function_declaration':
41
- symbolType = 'function';
42
- nameNode = n.childForFieldName('name');
43
- break;
44
- case 'class_declaration':
45
- symbolType = 'class';
46
- nameNode = n.childForFieldName('name');
47
- break;
48
- case 'method_definition':
49
- symbolType = 'method';
50
- nameNode = n.childForFieldName('name');
51
- break;
52
- case 'interface_declaration':
53
- symbolType = 'interface';
54
- nameNode = n.childForFieldName('name');
55
- break;
56
- case 'lexical_declaration':
57
- case 'variable_declaration':
58
- // Only track exported or top-level variables
59
- if (n.parent?.type === 'program' || n.parent?.type === 'export_statement') {
60
- symbolType = 'variable';
61
- const declarator = n.descendantsOfType('variable_declarator')[0];
62
- nameNode = declarator?.childForFieldName('name') || null;
63
- }
64
- break;
65
- }
66
- if (symbolType && nameNode) {
67
- const content = code.slice(n.startIndex, n.endIndex);
68
- symbols.push({
69
- name: nameNode.text,
70
- type: symbolType,
71
- startLine: n.startPosition.row + 1,
72
- endLine: n.endPosition.row + 1,
73
- hash: this.hashContent(content),
74
- });
34
+ const cursor = tree.walk();
35
+ const visit = (node) => {
36
+ if (node.type === 'function_declaration' || node.type === 'class_declaration' || node.type === 'method_definition') {
37
+ const nameNode = node.childForFieldName('name');
38
+ if (nameNode) {
39
+ const content = node.text;
40
+ symbols.push({
41
+ name: nameNode.text,
42
+ type: node.type.replace('_declaration', '').replace('_definition', ''),
43
+ startLine: node.startPosition.row + 1, // 1-indexed for humans
44
+ endLine: node.endPosition.row + 1,
45
+ content: content,
46
+ hash: this.computeHash(content)
47
+ });
48
+ }
75
49
  }
76
- // Recurse into children
77
- for (let i = 0; i < n.childCount; i++) {
78
- const child = n.child(i);
50
+ for (let i = 0; i < node.childCount; i++) {
51
+ const child = node.child(i);
79
52
  if (child)
80
53
  visit(child);
81
54
  }
82
55
  };
83
- visit(node);
56
+ visit(tree.rootNode);
84
57
  return symbols;
85
58
  }
86
59
  /**
87
- * Hash symbol content for change detection
60
+ * Compare two versions of code and find symbols that differ in content
88
61
  */
89
- hashContent(content) {
90
- // Normalize whitespace before hashing
91
- const normalized = content.replace(/\s+/g, ' ').trim();
92
- return createHash('sha256').update(normalized).digest('hex').slice(0, 16);
93
- }
94
- /**
95
- * Compare two file versions and find symbol-level conflicts
96
- */
97
- findSymbolConflicts(codeA, fileA, codeB, fileB) {
98
- const symbolsA = this.parseCode(codeA, fileA);
99
- const symbolsB = this.parseCode(codeB, fileB);
62
+ findSymbolConflicts(contentA, labelA, contentB, labelB) {
63
+ const treeA = this.parse(contentA);
64
+ const treeB = this.parse(contentB);
65
+ const symbolsA = this.extractSymbols(treeA);
66
+ const symbolsB = this.extractSymbols(treeB);
100
67
  const conflicts = [];
101
- const mapA = new Map(symbolsA.symbols.map(s => [s.name, s]));
102
- for (const symB of symbolsB.symbols) {
103
- const symA = mapA.get(symB.name);
104
- if (symA && symA.hash !== symB.hash) {
68
+ // Map for fast lookup
69
+ const mapB = new Map();
70
+ symbolsB.forEach(s => mapB.set(s.name, s));
71
+ for (const symA of symbolsA) {
72
+ const symB = mapB.get(symA.name);
73
+ // If symbol exists in both and content differs
74
+ if (symB && symA.content !== symB.content) {
105
75
  conflicts.push({
106
- symbolName: symB.name,
107
- symbolType: symB.type,
108
- fileA,
109
- fileB,
110
- hashA: symA.hash,
111
- hashB: symB.hash,
76
+ symbolName: symA.name,
77
+ symbolType: symA.type,
78
+ locations: [
79
+ { file: labelA, range: [symA.startLine, symA.endLine] },
80
+ { file: labelB, range: [symB.startLine, symB.endLine] }
81
+ ]
112
82
  });
113
83
  }
114
84
  }
115
85
  return conflicts;
116
86
  }
117
- /**
118
- * Check if a specific symbol was modified between two versions
119
- */
120
- isSymbolModified(codeA, codeB, symbolName) {
121
- const symbolsA = this.parseCode(codeA);
122
- const symbolsB = this.parseCode(codeB);
123
- const symA = symbolsA.symbols.find(s => s.name === symbolName);
124
- const symB = symbolsB.symbols.find(s => s.name === symbolName);
125
- if (!symA && !symB)
126
- return false; // Symbol doesn't exist in either
127
- if (!symA || !symB)
128
- return true; // Symbol added or removed
129
- return symA.hash !== symB.hash; // Symbol modified
130
- }
131
87
  }
132
- // Export singleton for convenience
133
- export const astParser = new ASTParser();
134
88
  //# sourceMappingURL=ast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@
4
4
  * Ed25519-based license verification for Pro features.
5
5
  * Public key is embedded; private key is kept by treebird for signing.
6
6
  */
7
- export declare const EARLY_ADOPTER_END: Date;
8
7
  export declare const FREE_TIER_LIMITS: {
9
8
  maxConcurrentBranches: number;
10
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,eAAO,MAAM,iBAAiB,MAAyB,CAAC;AAGxD,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAGF,MAAM,MAAM,UAAU,GAChB,oBAAoB,GACpB,YAAY,GACZ,qBAAqB,GACrB,WAAW,CAAC;AAElB,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA8BnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,GAAG,IAAI,CAS5C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAM/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAIvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAChC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAqBA;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpD"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAGF,MAAM,MAAM,UAAU,GAChB,oBAAoB,GACpB,YAAY,GACZ,qBAAqB,GACrB,WAAW,CAAC;AAElB,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA8BnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,GAAG,IAAI,CAS5C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAM/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAIvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAChC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAqBA;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpD"}
@@ -15,12 +15,9 @@ const LICENSE_FILE = join(LICENSE_DIR, 'license.key');
15
15
  // Treebird's public key for license verification (Ed25519)
16
16
  // This is the ONLY key that can sign valid licenses
17
17
  const TREEBIRD_PUBLIC_KEY = 'XqIqSlybZGKkKemgLKKl8P9MepnObhcJcxxZHtgG8/o=';
18
- // Early Adopter Period: All features free until Feb 2026!
19
- // After Feb 2026, paywall may be re-enabled.
20
- export const EARLY_ADOPTER_END = new Date('2026-02-28');
21
- // Free tier limits (disabled during early adopter period)
18
+ // Free tier limits
22
19
  export const FREE_TIER_LIMITS = {
23
- maxConcurrentBranches: 999, // Effectively unlimited for early adopters
20
+ maxConcurrentBranches: 5,
24
21
  };
25
22
  /**
26
23
  * Ensure license directory exists
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ interface DashboardState {
2
+ connectedAgents: string[];
3
+ activeTasks: Array<{
4
+ id: string;
5
+ title: string;
6
+ owner: string;
7
+ status: string;
8
+ }>;
9
+ activeFiles: Map<string, string[]>;
10
+ activeLocks: Array<{
11
+ symbol: string;
12
+ agent: string;
13
+ time: number;
14
+ }>;
15
+ logs: string[];
16
+ }
17
+ export declare class SpidersanDashboard {
18
+ private screen;
19
+ private headerBox;
20
+ private taskList;
21
+ private radarBox;
22
+ private locksBox;
23
+ private logBox;
24
+ private state;
25
+ constructor();
26
+ render(): void;
27
+ private updateHeader;
28
+ private updateLocks;
29
+ private updateTasks;
30
+ private updateRadar;
31
+ updateState(updates: Partial<DashboardState>): void;
32
+ addLog(message: string): void;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/dashboard.ts"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,WAAW,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAAiB;;IAkIvB,MAAM;IASb,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAoBZ,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;IAK5C,MAAM,CAAC,OAAO,EAAE,MAAM;CAMhC"}