@thejeetsingh/kalcode 2.0.0 → 2.2.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 (125) hide show
  1. package/README.md +0 -4
  2. package/dist/bin/kalcode.d.ts +2 -0
  3. package/dist/bin/kalcode.js +12 -0
  4. package/dist/bin/kalcode.js.map +1 -0
  5. package/dist/src/agent/context.d.ts +6 -0
  6. package/dist/src/agent/context.js +60 -0
  7. package/dist/src/agent/context.js.map +1 -0
  8. package/dist/src/agent/history.d.ts +8 -0
  9. package/dist/src/agent/history.js +59 -0
  10. package/dist/src/agent/history.js.map +1 -0
  11. package/dist/src/agent/loop.d.ts +6 -0
  12. package/dist/src/agent/loop.js +235 -0
  13. package/dist/src/agent/loop.js.map +1 -0
  14. package/dist/src/agent/memory.d.ts +2 -0
  15. package/dist/src/agent/memory.js +27 -0
  16. package/dist/src/agent/memory.js.map +1 -0
  17. package/dist/src/agent/permissions.d.ts +5 -0
  18. package/dist/src/agent/permissions.js +66 -0
  19. package/dist/src/agent/permissions.js.map +1 -0
  20. package/dist/src/agent/text-tool-parser.d.ts +2 -0
  21. package/dist/src/agent/text-tool-parser.js +68 -0
  22. package/dist/src/agent/text-tool-parser.js.map +1 -0
  23. package/dist/src/api/client.d.ts +2 -0
  24. package/dist/src/api/client.js +86 -0
  25. package/dist/src/api/client.js.map +1 -0
  26. package/dist/src/api/stream-parser.d.ts +2 -0
  27. package/dist/src/api/stream-parser.js +97 -0
  28. package/dist/src/api/stream-parser.js.map +1 -0
  29. package/dist/src/config.d.ts +7 -0
  30. package/dist/src/config.js +52 -0
  31. package/dist/src/config.js.map +1 -0
  32. package/dist/src/constants.d.ts +25 -0
  33. package/{src/constants.ts → dist/src/constants.js} +17 -19
  34. package/dist/src/constants.js.map +1 -0
  35. package/dist/src/git/git.d.ts +15 -0
  36. package/dist/src/git/git.js +73 -0
  37. package/dist/src/git/git.js.map +1 -0
  38. package/dist/src/index.d.ts +1 -0
  39. package/dist/src/index.js +415 -0
  40. package/dist/src/index.js.map +1 -0
  41. package/dist/src/proxy/server.d.ts +1 -0
  42. package/dist/src/proxy/server.js +92 -0
  43. package/dist/src/proxy/server.js.map +1 -0
  44. package/dist/src/tools/edit-file.d.ts +2 -0
  45. package/dist/src/tools/edit-file.js +88 -0
  46. package/dist/src/tools/edit-file.js.map +1 -0
  47. package/dist/src/tools/glob-tool.d.ts +2 -0
  48. package/dist/src/tools/glob-tool.js +52 -0
  49. package/dist/src/tools/glob-tool.js.map +1 -0
  50. package/dist/src/tools/grep.d.ts +2 -0
  51. package/dist/src/tools/grep.js +93 -0
  52. package/dist/src/tools/grep.js.map +1 -0
  53. package/dist/src/tools/list-directory.d.ts +2 -0
  54. package/dist/src/tools/list-directory.js +90 -0
  55. package/dist/src/tools/list-directory.js.map +1 -0
  56. package/dist/src/tools/read-file.d.ts +2 -0
  57. package/dist/src/tools/read-file.js +64 -0
  58. package/dist/src/tools/read-file.js.map +1 -0
  59. package/dist/src/tools/registry.d.ts +4 -0
  60. package/dist/src/tools/registry.js +32 -0
  61. package/dist/src/tools/registry.js.map +1 -0
  62. package/dist/src/tools/run-command.d.ts +2 -0
  63. package/dist/src/tools/run-command.js +98 -0
  64. package/dist/src/tools/run-command.js.map +1 -0
  65. package/dist/src/tools/write-file.d.ts +2 -0
  66. package/dist/src/tools/write-file.js +39 -0
  67. package/dist/src/tools/write-file.js.map +1 -0
  68. package/dist/src/types.d.ts +61 -0
  69. package/dist/src/types.js +2 -0
  70. package/dist/src/types.js.map +1 -0
  71. package/dist/src/ui/input.d.ts +5 -0
  72. package/dist/src/ui/input.js +52 -0
  73. package/dist/src/ui/input.js.map +1 -0
  74. package/dist/src/ui/model-picker.d.ts +7 -0
  75. package/dist/src/ui/model-picker.js +70 -0
  76. package/dist/src/ui/model-picker.js.map +1 -0
  77. package/dist/src/ui/skills-picker.d.ts +2 -0
  78. package/dist/src/ui/skills-picker.js +95 -0
  79. package/dist/src/ui/skills-picker.js.map +1 -0
  80. package/dist/src/ui/skills.d.ts +14 -0
  81. package/dist/src/ui/skills.js +137 -0
  82. package/dist/src/ui/skills.js.map +1 -0
  83. package/dist/src/ui/spinner.d.ts +5 -0
  84. package/dist/src/ui/spinner.js +49 -0
  85. package/dist/src/ui/spinner.js.map +1 -0
  86. package/dist/src/ui/stream-renderer.d.ts +2 -0
  87. package/dist/src/ui/stream-renderer.js +66 -0
  88. package/dist/src/ui/stream-renderer.js.map +1 -0
  89. package/dist/src/ui/terminal.d.ts +24 -0
  90. package/dist/src/ui/terminal.js +272 -0
  91. package/dist/src/ui/terminal.js.map +1 -0
  92. package/package.json +16 -16
  93. package/api/health.ts +0 -10
  94. package/api/v1/chat/completions.ts +0 -59
  95. package/bin/kalcode.ts +0 -14
  96. package/src/agent/context.ts +0 -62
  97. package/src/agent/history.ts +0 -70
  98. package/src/agent/loop.ts +0 -282
  99. package/src/agent/memory.ts +0 -26
  100. package/src/agent/permissions.ts +0 -84
  101. package/src/agent/text-tool-parser.ts +0 -71
  102. package/src/api/client.ts +0 -110
  103. package/src/api/stream-parser.ts +0 -109
  104. package/src/config.ts +0 -61
  105. package/src/git/git.ts +0 -86
  106. package/src/index.ts +0 -403
  107. package/src/proxy/server.ts +0 -128
  108. package/src/tools/edit-file.ts +0 -97
  109. package/src/tools/glob-tool.ts +0 -59
  110. package/src/tools/grep.ts +0 -96
  111. package/src/tools/list-directory.ts +0 -101
  112. package/src/tools/read-file.ts +0 -71
  113. package/src/tools/registry.ts +0 -41
  114. package/src/tools/run-command.ts +0 -99
  115. package/src/tools/write-file.ts +0 -42
  116. package/src/types.ts +0 -68
  117. package/src/ui/input.ts +0 -60
  118. package/src/ui/model-picker.ts +0 -92
  119. package/src/ui/skills-picker.ts +0 -113
  120. package/src/ui/skills.ts +0 -152
  121. package/src/ui/spinner.ts +0 -56
  122. package/src/ui/stream-renderer.ts +0 -69
  123. package/src/ui/terminal.ts +0 -337
  124. package/tsconfig.json +0 -15
  125. package/vercel.json +0 -12
