@kernel.chat/kbot 3.35.1 → 3.37.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/dist/codebase-guardian.d.ts +64 -0
- package/dist/codebase-guardian.d.ts.map +1 -0
- package/dist/codebase-guardian.js +486 -0
- package/dist/codebase-guardian.js.map +1 -0
- package/dist/collective-learning.d.ts +47 -0
- package/dist/collective-learning.d.ts.map +1 -0
- package/dist/collective-learning.js +315 -0
- package/dist/collective-learning.js.map +1 -0
- package/dist/community-manager.d.ts +60 -0
- package/dist/community-manager.d.ts.map +1 -0
- package/dist/community-manager.js +400 -0
- package/dist/community-manager.js.map +1 -0
- package/dist/dream-mode.d.ts +23 -0
- package/dist/dream-mode.d.ts.map +1 -0
- package/dist/dream-mode.js +352 -0
- package/dist/dream-mode.js.map +1 -0
- package/dist/forge-marketplace.d.ts +40 -0
- package/dist/forge-marketplace.d.ts.map +1 -0
- package/dist/forge-marketplace.js +222 -0
- package/dist/forge-marketplace.js.map +1 -0
- package/dist/kbot-service.d.ts +2 -0
- package/dist/kbot-service.d.ts.map +1 -0
- package/dist/kbot-service.js +197 -0
- package/dist/kbot-service.js.map +1 -0
- package/dist/meta-agent.d.ts +62 -0
- package/dist/meta-agent.d.ts.map +1 -0
- package/dist/meta-agent.js +288 -0
- package/dist/meta-agent.js.map +1 -0
- package/dist/tools/bootstrapper.d.ts +2 -0
- package/dist/tools/bootstrapper.d.ts.map +1 -0
- package/dist/tools/bootstrapper.js +559 -0
- package/dist/tools/bootstrapper.js.map +1 -0
- package/dist/tools/content-engine.d.ts +2 -0
- package/dist/tools/content-engine.d.ts.map +1 -0
- package/dist/tools/content-engine.js +362 -0
- package/dist/tools/content-engine.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// kbot Collective Learning — Anonymized Pattern Sharing
|
|
2
|
+
//
|
|
3
|
+
// The core thesis: user #1000 is smarter than user #1.
|
|
4
|
+
// Every kbot contributes anonymized patterns. Every kbot benefits from all.
|
|
5
|
+
//
|
|
6
|
+
// What gets shared (anonymized):
|
|
7
|
+
// - Pattern type, language, framework, success rate, tool used, agent used
|
|
8
|
+
//
|
|
9
|
+
// What NEVER gets shared:
|
|
10
|
+
// - File paths, usernames, project names, source code, API keys
|
|
11
|
+
// - Conversation content, personal identifiers
|
|
12
|
+
//
|
|
13
|
+
// Privacy: device fingerprint is a one-way SHA-256 hash — not reversible.
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
17
|
+
import { createHash } from 'node:crypto';
|
|
18
|
+
const KBOT_DIR = join(homedir(), '.kbot');
|
|
19
|
+
const MEMORY_DIR = join(KBOT_DIR, 'memory');
|
|
20
|
+
const COLLECTIVE_DIR = join(KBOT_DIR, 'collective');
|
|
21
|
+
const PATTERNS_FILE = join(MEMORY_DIR, 'patterns.json');
|
|
22
|
+
const COLLECTIVE_PATTERNS_FILE = join(COLLECTIVE_DIR, 'learned-patterns.json');
|
|
23
|
+
const SYNC_STATE_FILE = join(COLLECTIVE_DIR, 'learning-sync.json');
|
|
24
|
+
const COLLECTIVE_URL = process.env.KBOT_COLLECTIVE_URL || 'https://kernel.chat/api/collective';
|
|
25
|
+
// ── Helpers ──
|
|
26
|
+
function ensureDir(dir) {
|
|
27
|
+
if (!existsSync(dir))
|
|
28
|
+
mkdirSync(dir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
function loadJSON(path, fallback) {
|
|
31
|
+
try {
|
|
32
|
+
if (existsSync(path)) {
|
|
33
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Corrupt file — return fallback
|
|
38
|
+
}
|
|
39
|
+
return fallback;
|
|
40
|
+
}
|
|
41
|
+
function saveJSON(path, data) {
|
|
42
|
+
const dir = join(path, '..');
|
|
43
|
+
ensureDir(dir);
|
|
44
|
+
writeFileSync(path, JSON.stringify(data, null, 2));
|
|
45
|
+
}
|
|
46
|
+
function loadSyncState() {
|
|
47
|
+
return loadJSON(SYNC_STATE_FILE, {
|
|
48
|
+
lastContribute: null,
|
|
49
|
+
lastFetch: null,
|
|
50
|
+
totalContributed: 0,
|
|
51
|
+
totalGained: 0,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function saveSyncState(state) {
|
|
55
|
+
ensureDir(COLLECTIVE_DIR);
|
|
56
|
+
writeFileSync(SYNC_STATE_FILE, JSON.stringify(state, null, 2));
|
|
57
|
+
}
|
|
58
|
+
// ── PII Stripping ──
|
|
59
|
+
/** Patterns that look like file paths, usernames, or project-specific identifiers */
|
|
60
|
+
const PII_PATTERNS = [
|
|
61
|
+
/\/[Uu]sers\/[^/\s]+/g, // /Users/username
|
|
62
|
+
/\/home\/[^/\s]+/g, // /home/username
|
|
63
|
+
/[Cc]:\\[Uu]sers\\[^\\s]+/g, // C:\Users\username (Windows)
|
|
64
|
+
/~\/[^\s]+/g, // ~/path/to/something
|
|
65
|
+
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, // emails
|
|
66
|
+
/\b[A-Z][a-z]+(?:[A-Z][a-z]+){1,}\b/g, // CamelCase project names (heuristic)
|
|
67
|
+
];
|
|
68
|
+
/** Strip PII from a string — removes paths, usernames, project names */
|
|
69
|
+
function stripPII(text) {
|
|
70
|
+
let cleaned = text;
|
|
71
|
+
for (const pattern of PII_PATTERNS) {
|
|
72
|
+
cleaned = cleaned.replace(pattern, '[REDACTED]');
|
|
73
|
+
}
|
|
74
|
+
return cleaned;
|
|
75
|
+
}
|
|
76
|
+
/** Strip PII from keywords — only keep generic tech terms */
|
|
77
|
+
const SAFE_KEYWORDS = new Set([
|
|
78
|
+
'react', 'typescript', 'node', 'python', 'rust', 'go', 'docker',
|
|
79
|
+
'api', 'database', 'test', 'deploy', 'build', 'fix', 'bug', 'error',
|
|
80
|
+
'component', 'function', 'class', 'import', 'export', 'async', 'await',
|
|
81
|
+
'fetch', 'route', 'auth', 'css', 'html', 'json', 'sql', 'git', 'npm',
|
|
82
|
+
'install', 'config', 'server', 'client', 'hook', 'state', 'redux',
|
|
83
|
+
'zustand', 'supabase', 'stripe', 'vite', 'webpack', 'nextjs', 'express',
|
|
84
|
+
'fastify', 'django', 'flask', 'rails', 'spring', 'vue', 'angular',
|
|
85
|
+
'svelte', 'tailwind', 'prisma', 'drizzle', 'postgres', 'mysql', 'redis',
|
|
86
|
+
'mongodb', 'graphql', 'rest', 'websocket', 'grpc', 'terraform', 'kubernetes',
|
|
87
|
+
'aws', 'gcp', 'azure', 'vercel', 'netlify', 'cloudflare', 'deno', 'bun',
|
|
88
|
+
]);
|
|
89
|
+
function sanitizeKeywords(keywords) {
|
|
90
|
+
return keywords
|
|
91
|
+
.map(k => k.toLowerCase().trim())
|
|
92
|
+
.filter(k => SAFE_KEYWORDS.has(k));
|
|
93
|
+
}
|
|
94
|
+
/** Only keep tool names — no args or paths */
|
|
95
|
+
function sanitizeToolNames(tools) {
|
|
96
|
+
return tools
|
|
97
|
+
.map(t => t.replace(/[^a-z0-9_-]/gi, '').slice(0, 50))
|
|
98
|
+
.filter(Boolean);
|
|
99
|
+
}
|
|
100
|
+
// ── Device Fingerprint ──
|
|
101
|
+
/** Generate a non-identifiable device fingerprint for dedup.
|
|
102
|
+
* Hashes hostname + homedir path + platform — not reversible. */
|
|
103
|
+
function getDeviceFingerprint() {
|
|
104
|
+
const os = require('node:os');
|
|
105
|
+
const raw = `${os.hostname()}:${os.homedir()}:${os.platform()}:${os.arch()}`;
|
|
106
|
+
return createHash('sha256').update(raw).digest('hex').slice(0, 16);
|
|
107
|
+
}
|
|
108
|
+
// ── Detect Language & Framework from Keywords ──
|
|
109
|
+
const LANGUAGE_MAP = {
|
|
110
|
+
typescript: 'TypeScript', javascript: 'JavaScript', python: 'Python',
|
|
111
|
+
rust: 'Rust', go: 'Go', java: 'Java', ruby: 'Ruby', php: 'PHP',
|
|
112
|
+
swift: 'Swift', kotlin: 'Kotlin', csharp: 'C#', cpp: 'C++',
|
|
113
|
+
};
|
|
114
|
+
const FRAMEWORK_MAP = {
|
|
115
|
+
react: 'React', nextjs: 'Next.js', vue: 'Vue', angular: 'Angular',
|
|
116
|
+
svelte: 'Svelte', express: 'Express', fastify: 'Fastify', django: 'Django',
|
|
117
|
+
flask: 'Flask', rails: 'Rails', spring: 'Spring', prisma: 'Prisma',
|
|
118
|
+
drizzle: 'Drizzle', tailwind: 'Tailwind', vite: 'Vite', webpack: 'Webpack',
|
|
119
|
+
};
|
|
120
|
+
function detectLanguage(keywords) {
|
|
121
|
+
for (const kw of keywords) {
|
|
122
|
+
const lang = LANGUAGE_MAP[kw.toLowerCase()];
|
|
123
|
+
if (lang)
|
|
124
|
+
return lang;
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
function detectFramework(keywords) {
|
|
129
|
+
for (const kw of keywords) {
|
|
130
|
+
const fw = FRAMEWORK_MAP[kw.toLowerCase()];
|
|
131
|
+
if (fw)
|
|
132
|
+
return fw;
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
// ── Core API ──
|
|
137
|
+
/** Read ~/.kbot/memory/patterns.json, strip PII, keep only safe fields.
|
|
138
|
+
* Returns an anonymized array suitable for sharing. */
|
|
139
|
+
export function collectAnonymizedPatterns() {
|
|
140
|
+
ensureDir(MEMORY_DIR);
|
|
141
|
+
const raw = loadJSON(PATTERNS_FILE, []);
|
|
142
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
143
|
+
return [];
|
|
144
|
+
return raw.map(p => {
|
|
145
|
+
const keywords = Array.isArray(p.keywords) ? sanitizeKeywords(p.keywords) : [];
|
|
146
|
+
const toolSequence = Array.isArray(p.toolSequence) ? sanitizeToolNames(p.toolSequence) : [];
|
|
147
|
+
const intent = typeof p.intent === 'string' ? stripPII(p.intent) : '';
|
|
148
|
+
return {
|
|
149
|
+
type: intent ? 'intent_match' : 'unknown',
|
|
150
|
+
language: detectLanguage(keywords),
|
|
151
|
+
framework: detectFramework(keywords),
|
|
152
|
+
successRate: typeof p.successRate === 'number' ? Math.round(p.successRate * 100) / 100 : 0,
|
|
153
|
+
toolsUsed: toolSequence,
|
|
154
|
+
agentUsed: typeof p.agentUsed === 'string' ? p.agentUsed : null,
|
|
155
|
+
hits: typeof p.hits === 'number' ? p.hits : 1,
|
|
156
|
+
keywords,
|
|
157
|
+
};
|
|
158
|
+
}).filter(p => p.keywords.length > 0 || p.toolsUsed.length > 0);
|
|
159
|
+
}
|
|
160
|
+
/** POST anonymized patterns to the collective endpoint.
|
|
161
|
+
* Includes a device fingerprint hash for dedup (not identifiable).
|
|
162
|
+
* Returns count of patterns contributed. */
|
|
163
|
+
export async function contributePatterns() {
|
|
164
|
+
const patterns = collectAnonymizedPatterns();
|
|
165
|
+
if (patterns.length === 0)
|
|
166
|
+
return 0;
|
|
167
|
+
const fingerprint = getDeviceFingerprint();
|
|
168
|
+
try {
|
|
169
|
+
const res = await fetch(`${COLLECTIVE_URL}/contribute`, {
|
|
170
|
+
method: 'POST',
|
|
171
|
+
headers: { 'Content-Type': 'application/json' },
|
|
172
|
+
body: JSON.stringify({
|
|
173
|
+
device_fingerprint: fingerprint,
|
|
174
|
+
patterns,
|
|
175
|
+
version: '1.0.0',
|
|
176
|
+
timestamp: new Date().toISOString(),
|
|
177
|
+
}),
|
|
178
|
+
signal: AbortSignal.timeout(10_000),
|
|
179
|
+
});
|
|
180
|
+
if (!res.ok) {
|
|
181
|
+
if (process.env.KBOT_DEBUG) {
|
|
182
|
+
console.error(`[collective-learning] contribute failed: ${res.status}`);
|
|
183
|
+
}
|
|
184
|
+
return 0;
|
|
185
|
+
}
|
|
186
|
+
const data = await res.json();
|
|
187
|
+
return data.accepted ?? patterns.length;
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
if (process.env.KBOT_DEBUG) {
|
|
191
|
+
console.error('[collective-learning] contribute error:', err.message);
|
|
192
|
+
}
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/** GET patterns from the collective endpoint.
|
|
197
|
+
* Merges with local patterns, preferring higher-confidence entries.
|
|
198
|
+
* Returns count of new patterns gained. */
|
|
199
|
+
export async function fetchCollectivePatterns() {
|
|
200
|
+
ensureDir(COLLECTIVE_DIR);
|
|
201
|
+
try {
|
|
202
|
+
const res = await fetch(`${COLLECTIVE_URL}/patterns`, {
|
|
203
|
+
method: 'GET',
|
|
204
|
+
headers: { 'Content-Type': 'application/json' },
|
|
205
|
+
signal: AbortSignal.timeout(10_000),
|
|
206
|
+
});
|
|
207
|
+
if (!res.ok) {
|
|
208
|
+
if (process.env.KBOT_DEBUG) {
|
|
209
|
+
console.error(`[collective-learning] fetch failed: ${res.status}`);
|
|
210
|
+
}
|
|
211
|
+
return 0;
|
|
212
|
+
}
|
|
213
|
+
const data = await res.json();
|
|
214
|
+
const remote = data.patterns;
|
|
215
|
+
if (!Array.isArray(remote) || remote.length === 0)
|
|
216
|
+
return 0;
|
|
217
|
+
// Load existing collective patterns cache
|
|
218
|
+
const existing = loadJSON(COLLECTIVE_PATTERNS_FILE, []);
|
|
219
|
+
const existingMap = new Map();
|
|
220
|
+
for (const p of existing) {
|
|
221
|
+
const key = patternKey(p);
|
|
222
|
+
existingMap.set(key, p);
|
|
223
|
+
}
|
|
224
|
+
let gained = 0;
|
|
225
|
+
for (const p of remote) {
|
|
226
|
+
const key = patternKey(p);
|
|
227
|
+
const local = existingMap.get(key);
|
|
228
|
+
if (!local) {
|
|
229
|
+
// New pattern — add it
|
|
230
|
+
existingMap.set(key, p);
|
|
231
|
+
gained++;
|
|
232
|
+
}
|
|
233
|
+
else if (p.confidence > local.confidence) {
|
|
234
|
+
// Higher confidence from collective — update
|
|
235
|
+
existingMap.set(key, p);
|
|
236
|
+
gained++;
|
|
237
|
+
}
|
|
238
|
+
// Otherwise keep local (already same or better confidence)
|
|
239
|
+
}
|
|
240
|
+
// Save merged collective patterns
|
|
241
|
+
const merged = Array.from(existingMap.values())
|
|
242
|
+
.sort((a, b) => b.confidence - a.confidence)
|
|
243
|
+
.slice(0, 500); // Cap at 500 patterns to keep file reasonable
|
|
244
|
+
saveJSON(COLLECTIVE_PATTERNS_FILE, merged);
|
|
245
|
+
return gained;
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
if (process.env.KBOT_DEBUG) {
|
|
249
|
+
console.error('[collective-learning] fetch error:', err.message);
|
|
250
|
+
}
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/** Generate a stable key for pattern dedup */
|
|
255
|
+
function patternKey(p) {
|
|
256
|
+
const parts = [
|
|
257
|
+
p.type,
|
|
258
|
+
p.language || '',
|
|
259
|
+
p.framework || '',
|
|
260
|
+
...(p.toolsUsed || []).sort(),
|
|
261
|
+
...(p.keywords || []).sort(),
|
|
262
|
+
];
|
|
263
|
+
return parts.join(':').toLowerCase();
|
|
264
|
+
}
|
|
265
|
+
/** Orchestrate the full collective sync cycle:
|
|
266
|
+
* collect -> contribute -> fetch -> merge.
|
|
267
|
+
* Returns a human-readable summary. */
|
|
268
|
+
export async function runCollectiveSync() {
|
|
269
|
+
const localPatterns = collectAnonymizedPatterns();
|
|
270
|
+
const localCount = localPatterns.length;
|
|
271
|
+
// Load existing collective patterns for baseline
|
|
272
|
+
const beforeCount = loadJSON(COLLECTIVE_PATTERNS_FILE, []).length;
|
|
273
|
+
// Contribute our patterns
|
|
274
|
+
const contributed = await contributePatterns();
|
|
275
|
+
// Fetch patterns from the collective
|
|
276
|
+
const gained = await fetchCollectivePatterns();
|
|
277
|
+
// Calculate "smarter" percentage: ratio of collective patterns to local
|
|
278
|
+
const afterCount = loadJSON(COLLECTIVE_PATTERNS_FILE, []).length;
|
|
279
|
+
const totalKnowledge = localCount + afterCount;
|
|
280
|
+
const smarterPct = totalKnowledge > 0
|
|
281
|
+
? Math.round((afterCount / totalKnowledge) * 100)
|
|
282
|
+
: 0;
|
|
283
|
+
// Update sync state
|
|
284
|
+
const state = loadSyncState();
|
|
285
|
+
state.lastContribute = new Date().toISOString();
|
|
286
|
+
state.lastFetch = new Date().toISOString();
|
|
287
|
+
state.totalContributed += contributed;
|
|
288
|
+
state.totalGained += gained;
|
|
289
|
+
saveSyncState(state);
|
|
290
|
+
return [
|
|
291
|
+
`Contributed ${contributed} patterns.`,
|
|
292
|
+
`Gained ${gained} new patterns from the collective.`,
|
|
293
|
+
`kbot is now ${smarterPct}% smarter.`,
|
|
294
|
+
`(${localCount} local + ${afterCount} collective = ${totalKnowledge} total patterns)`,
|
|
295
|
+
].join(' ');
|
|
296
|
+
}
|
|
297
|
+
/** Get collective learning stats for display */
|
|
298
|
+
export function getCollectiveLearningStats() {
|
|
299
|
+
const state = loadSyncState();
|
|
300
|
+
const collectivePatterns = loadJSON(COLLECTIVE_PATTERNS_FILE, []);
|
|
301
|
+
const localPatterns = loadJSON(PATTERNS_FILE, []);
|
|
302
|
+
return [
|
|
303
|
+
`Collective learning:`,
|
|
304
|
+
` Local patterns: ${localPatterns.length}`,
|
|
305
|
+
` Collective patterns: ${collectivePatterns.length}`,
|
|
306
|
+
` Total contributed: ${state.totalContributed}`,
|
|
307
|
+
` Total gained: ${state.totalGained}`,
|
|
308
|
+
` Last sync: ${state.lastFetch || 'never'}`,
|
|
309
|
+
].join('\n');
|
|
310
|
+
}
|
|
311
|
+
/** Load cached collective patterns for use by the routing/agent system */
|
|
312
|
+
export function getCachedCollectivePatterns() {
|
|
313
|
+
return loadJSON(COLLECTIVE_PATTERNS_FILE, []);
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=collective-learning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collective-learning.js","sourceRoot":"","sources":["../src/collective-learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface CommunityConfig {
|
|
2
|
+
/** Discord webhook URL for posting digests/notifications */
|
|
3
|
+
discord_webhook?: string;
|
|
4
|
+
/** GitHub repo in "owner/repo" format */
|
|
5
|
+
github_repo: string;
|
|
6
|
+
/** Email addresses for digest distribution */
|
|
7
|
+
email_list?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface FAQEntry {
|
|
10
|
+
question: string;
|
|
11
|
+
answer: string;
|
|
12
|
+
keywords: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface TriageResult {
|
|
15
|
+
issue: number;
|
|
16
|
+
title: string;
|
|
17
|
+
label: string;
|
|
18
|
+
response: string;
|
|
19
|
+
url: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CommunityDigest {
|
|
22
|
+
generatedAt: string;
|
|
23
|
+
repo: string;
|
|
24
|
+
openIssues: number;
|
|
25
|
+
openPRs: number;
|
|
26
|
+
newIssuesThisWeek: number;
|
|
27
|
+
newPRsThisWeek: number;
|
|
28
|
+
mergedPRsThisWeek: number;
|
|
29
|
+
stargazers: number;
|
|
30
|
+
npmDownloadsWeekly: number;
|
|
31
|
+
newContributors: string[];
|
|
32
|
+
markdown: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Fuzzy-match a question against the FAQ knowledge base.
|
|
36
|
+
* Returns the best matching answer or a polite fallback.
|
|
37
|
+
*/
|
|
38
|
+
export declare function answerFAQ(question: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Generate a personalized welcome message for a new contributor.
|
|
41
|
+
*/
|
|
42
|
+
export declare function welcomeContributor(username: string, platform: 'github' | 'discord' | 'email'): string;
|
|
43
|
+
/**
|
|
44
|
+
* Generate a formatted community digest from GitHub and npm data.
|
|
45
|
+
*/
|
|
46
|
+
export declare function generateDigest(repo?: string): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Run the community manager cycle.
|
|
49
|
+
*
|
|
50
|
+
* - Checks GitHub for new issues/PRs and triages them
|
|
51
|
+
* - Generates a daily community digest
|
|
52
|
+
* - Welcomes new contributors
|
|
53
|
+
* - Answers common questions from FAQ
|
|
54
|
+
*/
|
|
55
|
+
export declare function runCommunityManager(config: CommunityConfig): Promise<{
|
|
56
|
+
triaged: TriageResult[];
|
|
57
|
+
digest: string;
|
|
58
|
+
welcomed: string[];
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=community-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-manager.d.ts","sourceRoot":"","sources":["../src/community-manager.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AA+BD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAkID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8ClD;AAID;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAQrG;AAID;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2HnE;AAyBD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IAC1E,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAC,CAgHD"}
|