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.
- package/CHANGELOG.md +21 -0
- package/README.md +40 -23
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +10 -3
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/collab-sync.d.ts.map +1 -1
- package/dist/commands/collab-sync.js +44 -20
- package/dist/commands/collab-sync.js.map +1 -1
- package/dist/commands/conflicts.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +40 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/lock.d.ts.map +1 -1
- package/dist/commands/lock.js +47 -10
- package/dist/commands/lock.js.map +1 -1
- package/dist/commands/monitor.d.ts +3 -0
- package/dist/commands/monitor.d.ts.map +1 -0
- package/dist/commands/monitor.js +153 -0
- package/dist/commands/monitor.js.map +1 -0
- package/dist/commands/rescue.d.ts +11 -0
- package/dist/commands/rescue.d.ts.map +1 -0
- package/dist/commands/rescue.js +90 -0
- package/dist/commands/rescue.js.map +1 -0
- package/dist/commands/semantic.d.ts +3 -0
- package/dist/commands/semantic.d.ts.map +1 -0
- package/dist/commands/semantic.js +62 -0
- package/dist/commands/semantic.js.map +1 -0
- package/dist/commands/stale.d.ts +1 -0
- package/dist/commands/stale.d.ts.map +1 -1
- package/dist/commands/stale.js +101 -1
- package/dist/commands/stale.js.map +1 -1
- package/dist/commands/tension.d.ts.map +1 -1
- package/dist/commands/tension.js +27 -7
- package/dist/commands/tension.js.map +1 -1
- package/dist/commands/torrent.d.ts.map +1 -1
- package/dist/commands/torrent.js +23 -18
- package/dist/commands/torrent.js.map +1 -1
- package/dist/commands/who-owns.d.ts +3 -0
- package/dist/commands/who-owns.d.ts.map +1 -0
- package/dist/commands/who-owns.js +68 -0
- package/dist/commands/who-owns.js.map +1 -0
- package/dist/commands/who-touched.d.ts.map +1 -1
- package/dist/commands/who-touched.js +22 -10
- package/dist/commands/who-touched.js.map +1 -1
- package/dist/lib/ast.d.ts +20 -40
- package/dist/lib/ast.d.ts.map +1 -1
- package/dist/lib/ast.js +55 -101
- package/dist/lib/ast.js.map +1 -1
- package/dist/lib/license.d.ts +0 -1
- package/dist/lib/license.d.ts.map +1 -1
- package/dist/lib/license.js +2 -5
- package/dist/lib/license.js.map +1 -1
- package/dist/tui/dashboard.d.ts +35 -0
- package/dist/tui/dashboard.d.ts.map +1 -0
- package/dist/tui/dashboard.js +190 -0
- package/dist/tui/dashboard.js.map +1 -0
- 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 {
|
|
8
|
+
import { execFileSync } from 'child_process';
|
|
9
9
|
import { existsSync } from 'fs';
|
|
10
10
|
// Security: Input validation
|
|
11
|
-
const VALID_FILE_PATH = /^[
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
140
|
-
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
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
|
-
|
|
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'
|
|
4
|
+
type: 'function' | 'class' | 'method';
|
|
12
5
|
startLine: number;
|
|
13
6
|
endLine: number;
|
|
14
|
-
|
|
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
|
|
15
|
+
* Parse a file and return all defined symbols (functions, classes, methods)
|
|
34
16
|
*/
|
|
35
|
-
|
|
17
|
+
getSymbols(filePath: string): SymbolInfo[];
|
|
36
18
|
/**
|
|
37
|
-
*
|
|
19
|
+
* Compute SHA-256 hash of code content
|
|
38
20
|
*/
|
|
21
|
+
computeHash(content: string): string;
|
|
39
22
|
private extractSymbols;
|
|
40
23
|
/**
|
|
41
|
-
*
|
|
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(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
package/dist/lib/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
16
|
+
* Parse a file and return all defined symbols (functions, classes, methods)
|
|
20
17
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
*
|
|
27
|
+
* Compute SHA-256 hash of code content
|
|
33
28
|
*/
|
|
34
|
-
|
|
29
|
+
computeHash(content) {
|
|
30
|
+
return createHash('sha256').update(content).digest('hex');
|
|
31
|
+
}
|
|
32
|
+
extractSymbols(tree) {
|
|
35
33
|
const symbols = [];
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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(
|
|
56
|
+
visit(tree.rootNode);
|
|
84
57
|
return symbols;
|
|
85
58
|
}
|
|
86
59
|
/**
|
|
87
|
-
*
|
|
60
|
+
* Compare two versions of code and find symbols that differ in content
|
|
88
61
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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:
|
|
107
|
-
symbolType:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
package/dist/lib/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/lib/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/license.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
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"}
|
package/dist/lib/license.js
CHANGED
|
@@ -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
|
-
//
|
|
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:
|
|
20
|
+
maxConcurrentBranches: 5,
|
|
24
21
|
};
|
|
25
22
|
/**
|
|
26
23
|
* Ensure license directory exists
|
package/dist/lib/license.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,2BAA2B;AAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAEtD,2DAA2D;AAC3D,oDAAoD;AACpD,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAE3E,
|
|
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"}
|