@@ -0,0 +1,415 @@
1
+ import { parseArgs } from "util";
2
+ import { writeFileSync } from "fs";
3
+ import { join } from "path";
4
+ import chalk from "chalk";
5
+ import { VERSION, AVAILABLE_MODELS } from "./constants.js";
6
+ import { loadConfig, setApiKey, setModel, saveConfig } from "./config.js";
7
+ import { initHistory, clearHistory, getLastUserMessage, removeLastExchange } from "./agent/history.js";
8
+ import { runAgentLoop, setCompact, getCompact, setAskMode, getAskMode, interruptAgent } from "./agent/loop.js";
9
+ import { renderWelcome, renderHelp, renderSeparator, renderHints } from "./ui/terminal.js";
10
+ import { pickModel } from "./ui/model-picker.js";
11
+ import { createInput } from "./ui/input.js";
12
+ import { getSkills, searchSkills, renderSkillsList } from "./ui/skills.js";
13
+ import { setPermissionLevel, getPermissionLevel } from "./agent/permissions.js";
14
+ import { addFileToContext, dropFileFromContext, listContextFiles, clearContextFiles } from "./agent/context.js";
15
+ import { getMemoryFileName } from "./agent/memory.js";
16
+ import { isGitRepo, gitUndo, gitDiffSummary, gitLog, gitStatus, gitCommit } from "./git/git.js";
17
+ import * as readline from "readline";
18
+ const REPL_COMMANDS = [
19
+ { cmd: "/help", desc: "Show help" },
20
+ { cmd: "/clear", desc: "Clear conversation + context" },
21
+ { cmd: "/retry", desc: "Retry last message" },
22
+ { cmd: "/model", desc: "Show/switch model" },
23
+ { cmd: "/compact", desc: "Toggle compact output" },
24
+ { cmd: "/ask", desc: "Toggle read-only mode" },
25
+ { cmd: "/auto", desc: "Toggle auto-accept permissions" },
26
+ { cmd: "/skills", desc: "List skills" },
27
+ { cmd: "/add", desc: "Add file to context" },
28
+ { cmd: "/drop", desc: "Remove file from context" },
29
+ { cmd: "/files", desc: "List context files" },
30
+ { cmd: "/diff", desc: "Show uncommitted changes" },
31
+ { cmd: "/status", desc: "Git status" },
32
+ { cmd: "/log", desc: "Recent commits" },
33
+ { cmd: "/undo", desc: "Undo last commit" },
34
+ { cmd: "/commit", desc: "Commit all changes" },
35
+ { cmd: "/init", desc: "Create KALCODE.md" },
36
+ { cmd: "/exit", desc: "Quit" },
37
+ { cmd: "/quit", desc: "Quit" },
38
+ { cmd: "/q", desc: "Quit" },
39
+ ];
40
+ export async function main() {
41
+ const { values, positionals } = parseArgs({
42
+ args: process.argv.slice(2),
43
+ options: {
44
+ help: { type: "boolean", short: "h" },
45
+ version: { type: "boolean", short: "v" },
46
+ model: { type: "string", short: "m" },
47
+ "set-key": { type: "boolean" },
48
+ "set-model": { type: "string" },
49
+ compact: { type: "boolean" },
50
+ "auto-accept": { type: "boolean" },
51
+ ask: { type: "boolean" },
52
+ },
53
+ allowPositionals: true,
54
+ strict: true,
55
+ });
56
+ if (values.version) {
57
+ console.log(`kalcode v${VERSION}`);
58
+ return;
59
+ }
60
+ if (values.help) {
61
+ printHelp();
62
+ return;
63
+ }
64
+ if (values["set-key"]) {
65
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
66
+ const key = await new Promise((resolve) => {
67
+ rl.question(chalk.dim(" NVIDIA NIM API key: "), (ans) => { rl.close(); resolve(ans.trim()); });
68
+ });
69
+ if (key) {
70
+ setApiKey(key);
71
+ console.log(chalk.green(" ✓ Saved to ~/.kalcode/config.json"));
72
+ }
73
+ else {
74
+ console.log(chalk.yellow(" No key provided."));
75
+ }
76
+ return;
77
+ }
78
+ if (values["set-model"]) {
79
+ setModel(values["set-model"]);
80
+ console.log(chalk.green(` ✓ Default model: ${values["set-model"]}`));
81
+ return;
82
+ }
83
+ const config = loadConfig();
84
+ if (values.model)
85
+ config.model = values.model;
86
+ if (values.compact)
87
+ setCompact(true);
88
+ if (values["auto-accept"])
89
+ setPermissionLevel("auto");
90
+ if (values.ask)
91
+ setAskMode(true);
92
+ const proxyUrl = (process.env.KALCODE_PROXY_URL || "").trim();
93
+ const proxyMode = proxyUrl.length > 0 || !config.apiKey; // auto-proxy when no key
94
+ // API key check — skip when proxy will be used (explicit or auto-fallback)
95
+ if (!proxyMode && !config.apiKey) {
96
+ console.log("");
97
+ console.log(chalk.yellow(" No API key found."));
98
+ console.log(chalk.dim(" Get one at https://build.nvidia.com (NVIDIA NIM)"));
99
+ console.log("");
100
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
101
+ const key = await new Promise((resolve) => {
102
+ rl.question(chalk.dim(" NVIDIA NIM API key: "), (ans) => { rl.close(); resolve(ans.trim()); });
103
+ });
104
+ if (!key) {
105
+ console.log(chalk.red(" API key required."));
106
+ return;
107
+ }
108
+ setApiKey(key);
109
+ config.apiKey = key;
110
+ console.log(chalk.green(" ✓ Saved."));
111
+ console.log("");
112
+ }
113
+ await initHistory();
114
+ // Single-shot mode
115
+ if (positionals.length > 0) {
116
+ await runAgentLoop(config.apiKey, config.model, positionals.join(" "));
117
+ return;
118
+ }
119
+ // ─── Interactive REPL ─────────────────────────────────────────────
120
+ renderWelcome(config.model);
121
+ // Status context
122
+ const statusParts = [];
123
+ const memFile = getMemoryFileName(process.cwd());
124
+ if (memFile)
125
+ statusParts.push(`memory: ${memFile}`);
126
+ if (isGitRepo())
127
+ statusParts.push("git: repo detected");
128
+ if (proxyMode)
129
+ statusParts.push("api: proxy");
130
+ if (statusParts.length > 0) {
131
+ console.log(chalk.dim(` ${statusParts.join(" · ")}`));
132
+ }
133
+ renderSeparator();
134
+ renderHints();
135
+ // Ctrl+C handling
136
+ let agentRunning = false;
137
+ process.on("SIGINT", () => {
138
+ if (agentRunning) {
139
+ interruptAgent();
140
+ }
141
+ else {
142
+ console.log(chalk.dim("\n Goodbye."));
143
+ process.exit(0);
144
+ }
145
+ });
146
+ const input = createInput(REPL_COMMANDS.map((c) => c.cmd));
147
+ while (true) {
148
+ let userInput;
149
+ try {
150
+ userInput = await input.prompt();
151
+ }
152
+ catch {
153
+ await new Promise(r => setTimeout(r, 50));
154
+ continue;
155
+ }
156
+ if (!userInput)
157
+ continue;
158
+ if (userInput.startsWith("/")) {
159
+ const parts = userInput.split(/\s+/);
160
+ const rawCmd = parts[0].toLowerCase();
161
+ const arg = parts.slice(1).join(" ");
162
+ const commandNames = REPL_COMMANDS.map((c) => c.cmd);
163
+ if (rawCmd === "/") {
164
+ renderSlashCommandMenu(commandNames);
165
+ continue;
166
+ }
167
+ let cmd = rawCmd;
168
+ if (!commandNames.includes(rawCmd)) {
169
+ const matches = commandNames.filter((c) => c.startsWith(rawCmd));
170
+ if (matches.length === 1) {
171
+ cmd = matches[0];
172
+ console.log(chalk.dim(` → ${rawCmd} resolved to ${cmd}`));
173
+ }
174
+ else if (matches.length > 1) {
175
+ renderSlashCommandMenu(matches);
176
+ continue;
177
+ }
178
+ else {
179
+ console.log(chalk.dim(` Unknown command: ${rawCmd}. Type / for command list.`));
180
+ continue;
181
+ }
182
+ }
183
+ switch (cmd) {
184
+ case "/exit":
185
+ case "/quit":
186
+ case "/q":
187
+ console.log(chalk.dim(" Goodbye."));
188
+ input.close();
189
+ return;
190
+ case "/help":
191
+ renderHelp();
192
+ continue;
193
+ case "/clear":
194
+ clearHistory();
195
+ clearContextFiles();
196
+ console.log(chalk.dim(" Conversation cleared."));
197
+ continue;
198
+ case "/retry": {
199
+ const lastMsg = getLastUserMessage();
200
+ if (!lastMsg) {
201
+ console.log(chalk.dim(" Nothing to retry."));
202
+ continue;
203
+ }
204
+ removeLastExchange();
205
+ console.log(chalk.dim(` Retrying: ${lastMsg.slice(0, 60)}${lastMsg.length > 60 ? "…" : ""}`));
206
+ // Close readline before agent run so permission keypresses do not leak into prompt input.
207
+ input.close();
208
+ agentRunning = true;
209
+ await runAgentLoop(config.apiKey, config.model, lastMsg);
210
+ agentRunning = false;
211
+ continue;
212
+ }
213
+ case "/compact":
214
+ setCompact(!getCompact());
215
+ console.log(chalk.dim(` Compact: ${getCompact() ? "on" : "off"}`));
216
+ continue;
217
+ case "/ask":
218
+ setAskMode(!getAskMode());
219
+ console.log(chalk.dim(` Read-only mode: ${getAskMode() ? "on" : "off"}`));
220
+ continue;
221
+ case "/auto":
222
+ setPermissionLevel(getPermissionLevel() === "auto" ? "ask" : "auto");
223
+ console.log(chalk.dim(` Auto-accept: ${getPermissionLevel() === "auto" ? "on" : "off"}`));
224
+ continue;
225
+ case "/model":
226
+ if (arg) {
227
+ config.model = arg;
228
+ saveConfig(config);
229
+ console.log(chalk.green(` ✓ Model: ${arg}`));
230
+ }
231
+ else {
232
+ // Close readline before opening raw-mode picker to avoid keypress buffering issues.
233
+ input.close();
234
+ const picked = await pickModel(AVAILABLE_MODELS, config.model);
235
+ if (picked && picked !== config.model) {
236
+ config.model = picked;
237
+ saveConfig(config);
238
+ console.log(chalk.green(` ✓ Switched to ${picked}`));
239
+ }
240
+ else if (picked) {
241
+ console.log(chalk.dim(` Already using ${picked}`));
242
+ }
243
+ else {
244
+ console.log(chalk.dim(" Cancelled."));
245
+ }
246
+ }
247
+ continue;
248
+ case "/skills": {
249
+ const skills = arg ? searchSkills(arg) : getSkills();
250
+ renderSkillsList(skills, arg);
251
+ continue;
252
+ }
253
+ case "/add":
254
+ if (!arg) {
255
+ console.log(chalk.dim(" Usage: /add <file>"));
256
+ continue;
257
+ }
258
+ console.log(chalk.dim(` ${addFileToContext(arg)}`));
259
+ continue;
260
+ case "/drop":
261
+ if (!arg) {
262
+ console.log(chalk.dim(" Usage: /drop <file>"));
263
+ continue;
264
+ }
265
+ console.log(chalk.dim(` ${dropFileFromContext(arg)}`));
266
+ continue;
267
+ case "/files": {
268
+ const files = listContextFiles();
269
+ if (files.length === 0) {
270
+ console.log(chalk.dim(" No files in context. Use /add <file>"));
271
+ }
272
+ else {
273
+ files.forEach((f) => console.log(chalk.dim(` · ${f}`)));
274
+ }
275
+ continue;
276
+ }
277
+ case "/diff":
278
+ if (!isGitRepo()) {
279
+ console.log(chalk.dim(" Not a git repo."));
280
+ continue;
281
+ }
282
+ console.log(chalk.dim(await gitDiffSummary()));
283
+ continue;
284
+ case "/status":
285
+ if (!isGitRepo()) {
286
+ console.log(chalk.dim(" Not a git repo."));
287
+ continue;
288
+ }
289
+ console.log(chalk.dim(await gitStatus()));
290
+ continue;
291
+ case "/log":
292
+ if (!isGitRepo()) {
293
+ console.log(chalk.dim(" Not a git repo."));
294
+ continue;
295
+ }
296
+ console.log(chalk.dim(await gitLog()));
297
+ continue;
298
+ case "/undo":
299
+ if (!isGitRepo()) {
300
+ console.log(chalk.dim(" Not a git repo."));
301
+ continue;
302
+ }
303
+ const undoResult = await gitUndo();
304
+ console.log(undoResult.ok ? chalk.green(` ✓ ${undoResult.output}`) : chalk.red(` ✗ ${undoResult.output}`));
305
+ continue;
306
+ case "/commit": {
307
+ if (!isGitRepo()) {
308
+ console.log(chalk.dim(" Not a git repo."));
309
+ continue;
310
+ }
311
+ const msg = arg || "kalcode changes";
312
+ const commitResult = await gitCommit(msg);
313
+ console.log(commitResult.ok ? chalk.green(` ✓ ${commitResult.output}`) : chalk.red(` ✗ ${commitResult.output}`));
314
+ continue;
315
+ }
316
+ case "/init": {
317
+ const path = join(process.cwd(), "KALCODE.md");
318
+ const template = `# Project Conventions
319
+
320
+ ## Tech Stack
321
+ <!-- e.g., TypeScript, React, Node.js -->
322
+
323
+ ## Architecture
324
+ <!-- Brief description of project structure -->
325
+
326
+ ## Coding Style
327
+ <!-- e.g., Use functional components, prefer const, etc. -->
328
+
329
+ ## Important Files
330
+ <!-- Key files the agent should know about -->
331
+
332
+ ## Rules
333
+ <!-- Any rules the agent should follow -->
334
+ `;
335
+ writeFileSync(path, template);
336
+ console.log(chalk.green(" ✓ Created KALCODE.md — edit it with your project conventions"));
337
+ continue;
338
+ }
339
+ default:
340
+ console.log(chalk.dim(` Unknown command: ${cmd}. Type /help`));
341
+ continue;
342
+ }
343
+ }
344
+ // Close readline before agent run so permission keypresses do not leak into prompt input.
345
+ input.close();
346
+ agentRunning = true;
347
+ await runAgentLoop(config.apiKey, config.model, userInput);
348
+ agentRunning = false;
349
+ }
350
+ input.close();
351
+ }
352
+ function printHelp() {
353
+ console.log(`
354
+ ${chalk.bold("kalcode")} — CLI coding agent powered by NVIDIA NIM
355
+
356
+ ${chalk.bold("Usage:")}
357
+ kalcode [options] [prompt]
358
+
359
+ ${chalk.bold("Options:")}
360
+ -h, --help Show this help
361
+ -v, --version Show version
362
+ -m, --model <id> Use a specific model
363
+ --set-key Set NVIDIA NIM API key
364
+ --set-model <id> Set default model
365
+ --compact Compact output
366
+ --auto-accept Skip permission prompts
367
+ --ask Read-only mode (no writes)
368
+
369
+ ${chalk.bold("REPL commands:")}
370
+ /help Show help
371
+ /model [id] Show or switch model
372
+ /clear Clear conversation + context
373
+ /retry Retry last message
374
+ /compact Toggle compact output
375
+ /ask Toggle read-only mode
376
+ /auto Toggle auto-accept permissions
377
+ /skills [query] List skills (filter optional)
378
+ /add <file> Add file to context
379
+ /drop <file> Remove file from context
380
+ /files List context files
381
+
382
+ ${chalk.bold("Git commands:")}
383
+ /diff Show uncommitted changes
384
+ /status Git status
385
+ /log Recent commits
386
+ /undo Undo last commit (soft reset)
387
+ /commit [msg] Commit all changes
388
+
389
+ ${chalk.bold("Project:")}
390
+ /init Create KALCODE.md conventions file
391
+ /exit Quit
392
+
393
+ ${chalk.bold("Models (NVIDIA NIM):")}
394
+ ${AVAILABLE_MODELS.map(m => ` ${chalk.dim(m.name.padEnd(22))} ${m.id}`).join("\n")}
395
+
396
+ ${chalk.bold("Examples:")}
397
+ kalcode "fix the bug in main.ts"
398
+ kalcode -m nvidia/llama-3.1-405b-instruct "explain this"
399
+ kalcode --ask "explain this codebase"
400
+ / Show all slash commands
401
+ /he Auto-resolve to /help when unique
402
+ `);
403
+ }
404
+ function renderSlashCommandMenu(commands) {
405
+ console.log("");
406
+ console.log(chalk.bold(" Slash commands"));
407
+ for (const cmd of commands) {
408
+ const def = REPL_COMMANDS.find((c) => c.cmd === cmd);
409
+ if (!def)
410
+ continue;
411
+ console.log(` ${chalk.bold(cmd.padEnd(12))}${chalk.dim(def.desc)}`);
412
+ }
413
+ console.log("");
414
+ }
415
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,92 @@
1
+ import { API_URL } from "../constants.js";
2
+ const PORT = parseInt(process.env.PORT || "8787", 10);
3
+ const HOST = process.env.HOST || "0.0.0.0";
4
+ const NVIDIA_NIM_KEY = process.env.NVIDIA_NIM_KEY || "";
5
+ const RATE_LIMIT_PER_MIN = Math.max(1, parseInt(process.env.KALCODE_PROXY_RATE_LIMIT_PER_MIN || "120", 10));
6
+ const requestTimestampsByClient = new Map();
7
+ function json(status, payload) {
8
+ return new Response(JSON.stringify(payload), {
9
+ status,
10
+ headers: {
11
+ "Content-Type": "application/json",
12
+ },
13
+ });
14
+ }
15
+ function getClientId(req) {
16
+ const forwardedFor = req.headers.get("x-forwarded-for");
17
+ if (forwardedFor)
18
+ return forwardedFor.split(",")[0].trim();
19
+ return "unknown";
20
+ }
21
+ function isRateLimited(clientId) {
22
+ const now = Date.now();
23
+ const windowStart = now - 60_000;
24
+ const timestamps = requestTimestampsByClient.get(clientId) || [];
25
+ const filtered = timestamps.filter((ts) => ts >= windowStart);
26
+ if (filtered.length >= RATE_LIMIT_PER_MIN) {
27
+ requestTimestampsByClient.set(clientId, filtered);
28
+ return true;
29
+ }
30
+ filtered.push(now);
31
+ requestTimestampsByClient.set(clientId, filtered);
32
+ return false;
33
+ }
34
+ async function proxyCompletions(req) {
35
+ if (!NVIDIA_NIM_KEY) {
36
+ return json(500, {
37
+ error: {
38
+ message: "Server missing NVIDIA_NIM_KEY.",
39
+ },
40
+ });
41
+ }
42
+ const clientId = getClientId(req);
43
+ if (isRateLimited(clientId)) {
44
+ return json(429, {
45
+ error: {
46
+ message: "Rate limit exceeded. Please retry shortly.",
47
+ },
48
+ });
49
+ }
50
+ const body = await req.text();
51
+ const upstream = await fetch(API_URL, {
52
+ method: "POST",
53
+ headers: {
54
+ "Content-Type": "application/json",
55
+ Authorization: `Bearer ${NVIDIA_NIM_KEY}`,
56
+ },
57
+ body,
58
+ });
59
+ const headers = new Headers();
60
+ const contentType = upstream.headers.get("content-type");
61
+ if (contentType)
62
+ headers.set("Content-Type", contentType);
63
+ const cacheControl = upstream.headers.get("cache-control");
64
+ if (cacheControl)
65
+ headers.set("Cache-Control", cacheControl);
66
+ return new Response(upstream.body, {
67
+ status: upstream.status,
68
+ headers,
69
+ });
70
+ }
71
+ const server = Bun.serve({
72
+ hostname: HOST,
73
+ port: PORT,
74
+ async fetch(req) {
75
+ const url = new URL(req.url);
76
+ if (req.method === "GET" && url.pathname === "/health") {
77
+ return json(200, {
78
+ ok: true,
79
+ });
80
+ }
81
+ if (req.method === "POST" && url.pathname === "/v1/chat/completions") {
82
+ return proxyCompletions(req);
83
+ }
84
+ return json(404, {
85
+ error: {
86
+ message: "Not found.",
87
+ },
88
+ });
89
+ },
90
+ });
91
+ console.log(`kalcode proxy listening on http://${server.hostname}:${server.port} (rate ${RATE_LIMIT_PER_MIN}/min/client)`);
92
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/proxy/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;AAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AACxD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,CAAC,EACD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,KAAK,EAAE,EAAE,CAAC,CACpE,CAAC;AAEF,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE9D,SAAS,IAAI,CAAC,MAAc,EAAE,OAAgC;IAC5D,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QAC3C,MAAM;QACN,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC;IAE9D,IAAI,QAAQ,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAC1C,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAY;IAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,EAAE;YACf,KAAK,EAAE;gBACL,OAAO,EAAE,gCAAgC;aAC1C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,EAAE;YACf,KAAK,EAAE;gBACL,OAAO,EAAE,4CAA4C;aACtD;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QACpC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,cAAc,EAAE;SAC1C;QACD,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3D,IAAI,YAAY;QAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAE7D,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;IACvB,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,KAAK,CAAC,KAAK,CAAC,GAAY;QACtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,GAAG,EAAE;gBACf,EAAE,EAAE,IAAI;aACT,CAAC,CAAC;QACL,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YACrE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE;YACf,KAAK,EAAE;gBACL,OAAO,EAAE,YAAY;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CACT,qCAAqC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU,kBAAkB,cAAc,CAC9G,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ToolHandler } from "../types.js";
2
+ export declare const editFileTool: ToolHandler;
@@ -0,0 +1,88 @@
1
+ import { readFileSync, writeFileSync, existsSync } from "fs";
2
+ import { resolve } from "path";
3
+ export const editFileTool = {
4
+ definition: {
5
+ type: "function",
6
+ function: {
7
+ name: "editFile",
8
+ description: "Make surgical edits to a file using search/replace pairs. Each edit finds an exact text match and replaces it. Read the file first to get the exact text to search for.",
9
+ parameters: {
10
+ type: "object",
11
+ properties: {
12
+ filePath: {
13
+ type: "string",
14
+ description: "Path to the file to edit",
15
+ },
16
+ edits: {
17
+ type: "array",
18
+ description: "Array of search/replace edit operations",
19
+ items: {
20
+ type: "object",
21
+ properties: {
22
+ search: {
23
+ type: "string",
24
+ description: "Exact text to search for in the file",
25
+ },
26
+ replace: {
27
+ type: "string",
28
+ description: "Text to replace the search text with",
29
+ },
30
+ },
31
+ required: ["search", "replace"],
32
+ },
33
+ },
34
+ },
35
+ required: ["filePath", "edits"],
36
+ },
37
+ },
38
+ },
39
+ async execute(args) {
40
+ const filePath = resolve(String(args.filePath));
41
+ const edits = args.edits;
42
+ if (!existsSync(filePath)) {
43
+ return `Error: File not found: ${filePath}`;
44
+ }
45
+ if (!Array.isArray(edits) || edits.length === 0) {
46
+ return "Error: edits must be a non-empty array of {search, replace} pairs";
47
+ }
48
+ try {
49
+ let content = readFileSync(filePath, "utf-8");
50
+ const results = [];
51
+ for (let i = 0; i < edits.length; i++) {
52
+ const edit = edits[i];
53
+ const search = String(edit.search);
54
+ const replace = String(edit.replace);
55
+ let idx = content.indexOf(search);
56
+ // Try trimming trailing whitespace per line if exact match fails
57
+ if (idx === -1) {
58
+ const searchNorm = search.split("\n").map(l => l.trimEnd()).join("\n");
59
+ const contentNorm = content.split("\n").map(l => l.trimEnd()).join("\n");
60
+ idx = contentNorm.indexOf(searchNorm);
61
+ if (idx !== -1) {
62
+ // Find the real position accounting for trailing whitespace diffs
63
+ const before = contentNorm.slice(0, idx);
64
+ const linesBefore = before.split("\n").length - 1;
65
+ const linesInSearch = searchNorm.split("\n").length;
66
+ const contentLines = content.split("\n");
67
+ const realBefore = contentLines.slice(0, linesBefore).join("\n") + (linesBefore > 0 ? "\n" : "");
68
+ const realMatch = contentLines.slice(linesBefore, linesBefore + linesInSearch).join("\n");
69
+ content = realBefore + replace + content.slice(realBefore.length + realMatch.length);
70
+ results.push(`Edit ${i + 1}: OK (fuzzy whitespace match)`);
71
+ continue;
72
+ }
73
+ results.push(`Edit ${i + 1}: FAILED - search text not found`);
74
+ continue;
75
+ }
76
+ // Only replace first occurrence
77
+ content = content.slice(0, idx) + replace + content.slice(idx + search.length);
78
+ results.push(`Edit ${i + 1}: OK`);
79
+ }
80
+ writeFileSync(filePath, content);
81
+ return `Edited ${filePath}:\n${results.join("\n")}`;
82
+ }
83
+ catch (err) {
84
+ return `Error editing file: ${err instanceof Error ? err.message : String(err)}`;
85
+ }
86
+ },
87
+ };
88
+ //# sourceMappingURL=edit-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../../src/tools/edit-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolHandler } from "../types.js";
2
+ export declare const globTool: ToolHandler;