@kernel.chat/kbot 2.5.0 → 2.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/README.md +98 -42
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +140 -21
- package/dist/agent.js.map +1 -1
- package/dist/architect.d.ts +44 -0
- package/dist/architect.d.ts.map +1 -0
- package/dist/architect.js +403 -0
- package/dist/architect.js.map +1 -0
- package/dist/auth.d.ts +11 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +165 -7
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +251 -22
- package/dist/cli.js.map +1 -1
- package/dist/graph-memory.d.ts +98 -0
- package/dist/graph-memory.d.ts.map +1 -0
- package/dist/graph-memory.js +926 -0
- package/dist/graph-memory.js.map +1 -0
- package/dist/ide/acp-server.js +2 -2
- package/dist/ide/mcp-server.js +1 -1
- package/dist/lsp-client.d.ts +167 -0
- package/dist/lsp-client.d.ts.map +1 -0
- package/dist/lsp-client.js +679 -0
- package/dist/lsp-client.js.map +1 -0
- package/dist/matrix.d.ts +6 -0
- package/dist/matrix.d.ts.map +1 -1
- package/dist/matrix.js +98 -0
- package/dist/matrix.js.map +1 -1
- package/dist/mcp-plugins.d.ts +62 -0
- package/dist/mcp-plugins.d.ts.map +1 -0
- package/dist/mcp-plugins.js +551 -0
- package/dist/mcp-plugins.js.map +1 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +29 -0
- package/dist/planner.js.map +1 -1
- package/dist/provider-fallback.d.ts +51 -0
- package/dist/provider-fallback.d.ts.map +1 -0
- package/dist/provider-fallback.js +237 -0
- package/dist/provider-fallback.js.map +1 -0
- package/dist/repo-map.d.ts +9 -0
- package/dist/repo-map.d.ts.map +1 -0
- package/dist/repo-map.js +280 -0
- package/dist/repo-map.js.map +1 -0
- package/dist/self-eval.d.ts +45 -0
- package/dist/self-eval.d.ts.map +1 -0
- package/dist/self-eval.js +232 -0
- package/dist/self-eval.js.map +1 -0
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +22 -2
- package/dist/streaming.js.map +1 -1
- package/dist/task-ledger.d.ts +71 -0
- package/dist/task-ledger.d.ts.map +1 -0
- package/dist/task-ledger.js +282 -0
- package/dist/task-ledger.js.map +1 -0
- package/dist/tools/computer.js +3 -3
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/e2b-sandbox.d.ts +2 -0
- package/dist/tools/e2b-sandbox.d.ts.map +1 -0
- package/dist/tools/e2b-sandbox.js +460 -0
- package/dist/tools/e2b-sandbox.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp-tools.d.ts +2 -0
- package/dist/tools/lsp-tools.d.ts.map +1 -0
- package/dist/tools/lsp-tools.js +268 -0
- package/dist/tools/lsp-tools.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +2 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +228 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/quality.d.ts +2 -0
- package/dist/tools/quality.d.ts.map +1 -0
- package/dist/tools/quality.js +313 -0
- package/dist/tools/quality.js.map +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +33 -18
- package/dist/ui.js.map +1 -1
- package/package.json +27 -3
package/dist/planner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ByokProvider } from './auth.js';
|
|
2
|
+
export declare const TIERS: {
|
|
3
|
+
readonly premium: ByokProvider[];
|
|
4
|
+
readonly standard: ByokProvider[];
|
|
5
|
+
readonly fast: ByokProvider[];
|
|
6
|
+
readonly local: ByokProvider[];
|
|
7
|
+
};
|
|
8
|
+
export type Tier = keyof typeof TIERS;
|
|
9
|
+
export interface ProviderHealth {
|
|
10
|
+
provider: ByokProvider;
|
|
11
|
+
consecutiveFailures: number;
|
|
12
|
+
lastFailure: number | null;
|
|
13
|
+
lastSuccess: number | null;
|
|
14
|
+
avgLatencyMs: number;
|
|
15
|
+
isHealthy: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Record a successful provider call */
|
|
18
|
+
export declare function recordSuccess(provider: ByokProvider, latencyMs: number): void;
|
|
19
|
+
/** Record a failed provider call */
|
|
20
|
+
export declare function recordFailure(provider: ByokProvider, _error?: Error): void;
|
|
21
|
+
/** Get health snapshot for all tracked providers */
|
|
22
|
+
export declare function getProviderHealth(): ProviderHealth[];
|
|
23
|
+
/** Get the healthiest provider in a tier, preferring lowest latency */
|
|
24
|
+
export declare function getBestProvider(tier?: string): ByokProvider;
|
|
25
|
+
export interface FallbackOptions {
|
|
26
|
+
/** Max retries on same provider (default: 3) */
|
|
27
|
+
maxRetries?: number;
|
|
28
|
+
/** Base delay in ms for exponential backoff (default: 1000) */
|
|
29
|
+
baseDelayMs?: number;
|
|
30
|
+
/** Starting provider (default: inferred from config) */
|
|
31
|
+
startProvider?: ByokProvider;
|
|
32
|
+
/** API key resolver — given a provider, return its key or null */
|
|
33
|
+
getKey?: (provider: ByokProvider) => string | null;
|
|
34
|
+
/** Skip cross-tier fallback (default: false) */
|
|
35
|
+
sameTierOnly?: boolean;
|
|
36
|
+
/** Errors that should NOT trigger fallback (e.g., 400 bad request) */
|
|
37
|
+
noRetryErrors?: Array<string | RegExp>;
|
|
38
|
+
/** Called on each retry/failover for logging */
|
|
39
|
+
onFallback?: (from: ByokProvider, to: ByokProvider, level: 'retry' | 'same-tier' | 'cross-tier', error: Error) => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Execute a provider call with multi-level fallback.
|
|
43
|
+
*
|
|
44
|
+
* Level 1: Retry same provider with exponential backoff
|
|
45
|
+
* Level 2: Failover to another provider in the same tier
|
|
46
|
+
* Level 3: Degrade to a cheaper tier
|
|
47
|
+
*/
|
|
48
|
+
export declare function withFallback<T>(fn: (provider: ByokProvider, apiKey: string) => Promise<T>, options?: FallbackOptions): Promise<T>;
|
|
49
|
+
/** Reset all health data (for testing) */
|
|
50
|
+
export declare function resetHealth(): void;
|
|
51
|
+
//# sourceMappingURL=provider-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-fallback.d.ts","sourceRoot":"","sources":["../src/provider-fallback.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAI7C,eAAO,MAAM,KAAK;sBACsC,YAAY,EAAE;uBACO,YAAY,EAAE;mBACP,YAAY,EAAE;oBACzC,YAAY,EAAE;CAC7D,CAAA;AAEV,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,KAAK,CAAA;AAOrC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB;AAsCD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAM7E;AAED,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAI1E;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAapD;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAyB3D;AAID,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wDAAwD;IACxD,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,kEAAkE;IAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAA;IAClD,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sEAAsE;IACtE,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACtC,gDAAgD;IAChD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,YAAY,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACvH;AA+CD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,CAAC,CAAC,CAwFZ;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
// K:BOT Provider Fallback — Multi-level retry, failover, and load balancing
|
|
2
|
+
//
|
|
3
|
+
// Inspired by LiteLLM's fallback strategy. Three levels of resilience:
|
|
4
|
+
// 1. Retry — exponential backoff on same provider (1s, 2s, 4s)
|
|
5
|
+
// 2. Same-tier failover — try another provider at the same quality tier
|
|
6
|
+
// 3. Cross-tier fallback — degrade to a cheaper tier if all same-tier fail
|
|
7
|
+
//
|
|
8
|
+
// Health tracking per provider enables smart routing: prefer low-latency,
|
|
9
|
+
// high-reliability providers. The /dashboard command reads this data.
|
|
10
|
+
// ── Tier definitions ──
|
|
11
|
+
export const TIERS = {
|
|
12
|
+
premium: ['anthropic', 'openai', 'google', 'xai'],
|
|
13
|
+
standard: ['mistral', 'deepseek', 'cohere', 'perplexity', 'openrouter'],
|
|
14
|
+
fast: ['groq', 'together', 'fireworks', 'sambanova', 'cerebras', 'nvidia'],
|
|
15
|
+
local: ['ollama', 'lmstudio', 'jan', 'openclaw'],
|
|
16
|
+
};
|
|
17
|
+
/** Tier degradation order — premium → standard → fast → local */
|
|
18
|
+
const TIER_ORDER = ['premium', 'standard', 'fast', 'local'];
|
|
19
|
+
const HEALTH_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
|
|
20
|
+
const UNHEALTHY_THRESHOLD = 3;
|
|
21
|
+
const healthMap = new Map();
|
|
22
|
+
function getRecord(provider) {
|
|
23
|
+
let rec = healthMap.get(provider);
|
|
24
|
+
if (!rec) {
|
|
25
|
+
rec = { consecutiveFailures: 0, lastFailure: null, lastSuccess: null, totalLatencyMs: 0, requestCount: 0 };
|
|
26
|
+
healthMap.set(provider, rec);
|
|
27
|
+
}
|
|
28
|
+
return rec;
|
|
29
|
+
}
|
|
30
|
+
function isHealthy(rec) {
|
|
31
|
+
if (rec.consecutiveFailures <= UNHEALTHY_THRESHOLD)
|
|
32
|
+
return true;
|
|
33
|
+
// Unhealthy only if the failures are recent (within window)
|
|
34
|
+
if (rec.lastFailure && Date.now() - rec.lastFailure < HEALTH_WINDOW_MS)
|
|
35
|
+
return false;
|
|
36
|
+
// Failures are stale — give it another chance
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
function avgLatency(rec) {
|
|
40
|
+
if (rec.requestCount === 0)
|
|
41
|
+
return 0;
|
|
42
|
+
return Math.round(rec.totalLatencyMs / rec.requestCount);
|
|
43
|
+
}
|
|
44
|
+
/** Record a successful provider call */
|
|
45
|
+
export function recordSuccess(provider, latencyMs) {
|
|
46
|
+
const rec = getRecord(provider);
|
|
47
|
+
rec.consecutiveFailures = 0;
|
|
48
|
+
rec.lastSuccess = Date.now();
|
|
49
|
+
rec.totalLatencyMs += latencyMs;
|
|
50
|
+
rec.requestCount++;
|
|
51
|
+
}
|
|
52
|
+
/** Record a failed provider call */
|
|
53
|
+
export function recordFailure(provider, _error) {
|
|
54
|
+
const rec = getRecord(provider);
|
|
55
|
+
rec.consecutiveFailures++;
|
|
56
|
+
rec.lastFailure = Date.now();
|
|
57
|
+
}
|
|
58
|
+
/** Get health snapshot for all tracked providers */
|
|
59
|
+
export function getProviderHealth() {
|
|
60
|
+
const all = TIER_ORDER.flatMap(t => TIERS[t]);
|
|
61
|
+
return all.map(provider => {
|
|
62
|
+
const rec = getRecord(provider);
|
|
63
|
+
return {
|
|
64
|
+
provider,
|
|
65
|
+
consecutiveFailures: rec.consecutiveFailures,
|
|
66
|
+
lastFailure: rec.lastFailure,
|
|
67
|
+
lastSuccess: rec.lastSuccess,
|
|
68
|
+
avgLatencyMs: avgLatency(rec),
|
|
69
|
+
isHealthy: isHealthy(rec),
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/** Get the healthiest provider in a tier, preferring lowest latency */
|
|
74
|
+
export function getBestProvider(tier) {
|
|
75
|
+
const tierKey = (tier || 'premium');
|
|
76
|
+
const providers = TIERS[tierKey] || TIERS.premium;
|
|
77
|
+
// Filter to healthy providers
|
|
78
|
+
const healthy = providers.filter(p => isHealthy(getRecord(p)));
|
|
79
|
+
const candidates = healthy.length > 0 ? healthy : providers; // fallback to all if none healthy
|
|
80
|
+
// Sort by: healthy first, then lowest avg latency, then fewest failures
|
|
81
|
+
candidates.sort((a, b) => {
|
|
82
|
+
const ra = getRecord(a);
|
|
83
|
+
const rb = getRecord(b);
|
|
84
|
+
// Healthy providers first
|
|
85
|
+
const ha = isHealthy(ra) ? 0 : 1;
|
|
86
|
+
const hb = isHealthy(rb) ? 0 : 1;
|
|
87
|
+
if (ha !== hb)
|
|
88
|
+
return ha - hb;
|
|
89
|
+
// Fewer consecutive failures
|
|
90
|
+
if (ra.consecutiveFailures !== rb.consecutiveFailures)
|
|
91
|
+
return ra.consecutiveFailures - rb.consecutiveFailures;
|
|
92
|
+
// Lower latency (0 means no data — sort last among healthy)
|
|
93
|
+
const la = avgLatency(ra) || Infinity;
|
|
94
|
+
const lb = avgLatency(rb) || Infinity;
|
|
95
|
+
return la - lb;
|
|
96
|
+
});
|
|
97
|
+
return candidates[0];
|
|
98
|
+
}
|
|
99
|
+
// ── Tier lookup ──
|
|
100
|
+
function getTier(provider) {
|
|
101
|
+
for (const [tier, providers] of Object.entries(TIERS)) {
|
|
102
|
+
if (providers.includes(provider))
|
|
103
|
+
return tier;
|
|
104
|
+
}
|
|
105
|
+
return 'premium';
|
|
106
|
+
}
|
|
107
|
+
function getSameTierAlternatives(provider) {
|
|
108
|
+
const tier = getTier(provider);
|
|
109
|
+
return TIERS[tier].filter(p => p !== provider);
|
|
110
|
+
}
|
|
111
|
+
function getCheaperTiers(provider) {
|
|
112
|
+
const tier = getTier(provider);
|
|
113
|
+
const idx = TIER_ORDER.indexOf(tier);
|
|
114
|
+
return TIER_ORDER.slice(idx + 1);
|
|
115
|
+
}
|
|
116
|
+
// ── Error classification ──
|
|
117
|
+
function isNonRetryable(error, patterns) {
|
|
118
|
+
const msg = error.message || '';
|
|
119
|
+
// Always non-retryable: auth errors, bad requests, content policy
|
|
120
|
+
if (/\b(401|403|invalid.api.key|unauthorized|forbidden)\b/i.test(msg))
|
|
121
|
+
return true;
|
|
122
|
+
if (/\b(400|bad.request|invalid.model|content.policy)\b/i.test(msg))
|
|
123
|
+
return true;
|
|
124
|
+
// User-specified patterns
|
|
125
|
+
if (patterns) {
|
|
126
|
+
for (const p of patterns) {
|
|
127
|
+
if (typeof p === 'string' && msg.includes(p))
|
|
128
|
+
return true;
|
|
129
|
+
if (p instanceof RegExp && p.test(msg))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
// ── Sleep ──
|
|
136
|
+
function sleep(ms) {
|
|
137
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
138
|
+
}
|
|
139
|
+
// ── Main fallback function ──
|
|
140
|
+
/**
|
|
141
|
+
* Execute a provider call with multi-level fallback.
|
|
142
|
+
*
|
|
143
|
+
* Level 1: Retry same provider with exponential backoff
|
|
144
|
+
* Level 2: Failover to another provider in the same tier
|
|
145
|
+
* Level 3: Degrade to a cheaper tier
|
|
146
|
+
*/
|
|
147
|
+
export async function withFallback(fn, options) {
|
|
148
|
+
const maxRetries = options?.maxRetries ?? 3;
|
|
149
|
+
const baseDelay = options?.baseDelayMs ?? 1000;
|
|
150
|
+
const getKey = options?.getKey || (() => null);
|
|
151
|
+
const startProvider = options?.startProvider || 'anthropic';
|
|
152
|
+
const onFallback = options?.onFallback;
|
|
153
|
+
// Collect all errors for the final throw
|
|
154
|
+
const allErrors = [];
|
|
155
|
+
// Try a single provider with retries
|
|
156
|
+
async function tryProvider(provider) {
|
|
157
|
+
const key = getKey(provider);
|
|
158
|
+
if (!key)
|
|
159
|
+
return null; // no key configured — skip
|
|
160
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
161
|
+
const start = Date.now();
|
|
162
|
+
try {
|
|
163
|
+
const result = await fn(provider, key);
|
|
164
|
+
recordSuccess(provider, Date.now() - start);
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
169
|
+
recordFailure(provider, error);
|
|
170
|
+
allErrors.push({ provider, error });
|
|
171
|
+
// Don't retry non-retryable errors
|
|
172
|
+
if (isNonRetryable(error, options?.noRetryErrors))
|
|
173
|
+
break;
|
|
174
|
+
// Last attempt — don't sleep
|
|
175
|
+
if (attempt < maxRetries - 1) {
|
|
176
|
+
const delay = baseDelay * Math.pow(2, attempt); // 1s, 2s, 4s
|
|
177
|
+
if (onFallback)
|
|
178
|
+
onFallback(provider, provider, 'retry', error);
|
|
179
|
+
await sleep(delay);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
// Level 1: Try the starting provider
|
|
186
|
+
const result1 = await tryProvider(startProvider);
|
|
187
|
+
if (result1 !== null)
|
|
188
|
+
return result1;
|
|
189
|
+
// Level 2: Same-tier failover
|
|
190
|
+
const alternatives = getSameTierAlternatives(startProvider)
|
|
191
|
+
.filter(p => isHealthy(getRecord(p)))
|
|
192
|
+
.sort((a, b) => {
|
|
193
|
+
const la = avgLatency(getRecord(a)) || Infinity;
|
|
194
|
+
const lb = avgLatency(getRecord(b)) || Infinity;
|
|
195
|
+
return la - lb;
|
|
196
|
+
});
|
|
197
|
+
for (const alt of alternatives) {
|
|
198
|
+
if (onFallback && allErrors.length > 0) {
|
|
199
|
+
onFallback(startProvider, alt, 'same-tier', allErrors[allErrors.length - 1].error);
|
|
200
|
+
}
|
|
201
|
+
const result2 = await tryProvider(alt);
|
|
202
|
+
if (result2 !== null)
|
|
203
|
+
return result2;
|
|
204
|
+
}
|
|
205
|
+
// Level 3: Cross-tier fallback
|
|
206
|
+
if (!options?.sameTierOnly) {
|
|
207
|
+
const cheaperTiers = getCheaperTiers(startProvider);
|
|
208
|
+
for (const tier of cheaperTiers) {
|
|
209
|
+
const best = getBestProvider(tier);
|
|
210
|
+
if (onFallback && allErrors.length > 0) {
|
|
211
|
+
onFallback(startProvider, best, 'cross-tier', allErrors[allErrors.length - 1].error);
|
|
212
|
+
}
|
|
213
|
+
const result3 = await tryProvider(best);
|
|
214
|
+
if (result3 !== null)
|
|
215
|
+
return result3;
|
|
216
|
+
// Try remaining providers in this tier
|
|
217
|
+
const remaining = TIERS[tier].filter(p => p !== best && isHealthy(getRecord(p)));
|
|
218
|
+
for (const p of remaining) {
|
|
219
|
+
const result4 = await tryProvider(p);
|
|
220
|
+
if (result4 !== null)
|
|
221
|
+
return result4;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Everything failed — throw with context
|
|
226
|
+
const lastErr = allErrors[allErrors.length - 1];
|
|
227
|
+
const providers = [...new Set(allErrors.map(e => e.provider))];
|
|
228
|
+
const msg = `All providers failed (tried: ${providers.join(', ')}). Last error: ${lastErr?.error.message || 'unknown'}`;
|
|
229
|
+
const finalError = new Error(msg);
|
|
230
|
+
finalError.providerErrors = allErrors;
|
|
231
|
+
throw finalError;
|
|
232
|
+
}
|
|
233
|
+
/** Reset all health data (for testing) */
|
|
234
|
+
export function resetHealth() {
|
|
235
|
+
healthMap.clear();
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=provider-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-fallback.js","sourceRoot":"","sources":["../src/provider-fallback.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,iEAAiE;AACjE,0EAA0E;AAC1E,6EAA6E;AAC7E,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AAItE,yBAAyB;AAEzB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAmB;IACpE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAmB;IACzF,IAAI,EAAM,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAmB;IAChG,KAAK,EAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAmB;CAC7D,CAAA;AAIV,iEAAiE;AACjE,MAAM,UAAU,GAAW,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAsBnE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,YAAY;AACnD,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEvD,SAAS,SAAS,CAAC,QAAsB;IACvC,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,EAAE,mBAAmB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;QAC1G,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,GAAiB;IAClC,IAAI,GAAG,CAAC,mBAAmB,IAAI,mBAAmB;QAAE,OAAO,IAAI,CAAA;IAC/D,4DAA4D;IAC5D,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,gBAAgB;QAAE,OAAO,KAAK,CAAA;IACpF,8CAA8C;IAC9C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAiB;IACnC,IAAI,GAAG,CAAC,YAAY,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,CAAA;AAC1D,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,QAAsB,EAAE,SAAiB;IACrE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC/B,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAA;IAC3B,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,GAAG,CAAC,cAAc,IAAI,SAAS,CAAA;IAC/B,GAAG,CAAC,YAAY,EAAE,CAAA;AACpB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,aAAa,CAAC,QAAsB,EAAE,MAAc;IAClE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC/B,GAAG,CAAC,mBAAmB,EAAE,CAAA;IACzB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC9B,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAmB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACxB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC/B,OAAO;YACL,QAAQ;YACR,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;YAC5C,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC;YAC7B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;SAC1B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,SAAS,CAAS,CAAA;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAA;IAEjD,8BAA8B;IAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA,CAAC,kCAAkC;IAE9F,wEAAwE;IACxE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACvB,0BAA0B;QAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAA;QAC7B,6BAA6B;QAC7B,IAAI,EAAE,CAAC,mBAAmB,KAAK,EAAE,CAAC,mBAAmB;YAAE,OAAO,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAA;QAC7G,4DAA4D;QAC5D,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAA;QACrC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAA;QACrC,OAAO,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC;AAqBD,oBAAoB;AAEpB,SAAS,OAAO,CAAC,QAAsB;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,IAAK,SAAqC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAY,CAAA;IACpF,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAsB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,QAAsB;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AAClC,CAAC;AAED,6BAA6B;AAE7B,SAAS,cAAc,CAAC,KAAY,EAAE,QAAiC;IACrE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;IAC/B,kEAAkE;IAClE,IAAI,uDAAuD,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAClF,IAAI,qDAAqD,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAChF,0BAA0B;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzD,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,cAAc;AAEd,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,+BAA+B;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAA0D,EAC1D,OAAyB;IAEzB,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAA;IAC9C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,WAAW,CAAA;IAC3D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAA;IAEtC,yCAAyC;IACzC,MAAM,SAAS,GAAoD,EAAE,CAAA;IAErE,qCAAqC;IACrC,KAAK,UAAU,WAAW,CAAC,QAAsB;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA,CAAC,2BAA2B;QAEjD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;gBACtC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;gBAC3C,OAAO,MAAM,CAAA;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACjE,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;gBAEnC,mCAAmC;gBACnC,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC;oBAAE,MAAK;gBAExD,6BAA6B;gBAC7B,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA,CAAC,aAAa;oBAC5D,IAAI,UAAU;wBAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;oBAC9D,MAAM,KAAK,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qCAAqC;IACrC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAA;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAA;IAEpC,8BAA8B;IAC9B,MAAM,YAAY,GAAG,uBAAuB,CAAC,aAAa,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAA;QAC/C,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAA;QAC/C,OAAO,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEJ,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACpF,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;IACtC,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;QACnD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACtF,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;YACvC,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAA;YAEpC,uCAAuC;YACvC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAChF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAA;gBACpC,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAA;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,gCAAgC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,CAAA;IACvH,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAChC;IAAC,UAAkB,CAAC,cAAc,GAAG,SAAS,CAAA;IAC/C,MAAM,UAAU,CAAA;AAClB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,WAAW;IACzB,SAAS,CAAC,KAAK,EAAE,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface RepoMapOptions {
|
|
2
|
+
maxDepth?: number;
|
|
3
|
+
maxFiles?: number;
|
|
4
|
+
}
|
|
5
|
+
/** Generate a compact repo map for LLM context */
|
|
6
|
+
export declare function generateRepoMap(rootDir: string, options?: RepoMapOptions): Promise<string>;
|
|
7
|
+
/** Get repo map with 60s cache. Resolves git root from cwd. */
|
|
8
|
+
export declare function getRepoMapForContext(cwd?: string): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=repo-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-map.d.ts","sourceRoot":"","sources":["../src/repo-map.ts"],"names":[],"mappings":"AAwQA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,kDAAkD;AAClD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CASjB;AAQD,+DAA+D;AAC/D,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBxE"}
|
package/dist/repo-map.js
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
// K:BOT Repo Map — Aider-style codebase indexer
|
|
2
|
+
//
|
|
3
|
+
// Walks a repo's file tree, extracts exported symbols from TS/JS/Python,
|
|
4
|
+
// and produces a compact tree string for LLM context injection.
|
|
5
|
+
// Uses only Node.js built-ins — no AST parser, no external deps.
|
|
6
|
+
import { readFileSync, readdirSync, statSync, existsSync } from 'node:fs';
|
|
7
|
+
import { join, relative, basename, extname } from 'node:path';
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
const MAX_OUTPUT_CHARS = 8000;
|
|
10
|
+
const CACHE_TTL_MS = 60_000;
|
|
11
|
+
// ── .gitignore handling ──
|
|
12
|
+
/** Parse .gitignore into simple match patterns */
|
|
13
|
+
function loadGitignorePatterns(rootDir) {
|
|
14
|
+
const gitignorePath = join(rootDir, '.gitignore');
|
|
15
|
+
if (!existsSync(gitignorePath))
|
|
16
|
+
return [];
|
|
17
|
+
try {
|
|
18
|
+
return readFileSync(gitignorePath, 'utf-8')
|
|
19
|
+
.split('\n')
|
|
20
|
+
.map(l => l.trim())
|
|
21
|
+
.filter(l => l && !l.startsWith('#'));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Check if a path should be ignored (simple .gitignore matching) */
|
|
28
|
+
function isIgnored(relPath, patterns, isDir) {
|
|
29
|
+
const name = basename(relPath);
|
|
30
|
+
// Always skip these
|
|
31
|
+
if (name === '.git' || name === 'node_modules' || name === '.DS_Store')
|
|
32
|
+
return true;
|
|
33
|
+
for (const pat of patterns) {
|
|
34
|
+
// Negation patterns — skip (too complex for simple matching)
|
|
35
|
+
if (pat.startsWith('!'))
|
|
36
|
+
continue;
|
|
37
|
+
const cleanPat = pat.replace(/\/$/, '');
|
|
38
|
+
// Exact directory match: "dist" matches any dir named dist
|
|
39
|
+
if (cleanPat === name && isDir)
|
|
40
|
+
return true;
|
|
41
|
+
// Exact file match: "foo.log" matches any file named foo.log
|
|
42
|
+
if (cleanPat === name && !isDir)
|
|
43
|
+
return true;
|
|
44
|
+
// Glob prefix: "*.log" matches any .log file
|
|
45
|
+
if (cleanPat.startsWith('*.') && !isDir) {
|
|
46
|
+
const ext = cleanPat.slice(1); // ".log"
|
|
47
|
+
if (name.endsWith(ext))
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
// Path prefix: "src/engine/AI*.ts" — match relative path
|
|
51
|
+
if (cleanPat.includes('/') && !cleanPat.startsWith('/')) {
|
|
52
|
+
// Simple wildcard: replace * with regex .*
|
|
53
|
+
const regex = new RegExp('^' + cleanPat.replace(/\*/g, '.*').replace(/\//g, '\\/') + '$');
|
|
54
|
+
if (regex.test(relPath))
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// ── Symbol extraction ──
|
|
61
|
+
/** Extract exported symbol names from TypeScript/JavaScript source */
|
|
62
|
+
function extractTsSymbols(source) {
|
|
63
|
+
const symbols = [];
|
|
64
|
+
const seen = new Set();
|
|
65
|
+
const patterns = [
|
|
66
|
+
// export function foo / export async function foo
|
|
67
|
+
/export\s+(?:async\s+)?function\s+(\w+)/g,
|
|
68
|
+
// export class Foo
|
|
69
|
+
/export\s+class\s+(\w+)/g,
|
|
70
|
+
// export interface Foo
|
|
71
|
+
/export\s+interface\s+(\w+)/g,
|
|
72
|
+
// export type Foo
|
|
73
|
+
/export\s+type\s+(\w+)/g,
|
|
74
|
+
// export const FOO / export let foo / export var foo
|
|
75
|
+
/export\s+(?:const|let|var)\s+(\w+)/g,
|
|
76
|
+
// export enum Foo
|
|
77
|
+
/export\s+enum\s+(\w+)/g,
|
|
78
|
+
// export { foo, bar } — named re-exports
|
|
79
|
+
/export\s*\{([^}]+)\}/g,
|
|
80
|
+
// export default class/function Foo
|
|
81
|
+
/export\s+default\s+(?:class|function)\s+(\w+)/g,
|
|
82
|
+
];
|
|
83
|
+
for (const regex of patterns) {
|
|
84
|
+
let match;
|
|
85
|
+
while ((match = regex.exec(source)) !== null) {
|
|
86
|
+
const captured = match[1];
|
|
87
|
+
// Handle export { foo, bar as baz }
|
|
88
|
+
if (regex.source.includes('\\{')) {
|
|
89
|
+
const names = captured.split(',').map(n => {
|
|
90
|
+
const parts = n.trim().split(/\s+as\s+/);
|
|
91
|
+
return parts[parts.length - 1].trim();
|
|
92
|
+
}).filter(n => n && /^\w+$/.test(n));
|
|
93
|
+
for (const n of names) {
|
|
94
|
+
if (!seen.has(n)) {
|
|
95
|
+
seen.add(n);
|
|
96
|
+
symbols.push(n);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (captured && !seen.has(captured)) {
|
|
101
|
+
seen.add(captured);
|
|
102
|
+
symbols.push(captured);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return symbols;
|
|
107
|
+
}
|
|
108
|
+
/** Extract class/def names from Python source */
|
|
109
|
+
function extractPySymbols(source) {
|
|
110
|
+
const symbols = [];
|
|
111
|
+
const seen = new Set();
|
|
112
|
+
const patterns = [
|
|
113
|
+
/^class\s+(\w+)/gm,
|
|
114
|
+
/^def\s+(\w+)/gm,
|
|
115
|
+
/^async\s+def\s+(\w+)/gm,
|
|
116
|
+
];
|
|
117
|
+
for (const regex of patterns) {
|
|
118
|
+
let match;
|
|
119
|
+
while ((match = regex.exec(source)) !== null) {
|
|
120
|
+
const name = match[1];
|
|
121
|
+
if (name && !name.startsWith('_') && !seen.has(name)) {
|
|
122
|
+
seen.add(name);
|
|
123
|
+
symbols.push(name);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return symbols;
|
|
128
|
+
}
|
|
129
|
+
/** Recursively collect files from a directory */
|
|
130
|
+
function walkDir(dir, rootDir, patterns, maxDepth, maxFiles, depth = 0, entries = []) {
|
|
131
|
+
if (depth > maxDepth || entries.length >= maxFiles)
|
|
132
|
+
return entries;
|
|
133
|
+
let items;
|
|
134
|
+
try {
|
|
135
|
+
items = readdirSync(dir);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return entries;
|
|
139
|
+
}
|
|
140
|
+
// Sort: directories first, then files alphabetically
|
|
141
|
+
const sorted = items.sort((a, b) => {
|
|
142
|
+
try {
|
|
143
|
+
const aDir = statSync(join(dir, a)).isDirectory();
|
|
144
|
+
const bDir = statSync(join(dir, b)).isDirectory();
|
|
145
|
+
if (aDir !== bDir)
|
|
146
|
+
return aDir ? -1 : 1;
|
|
147
|
+
}
|
|
148
|
+
catch { /* ignore stat errors */ }
|
|
149
|
+
return a.localeCompare(b);
|
|
150
|
+
});
|
|
151
|
+
for (const name of sorted) {
|
|
152
|
+
if (entries.length >= maxFiles)
|
|
153
|
+
break;
|
|
154
|
+
const fullPath = join(dir, name);
|
|
155
|
+
const relPath = relative(rootDir, fullPath);
|
|
156
|
+
let stats;
|
|
157
|
+
try {
|
|
158
|
+
stats = statSync(fullPath);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (stats.isDirectory()) {
|
|
164
|
+
if (isIgnored(relPath, patterns, true))
|
|
165
|
+
continue;
|
|
166
|
+
walkDir(fullPath, rootDir, patterns, maxDepth, maxFiles, depth + 1, entries);
|
|
167
|
+
}
|
|
168
|
+
else if (stats.isFile()) {
|
|
169
|
+
if (isIgnored(relPath, patterns, false))
|
|
170
|
+
continue;
|
|
171
|
+
const ext = extname(name).toLowerCase();
|
|
172
|
+
let symbols = [];
|
|
173
|
+
if (['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs'].includes(ext)) {
|
|
174
|
+
try {
|
|
175
|
+
const source = readFileSync(fullPath, 'utf-8');
|
|
176
|
+
symbols = extractTsSymbols(source);
|
|
177
|
+
}
|
|
178
|
+
catch { /* unreadable */ }
|
|
179
|
+
}
|
|
180
|
+
else if (ext === '.py') {
|
|
181
|
+
try {
|
|
182
|
+
const source = readFileSync(fullPath, 'utf-8');
|
|
183
|
+
symbols = extractPySymbols(source);
|
|
184
|
+
}
|
|
185
|
+
catch { /* unreadable */ }
|
|
186
|
+
}
|
|
187
|
+
entries.push({ relPath, symbols });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return entries;
|
|
191
|
+
}
|
|
192
|
+
// ── Tree formatting ──
|
|
193
|
+
/** Build a compact tree string from file entries */
|
|
194
|
+
function formatTree(entries, totalFileCount) {
|
|
195
|
+
const lines = [];
|
|
196
|
+
let charCount = 0;
|
|
197
|
+
for (let i = 0; i < entries.length; i++) {
|
|
198
|
+
const { relPath, symbols } = entries[i];
|
|
199
|
+
const parts = relPath.split('/');
|
|
200
|
+
const fileName = parts[parts.length - 1];
|
|
201
|
+
const dirParts = parts.slice(0, -1);
|
|
202
|
+
// Emit directory headers when path changes
|
|
203
|
+
// Check if we need to print a new directory line
|
|
204
|
+
if (i === 0 || dirParts.join('/') !== entries[i - 1].relPath.split('/').slice(0, -1).join('/')) {
|
|
205
|
+
// Find which directories are new compared to previous entry
|
|
206
|
+
const prevParts = i > 0 ? entries[i - 1].relPath.split('/').slice(0, -1) : [];
|
|
207
|
+
let commonDepth = 0;
|
|
208
|
+
while (commonDepth < prevParts.length && commonDepth < dirParts.length && prevParts[commonDepth] === dirParts[commonDepth]) {
|
|
209
|
+
commonDepth++;
|
|
210
|
+
}
|
|
211
|
+
// Print each new directory level
|
|
212
|
+
for (let d = commonDepth; d < dirParts.length; d++) {
|
|
213
|
+
const indent = ' '.repeat(d);
|
|
214
|
+
const dirLine = `${indent}${dirParts[d]}/\n`;
|
|
215
|
+
charCount += dirLine.length;
|
|
216
|
+
if (charCount > MAX_OUTPUT_CHARS) {
|
|
217
|
+
const remaining = totalFileCount - i;
|
|
218
|
+
lines.push(`... and ${remaining} more files`);
|
|
219
|
+
return lines.join('');
|
|
220
|
+
}
|
|
221
|
+
lines.push(dirLine);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Format the file line
|
|
225
|
+
const indent = ' '.repeat(dirParts.length);
|
|
226
|
+
let line;
|
|
227
|
+
if (symbols.length > 0) {
|
|
228
|
+
line = `${indent}${fileName}: ${symbols.join(', ')}\n`;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
line = `${indent}${fileName}\n`;
|
|
232
|
+
}
|
|
233
|
+
charCount += line.length;
|
|
234
|
+
if (charCount > MAX_OUTPUT_CHARS) {
|
|
235
|
+
const remaining = totalFileCount - i;
|
|
236
|
+
lines.push(`... and ${remaining} more files`);
|
|
237
|
+
return lines.join('');
|
|
238
|
+
}
|
|
239
|
+
lines.push(line);
|
|
240
|
+
}
|
|
241
|
+
return lines.join('');
|
|
242
|
+
}
|
|
243
|
+
/** Generate a compact repo map for LLM context */
|
|
244
|
+
export async function generateRepoMap(rootDir, options = {}) {
|
|
245
|
+
const { maxDepth = 8, maxFiles = 500 } = options;
|
|
246
|
+
const patterns = loadGitignorePatterns(rootDir);
|
|
247
|
+
const entries = walkDir(rootDir, rootDir, patterns, maxDepth, maxFiles);
|
|
248
|
+
if (entries.length === 0)
|
|
249
|
+
return '(empty repository)';
|
|
250
|
+
return formatTree(entries, entries.length);
|
|
251
|
+
}
|
|
252
|
+
// ── Cached convenience wrapper ──
|
|
253
|
+
let cachedMap = null;
|
|
254
|
+
let cachedAt = 0;
|
|
255
|
+
let cachedDir = null;
|
|
256
|
+
/** Get repo map with 60s cache. Resolves git root from cwd. */
|
|
257
|
+
export async function getRepoMapForContext(cwd) {
|
|
258
|
+
const dir = cwd || process.cwd();
|
|
259
|
+
// Resolve git root
|
|
260
|
+
let rootDir = dir;
|
|
261
|
+
try {
|
|
262
|
+
rootDir = execSync('git rev-parse --show-toplevel', {
|
|
263
|
+
cwd: dir,
|
|
264
|
+
encoding: 'utf-8',
|
|
265
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
266
|
+
}).trim();
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// Not a git repo — use cwd as root
|
|
270
|
+
}
|
|
271
|
+
const now = Date.now();
|
|
272
|
+
if (cachedMap && cachedDir === rootDir && (now - cachedAt) < CACHE_TTL_MS) {
|
|
273
|
+
return cachedMap;
|
|
274
|
+
}
|
|
275
|
+
cachedMap = await generateRepoMap(rootDir);
|
|
276
|
+
cachedAt = now;
|
|
277
|
+
cachedDir = rootDir;
|
|
278
|
+
return cachedMap;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=repo-map.js.map
|