spidersan 0.4.5 → 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.
- package/CHANGELOG.md +59 -0
- package/README.md +58 -5
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +12 -1
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/abandon.d.ts.map +1 -1
- package/dist/commands/abandon.js +4 -2
- package/dist/commands/abandon.js.map +1 -1
- package/dist/commands/auto.js +6 -6
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +3 -8
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/conflicts.d.ts.map +1 -1
- package/dist/commands/conflicts.js +200 -15
- package/dist/commands/conflicts.js.map +1 -1
- package/dist/commands/cross-conflicts.d.ts +17 -0
- package/dist/commands/cross-conflicts.d.ts.map +1 -0
- package/dist/commands/cross-conflicts.js +305 -0
- package/dist/commands/cross-conflicts.js.map +1 -0
- package/dist/commands/daily.d.ts +7 -0
- package/dist/commands/daily.d.ts.map +1 -0
- package/dist/commands/daily.js +171 -0
- package/dist/commands/daily.js.map +1 -0
- package/dist/commands/dashboard.d.ts +22 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +401 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/depends.js +2 -2
- package/dist/commands/depends.js.map +1 -1
- package/dist/commands/doctor.d.ts +22 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +215 -14
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/github-sync.d.ts +9 -0
- package/dist/commands/github-sync.d.ts.map +1 -0
- package/dist/commands/github-sync.js +180 -0
- package/dist/commands/github-sync.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +16 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/log.d.ts +3 -4
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +102 -87
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/merge-order.js +8 -1
- package/dist/commands/merge-order.js.map +1 -1
- package/dist/commands/merged.d.ts.map +1 -1
- package/dist/commands/merged.js +4 -2
- package/dist/commands/merged.js.map +1 -1
- package/dist/commands/pulse.d.ts +6 -2
- package/dist/commands/pulse.d.ts.map +1 -1
- package/dist/commands/pulse.js +152 -202
- package/dist/commands/pulse.js.map +1 -1
- package/dist/commands/queen.d.ts +25 -0
- package/dist/commands/queen.d.ts.map +1 -0
- package/dist/commands/queen.js +309 -0
- package/dist/commands/queen.js.map +1 -0
- package/dist/commands/ready-check.d.ts.map +1 -1
- package/dist/commands/ready-check.js +42 -27
- package/dist/commands/ready-check.js.map +1 -1
- package/dist/commands/rebase-helper.d.ts.map +1 -1
- package/dist/commands/rebase-helper.js +13 -5
- package/dist/commands/rebase-helper.js.map +1 -1
- package/dist/commands/register.d.ts +1 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +46 -19
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/registry-sync.d.ts +9 -0
- package/dist/commands/registry-sync.d.ts.map +1 -0
- package/dist/commands/registry-sync.js +163 -0
- package/dist/commands/registry-sync.js.map +1 -0
- package/dist/commands/rescue.d.ts.map +1 -1
- package/dist/commands/rescue.js +42 -6
- package/dist/commands/rescue.js.map +1 -1
- package/dist/commands/stale.d.ts +16 -0
- package/dist/commands/stale.d.ts.map +1 -1
- package/dist/commands/stale.js +55 -21
- package/dist/commands/stale.js.map +1 -1
- package/dist/commands/sync-advisor.d.ts +14 -0
- package/dist/commands/sync-advisor.d.ts.map +1 -0
- package/dist/commands/sync-advisor.js +110 -0
- package/dist/commands/sync-advisor.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +16 -5
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/torrent.d.ts.map +1 -1
- package/dist/commands/torrent.js +16 -14
- package/dist/commands/torrent.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +197 -6
- package/dist/commands/watch.js.map +1 -1
- package/dist/lib/activity.d.ts +53 -0
- package/dist/lib/activity.d.ts.map +1 -0
- package/dist/lib/activity.js +267 -0
- package/dist/lib/activity.js.map +1 -0
- package/dist/lib/agent-errors.d.ts.map +1 -1
- package/dist/lib/agent-errors.js +3 -1
- package/dist/lib/agent-errors.js.map +1 -1
- package/dist/lib/ast.d.ts.map +1 -1
- package/dist/lib/ast.js +66 -19
- package/dist/lib/ast.js.map +1 -1
- package/dist/lib/colony-subscriber.d.ts +53 -0
- package/dist/lib/colony-subscriber.d.ts.map +1 -0
- package/dist/lib/colony-subscriber.js +184 -0
- package/dist/lib/colony-subscriber.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/crypto.d.ts.map +1 -1
- package/dist/lib/crypto.js +7 -3
- package/dist/lib/crypto.js.map +1 -1
- package/dist/lib/daily-bridge.d.ts +41 -0
- package/dist/lib/daily-bridge.d.ts.map +1 -0
- package/dist/lib/daily-bridge.js +185 -0
- package/dist/lib/daily-bridge.js.map +1 -0
- package/dist/lib/github.d.ts +83 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +206 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/repo-scanner.d.ts +36 -0
- package/dist/lib/repo-scanner.d.ts.map +1 -0
- package/dist/lib/repo-scanner.js +159 -0
- package/dist/lib/repo-scanner.js.map +1 -0
- package/dist/lib/salvage-analyzer.d.ts +29 -0
- package/dist/lib/salvage-analyzer.d.ts.map +1 -0
- package/dist/lib/salvage-analyzer.js +122 -0
- package/dist/lib/salvage-analyzer.js.map +1 -0
- package/dist/lib/security.d.ts +5 -0
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +10 -0
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/symbol-extractor.d.ts +41 -0
- package/dist/lib/symbol-extractor.d.ts.map +1 -0
- package/dist/lib/symbol-extractor.js +78 -0
- package/dist/lib/symbol-extractor.js.map +1 -0
- package/dist/storage/adapter.d.ts +1 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/git-messages.d.ts.map +1 -1
- package/dist/storage/git-messages.js +2 -0
- package/dist/storage/git-messages.js.map +1 -1
- package/dist/storage/local.d.ts +1 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +7 -5
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/mycmail-adapter.d.ts.map +1 -1
- package/dist/storage/mycmail-adapter.js +11 -6
- package/dist/storage/mycmail-adapter.js.map +1 -1
- package/dist/storage/supabase.d.ts +21 -1
- package/dist/storage/supabase.d.ts.map +1 -1
- package/dist/storage/supabase.js +171 -6
- package/dist/storage/supabase.js.map +1 -1
- package/dist/tui/dashboard.d.ts.map +1 -1
- package/dist/tui/dashboard.js +15 -6
- package/dist/tui/dashboard.js.map +1 -1
- package/dist/types/cloud.d.ts +101 -0
- package/dist/types/cloud.d.ts.map +1 -0
- package/dist/types/cloud.js +13 -0
- package/dist/types/cloud.js.map +1 -0
- package/package.json +6 -5
- package/dist/commands/sync-all.d.ts +0 -9
- package/dist/commands/sync-all.d.ts.map +0 -1
- package/dist/commands/sync-all.js +0 -180
- package/dist/commands/sync-all.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spidersan sync-advisor
|
|
3
|
+
*
|
|
4
|
+
* Scan all repos and recommend push/pull/cleanup actions.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* spidersan sync-advisor
|
|
8
|
+
* spidersan sync-advisor --dir ~/Dev
|
|
9
|
+
* spidersan sync-advisor --repo /path/to/repo
|
|
10
|
+
* spidersan sync-advisor --json
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
export declare function syncAdvisorCommand(): Command;
|
|
14
|
+
//# sourceMappingURL=sync-advisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-advisor.d.ts","sourceRoot":"","sources":["../../src/commands/sync-advisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqC5C"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spidersan sync-advisor
|
|
3
|
+
*
|
|
4
|
+
* Scan all repos and recommend push/pull/cleanup actions.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* spidersan sync-advisor
|
|
8
|
+
* spidersan sync-advisor --dir ~/Dev
|
|
9
|
+
* spidersan sync-advisor --repo /path/to/repo
|
|
10
|
+
* spidersan sync-advisor --json
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
import { join } from 'path';
|
|
15
|
+
import { scanAllRepos, scanRepo, generateRecommendations } from '../lib/repo-scanner.js';
|
|
16
|
+
const ICON = {
|
|
17
|
+
push: '🔴',
|
|
18
|
+
pull: '🟠',
|
|
19
|
+
rebase: '🟡',
|
|
20
|
+
conflict: '⚪',
|
|
21
|
+
'up-to-date': '✅',
|
|
22
|
+
};
|
|
23
|
+
const ACTION_LABEL = {
|
|
24
|
+
push: 'PUSH',
|
|
25
|
+
pull: 'PULL',
|
|
26
|
+
rebase: 'REBASE',
|
|
27
|
+
conflict: 'DIRTY',
|
|
28
|
+
'up-to-date': 'OK',
|
|
29
|
+
};
|
|
30
|
+
function expandPath(p) {
|
|
31
|
+
return p.startsWith('~') ? join(homedir(), p.slice(1)) : p;
|
|
32
|
+
}
|
|
33
|
+
function formatRow(rec) {
|
|
34
|
+
const icon = ICON[rec.action] || '❓';
|
|
35
|
+
const action = ACTION_LABEL[rec.action] || rec.action.toUpperCase();
|
|
36
|
+
return `${icon} ${rec.repo_name.padEnd(20)} ${rec.branch_name.padEnd(25)} ${action.padEnd(8)} ${rec.reason}`;
|
|
37
|
+
}
|
|
38
|
+
function groupByAction(recs) {
|
|
39
|
+
const groups = {
|
|
40
|
+
push: [], pull: [], rebase: [], conflict: [], 'up-to-date': [],
|
|
41
|
+
};
|
|
42
|
+
for (const rec of recs) {
|
|
43
|
+
(groups[rec.action] ??= []).push(rec);
|
|
44
|
+
}
|
|
45
|
+
return groups;
|
|
46
|
+
}
|
|
47
|
+
function formatTable(recs) {
|
|
48
|
+
const g = groupByAction(recs);
|
|
49
|
+
const lines = [];
|
|
50
|
+
const sections = [
|
|
51
|
+
['push', '🔴 PUSH NEEDED'],
|
|
52
|
+
['pull', '🟠 PULL NEEDED'],
|
|
53
|
+
['rebase', '🟡 REBASE NEEDED'],
|
|
54
|
+
['conflict', '⚪ DIRTY ONLY'],
|
|
55
|
+
];
|
|
56
|
+
for (const [key, label] of sections) {
|
|
57
|
+
if (g[key].length > 0) {
|
|
58
|
+
lines.push('', `${label} (${g[key].length}):`);
|
|
59
|
+
for (const rec of g[key])
|
|
60
|
+
lines.push(` ${formatRow(rec)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (g['up-to-date'].length > 0) {
|
|
64
|
+
lines.push('', `✅ SYNCED (${g['up-to-date'].length}):`);
|
|
65
|
+
lines.push(` ${g['up-to-date'].map(r => r.repo_name).join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
lines.push('', `Summary: ${g.push.length} push, ${g.pull.length} pull, ` +
|
|
68
|
+
`${g.rebase.length} rebase, ${g.conflict.length} dirty, ${g['up-to-date'].length} clean`);
|
|
69
|
+
return lines.join('\n');
|
|
70
|
+
}
|
|
71
|
+
export function syncAdvisorCommand() {
|
|
72
|
+
return new Command('sync-advisor')
|
|
73
|
+
.description('Scan repositories and recommend push/pull/cleanup actions')
|
|
74
|
+
.option('--dir <path>', 'Base directory to scan (default: ~/Dev)', join(homedir(), 'Dev'))
|
|
75
|
+
.option('--repo <path>', 'Scan a single repository')
|
|
76
|
+
.option('--json', 'Output as JSON')
|
|
77
|
+
.action(async (options) => {
|
|
78
|
+
try {
|
|
79
|
+
const dir = expandPath(options.dir);
|
|
80
|
+
let recommendations = [];
|
|
81
|
+
if (options.repo) {
|
|
82
|
+
const repoPath = expandPath(options.repo);
|
|
83
|
+
const state = scanRepo(repoPath);
|
|
84
|
+
if (!state) {
|
|
85
|
+
console.error(`❌ Not a git repository: ${repoPath}`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
recommendations = generateRecommendations([state]);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(`\n🕷️ Sync Advisor — scanning ${dir}`);
|
|
92
|
+
const states = scanAllRepos(dir);
|
|
93
|
+
recommendations = generateRecommendations(states);
|
|
94
|
+
console.log(`Found ${states.length} repositories\n`);
|
|
95
|
+
}
|
|
96
|
+
if (options.json) {
|
|
97
|
+
console.log(JSON.stringify(recommendations, null, 2));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.log(formatTable(recommendations));
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=sync-advisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-advisor.js","sourceRoot":"","sources":["../../src/commands/sync-advisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,WAAW,SAsClB,CAAC"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -4,16 +4,25 @@
|
|
|
4
4
|
* Sync local registry with git state.
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
|
-
import {
|
|
7
|
+
import { execFileSync } from 'child_process';
|
|
8
8
|
import { getStorage } from '../storage/index.js';
|
|
9
|
+
import { logActivity } from '../lib/activity.js';
|
|
9
10
|
function getGitBranches() {
|
|
11
|
+
const branches = new Set();
|
|
10
12
|
try {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
+
const local = execFileSync('git', ['branch', '--format=%(refname:short)'], { encoding: 'utf-8' });
|
|
14
|
+
local.trim().split('\n').filter(Boolean).forEach(b => branches.add(b));
|
|
13
15
|
}
|
|
14
|
-
catch {
|
|
15
|
-
|
|
16
|
+
catch { /* no local branches */ }
|
|
17
|
+
try {
|
|
18
|
+
const remote = execFileSync('git', ['branch', '-r', '--format=%(refname:short)'], { encoding: 'utf-8' });
|
|
19
|
+
remote.trim().split('\n').filter(Boolean)
|
|
20
|
+
.map(b => b.replace(/^origin\//, ''))
|
|
21
|
+
.filter(b => b !== 'HEAD')
|
|
22
|
+
.forEach(b => branches.add(b));
|
|
16
23
|
}
|
|
24
|
+
catch { /* no remote branches */ }
|
|
25
|
+
return Array.from(branches);
|
|
17
26
|
}
|
|
18
27
|
export const syncCommand = new Command('sync')
|
|
19
28
|
.description('Sync registry with actual git branches')
|
|
@@ -30,6 +39,7 @@ export const syncCommand = new Command('sync')
|
|
|
30
39
|
const orphaned = registeredBranches.filter(b => !gitBranches.has(b.name));
|
|
31
40
|
if (orphaned.length === 0) {
|
|
32
41
|
console.log('🕷️ Registry is in sync with git.');
|
|
42
|
+
logActivity({ event: 'sync', details: { orphaned: 0, action: 'clean' } });
|
|
33
43
|
return;
|
|
34
44
|
}
|
|
35
45
|
console.log(`🕷️ Found ${orphaned.length} orphaned branch(es):\n`);
|
|
@@ -40,6 +50,7 @@ export const syncCommand = new Command('sync')
|
|
|
40
50
|
else {
|
|
41
51
|
await storage.unregister(branch.name);
|
|
42
52
|
console.log(` 🗑️ Removed: ${branch.name}`);
|
|
53
|
+
logActivity({ event: 'sync', branch: branch.name, details: { action: 'removed_orphan' } });
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
if (!options.dryRun) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"torrent.d.ts","sourceRoot":"","sources":["../../src/commands/torrent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"torrent.d.ts","sourceRoot":"","sources":["../../src/commands/torrent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2EpC,eAAO,MAAM,cAAc,SACyD,CAAC"}
|
package/dist/commands/torrent.js
CHANGED
|
@@ -10,14 +10,6 @@ import { getStorage } from '../storage/index.js';
|
|
|
10
10
|
import { validateBranchName, validateTaskId } from '../lib/security.js';
|
|
11
11
|
// Config
|
|
12
12
|
const HUB_URL = process.env.HUB_URL || 'https://hub.treebird.uk';
|
|
13
|
-
function getCurrentBranch() {
|
|
14
|
-
try {
|
|
15
|
-
return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf-8' }).trim();
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
throw new Error('Not in a git repository');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
13
|
function createBranchForTask(taskId) {
|
|
22
14
|
const safeTaskId = validateTaskId(taskId);
|
|
23
15
|
const branchName = validateBranchName(`task/${safeTaskId}`);
|
|
@@ -50,12 +42,14 @@ async function checkForConflicts(branchName) {
|
|
|
50
42
|
if (!currentBranch)
|
|
51
43
|
return [];
|
|
52
44
|
const conflicts = [];
|
|
45
|
+
// Performance Optimization: Convert current branch files to Set for O(1) lookup
|
|
46
|
+
const currentFilesSet = new Set(currentBranch.files);
|
|
53
47
|
for (const other of branches) {
|
|
54
48
|
if (other.name === branchName || other.status !== 'active')
|
|
55
49
|
continue;
|
|
56
50
|
if (!other.name.startsWith('task/'))
|
|
57
51
|
continue; // Only check other task branches
|
|
58
|
-
const overlap =
|
|
52
|
+
const overlap = other.files.filter(f => currentFilesSet.has(f));
|
|
59
53
|
if (overlap.length > 0) {
|
|
60
54
|
conflicts.push({ branch: other.name, files: overlap });
|
|
61
55
|
}
|
|
@@ -82,7 +76,8 @@ torrentCommand
|
|
|
82
76
|
safeTaskId = validateTaskId(taskId);
|
|
83
77
|
}
|
|
84
78
|
catch (error) {
|
|
85
|
-
|
|
79
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
80
|
+
console.error(`❌ ${errorMsg}`);
|
|
86
81
|
process.exit(1);
|
|
87
82
|
}
|
|
88
83
|
const branchName = `task/${safeTaskId}`;
|
|
@@ -214,7 +209,8 @@ torrentCommand
|
|
|
214
209
|
safeTaskId = validateTaskId(taskId);
|
|
215
210
|
}
|
|
216
211
|
catch (error) {
|
|
217
|
-
|
|
212
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
213
|
+
console.error(`❌ ${errorMsg}`);
|
|
218
214
|
process.exit(1);
|
|
219
215
|
}
|
|
220
216
|
const branchName = `task/${safeTaskId}`;
|
|
@@ -281,12 +277,18 @@ torrentCommand
|
|
|
281
277
|
}
|
|
282
278
|
// Build conflict graph
|
|
283
279
|
const conflictGraph = new Map();
|
|
280
|
+
// Performance Optimization: Convert branch files to Sets once
|
|
281
|
+
const branchFilesSets = new Map();
|
|
282
|
+
for (const branch of taskBranches) {
|
|
283
|
+
branchFilesSets.set(branch.name, new Set(branch.files));
|
|
284
|
+
}
|
|
284
285
|
for (const branch of taskBranches) {
|
|
285
286
|
const conflicts = [];
|
|
287
|
+
const filesSet = branchFilesSets.get(branch.name);
|
|
286
288
|
for (const other of taskBranches) {
|
|
287
289
|
if (branch.name === other.name)
|
|
288
290
|
continue;
|
|
289
|
-
const overlap =
|
|
291
|
+
const overlap = other.files.some(f => filesSet.has(f));
|
|
290
292
|
if (overlap)
|
|
291
293
|
conflicts.push(other.name);
|
|
292
294
|
}
|
|
@@ -416,14 +418,14 @@ torrentCommand
|
|
|
416
418
|
.action(async (parentId, options) => {
|
|
417
419
|
const storage = await getStorage();
|
|
418
420
|
const count = parseInt(options.count || '3', 10);
|
|
419
|
-
const agent = options.agent || process.env.SPIDERSAN_AGENT || 'unknown';
|
|
420
421
|
const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
421
422
|
let safeParentId;
|
|
422
423
|
try {
|
|
423
424
|
safeParentId = validateTaskId(parentId);
|
|
424
425
|
}
|
|
425
426
|
catch (error) {
|
|
426
|
-
|
|
427
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
428
|
+
console.error(`❌ ${errorMsg}`);
|
|
427
429
|
process.exit(1);
|
|
428
430
|
}
|
|
429
431
|
console.log(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"torrent.js","sourceRoot":"","sources":["../../src/commands/torrent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE,SAAS;AACT,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,yBAAyB,CAAC;AAgBjE,SAAS,gBAAgB;IACrB,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACD,yBAAyB;QACzB,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,kCAAkC,CAAC,CAAC;QACvE,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACL,kCAAkC;QAClC,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc;IACnC,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IAC/C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,SAAS,GAA0C,EAAE,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS,CAAC,iCAAiC;QAEhF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC/C,WAAW,CAAC,kEAAkE,CAAC,CAAC;AAErF,uCAAuC;AACvC,cAAc;KACT,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACzD,MAAM,CAAC,4BAA4B,EAAE,2CAA2C,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6B,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACD,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,UAAU,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC;;;UAGV,MAAM;UACN,UAAU;UACV,KAAK;UACL,YAAY,IAAI,QAAQ;;SAEzB,CAAC,CAAC;IAEH,oBAAoB;IACpB,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAExD,wBAAwB;IACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;YAC7B,KAAK;YACL,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,MAAM,OAAO,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACP,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,oBAAoB;IACpB,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,MAAM,QAAQ,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;;mCAIe,MAAM;SAChC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,6BAA6B;AAC7B,cAAc;KACT,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CACtD,CAAC;IAEF,gCAAgC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACtB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAO,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;QAC5F,CAAC,CAAC;QACF,CAAC,CAAC,YAAY,CAAC;IAEnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;gBAGJ,QAAQ,CAAC,MAAM;;SAEtB,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtD,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,yCAAyC;AACzC,cAAc;KACT,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA4B,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACD,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,UAAU,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IAExE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAE1D,OAAO,CAAC,GAAG,CAAC;oBACA,MAAM;;aAEb,UAAU;aACV,KAAK;aACL,MAAM,CAAC,KAAK,CAAC,MAAM;;SAEvB,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,MAAM,WAAW,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;0CAEsB,UAAU;2DACO,UAAU;mCAClC,UAAU;SACpC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,kCAAkC;AAClC,cAAc;KACT,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CACtD,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO;IACX,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;gBAAE,SAAS;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,wBAAwB;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC;QAEnE,yBAAyB;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1D,OAAO,UAAU,GAAG,UAAU,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;aAC7C,CAAC,CAAC;SACN,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QACpE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,2BAA2B;AAC3B,cAAc;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACX,CAAC;IAYD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,+BAA+B;IAC/B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,GAAa;YACnB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,EAAE;SACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;IAEH,yBAAyB;IACzB,SAAS,SAAS,CAAC,IAAc,EAAE,MAAc,EAAE,MAAe;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;IAClC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC;;YAER,KAAK,eAAe,OAAO,cAAc,QAAQ;OACtD,SAAS,kBAAkB,MAAM;SAC/B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,4CAA4C;AAC5C,cAAc;KACT,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,EAAE,GAAG,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAA2C,EAAE,EAAE;IAC5E,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IACxE,MAAM,OAAO,GAAG,4BAA4B,CAAC;IAE7C,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACD,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;kBACF,YAAY;;WAEnB,KAAK;SACP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,QAAQ,OAAO,EAAE,CAAC;QAErC,+DAA+D;QAC/D,MAAM,OAAO,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,SAAS,EAAE,kBAAkB;YACpC,WAAW,EAAE,YAAY,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;YAER,OAAO,CAAC,MAAM;;;8BAGI,OAAO,CAAC,CAAC,CAAC;SAC/B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"torrent.js","sourceRoot":"","sources":["../../src/commands/torrent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE,SAAS;AACT,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,yBAAyB,CAAC;AAgBjE,SAAS,mBAAmB,CAAC,MAAc;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACD,yBAAyB;QACzB,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,kCAAkC,CAAC,CAAC;QACvE,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACL,kCAAkC;QAClC,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc;IACnC,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IAC/C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,SAAS,GAA0C,EAAE,CAAC;IAE5D,gFAAgF;IAChF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAErD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS,CAAC,iCAAiC;QAEhF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC/C,WAAW,CAAC,kEAAkE,CAAC,CAAC;AAErF,uCAAuC;AACvC,cAAc;KACT,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACzD,MAAM,CAAC,4BAA4B,EAAE,2CAA2C,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6B,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACD,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,UAAU,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC;;;UAGV,MAAM;UACN,UAAU;UACV,KAAK;UACL,YAAY,IAAI,QAAQ;;SAEzB,CAAC,CAAC;IAEH,oBAAoB;IACpB,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAExD,wBAAwB;IACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;YAC7B,KAAK;YACL,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,MAAM,OAAO,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACP,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,oBAAoB;IACpB,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,MAAM,QAAQ,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;;mCAIe,MAAM;SAChC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,6BAA6B;AAC7B,cAAc;KACT,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CACtD,CAAC;IAEF,gCAAgC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACtB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAO,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;QAC5F,CAAC,CAAC;QACF,CAAC,CAAC,YAAY,CAAC;IAEnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;gBAGJ,QAAQ,CAAC,MAAM;;SAEtB,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtD,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,yCAAyC;AACzC,cAAc;KACT,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA4B,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACD,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,UAAU,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IAExE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAE1D,OAAO,CAAC,GAAG,CAAC;oBACA,MAAM;;aAEb,UAAU;aACV,KAAK;aACL,MAAM,CAAC,KAAK,CAAC,MAAM;;SAEvB,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,MAAM,WAAW,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;0CAEsB,UAAU;2DACO,UAAU;mCAClC,UAAU;SACpC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,kCAAkC;AAClC,cAAc;KACT,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CACtD,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO;IACX,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAElD,8DAA8D;IAC9D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;gBAAE,SAAS;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,wBAAwB;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC;QAEnE,yBAAyB;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1D,OAAO,UAAU,GAAG,UAAU,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;aAC7C,CAAC,CAAC;SACN,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QACpE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,2BAA2B;AAC3B,cAAc;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACX,CAAC;IAYD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,+BAA+B;IAC/B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,GAAa;YACnB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,EAAE;SACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;SAGX,CAAC,CAAC;IAEH,yBAAyB;IACzB,SAAS,SAAS,CAAC,IAAc,EAAE,MAAc,EAAE,MAAe;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;IAClC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC;;YAER,KAAK,eAAe,OAAO,cAAc,QAAQ;OACtD,SAAS,kBAAkB,MAAM;SAC/B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,4CAA4C;AAC5C,cAAc;KACT,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,EAAE,GAAG,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAA2C,EAAE,EAAE;IAC5E,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,4BAA4B,CAAC;IAE7C,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACD,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;kBACF,YAAY;;WAEnB,KAAK;SACP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,QAAQ,OAAO,EAAE,CAAC;QAErC,+DAA+D;QAC/D,MAAM,OAAO,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,SAAS,EAAE,kBAAkB;YACpC,WAAW,EAAE,YAAY,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;YAER,OAAO,CAAC,MAAM;;;8BAGI,OAAO,CAAC,CAAC,CAAC;SAC/B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EpC,eAAO,MAAM,YAAY,SAmOnB,CAAC"}
|
package/dist/commands/watch.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
2
|
+
import { execFileSync, spawnSync } from 'child_process';
|
|
3
3
|
import { getStorage } from '../storage/index.js';
|
|
4
4
|
import * as chokidar from 'chokidar';
|
|
5
5
|
import * as path from 'path';
|
|
6
|
+
import { homedir } from 'os';
|
|
6
7
|
import { io } from 'socket.io-client';
|
|
7
8
|
import { loadConfig } from '../lib/config.js';
|
|
9
|
+
import { syncFromColony } from '../lib/colony-subscriber.js';
|
|
8
10
|
// Config
|
|
9
11
|
const HUB_URL = process.env.HUB_URL || 'https://hub.treebird.uk';
|
|
10
12
|
const DEBOUNCE_MS = 1000; // Debounce file changes
|
|
11
13
|
function getCurrentBranch() {
|
|
12
14
|
try {
|
|
13
|
-
return
|
|
15
|
+
return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf-8' }).trim();
|
|
14
16
|
}
|
|
15
17
|
catch {
|
|
16
18
|
throw new Error('Not in a git repository');
|
|
@@ -18,7 +20,7 @@ function getCurrentBranch() {
|
|
|
18
20
|
}
|
|
19
21
|
function getRepoRoot() {
|
|
20
22
|
try {
|
|
21
|
-
return
|
|
23
|
+
return execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf-8' }).trim();
|
|
22
24
|
}
|
|
23
25
|
catch {
|
|
24
26
|
return process.cwd();
|
|
@@ -48,7 +50,7 @@ async function postConflictToChat(branch, agent, conflicts) {
|
|
|
48
50
|
console.log(`⚠️ Failed to post to Hub chat: ${response.status}`);
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
|
-
catch
|
|
53
|
+
catch {
|
|
52
54
|
// Silently fail - Hub might not be running
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -111,7 +113,7 @@ Press Ctrl+C to stop.
|
|
|
111
113
|
}
|
|
112
114
|
});
|
|
113
115
|
}
|
|
114
|
-
catch
|
|
116
|
+
catch {
|
|
115
117
|
console.log('⚠️ Could not connect to Hub');
|
|
116
118
|
}
|
|
117
119
|
}
|
|
@@ -146,10 +148,12 @@ Press Ctrl+C to stop.
|
|
|
146
148
|
// Check for conflicts
|
|
147
149
|
const allBranches = await storage.list();
|
|
148
150
|
const conflicts = [];
|
|
151
|
+
// Performance Optimization: Convert changed files to Set for O(1) lookup
|
|
152
|
+
const filesSet = new Set(files);
|
|
149
153
|
for (const otherBranch of allBranches) {
|
|
150
154
|
if (otherBranch.name === branch || otherBranch.status !== 'active')
|
|
151
155
|
continue;
|
|
152
|
-
const overlapping = files.filter(f =>
|
|
156
|
+
const overlapping = otherBranch.files.filter(f => filesSet.has(f));
|
|
153
157
|
if (overlapping.length > 0) {
|
|
154
158
|
conflicts.push({ branch: otherBranch.name, files: overlapping });
|
|
155
159
|
}
|
|
@@ -255,4 +259,191 @@ Press Ctrl+C to stop.
|
|
|
255
259
|
process.exit(0);
|
|
256
260
|
});
|
|
257
261
|
});
|
|
262
|
+
// ── Mode 1: Treetop Observer ──────────────────────────────────────────────────
|
|
263
|
+
/**
|
|
264
|
+
* Default ecosystem repos to watch. Override with --repos flag or
|
|
265
|
+
* SPIDERSAN_REPOS env var (colon-separated paths).
|
|
266
|
+
*/
|
|
267
|
+
function getDefaultTreetopRepos() {
|
|
268
|
+
if (process.env.SPIDERSAN_REPOS) {
|
|
269
|
+
return process.env.SPIDERSAN_REPOS.split(':').map((r) => r.trim()).filter(Boolean);
|
|
270
|
+
}
|
|
271
|
+
const homeDir = process.env.HOME || homedir();
|
|
272
|
+
return [
|
|
273
|
+
`${homeDir}/Dev/Envoak`,
|
|
274
|
+
`${homeDir}/Dev/treebird-internal`,
|
|
275
|
+
`${homeDir}/Dev/spidersan`,
|
|
276
|
+
`${homeDir}/Dev/Toak`,
|
|
277
|
+
`${homeDir}/Dev/flockview`,
|
|
278
|
+
`${homeDir}/Dev/mappersan`,
|
|
279
|
+
];
|
|
280
|
+
}
|
|
281
|
+
const DEFAULT_TREETOP_REPOS = getDefaultTreetopRepos();
|
|
282
|
+
/**
|
|
283
|
+
* Run one full observer tick: SYNC → SCAN → TEND → SURFACE.
|
|
284
|
+
* Returns tier counts and idle status for adaptive sleep calculation.
|
|
285
|
+
*/
|
|
286
|
+
async function runObserverTick(repos, dryRun, broadcastedConflicts) {
|
|
287
|
+
let totalTier3 = 0;
|
|
288
|
+
let totalTier2 = 0;
|
|
289
|
+
let totalBranches = 0;
|
|
290
|
+
const tier3Alerts = [];
|
|
291
|
+
// ── STEP 1: SYNC ──────────────────────────────────────────────────────────
|
|
292
|
+
// Pull colony gradient into local registry per repo.
|
|
293
|
+
for (const repo of repos) {
|
|
294
|
+
try {
|
|
295
|
+
process.chdir(repo);
|
|
296
|
+
await syncFromColony();
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
// Repo not initialized or colony unreachable — continue
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// ── STEP 2: SCAN ─────────────────────────────────────────────────────────
|
|
303
|
+
// Detect conflicts in each repo. spawnSync captures output even on exit 1.
|
|
304
|
+
for (const repo of repos) {
|
|
305
|
+
try {
|
|
306
|
+
const result = spawnSync('spidersan', ['conflicts', '--json'], {
|
|
307
|
+
cwd: repo,
|
|
308
|
+
encoding: 'utf-8',
|
|
309
|
+
timeout: 15000,
|
|
310
|
+
});
|
|
311
|
+
if (result.stdout) {
|
|
312
|
+
const data = JSON.parse(result.stdout);
|
|
313
|
+
const summary = data.summary ?? { tier3: 0, tier2: 0, tier1: 0 };
|
|
314
|
+
totalTier3 += summary.tier3 ?? 0;
|
|
315
|
+
totalTier2 += summary.tier2 ?? 0;
|
|
316
|
+
// Count active branches via conflicts (each conflict references another branch)
|
|
317
|
+
const otherBranches = new Set(data.conflicts?.map((c) => c.branch).filter(Boolean) ?? []);
|
|
318
|
+
totalBranches += otherBranches.size;
|
|
319
|
+
if ((summary.tier3 ?? 0) > 0) {
|
|
320
|
+
const files = data.conflicts
|
|
321
|
+
.filter((c) => c.tier === 3)
|
|
322
|
+
.flatMap((c) => c.files ?? [])
|
|
323
|
+
.slice(0, 3);
|
|
324
|
+
tier3Alerts.push({ repo, files });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
// Repo not initialized or spidersan unavailable — skip
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// ── STEP 3: TEND ─────────────────────────────────────────────────────────
|
|
333
|
+
// Colony GC (non-critical — always continue on failure).
|
|
334
|
+
try {
|
|
335
|
+
spawnSync('envoak', ['colony', 'gc'], { encoding: 'utf-8', timeout: 10000 });
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
/* ignore */
|
|
339
|
+
}
|
|
340
|
+
// Stale check per repo (informational — no --auto-cleanup yet).
|
|
341
|
+
for (const repo of repos) {
|
|
342
|
+
try {
|
|
343
|
+
spawnSync('spidersan', ['stale'], {
|
|
344
|
+
cwd: repo,
|
|
345
|
+
encoding: 'utf-8',
|
|
346
|
+
timeout: 10000,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
/* ignore */
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// ── STEP 4: SURFACE ───────────────────────────────────────────────────────
|
|
354
|
+
// Broadcast TIER 3 alerts (deduplicated). Clear resolved conflicts.
|
|
355
|
+
const currentKeys = new Set(tier3Alerts.map((a) => `${a.repo}:${a.files.join(',')}`));
|
|
356
|
+
for (const alert of tier3Alerts) {
|
|
357
|
+
const key = `${alert.repo}:${alert.files.join(',')}`;
|
|
358
|
+
if (!broadcastedConflicts.has(key)) {
|
|
359
|
+
broadcastedConflicts.add(key);
|
|
360
|
+
const repoName = path.basename(alert.repo);
|
|
361
|
+
const filesStr = alert.files.length > 0 ? alert.files.join(', ') : 'multiple files';
|
|
362
|
+
const message = `ssan TIER 3: conflict in ${repoName} — ${filesStr}. Halt writes on affected files.`;
|
|
363
|
+
if (dryRun) {
|
|
364
|
+
console.log(`[DRY-RUN] Would broadcast TIER 3 alert: ${message}`);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
const r = spawnSync('envoak', ['colony', 'broadcast', '--type', 'alert', '--message', message], { encoding: 'utf-8', timeout: 10000 });
|
|
368
|
+
if (r.status === 0) {
|
|
369
|
+
console.log(`[TIER 3] Broadcast: ${message}`);
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
console.error(`[TIER 3] Broadcast failed: ${r.stderr ?? r.stdout}`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Evict resolved conflicts from dedup set
|
|
378
|
+
for (const key of broadcastedConflicts) {
|
|
379
|
+
if (!currentKeys.has(key)) {
|
|
380
|
+
broadcastedConflicts.delete(key);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const allIdle = totalTier3 === 0 && totalTier2 === 0 && totalBranches === 0;
|
|
384
|
+
// Emit treetop heartbeat (skipped in dry-run)
|
|
385
|
+
const summary = `Watching ${repos.length} repos, ${totalBranches} active branches. ` +
|
|
386
|
+
`T3:${totalTier3} T2:${totalTier2}. GC run. Stale checked.`;
|
|
387
|
+
console.log(`[TICK] ${new Date().toISOString()} — ${summary}`);
|
|
388
|
+
if (!dryRun) {
|
|
389
|
+
spawnSync('envoak', ['colony', 'signal', '--status', 'idle', '--task', 'treetop watch', '--summary', summary], { encoding: 'utf-8', timeout: 10000 });
|
|
390
|
+
}
|
|
391
|
+
return { tier3: totalTier3, tier2: totalTier2, repoCount: repos.length, branchCount: totalBranches, allIdle };
|
|
392
|
+
}
|
|
393
|
+
function resolveRepos(reposOption) {
|
|
394
|
+
if (reposOption) {
|
|
395
|
+
return reposOption.split(',').map((r) => r.trim()).filter(Boolean);
|
|
396
|
+
}
|
|
397
|
+
const envRepos = process.env['SPIDERSAN_REPOS'];
|
|
398
|
+
if (envRepos) {
|
|
399
|
+
return envRepos.split(':').map((r) => r.trim()).filter(Boolean);
|
|
400
|
+
}
|
|
401
|
+
return DEFAULT_TREETOP_REPOS;
|
|
402
|
+
}
|
|
403
|
+
function adaptiveInterval(result, baseMs) {
|
|
404
|
+
if (result.tier3 > 0)
|
|
405
|
+
return 15_000; // Stay alert
|
|
406
|
+
if (result.tier2 > 0)
|
|
407
|
+
return 30_000; // Watch closely
|
|
408
|
+
if (result.allIdle)
|
|
409
|
+
return 300_000; // Colony quiet — back off
|
|
410
|
+
return baseMs;
|
|
411
|
+
}
|
|
412
|
+
const watchTreetopCommand = new Command('treetop')
|
|
413
|
+
.description('Mode 1: treetop observer — periodic multi-repo conflict scan + colony gradient sync')
|
|
414
|
+
.option('--interval <seconds>', 'Base tick interval in seconds (default: 120)', '120')
|
|
415
|
+
.option('--repos <paths>', 'Comma-separated repo paths (overrides ecosystem defaults)')
|
|
416
|
+
.option('--dry-run', 'Run one tick and exit — no sleep, no colony writes')
|
|
417
|
+
.action(async (options) => {
|
|
418
|
+
const repos = resolveRepos(options.repos);
|
|
419
|
+
const baseMs = parseInt(options.interval, 10) * 1000;
|
|
420
|
+
const dryRun = options.dryRun ?? false;
|
|
421
|
+
console.log(`
|
|
422
|
+
🕷️ SPIDERSAN TREETOP OBSERVER (Mode 1)
|
|
423
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
424
|
+
Repos: ${repos.length} (${repos.map((r) => path.basename(r)).join(', ')})
|
|
425
|
+
Interval: ${options.interval}s base (adaptive)
|
|
426
|
+
Dry-run: ${dryRun}
|
|
427
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
428
|
+
${dryRun ? 'Running one tick then exiting.' : 'Press Ctrl+C to stop.'}
|
|
429
|
+
`);
|
|
430
|
+
const broadcastedConflicts = new Set();
|
|
431
|
+
if (dryRun) {
|
|
432
|
+
await runObserverTick(repos, true, broadcastedConflicts);
|
|
433
|
+
console.log('[DRY-RUN] Tick complete. Exiting.');
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
// Graceful shutdown
|
|
437
|
+
let running = true;
|
|
438
|
+
process.on('SIGINT', () => { running = false; console.log('\n🕷️ Treetop observer stopped.'); process.exit(0); });
|
|
439
|
+
process.on('SIGTERM', () => { running = false; process.exit(0); });
|
|
440
|
+
while (running) {
|
|
441
|
+
const result = await runObserverTick(repos, false, broadcastedConflicts);
|
|
442
|
+
const nextMs = adaptiveInterval(result, baseMs);
|
|
443
|
+
console.log(`[SLEEP] Next tick in ${nextMs / 1000}s`);
|
|
444
|
+
await new Promise((resolve) => setTimeout(resolve, nextMs));
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
// Attach Mode 1 as a subcommand of watch
|
|
448
|
+
watchCommand.addCommand(watchTreetopCommand);
|
|
258
449
|
//# sourceMappingURL=watch.js.map
|