koneck 1.0.3 → 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.
Files changed (52) hide show
  1. package/dist/auto-docs.d.ts +4 -0
  2. package/dist/auto-docs.d.ts.map +1 -0
  3. package/dist/auto-docs.js +57 -0
  4. package/dist/auto-docs.js.map +1 -0
  5. package/dist/chat.d.ts.map +1 -1
  6. package/dist/chat.js +138 -0
  7. package/dist/chat.js.map +1 -1
  8. package/dist/code-graph.d.ts +14 -0
  9. package/dist/code-graph.d.ts.map +1 -0
  10. package/dist/code-graph.js +167 -0
  11. package/dist/code-graph.js.map +1 -0
  12. package/dist/critique.d.ts +4 -0
  13. package/dist/critique.d.ts.map +1 -0
  14. package/dist/critique.js +36 -0
  15. package/dist/critique.js.map +1 -0
  16. package/dist/daemon.d.ts +3 -0
  17. package/dist/daemon.d.ts.map +1 -0
  18. package/dist/daemon.js +111 -0
  19. package/dist/daemon.js.map +1 -0
  20. package/dist/engine.d.ts +5 -0
  21. package/dist/engine.d.ts.map +1 -1
  22. package/dist/engine.js +17 -3
  23. package/dist/engine.js.map +1 -1
  24. package/dist/health.d.ts +2 -0
  25. package/dist/health.d.ts.map +1 -0
  26. package/dist/health.js +201 -0
  27. package/dist/health.js.map +1 -0
  28. package/dist/index.js +80 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/issues.d.ts +3 -0
  31. package/dist/issues.d.ts.map +1 -0
  32. package/dist/issues.js +77 -0
  33. package/dist/issues.js.map +1 -0
  34. package/dist/knowledge-graph.d.ts +3 -0
  35. package/dist/knowledge-graph.d.ts.map +1 -0
  36. package/dist/knowledge-graph.js +85 -0
  37. package/dist/knowledge-graph.js.map +1 -0
  38. package/dist/pipeline.d.ts +3 -0
  39. package/dist/pipeline.d.ts.map +1 -0
  40. package/dist/pipeline.js +79 -0
  41. package/dist/pipeline.js.map +1 -0
  42. package/dist/reasoning-cache.d.ts +9 -0
  43. package/dist/reasoning-cache.d.ts.map +1 -0
  44. package/dist/reasoning-cache.js +67 -0
  45. package/dist/reasoning-cache.js.map +1 -0
  46. package/dist/recon.d.ts +2 -0
  47. package/dist/recon.d.ts.map +1 -0
  48. package/dist/recon.js +121 -0
  49. package/dist/recon.js.map +1 -0
  50. package/dist/types.d.ts +7 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,36 @@
