opencode-agora 0.4.1 → 0.4.3
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/README.md +54 -6
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +18 -0
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/browse.d.ts.map +1 -1
- package/dist/cli/commands/browse.js +1 -5
- package/dist/cli/commands/browse.js.map +1 -1
- package/dist/cli/commands/capabilities.d.ts +3 -0
- package/dist/cli/commands/capabilities.d.ts.map +1 -0
- package/dist/cli/commands/capabilities.js +146 -0
- package/dist/cli/commands/capabilities.js.map +1 -0
- package/dist/cli/commands/community.d.ts.map +1 -1
- package/dist/cli/commands/community.js.map +1 -1
- package/dist/cli/commands/curate.d.ts +9 -0
- package/dist/cli/commands/curate.d.ts.map +1 -0
- package/dist/cli/commands/curate.js +62 -0
- package/dist/cli/commands/curate.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +77 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +5 -3
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/freeze.d.ts +3 -0
- package/dist/cli/commands/freeze.d.ts.map +1 -0
- package/dist/cli/commands/freeze.js +62 -0
- package/dist/cli/commands/freeze.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/installed.d.ts +3 -0
- package/dist/cli/commands/installed.d.ts.map +1 -0
- package/dist/cli/commands/installed.js +82 -0
- package/dist/cli/commands/installed.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -1
- package/dist/cli/commands/marketplace.js.map +1 -1
- package/dist/cli/commands/notify.d.ts.map +1 -1
- package/dist/cli/commands/notify.js.map +1 -1
- package/dist/cli/commands/operations.d.ts.map +1 -1
- package/dist/cli/commands/operations.js +103 -5
- package/dist/cli/commands/operations.js.map +1 -1
- package/dist/cli/commands/outdated.d.ts +3 -0
- package/dist/cli/commands/outdated.d.ts.map +1 -0
- package/dist/cli/commands/outdated.js +48 -0
- package/dist/cli/commands/outdated.js.map +1 -0
- package/dist/cli/commands/ping.js +2 -1
- package/dist/cli/commands/ping.js.map +1 -1
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +35 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +172 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/today.d.ts.map +1 -1
- package/dist/cli/commands/today.js +11 -3
- package/dist/cli/commands/today.js.map +1 -1
- package/dist/cli/commands/try.d.ts +3 -0
- package/dist/cli/commands/try.d.ts.map +1 -0
- package/dist/cli/commands/try.js +157 -0
- package/dist/cli/commands/try.js.map +1 -0
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/commands/welcome.d.ts.map +1 -1
- package/dist/cli/commands/welcome.js +6 -27
- package/dist/cli/commands/welcome.js.map +1 -1
- package/dist/cli/commands-meta.d.ts +1 -1
- package/dist/cli/commands-meta.d.ts.map +1 -1
- package/dist/cli/commands-meta.js +242 -12
- package/dist/cli/commands-meta.js.map +1 -1
- package/dist/cli/completions-gen.d.ts.map +1 -1
- package/dist/cli/completions-gen.js +130 -52
- package/dist/cli/completions-gen.js.map +1 -1
- package/dist/cli/flags.d.ts.map +1 -1
- package/dist/cli/flags.js +7 -0
- package/dist/cli/flags.js.map +1 -1
- package/dist/cli/format.js +1 -1
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/mcp-server.d.ts +12 -1
- package/dist/cli/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp-server.js +292 -2
- package/dist/cli/mcp-server.js.map +1 -1
- package/dist/cli/pages/community.d.ts.map +1 -1
- package/dist/cli/pages/community.js +5 -8
- package/dist/cli/pages/community.js.map +1 -1
- package/dist/cli/pages/home.d.ts.map +1 -1
- package/dist/cli/pages/home.js +22 -8
- package/dist/cli/pages/home.js.map +1 -1
- package/dist/cli/pages/marketplace.d.ts.map +1 -1
- package/dist/cli/pages/marketplace.js +68 -7
- package/dist/cli/pages/marketplace.js.map +1 -1
- package/dist/cli/pages/news.d.ts.map +1 -1
- package/dist/cli/pages/news.js +2 -2
- package/dist/cli/pages/news.js.map +1 -1
- package/dist/cli/pages/stack.d.ts +3 -0
- package/dist/cli/pages/stack.d.ts.map +1 -0
- package/dist/cli/pages/stack.js +373 -0
- package/dist/cli/pages/stack.js.map +1 -0
- package/dist/cli/pages/types.d.ts +1 -1
- package/dist/cli/pages/types.d.ts.map +1 -1
- package/dist/cli/shell.d.ts +1 -1
- package/dist/cli/shell.d.ts.map +1 -1
- package/dist/cli/shell.js +70 -4
- package/dist/cli/shell.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +14 -4
- package/dist/cli/tui.js.map +1 -1
- package/dist/community/client.d.ts.map +1 -1
- package/dist/community/client.js +3 -1
- package/dist/community/client.js.map +1 -1
- package/dist/curator/index.d.ts +95 -0
- package/dist/curator/index.d.ts.map +1 -0
- package/dist/curator/index.js +446 -0
- package/dist/curator/index.js.map +1 -0
- package/dist/format.d.ts +0 -2
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +0 -2
- package/dist/format.js.map +1 -1
- package/dist/hubs/enrichment.d.ts.map +1 -1
- package/dist/hubs/enrichment.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/live.js +7 -1
- package/dist/live.js.map +1 -1
- package/dist/marketplace.d.ts +2 -1
- package/dist/marketplace.d.ts.map +1 -1
- package/dist/marketplace.js +86 -17
- package/dist/marketplace.js.map +1 -1
- package/dist/outdated.d.ts +24 -0
- package/dist/outdated.d.ts.map +1 -0
- package/dist/outdated.js +74 -0
- package/dist/outdated.js.map +1 -0
- package/dist/scan.d.ts +26 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +247 -0
- package/dist/scan.js.map +1 -0
- package/dist/search/catalog-index.d.ts +107 -0
- package/dist/search/catalog-index.d.ts.map +1 -0
- package/dist/search/catalog-index.js +276 -0
- package/dist/search/catalog-index.js.map +1 -0
- package/dist/stack/adapters/claude-code.d.ts +3 -0
- package/dist/stack/adapters/claude-code.d.ts.map +1 -0
- package/dist/stack/adapters/claude-code.js +282 -0
- package/dist/stack/adapters/claude-code.js.map +1 -0
- package/dist/stack/adapters/cursor.d.ts +3 -0
- package/dist/stack/adapters/cursor.d.ts.map +1 -0
- package/dist/stack/adapters/cursor.js +232 -0
- package/dist/stack/adapters/cursor.js.map +1 -0
- package/dist/stack/adapters/opencode.d.ts +3 -0
- package/dist/stack/adapters/opencode.d.ts.map +1 -0
- package/dist/stack/adapters/opencode.js +177 -0
- package/dist/stack/adapters/opencode.js.map +1 -0
- package/dist/stack/adapters/windsurf.d.ts +3 -0
- package/dist/stack/adapters/windsurf.d.ts.map +1 -0
- package/dist/stack/adapters/windsurf.js +218 -0
- package/dist/stack/adapters/windsurf.js.map +1 -0
- package/dist/stack/capability-cache.d.ts +19 -0
- package/dist/stack/capability-cache.d.ts.map +1 -0
- package/dist/stack/capability-cache.js +41 -0
- package/dist/stack/capability-cache.js.map +1 -0
- package/dist/stack/doctor.d.ts +30 -0
- package/dist/stack/doctor.d.ts.map +1 -0
- package/dist/stack/doctor.js +227 -0
- package/dist/stack/doctor.js.map +1 -0
- package/dist/stack/manifest.d.ts +40 -0
- package/dist/stack/manifest.d.ts.map +1 -0
- package/dist/stack/manifest.js +342 -0
- package/dist/stack/manifest.js.map +1 -0
- package/dist/stack/mcp-probe.d.ts +23 -0
- package/dist/stack/mcp-probe.d.ts.map +1 -0
- package/dist/stack/mcp-probe.js +230 -0
- package/dist/stack/mcp-probe.js.map +1 -0
- package/dist/stack/path-resolve.d.ts +7 -0
- package/dist/stack/path-resolve.d.ts.map +1 -0
- package/dist/stack/path-resolve.js +37 -0
- package/dist/stack/path-resolve.js.map +1 -0
- package/dist/stack/registry.d.ts +11 -0
- package/dist/stack/registry.d.ts.map +1 -0
- package/dist/stack/registry.js +42 -0
- package/dist/stack/registry.js.map +1 -0
- package/dist/stack/sync.d.ts +20 -0
- package/dist/stack/sync.d.ts.map +1 -0
- package/dist/stack/sync.js +226 -0
- package/dist/stack/sync.js.map +1 -0
- package/dist/stack/types.d.ts +53 -0
- package/dist/stack/types.d.ts.map +1 -0
- package/dist/stack/types.js +2 -0
- package/dist/stack/types.js.map +1 -0
- package/dist/transcript.d.ts +14 -0
- package/dist/transcript.d.ts.map +1 -1
- package/dist/transcript.js +98 -1
- package/dist/transcript.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { HubItem } from '../hubs/types.js';
|
|
2
|
+
export interface CuratedPackage {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
author: string;
|
|
7
|
+
version: string;
|
|
8
|
+
category: 'mcp' | 'prompt' | 'workflow' | 'skill';
|
|
9
|
+
tags: string[];
|
|
10
|
+
stars: number;
|
|
11
|
+
installs: number;
|
|
12
|
+
repository: string;
|
|
13
|
+
npmPackage?: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
pricing: {
|
|
16
|
+
kind: 'free';
|
|
17
|
+
};
|
|
18
|
+
permissions?: {
|
|
19
|
+
fs?: string[];
|
|
20
|
+
net?: string[];
|
|
21
|
+
exec?: string[];
|
|
22
|
+
};
|
|
23
|
+
installHint?: string;
|
|
24
|
+
aiVerifiedAt: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function curationCachePath(dataDir: string): string;
|
|
27
|
+
export declare function curationStatePath(dataDir: string): string;
|
|
28
|
+
export declare function readCuratedCache(dataDir: string): CuratedPackage[];
|
|
29
|
+
export declare function writeCuratedCache(dataDir: string, items: CuratedPackage[]): void;
|
|
30
|
+
export declare function getCuratedItems(dataDir: string): CuratedPackage[];
|
|
31
|
+
/**
|
|
32
|
+
* Normalises a repository URL for deduplication:
|
|
33
|
+
* lower-cases, strips trailing slashes and a trailing ".git".
|
|
34
|
+
*/
|
|
35
|
+
export declare function normaliseRepo(url: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Filters out HubItem candidates whose id OR repository already exists in the
|
|
38
|
+
* bundled hand-curated catalog (src/data.ts samplePackages).
|
|
39
|
+
* Pure function — no I/O.
|
|
40
|
+
*/
|
|
41
|
+
export declare function filterBundledDuplicates(candidates: HubItem[]): HubItem[];
|
|
42
|
+
/**
|
|
43
|
+
* Deduplicates an array of items by `id`, keeping the first occurrence.
|
|
44
|
+
* Pure function — no I/O.
|
|
45
|
+
*/
|
|
46
|
+
export declare function dedupeById<T extends {
|
|
47
|
+
id: string;
|
|
48
|
+
}>(items: T[]): T[];
|
|
49
|
+
/**
|
|
50
|
+
* Returns true if the given ISO timestamp is older than `staleDays` days.
|
|
51
|
+
* Pure function — `now` defaults to the current date (injectable for tests).
|
|
52
|
+
*/
|
|
53
|
+
export declare function isStale(aiVerifiedAt: string, staleDays: number, now?: Date): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Runs `fn` over `items` with at most `limit` concurrent executions.
|
|
56
|
+
* Preserves input order in the returned array.
|
|
57
|
+
*/
|
|
58
|
+
export declare function mapWithConcurrency<T, R>(items: T[], limit: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Returns curation status without running discovery or verification.
|
|
61
|
+
*/
|
|
62
|
+
export interface CurationStatus {
|
|
63
|
+
count: number;
|
|
64
|
+
lastRunAt: string | null;
|
|
65
|
+
source: 'ai' | 'bundled';
|
|
66
|
+
lastRunStats?: RunStats;
|
|
67
|
+
lastRunMode?: 'incremental' | 'refresh' | 'force';
|
|
68
|
+
}
|
|
69
|
+
interface RunStats {
|
|
70
|
+
discovered: number;
|
|
71
|
+
skippedBundled: number;
|
|
72
|
+
reused: number;
|
|
73
|
+
verified: number;
|
|
74
|
+
rejected: number;
|
|
75
|
+
fetchFailed: number;
|
|
76
|
+
aiFailed: number;
|
|
77
|
+
}
|
|
78
|
+
export declare function curationStatus(dataDir: string): CurationStatus;
|
|
79
|
+
/**
|
|
80
|
+
* Returns true if the `opencode` binary is available on PATH.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isOpencodeAvailable(): boolean;
|
|
83
|
+
export interface CurateAllOptions {
|
|
84
|
+
limit?: number;
|
|
85
|
+
/** @deprecated prefer `mode: 'force'` */
|
|
86
|
+
force?: boolean;
|
|
87
|
+
mode?: 'incremental' | 'refresh' | 'force';
|
|
88
|
+
staleDays?: number;
|
|
89
|
+
concurrency?: number;
|
|
90
|
+
onProgress?: (message: string) => void;
|
|
91
|
+
}
|
|
92
|
+
export declare function curateAll(dataDir: string, opts?: CurateAllOptions): Promise<CuratedPackage[]>;
|
|
93
|
+
export declare function discoverCandidates(): Promise<HubItem[]>;
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/curator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { existsSync, readFileSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { spawn, execSync } from 'node:child_process';
|
|
4
|
+
import { atomicWriteFile } from '../atomic-write.js';
|
|
5
|
+
import { searchGithub } from '../hubs/github.js';
|
|
6
|
+
import { searchHuggingFace } from '../hubs/huggingface.js';
|
|
7
|
+
import { fetchRepoMetadata, fetchHfRepoMetadata } from '../hubs/enrichment.js';
|
|
8
|
+
import { FREE_MODELS } from '../cli/commands/chat.js';
|
|
9
|
+
import { samplePackages } from '../data.js';
|
|
10
|
+
const MAX_AI_ITEMS = 50;
|
|
11
|
+
const MAX_RETRIES = 3;
|
|
12
|
+
export function curationCachePath(dataDir) {
|
|
13
|
+
return join(dataDir, 'curation-cache.json');
|
|
14
|
+
}
|
|
15
|
+
export function curationStatePath(dataDir) {
|
|
16
|
+
return join(dataDir, 'curation-state.json');
|
|
17
|
+
}
|
|
18
|
+
export function readCuratedCache(dataDir) {
|
|
19
|
+
const path = curationCachePath(dataDir);
|
|
20
|
+
if (!existsSync(path))
|
|
21
|
+
return [];
|
|
22
|
+
try {
|
|
23
|
+
const raw = readFileSync(path, 'utf8');
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
if (Array.isArray(parsed))
|
|
26
|
+
return parsed;
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function writeCuratedCache(dataDir, items) {
|
|
34
|
+
mkdirSync(dataDir, { recursive: true });
|
|
35
|
+
const sorted = [...items].sort((a, b) => b.stars - a.stars);
|
|
36
|
+
atomicWriteFile(curationCachePath(dataDir), JSON.stringify(sorted, null, 2));
|
|
37
|
+
}
|
|
38
|
+
export function getCuratedItems(dataDir) {
|
|
39
|
+
const cached = readCuratedCache(dataDir);
|
|
40
|
+
if (cached.length > 0)
|
|
41
|
+
return cached;
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Normalises a repository URL for deduplication:
|
|
46
|
+
* lower-cases, strips trailing slashes and a trailing ".git".
|
|
47
|
+
*/
|
|
48
|
+
export function normaliseRepo(url) {
|
|
49
|
+
return url
|
|
50
|
+
.trim()
|
|
51
|
+
.toLowerCase()
|
|
52
|
+
.replace(/\/+$/, '')
|
|
53
|
+
.replace(/\.git$/, '');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Filters out HubItem candidates whose id OR repository already exists in the
|
|
57
|
+
* bundled hand-curated catalog (src/data.ts samplePackages).
|
|
58
|
+
* Pure function — no I/O.
|
|
59
|
+
*/
|
|
60
|
+
export function filterBundledDuplicates(candidates) {
|
|
61
|
+
const bundledIds = new Set(samplePackages.map((p) => p.id.toLowerCase()));
|
|
62
|
+
const bundledRepos = new Set(samplePackages.filter((p) => p.repository).map((p) => normaliseRepo(p.repository)));
|
|
63
|
+
return candidates.filter((item) => {
|
|
64
|
+
if (bundledIds.has(item.id.toLowerCase()))
|
|
65
|
+
return false;
|
|
66
|
+
if (item.repository && bundledRepos.has(normaliseRepo(item.repository)))
|
|
67
|
+
return false;
|
|
68
|
+
return true;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Deduplicates an array of items by `id`, keeping the first occurrence.
|
|
73
|
+
* Pure function — no I/O.
|
|
74
|
+
*/
|
|
75
|
+
export function dedupeById(items) {
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
const result = [];
|
|
78
|
+
for (const item of items) {
|
|
79
|
+
if (!seen.has(item.id)) {
|
|
80
|
+
seen.add(item.id);
|
|
81
|
+
result.push(item);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns true if the given ISO timestamp is older than `staleDays` days.
|
|
88
|
+
* Pure function — `now` defaults to the current date (injectable for tests).
|
|
89
|
+
*/
|
|
90
|
+
export function isStale(aiVerifiedAt, staleDays, now) {
|
|
91
|
+
const verifiedMs = new Date(aiVerifiedAt).getTime();
|
|
92
|
+
const nowMs = (now ?? new Date()).getTime();
|
|
93
|
+
const staleLimitMs = staleDays * 24 * 60 * 60 * 1000;
|
|
94
|
+
return nowMs - verifiedMs >= staleLimitMs;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Runs `fn` over `items` with at most `limit` concurrent executions.
|
|
98
|
+
* Preserves input order in the returned array.
|
|
99
|
+
*/
|
|
100
|
+
export async function mapWithConcurrency(items, limit, fn) {
|
|
101
|
+
const results = new Array(items.length);
|
|
102
|
+
let nextIndex = 0;
|
|
103
|
+
async function worker() {
|
|
104
|
+
while (nextIndex < items.length) {
|
|
105
|
+
const i = nextIndex;
|
|
106
|
+
nextIndex += 1;
|
|
107
|
+
results[i] = await fn(items[i], i);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const workers = Array.from({ length: Math.min(limit, items.length) }, () => worker());
|
|
111
|
+
await Promise.all(workers);
|
|
112
|
+
return results;
|
|
113
|
+
}
|
|
114
|
+
export function curationStatus(dataDir) {
|
|
115
|
+
const cached = readCuratedCache(dataDir);
|
|
116
|
+
const base = cached.length === 0
|
|
117
|
+
? { count: samplePackages.length, lastRunAt: null, source: 'bundled' }
|
|
118
|
+
: (() => {
|
|
119
|
+
const dates = cached
|
|
120
|
+
.map((p) => p.aiVerifiedAt)
|
|
121
|
+
.filter(Boolean)
|
|
122
|
+
.sort()
|
|
123
|
+
.reverse();
|
|
124
|
+
const lastRunAt = dates[0] ?? null;
|
|
125
|
+
return { count: cached.length, lastRunAt, source: 'ai' };
|
|
126
|
+
})();
|
|
127
|
+
const statePath = curationStatePath(dataDir);
|
|
128
|
+
if (existsSync(statePath)) {
|
|
129
|
+
try {
|
|
130
|
+
const raw = readFileSync(statePath, 'utf8');
|
|
131
|
+
const state = JSON.parse(raw);
|
|
132
|
+
base.lastRunStats = state.stats;
|
|
133
|
+
base.lastRunMode = state.mode;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// state file is optional — ignore parse errors
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return base;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Returns true if the `opencode` binary is available on PATH.
|
|
143
|
+
*/
|
|
144
|
+
export function isOpencodeAvailable() {
|
|
145
|
+
try {
|
|
146
|
+
execSync('which opencode', { stdio: 'pipe', timeout: 2000 });
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function callOpencodeModel(prompt, retries = MAX_RETRIES) {
|
|
154
|
+
const model = FREE_MODELS[0];
|
|
155
|
+
const modelArg = model.includes('/') ? model : `opencode/${model}`;
|
|
156
|
+
for (let attempt = 0; attempt < retries; attempt++) {
|
|
157
|
+
const result = await new Promise((resolve) => {
|
|
158
|
+
const child = spawn('opencode', ['run', '--format', 'json', '--model', modelArg, prompt], {
|
|
159
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
160
|
+
shell: false
|
|
161
|
+
});
|
|
162
|
+
let response = '';
|
|
163
|
+
const timer = setTimeout(() => {
|
|
164
|
+
child.kill();
|
|
165
|
+
resolve(null);
|
|
166
|
+
}, 45000);
|
|
167
|
+
child.stdout.on('data', (chunk) => {
|
|
168
|
+
for (const line of chunk.toString().split('\n').filter(Boolean)) {
|
|
169
|
+
try {
|
|
170
|
+
const ev = JSON.parse(line);
|
|
171
|
+
if (ev.type === 'text' && ev.part?.text)
|
|
172
|
+
response += ev.part.text;
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// skip
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
child.on('close', () => {
|
|
180
|
+
clearTimeout(timer);
|
|
181
|
+
resolve(response || null);
|
|
182
|
+
});
|
|
183
|
+
child.on('error', () => {
|
|
184
|
+
clearTimeout(timer);
|
|
185
|
+
resolve(null);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
if (result)
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
function buildVerifyPrompt(name, readme) {
|
|
194
|
+
const maxChars = 10000;
|
|
195
|
+
const trimmed = readme.length > maxChars ? readme.slice(0, maxChars) + '\n...(truncated)' : readme;
|
|
196
|
+
return `<system>
|
|
197
|
+
You are analyzing an open-source repository README. Determine if this is a genuine MCP server, AI prompt library, workflow template, or OpenCode skill.
|
|
198
|
+
|
|
199
|
+
Return ONLY valid JSON with these fields:
|
|
200
|
+
- "isGenuine": boolean (true if it's clearly a real MCP server, prompt collection, workflow template, or skill; false if it's unrelated, a tutorial, a framework, or a library that happens to use MCP)
|
|
201
|
+
- "category": one of "mcp" (Model Context Protocol server), "prompt" (AI prompt templates), "workflow" (agent workflow template), "skill" (OpenCode/openhands skill)
|
|
202
|
+
- "description": max 20 words, concise factual summary
|
|
203
|
+
- "permissions": object with optional "fs" (string[] of filesystem paths), "net" (string[] of network permissions), "exec" (string[] of executable permissions); empty object if none found
|
|
204
|
+
- "installHint": the primary install command/method as a single line, or null if unclear
|
|
205
|
+
- "tags": array of 2-5 relevant lowercase tags
|
|
206
|
+
|
|
207
|
+
Examples of genuine items:
|
|
208
|
+
- A repo with topic "mcp-server" that implements the MCP protocol with tools/resources
|
|
209
|
+
- A collection of prompt templates for Claude/GPT
|
|
210
|
+
- A workflow .mdc/.prompt file collection for agent coding workflows
|
|
211
|
+
- A skill package for OpenCode with an opencode.json
|
|
212
|
+
|
|
213
|
+
Examples of non-genuine items:
|
|
214
|
+
- A general-purpose library that happens to have an "mcp" topic tag
|
|
215
|
+
- A tutorial or guide about MCP
|
|
216
|
+
- A framework for building MCP servers (not a server itself)
|
|
217
|
+
- A project that is archived or clearly experimental
|
|
218
|
+
|
|
219
|
+
<user>
|
|
220
|
+
Repo: ${name}
|
|
221
|
+
|
|
222
|
+
README:
|
|
223
|
+
${trimmed}`;
|
|
224
|
+
}
|
|
225
|
+
function parseVerifyResponse(text) {
|
|
226
|
+
try {
|
|
227
|
+
let cleaned = text.trim();
|
|
228
|
+
if (cleaned.startsWith('```json'))
|
|
229
|
+
cleaned = cleaned.slice(7);
|
|
230
|
+
if (cleaned.startsWith('```'))
|
|
231
|
+
cleaned = cleaned.slice(3);
|
|
232
|
+
if (cleaned.endsWith('```'))
|
|
233
|
+
cleaned = cleaned.slice(0, -3);
|
|
234
|
+
cleaned = cleaned.trim();
|
|
235
|
+
const parsed = JSON.parse(cleaned);
|
|
236
|
+
if (typeof parsed.isGenuine !== 'boolean')
|
|
237
|
+
return null;
|
|
238
|
+
return {
|
|
239
|
+
isGenuine: parsed.isGenuine,
|
|
240
|
+
category: parsed.category || 'mcp',
|
|
241
|
+
description: parsed.description || '',
|
|
242
|
+
permissions: parsed.permissions || {},
|
|
243
|
+
installHint: parsed.installHint || null,
|
|
244
|
+
tags: Array.isArray(parsed.tags) ? parsed.tags.slice(0, 5) : []
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async function verifyWithAi(name, readme) {
|
|
252
|
+
const prompt = buildVerifyPrompt(name, readme);
|
|
253
|
+
const response = await callOpencodeModel(prompt);
|
|
254
|
+
if (!response)
|
|
255
|
+
return null;
|
|
256
|
+
return parseVerifyResponse(response);
|
|
257
|
+
}
|
|
258
|
+
async function processCandidate(hubItem) {
|
|
259
|
+
const repoId = hubItem.id.startsWith('gh:') ? hubItem.id.slice(3) : hubItem.id;
|
|
260
|
+
const isHf = hubItem.source === 'hf';
|
|
261
|
+
let readme;
|
|
262
|
+
let version;
|
|
263
|
+
if (isHf) {
|
|
264
|
+
const meta = await fetchHfRepoMetadata(repoId);
|
|
265
|
+
if (!meta)
|
|
266
|
+
return { kind: 'fetch-failed' };
|
|
267
|
+
readme = meta.readme;
|
|
268
|
+
version = meta.version;
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
const meta = await fetchRepoMetadata(repoId);
|
|
272
|
+
if (!meta)
|
|
273
|
+
return { kind: 'fetch-failed' };
|
|
274
|
+
readme = meta.readme;
|
|
275
|
+
version = meta.commitSha;
|
|
276
|
+
}
|
|
277
|
+
const result = await verifyWithAi(hubItem.name, readme);
|
|
278
|
+
if (!result)
|
|
279
|
+
return { kind: 'ai-unavailable' };
|
|
280
|
+
if (!result.isGenuine)
|
|
281
|
+
return { kind: 'rejected' };
|
|
282
|
+
const published = {
|
|
283
|
+
id: hubItem.id,
|
|
284
|
+
name: hubItem.name,
|
|
285
|
+
description: result.description || hubItem.description,
|
|
286
|
+
author: hubItem.author,
|
|
287
|
+
version,
|
|
288
|
+
category: result.category,
|
|
289
|
+
tags: result.tags.length > 0 ? result.tags : hubItem.tags,
|
|
290
|
+
stars: hubItem.stars,
|
|
291
|
+
installs: hubItem.installs,
|
|
292
|
+
repository: hubItem.repository,
|
|
293
|
+
npmPackage: hubItem.npmPackage,
|
|
294
|
+
createdAt: hubItem.createdAt,
|
|
295
|
+
pricing: { kind: 'free' },
|
|
296
|
+
permissions: Object.keys(result.permissions).length > 0 ? result.permissions : undefined,
|
|
297
|
+
installHint: result.installHint ?? undefined,
|
|
298
|
+
aiVerifiedAt: new Date().toISOString()
|
|
299
|
+
};
|
|
300
|
+
return { kind: 'verified', pkg: published };
|
|
301
|
+
}
|
|
302
|
+
export async function curateAll(dataDir, opts = {}) {
|
|
303
|
+
const log = opts.onProgress || ((msg) => console.log(msg));
|
|
304
|
+
const limit = opts.limit || MAX_AI_ITEMS;
|
|
305
|
+
const concurrency = opts.concurrency || 4;
|
|
306
|
+
const staleDays = opts.staleDays ?? 30;
|
|
307
|
+
// Resolve mode: explicit `mode` wins; fall back to `force` boolean for compat.
|
|
308
|
+
const mode = opts.mode ?? (opts.force ? 'force' : 'incremental');
|
|
309
|
+
const cached = readCuratedCache(dataDir);
|
|
310
|
+
const cachedById = new Map(cached.map((p) => [p.id, p]));
|
|
311
|
+
// Incremental mode: if cache is non-empty and no new candidates, short-circuit early.
|
|
312
|
+
// (Discovery is still needed for refresh/force modes.)
|
|
313
|
+
if (mode === 'incremental' && cached.length > 0) {
|
|
314
|
+
log(`Found ${cached.length} cached curated items (use --force to re-curate)`);
|
|
315
|
+
return cached;
|
|
316
|
+
}
|
|
317
|
+
if (!isOpencodeAvailable()) {
|
|
318
|
+
const msg = 'AI verification unavailable: `opencode` not found on PATH. ' +
|
|
319
|
+
'Install opencode (https://opencode.ai) or run with cached results.';
|
|
320
|
+
log(msg);
|
|
321
|
+
return cached;
|
|
322
|
+
}
|
|
323
|
+
log('Discovering candidates from GitHub and HuggingFace...');
|
|
324
|
+
const rawCandidates = await discoverCandidates();
|
|
325
|
+
log(`Found ${rawCandidates.length} candidate items`);
|
|
326
|
+
const candidates = filterBundledDuplicates(rawCandidates);
|
|
327
|
+
const skippedBundled = rawCandidates.length - candidates.length;
|
|
328
|
+
if (skippedBundled > 0) {
|
|
329
|
+
log(`Skipped ${skippedBundled} items already in the bundled catalog`);
|
|
330
|
+
}
|
|
331
|
+
const todo = candidates.slice(0, limit);
|
|
332
|
+
// Determine which items to skip vs. process based on mode.
|
|
333
|
+
// Incremental: skip items already in cache by id.
|
|
334
|
+
// Refresh: skip items in cache whose aiVerifiedAt is fresh (not stale).
|
|
335
|
+
// Force: process everything.
|
|
336
|
+
//
|
|
337
|
+
// Resumption logic: because incremental cache writes persist partial
|
|
338
|
+
// progress, an interrupted --refresh/--force run resumes correctly on
|
|
339
|
+
// re-run: items already written are present in the cache with a fresh
|
|
340
|
+
// aiVerifiedAt, so they are treated as fresh and reused automatically.
|
|
341
|
+
const reusedItems = [];
|
|
342
|
+
const itemsToProcess = [];
|
|
343
|
+
for (const item of todo) {
|
|
344
|
+
const existing = cachedById.get(item.id);
|
|
345
|
+
if (!existing) {
|
|
346
|
+
itemsToProcess.push(item);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
if (mode === 'force') {
|
|
350
|
+
itemsToProcess.push(item);
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
if (mode === 'refresh' && isStale(existing.aiVerifiedAt, staleDays)) {
|
|
354
|
+
itemsToProcess.push(item);
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
// Incremental: already cached (non-empty cache short-circuited above,
|
|
358
|
+
// but if somehow we're here, reuse it).
|
|
359
|
+
// Refresh: item is fresh, reuse without an AI call.
|
|
360
|
+
reusedItems.push(existing);
|
|
361
|
+
}
|
|
362
|
+
log(`Reusing ${reusedItems.length} fresh cached items, verifying ${itemsToProcess.length} items`);
|
|
363
|
+
const stats = {
|
|
364
|
+
discovered: rawCandidates.length,
|
|
365
|
+
skippedBundled,
|
|
366
|
+
reused: reusedItems.length,
|
|
367
|
+
verified: 0,
|
|
368
|
+
rejected: 0,
|
|
369
|
+
fetchFailed: 0,
|
|
370
|
+
aiFailed: 0
|
|
371
|
+
};
|
|
372
|
+
// Shared completion counter for periodic cache writes.
|
|
373
|
+
let completions = 0;
|
|
374
|
+
// Cached items not in this run's todo list (they were never candidates this
|
|
375
|
+
// run — preserve them verbatim).
|
|
376
|
+
const todoIds = new Set(todo.map((t) => t.id));
|
|
377
|
+
const untouchedCached = cached.filter((c) => !todoIds.has(c.id));
|
|
378
|
+
// Accumulate verified results; we write incrementally so slot array up-front.
|
|
379
|
+
const verifiedResults = [];
|
|
380
|
+
await mapWithConcurrency(itemsToProcess, concurrency, async (item, _idx) => {
|
|
381
|
+
const label = `${item.name}`;
|
|
382
|
+
log(`${label} — verifying...`);
|
|
383
|
+
let outcome;
|
|
384
|
+
try {
|
|
385
|
+
outcome = await processCandidate(item);
|
|
386
|
+
}
|
|
387
|
+
catch (err) {
|
|
388
|
+
// Per-item exceptions must never abort the batch.
|
|
389
|
+
log(`${label} ✗ unexpected error: ${err instanceof Error ? err.message : String(err)}`);
|
|
390
|
+
stats.fetchFailed += 1;
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
switch (outcome.kind) {
|
|
394
|
+
case 'verified':
|
|
395
|
+
verifiedResults.push(outcome.pkg);
|
|
396
|
+
stats.verified += 1;
|
|
397
|
+
log(`${label} ✓ verified as ${outcome.pkg.category}`);
|
|
398
|
+
break;
|
|
399
|
+
case 'rejected':
|
|
400
|
+
stats.rejected += 1;
|
|
401
|
+
log(`${label} ✗ rejected (not a genuine item)`);
|
|
402
|
+
break;
|
|
403
|
+
case 'fetch-failed':
|
|
404
|
+
stats.fetchFailed += 1;
|
|
405
|
+
log(`${label} ✗ fetch failed`);
|
|
406
|
+
break;
|
|
407
|
+
case 'ai-unavailable':
|
|
408
|
+
stats.aiFailed += 1;
|
|
409
|
+
log(`${label} ✗ AI unavailable or parse error`);
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
completions += 1;
|
|
413
|
+
// Periodic incremental write every 5 completions.
|
|
414
|
+
if (completions % 5 === 0) {
|
|
415
|
+
const partial = dedupeById([...untouchedCached, ...reusedItems, ...verifiedResults]);
|
|
416
|
+
writeCuratedCache(dataDir, partial);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
// Final merged result: untouched cached + reused fresh + newly verified.
|
|
420
|
+
const finalItems = dedupeById([...untouchedCached, ...reusedItems, ...verifiedResults]);
|
|
421
|
+
writeCuratedCache(dataDir, finalItems);
|
|
422
|
+
log(`\nDone. ${stats.verified} new items verified, ${stats.reused} reused, ${stats.rejected} rejected, ${stats.fetchFailed} fetch-failed, ${stats.aiFailed} ai-failed`);
|
|
423
|
+
log(`Total in cache: ${finalItems.length} items`);
|
|
424
|
+
// Persist run-state for --status
|
|
425
|
+
const state = {
|
|
426
|
+
lastRunAt: new Date().toISOString(),
|
|
427
|
+
mode,
|
|
428
|
+
stats
|
|
429
|
+
};
|
|
430
|
+
atomicWriteFile(curationStatePath(dataDir), JSON.stringify(state, null, 2));
|
|
431
|
+
return finalItems;
|
|
432
|
+
}
|
|
433
|
+
export async function discoverCandidates() {
|
|
434
|
+
const [ghItems, hfItems] = await Promise.all([searchGithub(), searchHuggingFace()]);
|
|
435
|
+
const seen = new Set();
|
|
436
|
+
const items = [];
|
|
437
|
+
for (const item of [...ghItems, ...hfItems]) {
|
|
438
|
+
if (!seen.has(item.repository)) {
|
|
439
|
+
seen.add(item.repository);
|
|
440
|
+
items.push(item);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
items.sort((a, b) => b.stars - a.stars);
|
|
444
|
+
return items;
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/curator/index.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export declare function formatNumber(count: number): string;
|
|
2
|
-
/** @deprecated Use formatNumber instead */
|
|
3
2
|
export declare const formatStars: typeof formatNumber;
|
|
4
|
-
/** @deprecated Use formatNumber instead */
|
|
5
3
|
export declare const formatInstalls: typeof formatNumber;
|
|
6
4
|
//# sourceMappingURL=format.d.ts.map
|
package/dist/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,eAAO,MAAM,WAAW,qBAAe,CAAC;AACxC,eAAO,MAAM,cAAc,qBAAe,CAAC"}
|
package/dist/format.js
CHANGED
|
@@ -7,8 +7,6 @@ export function formatNumber(count) {
|
|
|
7
7
|
}
|
|
8
8
|
return String(count);
|
|
9
9
|
}
|
|
10
|
-
/** @deprecated Use formatNumber instead */
|
|
11
10
|
export const formatStars = formatNumber;
|
|
12
|
-
/** @deprecated Use formatNumber instead */
|
|
13
11
|
export const formatInstalls = formatNumber;
|
|
14
12
|
//# sourceMappingURL=format.js.map
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/hubs/enrichment.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CASpE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAElF;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAE7B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CAE7F;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACvE,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA8BvD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACvD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/hubs/enrichment.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CASpE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAElF;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAE7B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CAE7F;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACvE,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA8BvD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACvD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAmCrD;AAwCD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GACtD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GACtD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClD,GACL,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAgEjC;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAAO,GACxF,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA+BjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../src/hubs/enrichment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../src/hubs/enrichment.ts"],"names":[],"mappings":"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"}
|