koneck 1.0.2 → 2.0.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/auto-docs.d.ts +4 -0
- package/dist/auto-docs.d.ts.map +1 -0
- package/dist/auto-docs.js +57 -0
- package/dist/auto-docs.js.map +1 -0
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +676 -102
- package/dist/chat.js.map +1 -1
- package/dist/code-graph.d.ts +14 -0
- package/dist/code-graph.d.ts.map +1 -0
- package/dist/code-graph.js +167 -0
- package/dist/code-graph.js.map +1 -0
- package/dist/critique.d.ts +4 -0
- package/dist/critique.d.ts.map +1 -0
- package/dist/critique.js +36 -0
- package/dist/critique.js.map +1 -0
- package/dist/daemon.d.ts +3 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +111 -0
- package/dist/daemon.js.map +1 -0
- package/dist/engine.d.ts +5 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +17 -3
- package/dist/engine.js.map +1 -1
- package/dist/health.d.ts +2 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +201 -0
- package/dist/health.js.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -1
- package/dist/issues.d.ts +3 -0
- package/dist/issues.d.ts.map +1 -0
- package/dist/issues.js +77 -0
- package/dist/issues.js.map +1 -0
- package/dist/knowledge-graph.d.ts +3 -0
- package/dist/knowledge-graph.d.ts.map +1 -0
- package/dist/knowledge-graph.js +85 -0
- package/dist/knowledge-graph.js.map +1 -0
- package/dist/pipeline.d.ts +3 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +79 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/reasoning-cache.d.ts +9 -0
- package/dist/reasoning-cache.d.ts.map +1 -0
- package/dist/reasoning-cache.js +67 -0
- package/dist/reasoning-cache.js.map +1 -0
- package/dist/recon.d.ts +2 -0
- package/dist/recon.d.ts.map +1 -0
- package/dist/recon.js +121 -0
- package/dist/recon.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/issues.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { runAgent } from './engine.js';
|
|
4
|
+
const GH_INSTALL_MSG = 'GitHub CLI (gh) is required. Install from: https://cli.github.com/';
|
|
5
|
+
async function ghExec(args) {
|
|
6
|
+
try {
|
|
7
|
+
const { stdout } = await execa('gh', args);
|
|
8
|
+
return stdout;
|
|
9
|
+
}
|
|
10
|
+
catch (err) {
|
|
11
|
+
const msg = String(err.message ?? '');
|
|
12
|
+
if (msg.includes('ENOENT') || msg.includes('not found')) {
|
|
13
|
+
throw new Error(GH_INSTALL_MSG);
|
|
14
|
+
}
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function listIssues() {
|
|
19
|
+
const raw = await ghExec(['issue', 'list', '--json', 'number,title,labels,state', '--limit', '20']);
|
|
20
|
+
return JSON.parse(raw);
|
|
21
|
+
}
|
|
22
|
+
async function fixIssue(issueId, config) {
|
|
23
|
+
const raw = await ghExec(['issue', 'view', String(issueId), '--json', 'title,body,comments']);
|
|
24
|
+
const issue = JSON.parse(raw);
|
|
25
|
+
const task = `Fix GitHub issue #${issueId}.\n\n` +
|
|
26
|
+
`Title: ${issue.title}\n\n` +
|
|
27
|
+
`Description:\n${issue.body ?? '(no description)'}\n\n` +
|
|
28
|
+
`Fix the issue, write tests, then create a commit with message ` +
|
|
29
|
+
`'fix: ${issue.title} (#${issueId})'.`;
|
|
30
|
+
await runAgent(task, config);
|
|
31
|
+
console.log(chalk.green(`\nDone. Run 'gh pr create' to open a PR.`));
|
|
32
|
+
}
|
|
33
|
+
export async function runIssues(action, config, issueId) {
|
|
34
|
+
try {
|
|
35
|
+
if (action === 'list') {
|
|
36
|
+
const issues = await listIssues();
|
|
37
|
+
if (issues.length === 0) {
|
|
38
|
+
console.log('No open issues found.');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.log(chalk.bold('\n # State Labels Title'));
|
|
42
|
+
console.log(' ' + '─'.repeat(72));
|
|
43
|
+
for (const issue of issues) {
|
|
44
|
+
const num = chalk.cyan(`#${issue.number}`.padEnd(6));
|
|
45
|
+
const state = (issue.state === 'OPEN' ? chalk.green('Open ') : chalk.gray('Closed'));
|
|
46
|
+
const labels = issue.labels.map(l => l.name).join(', ').padEnd(15).slice(0, 15);
|
|
47
|
+
console.log(` ${num} ${state} ${chalk.yellow(labels)} ${issue.title}`);
|
|
48
|
+
}
|
|
49
|
+
console.log();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// fix
|
|
53
|
+
if (issueId !== undefined) {
|
|
54
|
+
await fixIssue(issueId, config);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const issues = await listIssues();
|
|
58
|
+
const bug = issues.find(i => i.state === 'OPEN' && i.labels.some(l => l.name.toLowerCase().includes('bug'))) ?? issues.find(i => i.state === 'OPEN');
|
|
59
|
+
if (!bug) {
|
|
60
|
+
console.log('No open issues to fix.');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
console.log(chalk.cyan(`Auto-selected issue #${bug.number}: ${bug.title}`));
|
|
64
|
+
await fixIssue(bug.number, config);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const msg = String(err.message ?? err);
|
|
69
|
+
if (msg.includes('cli.github.com')) {
|
|
70
|
+
console.error(chalk.red(msg));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw err;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../src/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAoCA,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CpE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBvF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { globby } from 'globby';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
const CONCEPTS = [
|
|
7
|
+
'auth', 'user', 'login', 'session', 'token', 'payment', 'order', 'product',
|
|
8
|
+
'cart', 'email', 'file', 'upload', 'search', 'api', 'route', 'middleware',
|
|
9
|
+
'database', 'cache', 'queue', 'notification',
|
|
10
|
+
];
|
|
11
|
+
function splitCamel(name) {
|
|
12
|
+
return name
|
|
13
|
+
.replace(/_/g, ' ')
|
|
14
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
15
|
+
.toLowerCase()
|
|
16
|
+
.split(/\s+/)
|
|
17
|
+
.filter(Boolean);
|
|
18
|
+
}
|
|
19
|
+
function graphPath(cwd) {
|
|
20
|
+
return path.join(cwd, '.koneck', 'knowledge-graph.json');
|
|
21
|
+
}
|
|
22
|
+
export async function buildKnowledgeGraph(cwd) {
|
|
23
|
+
const spinner = ora('Building knowledge graph…').start();
|
|
24
|
+
const files = await globby(['**/*.ts', '**/*.js'], {
|
|
25
|
+
cwd,
|
|
26
|
+
ignore: ['node_modules/**', 'dist/**', '.koneck/**'],
|
|
27
|
+
absolute: false,
|
|
28
|
+
});
|
|
29
|
+
const conceptMap = new Map();
|
|
30
|
+
for (const file of files) {
|
|
31
|
+
const abs = path.join(cwd, file);
|
|
32
|
+
let src;
|
|
33
|
+
try {
|
|
34
|
+
src = await readFile(abs, 'utf8');
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const lines = src.split('\n');
|
|
40
|
+
const symRe = /export\s+(function|class|const|interface)\s+(\w+)/g;
|
|
41
|
+
for (let i = 0; i < lines.length; i++) {
|
|
42
|
+
let m;
|
|
43
|
+
symRe.lastIndex = 0;
|
|
44
|
+
while ((m = symRe.exec(lines[i])) !== null) {
|
|
45
|
+
const symbol = m[2];
|
|
46
|
+
const parts = splitCamel(symbol);
|
|
47
|
+
for (const concept of CONCEPTS) {
|
|
48
|
+
if (parts.some(p => p.includes(concept) || concept.includes(p))) {
|
|
49
|
+
if (!conceptMap.has(concept))
|
|
50
|
+
conceptMap.set(concept, []);
|
|
51
|
+
conceptMap.get(concept).push({ file, line: i + 1, symbol, confidence: 0.8 });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const entries = Array.from(conceptMap.entries()).map(([concept, locations]) => ({
|
|
58
|
+
concept,
|
|
59
|
+
locations,
|
|
60
|
+
updatedAt: new Date().toISOString(),
|
|
61
|
+
}));
|
|
62
|
+
const data = { entries, builtAt: new Date().toISOString() };
|
|
63
|
+
const dest = graphPath(cwd);
|
|
64
|
+
await mkdir(path.dirname(dest), { recursive: true });
|
|
65
|
+
await writeFile(dest, JSON.stringify(data, null, 2));
|
|
66
|
+
spinner.succeed(`Knowledge graph built: ${entries.length} concepts across ${files.length} files`);
|
|
67
|
+
}
|
|
68
|
+
export async function queryKnowledgeGraph(concept, cwd) {
|
|
69
|
+
if (!existsSync(graphPath(cwd)))
|
|
70
|
+
await buildKnowledgeGraph(cwd);
|
|
71
|
+
const raw = await readFile(graphPath(cwd), 'utf8');
|
|
72
|
+
const data = JSON.parse(raw);
|
|
73
|
+
const q = concept.toLowerCase();
|
|
74
|
+
const matched = data.entries.filter(e => e.concept.includes(q) || q.includes(e.concept));
|
|
75
|
+
if (matched.length === 0)
|
|
76
|
+
return `No results found for "${concept}".`;
|
|
77
|
+
const lines = [`"${concept}" is implemented in:`];
|
|
78
|
+
for (const entry of matched) {
|
|
79
|
+
for (const loc of entry.locations) {
|
|
80
|
+
lines.push(` ${loc.symbol.padEnd(24)}→ ${loc.file}:${loc.line}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return lines.join('\n');
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=knowledge-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,YAAY,CAAC;AA2CvD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DlF"}
|
package/dist/pipeline.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as readline from 'node:readline';
|
|
3
|
+
import { runAgent } from './engine.js';
|
|
4
|
+
function lastAssistantText(messages) {
|
|
5
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
6
|
+
const m = messages[i];
|
|
7
|
+
if (m.role === 'assistant' && typeof m.content === 'string' && m.content.trim()) {
|
|
8
|
+
return m.content;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
function printStageHeader(index, total, name) {
|
|
14
|
+
const label = `[${index}/${total}] ${name}`;
|
|
15
|
+
const line = '━'.repeat(Math.max(0, 40 - label.length - 4));
|
|
16
|
+
console.log(chalk.cyan(`\n━━━ ${label} ${line}`));
|
|
17
|
+
}
|
|
18
|
+
function printBox(title, body) {
|
|
19
|
+
const width = 60;
|
|
20
|
+
const border = '─'.repeat(width);
|
|
21
|
+
console.log(chalk.yellow(`┌${border}┐`));
|
|
22
|
+
console.log(chalk.yellow(`│ ${chalk.bold(title.padEnd(width - 1))}│`));
|
|
23
|
+
console.log(chalk.yellow(`├${border}┤`));
|
|
24
|
+
for (const line of body.split('\n')) {
|
|
25
|
+
const truncated = line.slice(0, width - 2);
|
|
26
|
+
console.log(chalk.yellow('│ ') + truncated.padEnd(width - 2) + chalk.yellow(' │'));
|
|
27
|
+
}
|
|
28
|
+
console.log(chalk.yellow(`└${border}┘`));
|
|
29
|
+
}
|
|
30
|
+
async function askApproval(prompt) {
|
|
31
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
32
|
+
return new Promise((resolve) => {
|
|
33
|
+
rl.question(prompt, (answer) => {
|
|
34
|
+
rl.close();
|
|
35
|
+
const trimmed = answer.trim().toLowerCase();
|
|
36
|
+
resolve(trimmed !== 'n' && trimmed !== 'no');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function runPipeline(task, config) {
|
|
41
|
+
// ── 1. Planner ────────────────────────────────────────────────────────────
|
|
42
|
+
printStageHeader(1, 5, 'Planning');
|
|
43
|
+
const plannerConfig = { ...config, silent: true, maxTurns: 8 };
|
|
44
|
+
const plannerSession = await runAgent(`You are a planning agent. For this task: '${task}'\n\nProduce a structured plan:\n1. Requirements (what exactly needs to change)\n2. Files affected (list specific files)\n3. Risk estimate (low/medium/high and why)\n4. Step-by-step implementation plan\n\nDo NOT write any code. Just plan.`, plannerConfig);
|
|
45
|
+
const plannerOutput = lastAssistantText(plannerSession.messages);
|
|
46
|
+
printBox('Plan', plannerOutput || '(no output from planner)');
|
|
47
|
+
const approved = await askApproval(chalk.bold('\nApprove this plan and proceed? [Y/n] '));
|
|
48
|
+
if (!approved) {
|
|
49
|
+
console.log(chalk.red('Pipeline aborted by user.'));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// ── 2. Researcher ─────────────────────────────────────────────────────────
|
|
53
|
+
printStageHeader(2, 5, 'Research');
|
|
54
|
+
const researcherConfig = { ...config, silent: true, maxTurns: 10 };
|
|
55
|
+
const researcherSession = await runAgent(`You are a research agent. The task is: '${task}'\nThe plan is:\n${plannerOutput}\n\nRead all relevant files, understand the codebase, and write a detailed technical analysis. Do NOT make changes. Output everything you learn as structured notes.`, researcherConfig);
|
|
56
|
+
const researcherOutput = lastAssistantText(researcherSession.messages);
|
|
57
|
+
// ── 3. Coder ──────────────────────────────────────────────────────────────
|
|
58
|
+
printStageHeader(3, 5, 'Coding');
|
|
59
|
+
const coderConfig = { ...config, maxTurns: 20 };
|
|
60
|
+
await runAgent(`You are a coding agent. Implement this task: '${task}'\nPlan:\n${plannerOutput}\nResearch:\n${researcherOutput}\n\nImplement the plan step by step. Write tests as you go.`, coderConfig);
|
|
61
|
+
// ── 4. Reviewer ───────────────────────────────────────────────────────────
|
|
62
|
+
printStageHeader(4, 5, 'Review');
|
|
63
|
+
const reviewerConfig = { ...config, silent: true, maxTurns: 8 };
|
|
64
|
+
const reviewerSession = await runAgent(`You are a code reviewer. Review the implementation for task: '${task}'. Check for: correctness, security vulnerabilities, performance issues, missing tests, breaking changes. List issues found with file:line references.`, reviewerConfig);
|
|
65
|
+
const reviewOutput = lastAssistantText(reviewerSession.messages);
|
|
66
|
+
if (reviewOutput) {
|
|
67
|
+
printBox('Review Findings', reviewOutput);
|
|
68
|
+
}
|
|
69
|
+
// ── 5. Tester ─────────────────────────────────────────────────────────────
|
|
70
|
+
printStageHeader(5, 5, 'Testing');
|
|
71
|
+
const testerConfig = { ...config, silent: true, maxTurns: 10 };
|
|
72
|
+
const testerSession = await runAgent(`You are a test agent. Run the test suite. If tests fail, fix the failures. Report final test status.`, testerConfig);
|
|
73
|
+
const testOutput = lastAssistantText(testerSession.messages);
|
|
74
|
+
if (testOutput) {
|
|
75
|
+
console.log(chalk.green('\nTest Report:\n') + testOutput);
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk.green.bold('\n✓ Pipeline complete.'));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function getCached(key: string, cwd: string): Promise<string | null>;
|
|
2
|
+
export declare function setCached(key: string, value: string, cwd: string, ttlSeconds?: number): Promise<void>;
|
|
3
|
+
export declare function clearCache(cwd: string): Promise<void>;
|
|
4
|
+
export declare function getCacheStats(cwd: string): Promise<{
|
|
5
|
+
entries: number;
|
|
6
|
+
sizeKb: number;
|
|
7
|
+
oldestEntry: string | null;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=reasoning-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-cache.d.ts","sourceRoot":"","sources":["../src/reasoning-cache.ts"],"names":[],"mappings":"AAwBA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUhF;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzG;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAqB1E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, readdir, unlink, stat } from 'fs/promises';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
function hashKey(s) {
|
|
5
|
+
let h = 5381;
|
|
6
|
+
for (let i = 0; i < s.length; i++)
|
|
7
|
+
h = ((h << 5) + h) ^ s.charCodeAt(i);
|
|
8
|
+
return (h >>> 0).toString(16);
|
|
9
|
+
}
|
|
10
|
+
function cacheDir(cwd) {
|
|
11
|
+
return path.join(cwd, '.koneck', 'cache');
|
|
12
|
+
}
|
|
13
|
+
function entryPath(cwd, key) {
|
|
14
|
+
return path.join(cacheDir(cwd), `${hashKey(key)}.json`);
|
|
15
|
+
}
|
|
16
|
+
export async function getCached(key, cwd) {
|
|
17
|
+
const file = entryPath(cwd, key);
|
|
18
|
+
if (!existsSync(file))
|
|
19
|
+
return null;
|
|
20
|
+
try {
|
|
21
|
+
const entry = JSON.parse(await readFile(file, 'utf8'));
|
|
22
|
+
if (Date.now() > entry.expiresAt) {
|
|
23
|
+
await unlink(file).catch(() => { });
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return entry.value;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function setCached(key, value, cwd, ttlSeconds = 3600) {
|
|
33
|
+
await mkdir(cacheDir(cwd), { recursive: true });
|
|
34
|
+
const entry = { key, value, expiresAt: Date.now() + ttlSeconds * 1000 };
|
|
35
|
+
await writeFile(entryPath(cwd, key), JSON.stringify(entry));
|
|
36
|
+
}
|
|
37
|
+
export async function clearCache(cwd) {
|
|
38
|
+
const dir = cacheDir(cwd);
|
|
39
|
+
if (!existsSync(dir)) {
|
|
40
|
+
console.log('Reasoning cache cleared.');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const files = await readdir(dir);
|
|
44
|
+
await Promise.all(files.map(f => unlink(path.join(dir, f))));
|
|
45
|
+
console.log('Reasoning cache cleared.');
|
|
46
|
+
}
|
|
47
|
+
export async function getCacheStats(cwd) {
|
|
48
|
+
const dir = cacheDir(cwd);
|
|
49
|
+
if (!existsSync(dir))
|
|
50
|
+
return { entries: 0, sizeKb: 0, oldestEntry: null };
|
|
51
|
+
const files = await readdir(dir);
|
|
52
|
+
if (files.length === 0)
|
|
53
|
+
return { entries: 0, sizeKb: 0, oldestEntry: null };
|
|
54
|
+
let totalBytes = 0;
|
|
55
|
+
let oldestMtime = Infinity;
|
|
56
|
+
let oldestEntry = null;
|
|
57
|
+
for (const f of files) {
|
|
58
|
+
const info = await stat(path.join(dir, f));
|
|
59
|
+
totalBytes += info.size;
|
|
60
|
+
if (info.mtimeMs < oldestMtime) {
|
|
61
|
+
oldestMtime = info.mtimeMs;
|
|
62
|
+
oldestEntry = new Date(info.mtimeMs).toISOString();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { entries: files.length, sizeKb: Math.round(totalBytes / 1024), oldestEntry };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=reasoning-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-cache.js","sourceRoot":"","sources":["../src/reasoning-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/recon.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recon.d.ts","sourceRoot":"","sources":["../src/recon.ts"],"names":[],"mappings":"AAaA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkH5E"}
|
package/dist/recon.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { readFile, stat } from 'fs/promises';
|
|
2
|
+
import { execa } from 'execa';
|
|
3
|
+
import { globby } from 'globby';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
const MAX_KEYWORDS = 15;
|
|
6
|
+
const MAX_GREP_KEYWORDS = 3;
|
|
7
|
+
const MAX_FILES_PER_KEYWORD = 5;
|
|
8
|
+
const MAX_TOTAL_FILES = 8;
|
|
9
|
+
const SNIPPET_LINES = 60;
|
|
10
|
+
const MAX_FILE_BYTES = 100 * 1024; // 100 KB
|
|
11
|
+
const MIN_CONTENT_LENGTH = 100;
|
|
12
|
+
export async function gatherRecon(task, cwd) {
|
|
13
|
+
try {
|
|
14
|
+
// 1. Extract keywords
|
|
15
|
+
const keywords = task
|
|
16
|
+
.split(/[\s\W]+/)
|
|
17
|
+
.filter(t => t.length > 3)
|
|
18
|
+
.filter((t, i, a) => a.indexOf(t) === i)
|
|
19
|
+
.slice(0, MAX_KEYWORDS);
|
|
20
|
+
console.log(chalk.dim(`↳ recon: keywords → ${keywords.slice(0, MAX_GREP_KEYWORDS).join(', ')}`));
|
|
21
|
+
// 2. Grep for symbols across .ts/.js/.py/.go files
|
|
22
|
+
const grepKeywords = keywords.slice(0, MAX_GREP_KEYWORDS);
|
|
23
|
+
const foundFiles = new Set();
|
|
24
|
+
for (const kw of grepKeywords) {
|
|
25
|
+
try {
|
|
26
|
+
const { stdout } = await execa('grep', [
|
|
27
|
+
'-rn',
|
|
28
|
+
'--include=*.ts',
|
|
29
|
+
'--include=*.js',
|
|
30
|
+
'--include=*.py',
|
|
31
|
+
'--include=*.go',
|
|
32
|
+
'-l',
|
|
33
|
+
kw,
|
|
34
|
+
'.',
|
|
35
|
+
], { cwd, reject: false });
|
|
36
|
+
const paths = stdout.trim().split('\n').filter(Boolean).slice(0, MAX_FILES_PER_KEYWORD);
|
|
37
|
+
for (const p of paths)
|
|
38
|
+
foundFiles.add(p.replace(/^\.\//, ''));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// grep failure is non-fatal
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// 3. Check for test files mentioning keywords
|
|
45
|
+
try {
|
|
46
|
+
const testPatterns = ['**/*.test.*', '**/*.spec.*', '**/__tests__/**/*'];
|
|
47
|
+
const testFiles = await globby(testPatterns, {
|
|
48
|
+
cwd,
|
|
49
|
+
ignore: ['node_modules/**', 'dist/**'],
|
|
50
|
+
absolute: false,
|
|
51
|
+
});
|
|
52
|
+
for (const kw of grepKeywords) {
|
|
53
|
+
for (const tf of testFiles) {
|
|
54
|
+
if (tf.toLowerCase().includes(kw.toLowerCase())) {
|
|
55
|
+
foundFiles.add(tf);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// non-fatal
|
|
63
|
+
}
|
|
64
|
+
// 4. Read snippets (max 8 files, skip >100 KB)
|
|
65
|
+
const filesToRead = [...foundFiles].slice(0, MAX_TOTAL_FILES);
|
|
66
|
+
const snippets = [];
|
|
67
|
+
for (const rel of filesToRead) {
|
|
68
|
+
try {
|
|
69
|
+
const abs = rel.startsWith('/') ? rel : `${cwd}/${rel}`;
|
|
70
|
+
const s = await stat(abs);
|
|
71
|
+
if (s.size > MAX_FILE_BYTES)
|
|
72
|
+
continue;
|
|
73
|
+
const content = await readFile(abs, 'utf8');
|
|
74
|
+
const first60 = content.split('\n').slice(0, SNIPPET_LINES).join('\n');
|
|
75
|
+
snippets.push(`--- ${rel} (first ${SNIPPET_LINES} lines) ---\n${first60}`);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// non-fatal
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
console.log(chalk.dim(`↳ recon: ${filesToRead.length} file(s) found, ${snippets.length} snippet(s) read`));
|
|
82
|
+
// 5. Git context
|
|
83
|
+
let gitLog = '';
|
|
84
|
+
let gitDiff = '';
|
|
85
|
+
try {
|
|
86
|
+
const log = await execa('git', ['log', '--oneline', '-10'], { cwd, reject: false });
|
|
87
|
+
gitLog = log.stdout.trim();
|
|
88
|
+
}
|
|
89
|
+
catch { /* non-fatal */ }
|
|
90
|
+
try {
|
|
91
|
+
const diff = await execa('git', ['diff', '--stat', 'HEAD'], { cwd, reject: false });
|
|
92
|
+
gitDiff = diff.stdout.trim();
|
|
93
|
+
}
|
|
94
|
+
catch { /* non-fatal */ }
|
|
95
|
+
// 6. Build context block
|
|
96
|
+
const parts = [
|
|
97
|
+
`Keywords extracted: ${keywords.join(', ')}`,
|
|
98
|
+
`Relevant files found: ${filesToRead.length ? filesToRead.join(', ') : 'none'}`,
|
|
99
|
+
];
|
|
100
|
+
if (gitLog || gitDiff) {
|
|
101
|
+
parts.push('Recent git activity:');
|
|
102
|
+
if (gitLog)
|
|
103
|
+
parts.push(gitLog);
|
|
104
|
+
if (gitDiff)
|
|
105
|
+
parts.push(gitDiff);
|
|
106
|
+
}
|
|
107
|
+
if (snippets.length) {
|
|
108
|
+
parts.push('File snippets:');
|
|
109
|
+
parts.push(...snippets);
|
|
110
|
+
}
|
|
111
|
+
const inner = parts.join('\n');
|
|
112
|
+
if (inner.length < MIN_CONTENT_LENGTH)
|
|
113
|
+
return '';
|
|
114
|
+
return `<recon>\n${inner}\n</recon>`;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// recon must never crash the main flow
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=recon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recon.js","sourceRoot":"","sources":["../src/recon.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -154,5 +154,17 @@ export interface CLIArgs {
|
|
|
154
154
|
watchPattern?: string;
|
|
155
155
|
setupMode: boolean;
|
|
156
156
|
prMode: boolean;
|
|
157
|
+
updateMode: boolean;
|
|
158
|
+
authMode: boolean;
|
|
159
|
+
authAction?: string;
|
|
160
|
+
resumeLast: boolean;
|
|
161
|
+
resumePick: boolean;
|
|
162
|
+
healthMode: boolean;
|
|
163
|
+
daemonMode: boolean;
|
|
164
|
+
daemonAction?: string;
|
|
165
|
+
issuesMode: boolean;
|
|
166
|
+
issuesAction?: string;
|
|
167
|
+
issueId?: number;
|
|
168
|
+
pipelineMode: boolean;
|
|
157
169
|
}
|
|
158
170
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|