1
+ import chalk from 'chalk';
2
+ // NOTE: runReActLoop must be exported from engine.ts
3
+ import { buildClient, runReActLoop } from './engine.js';
4
+ import { TOOL_DEFINITIONS } from './tools.js';
5
+ const WRITE_TOOLS = new Set(['write_file', 'apply_diff', 'delete_file', 'move_file']);
6
+ export function detectFileWrites(messages) {
7
+ for (const m of messages) {
8
+ if (m.role !== 'assistant')
9
+ continue;
10
+ const msg = m;
11
+ if (msg.tool_calls?.some(tc => WRITE_TOOLS.has(tc.function?.name ?? '')))
12
+ return true;
13
+ }
14
+ return false;
15
+ }
16
+ const CRITIQUE_PROMPT = 'Self-critique: review your work so far.\n' +
17
+ 'Check: (1) Did you update tests for changed code? (2) Could this introduce bugs or regressions? ' +
18
+ '(3) Did you update docs/comments? (4) Could this break the API or existing callers? ' +
19
+ '(5) Any TODOs left incomplete? (6) Any obvious lint/type errors?\n' +
20
+ 'If you find issues, fix them now using the available tools. ' +
21
+ 'If everything looks good, respond with exactly: "Self-critique: all clear."';
22
+ export async function runSelfCritique(messages, config, cwd, stats, hadFileWrites) {
23
+ if (!hadFileWrites)
24
+ return;
25
+ console.log(chalk.cyan('\n── Self-critique phase ──'));
26
+ messages.push({ role: 'user', content: CRITIQUE_PROMPT });
27
+ const client = buildClient(config);
28
+ const critiqueConfig = { ...config, maxTurns: 6 };
29
+ const openaiTools = TOOL_DEFINITIONS.map(def => ({
30
+ type: 'function',
31
+ function: { name: def.name, description: def.description, parameters: def.parameters },
32
+ }));
33
+ await runReActLoop(messages, client, critiqueConfig, cwd, stats, [], [], openaiTools);
34
+ console.log(chalk.cyan('Self-critique complete.'));
35
+ }
36
+ //# sourceMappingURL=critique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critique.js","sourceRoot":"","sources":["../src/critique.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,qDAAqD;AACrD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEtF,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,CAA6D,CAAC;QAC1E,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GACnB,2CAA2C;IAC3C,kGAAkG;IAClG,sFAAsF;IACtF,oEAAoE;IACpE,8DAA8D;IAC9D,6EAA6E,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAmB,EACnB,MAAmB,EACnB,GAAW,EACX,KAAiB,EACjB,aAAsB;IAEtB,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,cAAc,GAAgB,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAqC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,IAAI,EAAE,UAAmB;QACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE;KACvF,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IAEtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentConfig } from './types.js';
2
+ export declare function runDaemon(action: 'start' | 'stop' | 'status', config: AgentConfig): Promise<void>;
3
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmD9C,wBAAsB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvG"}
package/dist/daemon.js ADDED
@@ -0,0 +1,111 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { execa } from 'execa';
4
+ import chalk from 'chalk';
5
+ import { runAgent } from './engine.js';
6
+ const PID_FILE = '.koneck/daemon.pid';
7
+ function readPid() {
8
+ try {
9
+ return JSON.parse(fs.readFileSync(PID_FILE, 'utf8'));
10
+ }
11
+ catch {
12
+ return null;
13
+ }
14
+ }
15
+ function writePid(pid) {
16
+ fs.mkdirSync('.koneck', { recursive: true });
17
+ fs.writeFileSync(PID_FILE, JSON.stringify({ pid, startTime: Date.now() }));
18
+ }
19
+ function deletePid() {
20
+ try {
21
+ fs.unlinkSync(PID_FILE);
22
+ }
23
+ catch { /* already gone */ }
24
+ }
25
+ function isAlive(pid) {
26
+ try {
27
+ process.kill(pid, 0);
28
+ return true;
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ async function reviewCommit(config) {
35
+ const { stdout: commitInfo } = await execa('git', ['log', '-1', '--format=%H %s']);
36
+ const { stdout: diffStat } = await execa('git', ['diff', 'HEAD~1', '--stat']);
37
+ const task = `Review this commit and suggest improvements. Commit: ${commitInfo}\nChanged files:\n${diffStat}\n\nCheck for: bugs, security issues, missing tests, documentation needs. Be concise.`;
38
+ console.log(chalk.cyan('\n── Commit Review ──────────────────────────────'));
39
+ await runAgent(task, { ...config, silent: false });
40
+ console.log(chalk.cyan('────────────────────────────────────────────────\n'));
41
+ }
42
+ async function runCICheck(config) {
43
+ try {
44
+ await execa('npm', ['test'], { cwd: config.cwd });
45
+ }
46
+ catch (err) {
47
+ const output = err.stderr ?? err.stdout ?? '';
48
+ const task = `npm test is failing. Fix the failing tests.\n\nTest output:\n${output}`;
49
+ console.log(chalk.red('\n── CI Failure — Auto-fixing ───────────────────'));
50
+ await runAgent(task, { ...config, silent: false });
51
+ console.log(chalk.red('────────────────────────────────────────────────\n'));
52
+ }
53
+ }
54
+ export async function runDaemon(action, config) {
55
+ if (action === 'stop') {
56
+ const entry = readPid();
57
+ if (!entry) {
58
+ console.log('No daemon running.');
59
+ return;
60
+ }
61
+ try {
62
+ process.kill(entry.pid, 'SIGTERM');
63
+ }
64
+ catch { /* already dead */ }
65
+ deletePid();
66
+ console.log('Daemon stopped.');
67
+ return;
68
+ }
69
+ if (action === 'status') {
70
+ const entry = readPid();
71
+ if (!entry) {
72
+ console.log('Daemon is not running.');
73
+ return;
74
+ }
75
+ if (!isAlive(entry.pid)) {
76
+ console.log('Daemon PID file exists but process is dead.');
77
+ deletePid();
78
+ return;
79
+ }
80
+ const uptime = Math.floor((Date.now() - entry.startTime) / 1000);
81
+ console.log(chalk.green(`Daemon running (PID: ${entry.pid}, uptime: ${uptime}s)`));
82
+ return;
83
+ }
84
+ // start
85
+ writePid(process.pid);
86
+ console.log(chalk.green(`Daemon started (PID: ${process.pid}). Watching for commits...`));
87
+ let debounceTimer = null;
88
+ const commitMsgPath = path.join(config.cwd, '.git', 'COMMIT_EDITMSG');
89
+ try {
90
+ fs.watch(path.join(config.cwd, '.git'), (_, filename) => {
91
+ if (filename !== 'COMMIT_EDITMSG')
92
+ return;
93
+ if (debounceTimer)
94
+ clearTimeout(debounceTimer);
95
+ debounceTimer = setTimeout(() => {
96
+ reviewCommit(config).catch((e) => console.error('Review error:', e));
97
+ }, 2000);
98
+ });
99
+ }
100
+ catch {
101
+ console.error(chalk.red('Could not watch .git directory — is this a git repo?'));
102
+ }
103
+ // CI check every 30 minutes
104
+ setInterval(() => {
105
+ runCICheck(config).catch((e) => console.error('CI check error:', e));
106
+ }, 30 * 60 * 1000);
107
+ process.on('SIGTERM', () => { deletePid(); process.exit(0); });
108
+ process.stdin.resume();
109
+ void commitMsgPath; // referenced to satisfy linters
110
+ }
111
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAOtC,SAAS,OAAO;IACd,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAa,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAmB;IAC7C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,wDAAwD,UAAU,qBAAqB,QAAQ,uFAAuF,CAAC;IACpM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAmB;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAI,GAA4C,CAAC,MAAM,IAAK,GAA2B,CAAC,MAAM,IAAI,EAAE,CAAC;QACjH,MAAM,IAAI,GAAG,gEAAgE,MAAM,EAAE,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC5E,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAmC,EAAE,MAAmB;IACtF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1D,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxE,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAAC,SAAS,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,GAAG,aAAa,MAAM,IAAI,CAAC,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,QAAQ;IACR,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAG,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC;IAE1F,IAAI,aAAa,GAA0B,IAAI,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;YACtD,IAAI,QAAQ,KAAK,gBAAgB;gBAAE,OAAO;YAC1C,IAAI,aAAa;gBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC/C,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,4BAA4B;IAC5B,WAAW,CAAC,GAAG,EAAE;QACf,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEnB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,KAAK,aAAa,CAAC,CAAC,gCAAgC;AACtD,CAAC"}
package/dist/engine.d.ts CHANGED
@@ -1,4 +1,9 @@
1
+ import OpenAI from 'openai';
2
+ import { type PluginEntry } from './plugins.js';
3
+ import { type MCPClientEntry } from './mcp.js';
1
4
  import type { Message, AgentConfig, TokenStats } from './types.js';
5
+ export declare function buildClient(config: AgentConfig): OpenAI;
6
+ export declare function runReActLoop(messages: Message[], client: OpenAI, config: AgentConfig, effectiveCwd: string, stats: TokenStats, mcpClients: MCPClientEntry[], plugins: PluginEntry[], openaiTools: OpenAI.Chat.ChatCompletionTool[], turnOffset?: number, abortSignal?: AbortSignal): Promise<boolean>;
2
7
  export interface AgentSession {
3
8
  readonly id: string;
4
9
  readonly messages: Message[];
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EAEX,UAAU,EAIX,MAAM,YAAY,CAAC;AAubpB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAID,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,YAAY,CAAC,CAwDvB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAY5B,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EAEX,UAAU,EAIX,MAAM,YAAY,CAAC;AAIpB,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQvD;AAsMD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,cAAc,EAAE,EAC5B,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAC7C,UAAU,SAAI,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,OAAO,CAAC,CAsNlB;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAID,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,YAAY,CAAC,CAuEvB"}
package/dist/engine.js CHANGED
@@ -12,8 +12,10 @@ import { detectProject, loadAgentInstructions, projectSummary } from './project.
12
12
  import { estimateCost, formatCost } from './pricing.js';
13
13
  import { loadPlugins, callPlugin } from './plugins.js';
14
14
  import { loadMCPConfig, connectMCPServers, callMCPTool, } from './mcp.js';
15
+ import { gatherRecon } from './recon.js';
16
+ import { runSelfCritique, detectFileWrites } from './critique.js';
15
17
  // ─── Client ──────────────────────────────────────────────────────────────────
16
- function buildClient(config) {
18
+ export function buildClient(config) {
17
19
  const provider = resolveProvider(config.provider, config.baseURL);
18
20
  const apiKey = getApiKey(provider, config.apiKey);
19
21
  return new OpenAI({
@@ -182,7 +184,7 @@ async function handleSpawnAgents(args, config, cwd) {
182
184
  .join('\n\n');
183
185
  }
184
186
  // ─── ReAct loop ───────────────────────────────────────────────────────────────
185
- async function runReActLoop(messages, client, config, effectiveCwd, stats, mcpClients, plugins, openaiTools, turnOffset = 0, abortSignal) {
187
+ export async function runReActLoop(messages, client, config, effectiveCwd, stats, mcpClients, plugins, openaiTools, turnOffset = 0, abortSignal) {
186
188
  const silent = Boolean(config.silent);
187
189
  const seenSignatures = new Set();
188
190
  let budgetWarned = false;
@@ -469,7 +471,19 @@ export async function runAgent(task, config, initialMessages) {
469
471
  tui.printThinking('');
470
472
  }
471
473
  const agentStart = Date.now();
472
- await session.send(task);
474
+ // Evidence-first recon: gather context before the first LLM call
475
+ let enrichedTask = task;
476
+ if (!config.silent && !config.ci && (config.spawnDepth ?? 0) === 0) {
477
+ const reconContext = await gatherRecon(task, effectiveCwd);
478
+ if (reconContext)
479
+ enrichedTask = reconContext + '\n\nTask: ' + task;
480
+ }
481
+ await session.send(enrichedTask);
482
+ // Self-critique: one review pass if files were changed
483
+ if (!config.silent && !config.ci && (config.spawnDepth ?? 0) === 0) {
484
+ const hadWrites = detectFileWrites(session.messages);
485
+ await runSelfCritique(session.messages, effectiveConfig, effectiveCwd, session.stats, hadWrites);
486
+ }
473
487
  const agentElapsed = Date.now() - agentStart;
474
488
  if (!config.silent) {
475
489
  if (session.completed) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runHealth(cwd: string): Promise<void>;
2
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAmKA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC1D"}
package/dist/health.js ADDED
@@ -0,0 +1,201 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import { globby } from 'globby';
5
+ import { Project, SyntaxKind } from 'ts-morph';
6
+ function emit(r) {
7
+ const icon = r.status === 'pass' ? chalk.green('✓') : r.status === 'warn' ? chalk.yellow('⚠') : chalk.red('✗');
8
+ const text = r.status === 'pass' ? chalk.green(r.label) : r.status === 'warn' ? chalk.yellow(r.label) : chalk.red(r.label);
9
+ console.log(`${icon} ${text}`);
10
+ for (const d of r.details ?? [])
11
+ console.log(` ${d}`);
12
+ }
13
+ // ── 1. Large files ────────────────────────────────────────────────────────────
14
+ async function checkLargeFiles(cwd) {
15
+ const files = await globby(['**/*.ts', '**/*.js'], { cwd, ignore: ['node_modules/**', 'dist/**'] });
16
+ const hits = [];
17
+ for (const f of files) {
18
+ const lines = (await fs.readFile(path.join(cwd, f), 'utf-8')).split('\n').length;
19
+ if (lines > 500)
20
+ hits.push(`${f} (${lines} lines)`);
21
+ }
22
+ return hits.length
23
+ ? { status: 'warn', label: `Large files: ${hits.length} found`, details: hits }
24
+ : { status: 'pass', label: 'No large files found' };
25
+ }
26
+ // ── 2. Circular imports ───────────────────────────────────────────────────────
27
+ function checkCircularImports(project, cwd) {
28
+ const graph = new Map();
29
+ for (const sf of project.getSourceFiles()) {
30
+ const imports = [];
31
+ for (const d of sf.getImportDeclarations()) {
32
+ const p = d.getModuleSpecifierSourceFile()?.getFilePath();
33
+ if (p !== undefined)
34
+ imports.push(`${p}`);
35
+ }
36
+ graph.set(`${sf.getFilePath()}`, imports);
37
+ }
38
+ const cycles = [];
39
+ const seen = new Set(), inStack = new Set(), arr = [];
40
+ function dfs(n) {
41
+ if (inStack.has(n)) {
42
+ const i = arr.indexOf(n);
43
+ cycles.push([...arr.slice(i), n].map(f => path.relative(cwd, f)).join(' → '));
44
+ return;
45
+ }
46
+ if (seen.has(n))
47
+ return;
48
+ seen.add(n);
49
+ inStack.add(n);
50
+ arr.push(n);
51
+ for (const dep of graph.get(n) ?? [])
52
+ dfs(dep);
53
+ inStack.delete(n);
54
+ arr.pop();
55
+ }
56
+ for (const n of graph.keys())
57
+ dfs(n);
58
+ return cycles.length
59
+ ? { status: 'warn', label: `Circular imports: ${cycles.length} found`, details: cycles }
60
+ : { status: 'pass', label: 'No circular imports' };
61
+ }
62
+ // ── 3. Dead exports ───────────────────────────────────────────────────────────
63
+ function checkDeadExports(project, cwd) {
64
+ const imported = new Set();
65
+ for (const sf of project.getSourceFiles()) {
66
+ for (const d of sf.getImportDeclarations()) {
67
+ for (const n of d.getNamedImports())
68
+ imported.add(n.getName());
69
+ const def = d.getDefaultImport();
70
+ if (def)
71
+ imported.add(def.getText());
72
+ }
73
+ }
74
+ const dead = [];
75
+ for (const sf of project.getSourceFiles()) {
76
+ if (sf.getFilePath().endsWith('index.ts'))
77
+ continue;
78
+ for (const [name, decls] of sf.getExportedDeclarations()) {
79
+ if (!imported.has(name) && decls[0]) {
80
+ dead.push(`${name} (${path.relative(cwd, sf.getFilePath())}:${decls[0].getStartLineNumber()})`);
81
+ }
82
+ }
83
+ }
84
+ return dead.length
85
+ ? { status: 'fail', label: `Dead exports: ${dead.length} found`, details: dead }
86
+ : { status: 'pass', label: 'No dead exports' };
87
+ }
88
+ // ── 4. Unused packages ────────────────────────────────────────────────────────
89
+ async function checkUnusedPackages(cwd) {
90
+ const pkg = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf-8'));
91
+ const deps = Object.keys(pkg.dependencies ?? {});
92
+ const files = await globby(['src/**/*.ts', 'src/**/*.js'], { cwd });
93
+ const src = (await Promise.all(files.map(f => fs.readFile(path.join(cwd, f), 'utf-8')))).join('\n');
94
+ const unused = deps.filter(d => !src.includes(d));
95
+ return unused.length
96
+ ? { status: 'fail', label: `Unused packages: ${unused.length} found`, details: unused }
97
+ : { status: 'pass', label: 'No unused packages' };
98
+ }
99
+ // ── 5. Complex functions ──────────────────────────────────────────────────────
100
+ const COMPLEXITY_KINDS = [
101
+ SyntaxKind.IfStatement, SyntaxKind.ForStatement, SyntaxKind.ForInStatement,
102
+ SyntaxKind.ForOfStatement, SyntaxKind.WhileStatement, SyntaxKind.DoStatement,
103
+ SyntaxKind.CaseClause, SyntaxKind.CatchClause,
104
+ SyntaxKind.AmpersandAmpersandToken, SyntaxKind.BarBarToken,
105
+ ];
106
+ function checkComplexFunctions(project, cwd) {
107
+ const hits = [];
108
+ for (const sf of project.getSourceFiles()) {
109
+ const rel = path.relative(cwd, sf.getFilePath());
110
+ const score = (node) => 1 + COMPLEXITY_KINDS.reduce((s, k) => s + node.getDescendantsOfKind(k).length, 0);
111
+ for (const fn of sf.getFunctions()) {
112
+ const c = score(fn);
113
+ if (c > 10)
114
+ hits.push(`${fn.getName() ?? '<anon>'} (${rel}:${fn.getStartLineNumber()}) complexity=${c}`);
115
+ }
116
+ for (const cls of sf.getClasses()) {
117
+ for (const m of cls.getMethods()) {
118
+ const c = score(m);
119
+ if (c > 10)
120
+ hits.push(`${cls.getName() ?? '<cls>'}.${m.getName()} (${rel}:${m.getStartLineNumber()}) complexity=${c}`);
121
+ }
122
+ }
123
+ }
124
+ return hits.length
125
+ ? { status: 'warn', label: `Complex functions: ${hits.length} found`, details: hits }
126
+ : { status: 'pass', label: 'No complex functions' };
127
+ }
128
+ // ── 6. Missing tests ──────────────────────────────────────────────────────────
129
+ async function checkMissingTests(cwd) {
130
+ const src = await globby(['src/**/*.ts', '!src/**/*.test.ts', '!src/**/*.spec.ts', '!src/index.ts'], { cwd });
131
+ const tests = new Set((await globby(['src/**/*.{test,spec}.ts'], { cwd })).map(f => f.replace(/\.(test|spec)\.ts$/, '.ts')));
132
+ const missing = src.filter(f => !tests.has(f));
133
+ return missing.length
134
+ ? { status: 'fail', label: `Missing tests: ${missing.length} files`, details: missing }
135
+ : { status: 'pass', label: 'All src files have tests' };
136
+ }
137
+ // ── 7. Security scan ──────────────────────────────────────────────────────────
138
+ const SEC_PATTERNS = [
139
+ [/eval\(/, 'eval('],
140
+ [/innerHTML\s*=/, 'innerHTML ='],
141
+ [/dangerouslySetInnerHTML/, 'dangerouslySetInnerHTML'],
142
+ [/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/, 'hardcoded IP'],
143
+ [/process\.env\.\w+(?!\s*(?:\?\?|\|\|))/, 'process.env without default'],
144
+ ];
145
+ async function checkSecurity(cwd) {
146
+ const files = await globby(['src/**/*.ts', 'src/**/*.js'], { cwd });
147
+ const hits = [];
148
+ for (const f of files) {
149
+ const lines = (await fs.readFile(path.join(cwd, f), 'utf-8')).split('\n');
150
+ for (let i = 0; i < lines.length; i++) {
151
+ for (const [re, label] of SEC_PATTERNS) {
152
+ if (re.test(lines[i]))
153
+ hits.push(`${label} at ${f}:${i + 1}`);
154
+ }
155
+ }
156
+ }
157
+ return hits.length
158
+ ? { status: 'fail', label: `Security issues: ${hits.length} found`, details: hits }
159
+ : { status: 'pass', label: 'No security issues found' };
160
+ }
161
+ // ── Entry point ───────────────────────────────────────────────────────────────
162
+ export async function runHealth(cwd) {
163
+ const SEP = '━'.repeat(40);
164
+ console.log(chalk.bold(`\n━━━ KONECK Health Report ${SEP}`));
165
+ const project = (() => {
166
+ try {
167
+ return new Project({ tsConfigFilePath: path.join(cwd, 'tsconfig.json') });
168
+ }
169
+ catch {
170
+ const p = new Project();
171
+ p.addSourceFilesAtPaths([path.join(cwd, 'src/**/*.ts')]);
172
+ return p;
173
+ }
174
+ })();
175
+ const CHECKS = [
176
+ ['large-files', () => checkLargeFiles(cwd)],
177
+ ['circular-imports', () => checkCircularImports(project, cwd)],
178
+ ['dead-exports', () => checkDeadExports(project, cwd)],
179
+ ['unused-packages', () => checkUnusedPackages(cwd)],
180
+ ['complex-functions', () => checkComplexFunctions(project, cwd)],
181
+ ['missing-tests', () => checkMissingTests(cwd)],
182
+ ['security', () => checkSecurity(cwd)],
183
+ ];
184
+ const results = [];
185
+ for (const [name, fn] of CHECKS) {
186
+ try {
187
+ results.push(await fn());
188
+ }
189
+ catch (err) {
190
+ results.push({ status: 'warn', label: `${name}: ${err.message}` });
191
+ }
192
+ }
193
+ for (const r of results)
194
+ emit(r);
195
+ const passed = results.filter(r => r.status === 'pass').length;
196
+ console.log(chalk.bold(`${SEP}`));
197
+ console.log(`Score: ${passed}/${CHECKS.length} checks passed\n`);
198
+ if (results.some(r => r.status === 'fail'))
199
+ process.exitCode = 1;
200
+ }
201
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"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"}