0xkobold 0.7.2 → 0.8.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/HEARTBEAT.md +239 -0
- package/IDENTITY.md +12 -0
- package/README.md +138 -4
- package/SOUL.md +21 -0
- package/dist/package.json +10 -5
- package/dist/src/agent/bootstrap-loader.js +295 -66
- package/dist/src/agent/bootstrap-loader.js.map +1 -1
- package/dist/src/agent/context-pruning.js +10 -5
- package/dist/src/agent/context-pruning.js.map +1 -1
- package/dist/src/agent/embedded-runner.js +29 -15
- package/dist/src/agent/embedded-runner.js.map +1 -1
- package/dist/src/agent/index.js +5 -2
- package/dist/src/agent/index.js.map +1 -1
- package/dist/src/agent/system-prompt.js +167 -20
- package/dist/src/agent/system-prompt.js.map +1 -1
- package/dist/src/agent/tools/spawn-agent.js +72 -5
- package/dist/src/agent/tools/spawn-agent.js.map +1 -1
- package/dist/src/channels/slack/webhook.js +2 -2
- package/dist/src/channels/slack/webhook.js.map +1 -1
- package/dist/src/channels/telegram/bot.js +4 -4
- package/dist/src/channels/telegram/bot.js.map +1 -1
- package/dist/src/channels/whatsapp/integration.js +4 -4
- package/dist/src/channels/whatsapp/integration.js.map +1 -1
- package/dist/src/cli/commands/gateway.js +9 -10
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cli/commands/init.js +90 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/setup.js +53 -0
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/index.js +0 -0
- package/dist/src/config/unified-config.js +5 -0
- package/dist/src/config/unified-config.js.map +1 -1
- package/dist/src/cron/index.js +2 -0
- package/dist/src/cron/index.js.map +1 -1
- package/dist/src/cron/nl-parser.js +522 -0
- package/dist/src/cron/nl-parser.js.map +1 -0
- package/dist/src/cron/runner.js +6 -31
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/event-bus/index.js.map +1 -1
- package/dist/src/extensions/core/agent-orchestrator-extension.js +200 -148
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -1
- package/dist/src/extensions/core/diagnostics-extension.js +93 -56
- package/dist/src/extensions/core/diagnostics-extension.js.map +1 -1
- package/dist/src/extensions/core/draconic-safety-extension.js +256 -3
- package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -1
- package/dist/src/extensions/core/heartbeat-extension.js +416 -150
- package/dist/src/extensions/core/heartbeat-extension.js.map +1 -1
- package/dist/src/extensions/core/{generative-agents-extension.js → learning-extension.js} +90 -128
- package/dist/src/extensions/core/learning-extension.js.map +1 -0
- package/dist/src/extensions/core/perennial-memory-extension.js +884 -87
- package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
- package/dist/src/extensions/core/routed-ollama-extension.js +345 -0
- package/dist/src/extensions/core/routed-ollama-extension.js.map +1 -0
- package/dist/src/extensions/core/task-manager-extension.js +25 -2
- package/dist/src/extensions/core/task-manager-extension.js.map +1 -1
- package/dist/src/extensions/core/websearch-enhanced-extension.js +81 -23
- package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -1
- package/dist/src/extensions/core/workspace-footer-extension.js +40 -63
- package/dist/src/extensions/core/workspace-footer-extension.js.map +1 -1
- package/dist/src/extensions/loader.js +5 -1
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/gateway/gateway-server.js +74 -3
- package/dist/src/gateway/gateway-server.js.map +1 -1
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/methods/agent.js +1 -1
- package/dist/src/gateway/methods/agent.js.map +1 -1
- package/dist/src/gateway/methods/index.js +4 -0
- package/dist/src/gateway/methods/index.js.map +1 -1
- package/dist/src/gateway/methods/node.js +261 -0
- package/dist/src/gateway/methods/node.js.map +1 -0
- package/dist/src/gateway/queue-modes.js +356 -0
- package/dist/src/gateway/queue-modes.js.map +1 -0
- package/dist/src/index.js +47 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/community-analytics.js +569 -0
- package/dist/src/llm/community-analytics.js.map +1 -0
- package/dist/src/llm/index.js +28 -4
- package/dist/src/llm/index.js.map +1 -1
- package/dist/src/llm/model-discovery.js +335 -0
- package/dist/src/llm/model-discovery.js.map +1 -0
- package/dist/src/llm/model-popularity.js +566 -0
- package/dist/src/llm/model-popularity.js.map +1 -0
- package/dist/src/llm/model-scoring-db.js +553 -0
- package/dist/src/llm/model-scoring-db.js.map +1 -0
- package/dist/src/llm/multi-provider.js +258 -0
- package/dist/src/llm/multi-provider.js.map +1 -0
- package/dist/src/llm/ollama.js +133 -187
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/llm/router-commands.js +773 -0
- package/dist/src/llm/router-commands.js.map +1 -0
- package/dist/src/llm/router-core.js +600 -0
- package/dist/src/llm/router-core.js.map +1 -0
- package/dist/src/memory/checkpoint-manager.js +278 -0
- package/dist/src/memory/checkpoint-manager.js.map +1 -0
- package/dist/src/memory/conflict-detector.js +279 -0
- package/dist/src/memory/conflict-detector.js.map +1 -0
- package/dist/src/memory/context-graph.js +360 -0
- package/dist/src/memory/context-graph.js.map +1 -0
- package/dist/src/memory/dialectic/benchmark-cli.js +200 -0
- package/dist/src/memory/dialectic/benchmark-cli.js.map +1 -0
- package/dist/src/memory/dialectic/debug-reasoning.js +37 -0
- package/dist/src/memory/dialectic/debug-reasoning.js.map +1 -0
- package/dist/src/memory/dialectic/index.js +135 -0
- package/dist/src/memory/dialectic/index.js.map +1 -0
- package/dist/src/memory/dialectic/nudges.js +380 -0
- package/dist/src/memory/dialectic/nudges.js.map +1 -0
- package/dist/src/memory/dialectic/reasoning-engine.js +607 -0
- package/dist/src/memory/dialectic/reasoning-engine.js.map +1 -0
- package/dist/src/memory/dialectic/reasoning.js +390 -0
- package/dist/src/memory/dialectic/reasoning.js.map +1 -0
- package/dist/src/memory/dialectic/skill-creation.js +481 -0
- package/dist/src/memory/dialectic/skill-creation.js.map +1 -0
- package/dist/src/memory/dialectic/store.js +663 -0
- package/dist/src/memory/dialectic/store.js.map +1 -0
- package/dist/src/memory/dialectic/types.js +11 -0
- package/dist/src/memory/dialectic/types.js.map +1 -0
- package/dist/src/memory/index.js +24 -2
- package/dist/src/memory/index.js.map +1 -1
- package/dist/src/memory/memory-decay.js +350 -0
- package/dist/src/memory/memory-decay.js.map +1 -0
- package/dist/src/memory/memory-integration.js +5 -5
- package/dist/src/memory/memory-integration.js.map +1 -1
- package/dist/src/memory/migrate-memory-stream.js +97 -0
- package/dist/src/memory/migrate-memory-stream.js.map +1 -0
- package/dist/src/memory/session-memory-bridge.js +49 -5
- package/dist/src/memory/session-memory-bridge.js.map +1 -1
- package/dist/src/memory/session-store.js +123 -0
- package/dist/src/memory/session-store.js.map +1 -1
- package/dist/src/memory/smart-write-rules.js +164 -0
- package/dist/src/memory/smart-write-rules.js.map +1 -0
- package/dist/src/memory/tiered-memory.js +436 -0
- package/dist/src/memory/tiered-memory.js.map +1 -0
- package/dist/src/memory/types.js +6 -0
- package/dist/src/memory/types.js.map +1 -0
- package/dist/src/memory/verify-migration.js +99 -0
- package/dist/src/memory/verify-migration.js.map +1 -0
- package/dist/src/pi-config.js +11 -9
- package/dist/src/pi-config.js.map +1 -1
- package/dist/src/skills/conditional-skills.js +464 -0
- package/dist/src/skills/conditional-skills.js.map +1 -0
- package/dist/src/skills/index.js +5 -0
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/skills/loader.js +56 -0
- package/dist/src/skills/loader.js.map +1 -1
- package/dist/src/skills/skill-manage.js +417 -0
- package/dist/src/skills/skill-manage.js.map +1 -0
- package/dist/src/tui/commands/orchestration-commands.js +62 -0
- package/dist/src/tui/commands/orchestration-commands.js.map +1 -1
- package/package.json +10 -5
- package/skills/model-router-test.ts +65 -0
- package/dist/src/extensions/core/auto-security-scan-extension.js +0 -41
- package/dist/src/extensions/core/auto-security-scan-extension.js.map +0 -1
- package/dist/src/extensions/core/cloudflare-browser-extension.js +0 -389
- package/dist/src/extensions/core/cloudflare-browser-extension.js.map +0 -1
- package/dist/src/extensions/core/compaction-safeguard.js +0 -223
- package/dist/src/extensions/core/compaction-safeguard.js.map +0 -1
- package/dist/src/extensions/core/generative-agents-extension.js.map +0 -1
- package/dist/src/extensions/core/obsidian-bridge-extension.js +0 -488
- package/dist/src/extensions/core/obsidian-bridge-extension.js.map +0 -1
- package/dist/src/llm/router.js +0 -145
- package/dist/src/llm/router.js.map +0 -1
- package/skills/kobold-scan-skill/node_modules/.package-lock.json +0 -172
- package/skills/kobold-scan-skill/node_modules/ansi-styles/index.d.ts +0 -345
- package/skills/kobold-scan-skill/node_modules/ansi-styles/index.js +0 -163
- package/skills/kobold-scan-skill/node_modules/ansi-styles/license +0 -9
- package/skills/kobold-scan-skill/node_modules/ansi-styles/package.json +0 -56
- package/skills/kobold-scan-skill/node_modules/ansi-styles/readme.md +0 -152
- package/skills/kobold-scan-skill/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/skills/kobold-scan-skill/node_modules/balanced-match/LICENSE.md +0 -21
- package/skills/kobold-scan-skill/node_modules/balanced-match/README.md +0 -97
- package/skills/kobold-scan-skill/node_modules/balanced-match/index.js +0 -62
- package/skills/kobold-scan-skill/node_modules/balanced-match/package.json +0 -48
- package/skills/kobold-scan-skill/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
- package/skills/kobold-scan-skill/node_modules/brace-expansion/LICENSE +0 -21
- package/skills/kobold-scan-skill/node_modules/brace-expansion/README.md +0 -135
- package/skills/kobold-scan-skill/node_modules/brace-expansion/index.js +0 -203
- package/skills/kobold-scan-skill/node_modules/brace-expansion/package.json +0 -49
- package/skills/kobold-scan-skill/node_modules/chalk/index.d.ts +0 -415
- package/skills/kobold-scan-skill/node_modules/chalk/license +0 -9
- package/skills/kobold-scan-skill/node_modules/chalk/package.json +0 -68
- package/skills/kobold-scan-skill/node_modules/chalk/readme.md +0 -341
- package/skills/kobold-scan-skill/node_modules/chalk/source/index.js +0 -229
- package/skills/kobold-scan-skill/node_modules/chalk/source/templates.js +0 -134
- package/skills/kobold-scan-skill/node_modules/chalk/source/util.js +0 -39
- package/skills/kobold-scan-skill/node_modules/color-convert/CHANGELOG.md +0 -54
- package/skills/kobold-scan-skill/node_modules/color-convert/LICENSE +0 -21
- package/skills/kobold-scan-skill/node_modules/color-convert/README.md +0 -68
- package/skills/kobold-scan-skill/node_modules/color-convert/conversions.js +0 -839
- package/skills/kobold-scan-skill/node_modules/color-convert/index.js +0 -81
- package/skills/kobold-scan-skill/node_modules/color-convert/package.json +0 -48
- package/skills/kobold-scan-skill/node_modules/color-convert/route.js +0 -97
- package/skills/kobold-scan-skill/node_modules/color-name/LICENSE +0 -8
- package/skills/kobold-scan-skill/node_modules/color-name/README.md +0 -11
- package/skills/kobold-scan-skill/node_modules/color-name/index.js +0 -152
- package/skills/kobold-scan-skill/node_modules/color-name/package.json +0 -28
- package/skills/kobold-scan-skill/node_modules/commander/LICENSE +0 -22
- package/skills/kobold-scan-skill/node_modules/commander/Readme.md +0 -1129
- package/skills/kobold-scan-skill/node_modules/commander/esm.mjs +0 -16
- package/skills/kobold-scan-skill/node_modules/commander/index.js +0 -27
- package/skills/kobold-scan-skill/node_modules/commander/lib/argument.js +0 -147
- package/skills/kobold-scan-skill/node_modules/commander/lib/command.js +0 -2179
- package/skills/kobold-scan-skill/node_modules/commander/lib/error.js +0 -45
- package/skills/kobold-scan-skill/node_modules/commander/lib/help.js +0 -461
- package/skills/kobold-scan-skill/node_modules/commander/lib/option.js +0 -326
- package/skills/kobold-scan-skill/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/skills/kobold-scan-skill/node_modules/commander/package-support.json +0 -16
- package/skills/kobold-scan-skill/node_modules/commander/package.json +0 -80
- package/skills/kobold-scan-skill/node_modules/commander/typings/index.d.ts +0 -891
- package/skills/kobold-scan-skill/node_modules/fs.realpath/LICENSE +0 -43
- package/skills/kobold-scan-skill/node_modules/fs.realpath/README.md +0 -33
- package/skills/kobold-scan-skill/node_modules/fs.realpath/index.js +0 -66
- package/skills/kobold-scan-skill/node_modules/fs.realpath/old.js +0 -303
- package/skills/kobold-scan-skill/node_modules/fs.realpath/package.json +0 -26
- package/skills/kobold-scan-skill/node_modules/glob/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/glob/README.md +0 -399
- package/skills/kobold-scan-skill/node_modules/glob/common.js +0 -244
- package/skills/kobold-scan-skill/node_modules/glob/glob.js +0 -790
- package/skills/kobold-scan-skill/node_modules/glob/package.json +0 -55
- package/skills/kobold-scan-skill/node_modules/glob/sync.js +0 -486
- package/skills/kobold-scan-skill/node_modules/has-flag/index.d.ts +0 -39
- package/skills/kobold-scan-skill/node_modules/has-flag/index.js +0 -8
- package/skills/kobold-scan-skill/node_modules/has-flag/license +0 -9
- package/skills/kobold-scan-skill/node_modules/has-flag/package.json +0 -46
- package/skills/kobold-scan-skill/node_modules/has-flag/readme.md +0 -89
- package/skills/kobold-scan-skill/node_modules/inflight/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/inflight/README.md +0 -37
- package/skills/kobold-scan-skill/node_modules/inflight/inflight.js +0 -54
- package/skills/kobold-scan-skill/node_modules/inflight/package.json +0 -29
- package/skills/kobold-scan-skill/node_modules/inherits/LICENSE +0 -16
- package/skills/kobold-scan-skill/node_modules/inherits/README.md +0 -42
- package/skills/kobold-scan-skill/node_modules/inherits/inherits.js +0 -9
- package/skills/kobold-scan-skill/node_modules/inherits/inherits_browser.js +0 -27
- package/skills/kobold-scan-skill/node_modules/inherits/package.json +0 -29
- package/skills/kobold-scan-skill/node_modules/minimatch/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/minimatch/README.md +0 -259
- package/skills/kobold-scan-skill/node_modules/minimatch/lib/path.js +0 -4
- package/skills/kobold-scan-skill/node_modules/minimatch/minimatch.js +0 -944
- package/skills/kobold-scan-skill/node_modules/minimatch/package.json +0 -35
- package/skills/kobold-scan-skill/node_modules/once/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/once/README.md +0 -79
- package/skills/kobold-scan-skill/node_modules/once/once.js +0 -42
- package/skills/kobold-scan-skill/node_modules/once/package.json +0 -33
- package/skills/kobold-scan-skill/node_modules/supports-color/browser.js +0 -5
- package/skills/kobold-scan-skill/node_modules/supports-color/index.js +0 -135
- package/skills/kobold-scan-skill/node_modules/supports-color/license +0 -9
- package/skills/kobold-scan-skill/node_modules/supports-color/package.json +0 -53
- package/skills/kobold-scan-skill/node_modules/supports-color/readme.md +0 -76
- package/skills/kobold-scan-skill/node_modules/wrappy/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/wrappy/README.md +0 -36
- package/skills/kobold-scan-skill/node_modules/wrappy/package.json +0 -29
- package/skills/kobold-scan-skill/node_modules/wrappy/wrappy.js +0 -33
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Community Analytics Service
|
|
3
|
+
*
|
|
4
|
+
* Shares anonymized model performance data with the 0xKobold community.
|
|
5
|
+
*
|
|
6
|
+
* Privacy guarantees:
|
|
7
|
+
* - NO prompts or responses shared
|
|
8
|
+
* - NO user identity or IP stored
|
|
9
|
+
* - ONLY aggregated model stats (name, rating, latency, success rate)
|
|
10
|
+
* - Opt-in only (disabled by default)
|
|
11
|
+
*
|
|
12
|
+
* Data shared:
|
|
13
|
+
* - Model name
|
|
14
|
+
* - Average rating (1-5)
|
|
15
|
+
* - Average latency (ms)
|
|
16
|
+
* - Success rate (0-1)
|
|
17
|
+
* - Usage count
|
|
18
|
+
* - Task types used for
|
|
19
|
+
*/
|
|
20
|
+
import { homedir } from 'os';
|
|
21
|
+
import { join } from 'path';
|
|
22
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
23
|
+
import { getModelScoringDB } from './model-scoring-db';
|
|
24
|
+
import { getModelPopularityService } from './model-popularity';
|
|
25
|
+
// Nostr integration using nostr-tools
|
|
26
|
+
import { finalizeEvent, verifyEvent, SimplePool, generateSecretKey, getPublicKey } from 'nostr-tools';
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Constants
|
|
29
|
+
// ============================================================================
|
|
30
|
+
const CONFIG_PATH = join(homedir(), '.0xkobold', 'community-config.json');
|
|
31
|
+
const DATA_PATH = join(homedir(), '.0xkobold', 'community-data.json');
|
|
32
|
+
const DEFAULT_CONFIG = {
|
|
33
|
+
enabled: false, // Opt-in only
|
|
34
|
+
endpoint: 'https://raw.githubusercontent.com/kobolds/0xKobolds/main/community/model-stats.json',
|
|
35
|
+
submitInterval: 24, // Submit once per day
|
|
36
|
+
};
|
|
37
|
+
// Default community endpoint (can be customized)
|
|
38
|
+
const COMMUNITY_ENDPOINT = 'https://raw.githubusercontent.com/kobolds/0xKobolds/main/community/model-stats.json';
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Community Analytics Service
|
|
41
|
+
// ============================================================================
|
|
42
|
+
class CommunityAnalyticsService {
|
|
43
|
+
config;
|
|
44
|
+
userId;
|
|
45
|
+
constructor() {
|
|
46
|
+
this.config = this.loadConfig();
|
|
47
|
+
this.userId = this.generateOrGetUserId();
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Configuration
|
|
51
|
+
// ============================================================================
|
|
52
|
+
loadConfig() {
|
|
53
|
+
if (existsSync(CONFIG_PATH)) {
|
|
54
|
+
try {
|
|
55
|
+
const data = readFileSync(CONFIG_PATH, 'utf-8');
|
|
56
|
+
return { ...DEFAULT_CONFIG, ...JSON.parse(data) };
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return DEFAULT_CONFIG;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return DEFAULT_CONFIG;
|
|
63
|
+
}
|
|
64
|
+
saveConfig() {
|
|
65
|
+
writeFileSync(CONFIG_PATH, JSON.stringify(this.config, null, 2));
|
|
66
|
+
}
|
|
67
|
+
generateOrGetUserId() {
|
|
68
|
+
const idPath = join(homedir(), '.0xkobold', 'community-id.txt');
|
|
69
|
+
if (existsSync(idPath)) {
|
|
70
|
+
return readFileSync(idPath, 'utf-8').trim();
|
|
71
|
+
}
|
|
72
|
+
// Generate anonymous ID (random UUID)
|
|
73
|
+
const id = `user_${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
|
|
74
|
+
writeFileSync(idPath, id);
|
|
75
|
+
return id;
|
|
76
|
+
}
|
|
77
|
+
enable() {
|
|
78
|
+
this.config.enabled = true;
|
|
79
|
+
this.saveConfig();
|
|
80
|
+
console.log('[Community] Enabled anonymous stats sharing');
|
|
81
|
+
}
|
|
82
|
+
disable() {
|
|
83
|
+
this.config.enabled = false;
|
|
84
|
+
this.saveConfig();
|
|
85
|
+
console.log('[Community] Disabled anonymous stats sharing');
|
|
86
|
+
}
|
|
87
|
+
isEnabled() {
|
|
88
|
+
return this.config.enabled;
|
|
89
|
+
}
|
|
90
|
+
setEndpoint(endpoint) {
|
|
91
|
+
this.config.endpoint = endpoint;
|
|
92
|
+
this.saveConfig();
|
|
93
|
+
console.log(`[Community] Set endpoint to: ${endpoint}`);
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Data Collection
|
|
97
|
+
// ============================================================================
|
|
98
|
+
/**
|
|
99
|
+
* Collect anonymized stats from local database
|
|
100
|
+
*/
|
|
101
|
+
collectLocalStats() {
|
|
102
|
+
const scoringDB = getModelScoringDB();
|
|
103
|
+
const popularity = getModelPopularityService();
|
|
104
|
+
const scores = scoringDB.getAllScores();
|
|
105
|
+
const stats = [];
|
|
106
|
+
for (const score of scores) {
|
|
107
|
+
if (score.usageCount < 1)
|
|
108
|
+
continue; // Skip unused models
|
|
109
|
+
// Get task-specific performance
|
|
110
|
+
const taskTypes = ['chat', 'code', 'vision', 'reasoning'];
|
|
111
|
+
const taskStats = [];
|
|
112
|
+
const bestFor = [];
|
|
113
|
+
for (const taskType of taskTypes) {
|
|
114
|
+
const taskPerf = scoringDB.getTaskPerformance(score.modelName, taskType);
|
|
115
|
+
if (taskPerf && taskPerf.usageCount >= 1) {
|
|
116
|
+
taskStats.push({
|
|
117
|
+
taskType,
|
|
118
|
+
avgRating: taskPerf.avgQuality,
|
|
119
|
+
avgLatency: taskPerf.avgLatency,
|
|
120
|
+
successRate: taskPerf.successRate,
|
|
121
|
+
usageCount: taskPerf.usageCount,
|
|
122
|
+
});
|
|
123
|
+
// Mark as "best for" if rated highly (4+ rating, 80%+ success)
|
|
124
|
+
if (taskPerf.avgQuality >= 4 && taskPerf.successRate >= 0.8) {
|
|
125
|
+
const taskName = taskType.charAt(0).toUpperCase() + taskType.slice(1);
|
|
126
|
+
if (!bestFor.includes(taskName)) {
|
|
127
|
+
bestFor.push(taskName);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
stats.push({
|
|
133
|
+
modelName: score.modelName,
|
|
134
|
+
avgRating: score.avgQuality,
|
|
135
|
+
avgLatency: score.avgLatency,
|
|
136
|
+
successRate: score.successRate,
|
|
137
|
+
usageCount: score.usageCount,
|
|
138
|
+
taskStats,
|
|
139
|
+
bestFor,
|
|
140
|
+
lastUpdated: Date.now(),
|
|
141
|
+
contributorCount: 1, // Just this user
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return stats;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Export stats for community submission
|
|
148
|
+
*/
|
|
149
|
+
exportForCommunity() {
|
|
150
|
+
const stats = this.collectLocalStats();
|
|
151
|
+
return {
|
|
152
|
+
userId: this.userId, // Anonymous ID
|
|
153
|
+
stats,
|
|
154
|
+
timestamp: Date.now(),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
// ============================================================================
|
|
158
|
+
// Submission (to user's own storage)
|
|
159
|
+
// ============================================================================
|
|
160
|
+
/**
|
|
161
|
+
* Save community submission locally for manual upload
|
|
162
|
+
*/
|
|
163
|
+
saveSubmissionLocally() {
|
|
164
|
+
const data = this.exportForCommunity();
|
|
165
|
+
const outputPath = join(homedir(), '.0xkobold', 'community-submission.json');
|
|
166
|
+
writeFileSync(outputPath, JSON.stringify(data, null, 2));
|
|
167
|
+
console.log(`[Community] Saved submission to: ${outputPath}`);
|
|
168
|
+
console.log(`[Community] Stats prepared for ${data.stats.length} models`);
|
|
169
|
+
return outputPath;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create a shareable text summary for manual submission
|
|
173
|
+
*/
|
|
174
|
+
createShareableText() {
|
|
175
|
+
const data = this.exportForCommunity();
|
|
176
|
+
const lines = [
|
|
177
|
+
'# 0xKobold Community Stats Submission',
|
|
178
|
+
`# Generated: ${new Date().toISOString()}`,
|
|
179
|
+
`# User ID: ${this.userId}`,
|
|
180
|
+
`# Models: ${data.stats.length}`,
|
|
181
|
+
'',
|
|
182
|
+
'## Model Performance Stats',
|
|
183
|
+
'',
|
|
184
|
+
'| Model | Overall | Code | Chat | Reasoning | Vision | Best For |',
|
|
185
|
+
'|-------|---------|------|------|------------|--------|----------|',
|
|
186
|
+
];
|
|
187
|
+
data.stats
|
|
188
|
+
.sort((a, b) => b.avgRating - a.avgRating)
|
|
189
|
+
.forEach(s => {
|
|
190
|
+
const overall = `${s.avgRating.toFixed(1)}★`;
|
|
191
|
+
// Get task ratings
|
|
192
|
+
const code = s.taskStats.find(t => t.taskType === 'code');
|
|
193
|
+
const chat = s.taskStats.find(t => t.taskType === 'chat');
|
|
194
|
+
const reasoning = s.taskStats.find(t => t.taskType === 'reasoning');
|
|
195
|
+
const vision = s.taskStats.find(t => t.taskType === 'vision');
|
|
196
|
+
const codeRating = code ? `${code.avgRating.toFixed(1)}` : '-';
|
|
197
|
+
const chatRating = chat ? `${chat.avgRating.toFixed(1)}` : '-';
|
|
198
|
+
const reasoningRating = reasoning ? `${reasoning.avgRating.toFixed(1)}` : '-';
|
|
199
|
+
const visionRating = vision ? `${vision.avgRating.toFixed(1)}` : '-';
|
|
200
|
+
const bestFor = s.bestFor.length > 0 ? s.bestFor.slice(0, 3).join(', ') : '-';
|
|
201
|
+
lines.push(`| ${s.modelName} | ${overall} | ${codeRating} | ${chatRating} | ${reasoningRating} | ${visionRating} | ${bestFor} |`);
|
|
202
|
+
});
|
|
203
|
+
lines.push('');
|
|
204
|
+
lines.push('## Raw JSON');
|
|
205
|
+
lines.push('```json');
|
|
206
|
+
lines.push(JSON.stringify(data, null, 2));
|
|
207
|
+
lines.push('```');
|
|
208
|
+
return lines.join('\n');
|
|
209
|
+
}
|
|
210
|
+
// ============================================================================
|
|
211
|
+
// Fetching Community Data
|
|
212
|
+
// ============================================================================
|
|
213
|
+
/**
|
|
214
|
+
* Fetch community stats from remote endpoint
|
|
215
|
+
*/
|
|
216
|
+
async fetchCommunityStats() {
|
|
217
|
+
try {
|
|
218
|
+
const response = await fetch(this.config.endpoint, {
|
|
219
|
+
headers: {
|
|
220
|
+
'User-Agent': '0xKobold/1.0',
|
|
221
|
+
},
|
|
222
|
+
signal: AbortSignal.timeout(10000), // 10 second timeout
|
|
223
|
+
});
|
|
224
|
+
if (!response.ok) {
|
|
225
|
+
console.warn(`[Community] Failed to fetch: ${response.status}`);
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
const data = await response.json();
|
|
229
|
+
// Validate structure
|
|
230
|
+
if (!data.version || !Array.isArray(data.models)) {
|
|
231
|
+
console.warn('[Community] Invalid data structure');
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
console.log(`[Community] Fetched ${data.models.length} model stats from ${data.totalContributors || 'unknown'} contributors`);
|
|
235
|
+
// Save locally
|
|
236
|
+
writeFileSync(DATA_PATH, JSON.stringify(data, null, 2));
|
|
237
|
+
this.config.lastFetched = Date.now();
|
|
238
|
+
this.saveConfig();
|
|
239
|
+
return data;
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
console.error('[Community] Error fetching:', err);
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get cached community data
|
|
248
|
+
*/
|
|
249
|
+
getCachedData() {
|
|
250
|
+
if (!existsSync(DATA_PATH))
|
|
251
|
+
return null;
|
|
252
|
+
try {
|
|
253
|
+
const data = readFileSync(DATA_PATH, 'utf-8');
|
|
254
|
+
return JSON.parse(data);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Merge community stats with local scores for combined ranking
|
|
262
|
+
*/
|
|
263
|
+
mergeWithLocal() {
|
|
264
|
+
const merged = new Map();
|
|
265
|
+
// Start with community data
|
|
266
|
+
const communityData = this.getCachedData();
|
|
267
|
+
if (communityData) {
|
|
268
|
+
for (const stat of communityData.models) {
|
|
269
|
+
merged.set(stat.modelName, { ...stat, taskStats: [...stat.taskStats] });
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Merge with local data
|
|
273
|
+
const localStats = this.collectLocalStats();
|
|
274
|
+
for (const local of localStats) {
|
|
275
|
+
const existing = merged.get(local.modelName);
|
|
276
|
+
if (existing) {
|
|
277
|
+
// Weighted average: community + local
|
|
278
|
+
const totalUsage = existing.usageCount + local.usageCount;
|
|
279
|
+
const communityWeight = existing.usageCount / totalUsage;
|
|
280
|
+
const localWeight = local.usageCount / totalUsage;
|
|
281
|
+
// Merge task stats
|
|
282
|
+
const mergedTasks = new Map();
|
|
283
|
+
// Add community tasks
|
|
284
|
+
for (const task of existing.taskStats) {
|
|
285
|
+
mergedTasks.set(task.taskType, { ...task });
|
|
286
|
+
}
|
|
287
|
+
// Merge with local tasks
|
|
288
|
+
for (const task of local.taskStats) {
|
|
289
|
+
const existingTask = mergedTasks.get(task.taskType);
|
|
290
|
+
if (existingTask) {
|
|
291
|
+
const taskTotal = existingTask.usageCount + task.usageCount;
|
|
292
|
+
const tw = existingTask.usageCount / taskTotal;
|
|
293
|
+
const lw = task.usageCount / taskTotal;
|
|
294
|
+
mergedTasks.set(task.taskType, {
|
|
295
|
+
taskType: task.taskType,
|
|
296
|
+
avgRating: existingTask.avgRating * tw + task.avgRating * lw,
|
|
297
|
+
avgLatency: existingTask.avgLatency * tw + task.avgLatency * lw,
|
|
298
|
+
successRate: existingTask.successRate * tw + task.successRate * lw,
|
|
299
|
+
usageCount: taskTotal,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
mergedTasks.set(task.taskType, { ...task });
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
merged.set(local.modelName, {
|
|
307
|
+
modelName: local.modelName,
|
|
308
|
+
avgRating: existing.avgRating * communityWeight + local.avgRating * localWeight,
|
|
309
|
+
avgLatency: existing.avgLatency * communityWeight + local.avgLatency * localWeight,
|
|
310
|
+
successRate: existing.successRate * communityWeight + local.successRate * localWeight,
|
|
311
|
+
usageCount: totalUsage,
|
|
312
|
+
taskStats: Array.from(mergedTasks.values()),
|
|
313
|
+
bestFor: [...new Set([...existing.bestFor, ...local.bestFor])],
|
|
314
|
+
lastUpdated: Math.max(existing.lastUpdated, local.lastUpdated),
|
|
315
|
+
contributorCount: existing.contributorCount + 1,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
merged.set(local.modelName, local);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return merged;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Get community-enhanced tier list
|
|
326
|
+
*/
|
|
327
|
+
getCommunityTierList() {
|
|
328
|
+
const merged = this.mergeWithLocal();
|
|
329
|
+
const models = Array.from(merged.values())
|
|
330
|
+
.filter(m => m.usageCount >= 2) // Need at least 2 uses
|
|
331
|
+
.sort((a, b) => {
|
|
332
|
+
// Score: 40% rating + 30% success + 20% speed + 10% popularity
|
|
333
|
+
const scoreA = (a.avgRating / 5) * 0.4 + a.successRate * 0.3 +
|
|
334
|
+
(1 - a.avgLatency / 10000) * 0.2 +
|
|
335
|
+
Math.min(a.usageCount / 100, 1) * 0.1;
|
|
336
|
+
const scoreB = (b.avgRating / 5) * 0.4 + b.successRate * 0.3 +
|
|
337
|
+
(1 - b.avgLatency / 10000) * 0.2 +
|
|
338
|
+
Math.min(b.usageCount / 100, 1) * 0.1;
|
|
339
|
+
return scoreB - scoreA;
|
|
340
|
+
});
|
|
341
|
+
const tiers = [
|
|
342
|
+
{ tier: 'S', models: models.filter(m => (m.avgRating / 5) * 0.4 + m.successRate * 0.3 + (1 - m.avgLatency / 10000) * 0.2 >= 0.85) },
|
|
343
|
+
{ tier: 'A', models: models.filter(m => { const s = (m.avgRating / 5) * 0.4 + m.successRate * 0.3 + (1 - m.avgLatency / 10000) * 0.2; return s >= 0.70 && s < 0.85; }) },
|
|
344
|
+
{ tier: 'B', models: models.filter(m => { const s = (m.avgRating / 5) * 0.4 + m.successRate * 0.3 + (1 - m.avgLatency / 10000) * 0.2; return s >= 0.55 && s < 0.70; }) },
|
|
345
|
+
{ tier: 'C', models: models.filter(m => { const s = (m.avgRating / 5) * 0.4 + m.successRate * 0.3 + (1 - m.avgLatency / 10000) * 0.2; return s >= 0.40 && s < 0.55; }) },
|
|
346
|
+
{ tier: 'D', models: models.filter(m => { const s = (m.avgRating / 5) * 0.4 + m.successRate * 0.3 + (1 - m.avgLatency / 10000) * 0.2; return s < 0.40; }) },
|
|
347
|
+
];
|
|
348
|
+
return tiers;
|
|
349
|
+
}
|
|
350
|
+
// ============================================================================
|
|
351
|
+
// Nostr Integration
|
|
352
|
+
// ============================================================================
|
|
353
|
+
/**
|
|
354
|
+
* Get or generate user's Nostr keypair
|
|
355
|
+
*/
|
|
356
|
+
getNostrKeypair() {
|
|
357
|
+
const KEY_PATH = join(homedir(), '.0xkobold', 'community-nostr-key.json');
|
|
358
|
+
if (existsSync(KEY_PATH)) {
|
|
359
|
+
return JSON.parse(readFileSync(KEY_PATH, 'utf-8'));
|
|
360
|
+
}
|
|
361
|
+
// Generate new keypair using nostr-tools
|
|
362
|
+
const sk = generateSecretKey();
|
|
363
|
+
const privkey = Buffer.from(sk).toString('hex');
|
|
364
|
+
const pubkey = getPublicKey(sk);
|
|
365
|
+
const keypair = { pubkey, privkey };
|
|
366
|
+
writeFileSync(KEY_PATH, JSON.stringify(keypair, null, 2));
|
|
367
|
+
console.log('[Community] Generated new Nostr keypair:', pubkey);
|
|
368
|
+
return keypair;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Publish stats to Nostr relays
|
|
372
|
+
*/
|
|
373
|
+
async publishToNostr() {
|
|
374
|
+
if (!this.config.enabled) {
|
|
375
|
+
return { success: false, error: 'Community sharing not enabled' };
|
|
376
|
+
}
|
|
377
|
+
const stats = this.collectLocalStats();
|
|
378
|
+
if (stats.length === 0) {
|
|
379
|
+
return { success: false, error: 'No stats to publish' };
|
|
380
|
+
}
|
|
381
|
+
const keypair = this.getNostrKeypair();
|
|
382
|
+
const relayUrls = [
|
|
383
|
+
'wss://relay.nostr.band',
|
|
384
|
+
'wss://nos.lol',
|
|
385
|
+
'wss://relay.damus.io',
|
|
386
|
+
];
|
|
387
|
+
const eventTemplate = {
|
|
388
|
+
kind: 31234, // Custom kind for model performance reports
|
|
389
|
+
created_at: Math.floor(Date.now() / 1000),
|
|
390
|
+
tags: [
|
|
391
|
+
['client', '0xkobold'],
|
|
392
|
+
['version', '1.0'],
|
|
393
|
+
],
|
|
394
|
+
content: JSON.stringify({
|
|
395
|
+
version: 1,
|
|
396
|
+
userId: this.userId,
|
|
397
|
+
models: stats.map(s => ({
|
|
398
|
+
n: s.modelName,
|
|
399
|
+
r: Math.round(s.avgRating * 10) / 10, // Compact format
|
|
400
|
+
l: Math.round(s.avgLatency),
|
|
401
|
+
s: Math.round(s.successRate * 100),
|
|
402
|
+
u: s.usageCount,
|
|
403
|
+
t: s.taskStats.map(t => [t.taskType, t.avgRating, t.successRate]),
|
|
404
|
+
b: s.bestFor,
|
|
405
|
+
})),
|
|
406
|
+
}),
|
|
407
|
+
};
|
|
408
|
+
try {
|
|
409
|
+
// Sign and finalize the event
|
|
410
|
+
const privkeyBytes = Uint8Array.from(Buffer.from(keypair.privkey, 'hex'));
|
|
411
|
+
const signedEvent = finalizeEvent(eventTemplate, privkeyBytes);
|
|
412
|
+
// Verify signature
|
|
413
|
+
if (!verifyEvent(signedEvent)) {
|
|
414
|
+
return { success: false, error: 'Invalid event signature' };
|
|
415
|
+
}
|
|
416
|
+
// Publish using SimplePool
|
|
417
|
+
const pool = new SimplePool();
|
|
418
|
+
let publishedCount = 0;
|
|
419
|
+
try {
|
|
420
|
+
const promises = pool.publish(relayUrls, signedEvent);
|
|
421
|
+
const results = await Promise.allSettled(promises);
|
|
422
|
+
for (const result of results) {
|
|
423
|
+
if (result.status === 'fulfilled' && result.value) {
|
|
424
|
+
publishedCount++;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
finally {
|
|
429
|
+
pool.close(relayUrls);
|
|
430
|
+
}
|
|
431
|
+
if (publishedCount > 0) {
|
|
432
|
+
this.config.lastSubmitted = Date.now();
|
|
433
|
+
this.saveConfig();
|
|
434
|
+
console.log(`[Community] Published to ${publishedCount} Nostr relays`);
|
|
435
|
+
return { success: true, eventId: signedEvent.id };
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
return { success: false, error: 'Failed to publish to any relay' };
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
catch (err) {
|
|
442
|
+
console.error('[Community] Nostr publish error:', err);
|
|
443
|
+
return { success: false, error: err?.message || 'Unknown error' };
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Fetch community stats from Nostr
|
|
448
|
+
*/
|
|
449
|
+
async fetchFromNostr() {
|
|
450
|
+
const relayUrls = [
|
|
451
|
+
'wss://relay.nostr.band',
|
|
452
|
+
'wss://nos.lol',
|
|
453
|
+
'wss://relay.damus.io',
|
|
454
|
+
];
|
|
455
|
+
const allStats = new Map();
|
|
456
|
+
let totalContributors = 0;
|
|
457
|
+
const seenPubkeys = new Set();
|
|
458
|
+
try {
|
|
459
|
+
const pool = new SimplePool();
|
|
460
|
+
// Query for model performance events
|
|
461
|
+
const events = await pool.querySync(relayUrls, {
|
|
462
|
+
kinds: [31234],
|
|
463
|
+
limit: 100,
|
|
464
|
+
});
|
|
465
|
+
pool.close(relayUrls);
|
|
466
|
+
for (const event of events) {
|
|
467
|
+
if (!verifyEvent(event))
|
|
468
|
+
continue;
|
|
469
|
+
if (seenPubkeys.has(event.pubkey))
|
|
470
|
+
continue;
|
|
471
|
+
seenPubkeys.add(event.pubkey);
|
|
472
|
+
totalContributors++;
|
|
473
|
+
try {
|
|
474
|
+
const content = JSON.parse(event.content);
|
|
475
|
+
if (!content.models)
|
|
476
|
+
continue;
|
|
477
|
+
for (const m of content.models) {
|
|
478
|
+
const existing = allStats.get(m.n);
|
|
479
|
+
const newStats = {
|
|
480
|
+
modelName: m.n,
|
|
481
|
+
avgRating: existing
|
|
482
|
+
? (existing.avgRating * existing.usageCount + m.r) / (existing.usageCount + 1)
|
|
483
|
+
: m.r,
|
|
484
|
+
avgLatency: existing
|
|
485
|
+
? (existing.avgLatency * existing.usageCount + m.l) / (existing.usageCount + 1)
|
|
486
|
+
: m.l,
|
|
487
|
+
successRate: existing
|
|
488
|
+
? (existing.successRate * existing.usageCount + m.s / 100) / (existing.usageCount + 1)
|
|
489
|
+
: m.s / 100,
|
|
490
|
+
usageCount: existing ? existing.usageCount + 1 : 1,
|
|
491
|
+
taskStats: m.t?.map((t) => ({
|
|
492
|
+
taskType: t[0],
|
|
493
|
+
avgRating: t[1],
|
|
494
|
+
successRate: t[2],
|
|
495
|
+
avgLatency: 0,
|
|
496
|
+
usageCount: 1,
|
|
497
|
+
})) || [],
|
|
498
|
+
bestFor: m.b || [],
|
|
499
|
+
lastUpdated: event.created_at * 1000,
|
|
500
|
+
contributorCount: totalContributors,
|
|
501
|
+
};
|
|
502
|
+
allStats.set(m.n, newStats);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
catch (e) {
|
|
506
|
+
// Skip malformed events
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
if (allStats.size === 0)
|
|
510
|
+
return null;
|
|
511
|
+
const data = {
|
|
512
|
+
version: '1.0',
|
|
513
|
+
updatedAt: Date.now(),
|
|
514
|
+
generatedAt: new Date().toISOString(),
|
|
515
|
+
totalContributors,
|
|
516
|
+
models: Array.from(allStats.values()),
|
|
517
|
+
};
|
|
518
|
+
// Cache the result
|
|
519
|
+
writeFileSync(DATA_PATH, JSON.stringify(data, null, 2));
|
|
520
|
+
this.config.lastFetched = Date.now();
|
|
521
|
+
this.saveConfig();
|
|
522
|
+
console.log(`[Community] Fetched ${allStats.size} models from ${totalContributors} Nostr contributors`);
|
|
523
|
+
return data;
|
|
524
|
+
}
|
|
525
|
+
catch (err) {
|
|
526
|
+
console.error('[Community] Nostr fetch error:', err);
|
|
527
|
+
return null;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// ============================================================================
|
|
531
|
+
// Auto-Submit (if enabled and interval passed)
|
|
532
|
+
// ============================================================================
|
|
533
|
+
/**
|
|
534
|
+
* Check if should auto-submit
|
|
535
|
+
*/
|
|
536
|
+
shouldSubmit() {
|
|
537
|
+
if (!this.config.enabled)
|
|
538
|
+
return false;
|
|
539
|
+
const hoursSinceLastSubmit = this.config.lastSubmitted
|
|
540
|
+
? (Date.now() - this.config.lastSubmitted) / (1000 * 60 * 60)
|
|
541
|
+
: Infinity;
|
|
542
|
+
return hoursSinceLastSubmit >= this.config.submitInterval;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Auto-submit if interval passed (called periodically)
|
|
546
|
+
*/
|
|
547
|
+
async autoSubmit() {
|
|
548
|
+
if (!this.shouldSubmit())
|
|
549
|
+
return false;
|
|
550
|
+
// For now, just save locally - user can manually submit
|
|
551
|
+
// In future, could send to actual endpoint
|
|
552
|
+
const outputPath = this.saveSubmissionLocally();
|
|
553
|
+
this.config.lastSubmitted = Date.now();
|
|
554
|
+
this.saveConfig();
|
|
555
|
+
return true;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
// ============================================================================
|
|
559
|
+
// Singleton
|
|
560
|
+
// ============================================================================
|
|
561
|
+
let service = null;
|
|
562
|
+
export function getCommunityAnalytics() {
|
|
563
|
+
if (!service) {
|
|
564
|
+
service = new CommunityAnalyticsService();
|
|
565
|
+
}
|
|
566
|
+
return service;
|
|
567
|
+
}
|
|
568
|
+
export { CommunityAnalyticsService };
|
|
569
|
+
//# sourceMappingURL=community-analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-analytics.js","sourceRoot":"","sources":["../../../src/llm/community-analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/src/llm/index.js
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLM Module
|
|
2
|
+
* LLM Module - Unified Model Router
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Two-layer architecture:
|
|
5
|
+
* - router-core.ts: The brains (scoring, learning, selection)
|
|
6
|
+
* - router-commands.ts: The plumbing (singleton, commands, status)
|
|
7
|
+
* - model-discovery.ts: Data source (API fetching, caching)
|
|
8
|
+
* - model-scoring-db.ts: Persistent performance tracking
|
|
9
|
+
* - model-popularity.ts: Community popularity (Ollama + Nostr)
|
|
10
|
+
* - multi-provider.ts: Multi-provider routing (Ollama, Anthropic)
|
|
5
11
|
*/
|
|
12
|
+
// Router core (brains)
|
|
13
|
+
export { AdaptiveModelRouter, createRouter } from './router-core';
|
|
14
|
+
// Router commands (plumbing)
|
|
15
|
+
export { getRouter, isRouterReady, getRouterStatus, createRoutedOllamaProvider, handleRouterCommand, handleModelsCommand, handleRateCommand, handleProvidersCommand, handleModelRankingsCommand, handleTierListCommand, handlePopularityCommand, handleRefreshPopularity, handleModelStatsCommand, handleCommunityCommand, handleBestForCommand, getFooterStatus,
|
|
16
|
+
// Status state
|
|
17
|
+
setCurrentModel, getCurrentModel, clearCurrentModel, } from './router-commands';
|
|
18
|
+
// Model discovery
|
|
19
|
+
export { getModelDiscoveryService, ModelDiscoveryService, } from './model-discovery';
|
|
20
|
+
// Model scoring database
|
|
21
|
+
export { getModelScoringDB, closeModelScoringDB, ModelScoringDB, } from './model-scoring-db';
|
|
22
|
+
// Model popularity
|
|
23
|
+
export { getModelPopularityService, closeModelPopularityService, createModelReportEvent, } from './model-popularity';
|
|
24
|
+
// Community analytics
|
|
25
|
+
export { getCommunityAnalytics, CommunityAnalyticsService, } from './community-analytics';
|
|
26
|
+
// Multi-provider routing
|
|
27
|
+
export { MultiProviderRouter, getMultiProviderRouter, getProviderRegistry, chat, listAllModels, getProviderStatuses, } from './multi-provider';
|
|
28
|
+
// Types
|
|
6
29
|
export * from './types';
|
|
7
|
-
|
|
8
|
-
export {
|
|
30
|
+
// Providers (legacy exports)
|
|
31
|
+
export { OllamaProvider, createOllamaProvider, getOllamaProvider } from './ollama';
|
|
32
|
+
export { AnthropicProvider } from './anthropic';
|
|
9
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlE,6BAA6B;AAC7B,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe;AACf,eAAe;AACf,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,kBAAkB;AAClB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAO5B,mBAAmB;AACnB,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAO5B,sBAAsB;AACtB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAQ/B,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|