@aigencydev/cli 0.1.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 (104) hide show
  1. package/README.md +83 -0
  2. package/dist/agent/chunker.js +59 -0
  3. package/dist/agent/chunker.js.map +1 -0
  4. package/dist/agent/history.js +35 -0
  5. package/dist/agent/history.js.map +1 -0
  6. package/dist/agent/loop.js +219 -0
  7. package/dist/agent/loop.js.map +1 -0
  8. package/dist/agent/memory.js +177 -0
  9. package/dist/agent/memory.js.map +1 -0
  10. package/dist/api-client/auth.js +43 -0
  11. package/dist/api-client/auth.js.map +1 -0
  12. package/dist/api-client/base.js +154 -0
  13. package/dist/api-client/base.js.map +1 -0
  14. package/dist/api-client/stream.js +123 -0
  15. package/dist/api-client/stream.js.map +1 -0
  16. package/dist/api-client/updates.js +31 -0
  17. package/dist/api-client/updates.js.map +1 -0
  18. package/dist/api-client/usage.js +15 -0
  19. package/dist/api-client/usage.js.map +1 -0
  20. package/dist/auth/oauth.js +178 -0
  21. package/dist/auth/oauth.js.map +1 -0
  22. package/dist/auth/pkce.js +19 -0
  23. package/dist/auth/pkce.js.map +1 -0
  24. package/dist/auth/session.js +48 -0
  25. package/dist/auth/session.js.map +1 -0
  26. package/dist/auth/storage.js +142 -0
  27. package/dist/auth/storage.js.map +1 -0
  28. package/dist/cli.js +161 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/commands/chat.js +76 -0
  31. package/dist/commands/chat.js.map +1 -0
  32. package/dist/commands/help.js +61 -0
  33. package/dist/commands/help.js.map +1 -0
  34. package/dist/commands/init.js +43 -0
  35. package/dist/commands/init.js.map +1 -0
  36. package/dist/commands/login.js +153 -0
  37. package/dist/commands/login.js.map +1 -0
  38. package/dist/commands/logout.js +30 -0
  39. package/dist/commands/logout.js.map +1 -0
  40. package/dist/commands/update.js +88 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/commands/usage.js +64 -0
  43. package/dist/commands/usage.js.map +1 -0
  44. package/dist/config/defaults.js +54 -0
  45. package/dist/config/defaults.js.map +1 -0
  46. package/dist/config/hooks.js +99 -0
  47. package/dist/config/hooks.js.map +1 -0
  48. package/dist/config/paths.js +62 -0
  49. package/dist/config/paths.js.map +1 -0
  50. package/dist/config/settings.js +80 -0
  51. package/dist/config/settings.js.map +1 -0
  52. package/dist/index.js +36 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/security/command-filter.js +121 -0
  55. package/dist/security/command-filter.js.map +1 -0
  56. package/dist/security/sandbox.js +182 -0
  57. package/dist/security/sandbox.js.map +1 -0
  58. package/dist/security/sanitize.js +59 -0
  59. package/dist/security/sanitize.js.map +1 -0
  60. package/dist/tools/bash.js +206 -0
  61. package/dist/tools/bash.js.map +1 -0
  62. package/dist/tools/diff.js +56 -0
  63. package/dist/tools/diff.js.map +1 -0
  64. package/dist/tools/edit-file.js +165 -0
  65. package/dist/tools/edit-file.js.map +1 -0
  66. package/dist/tools/list-files.js +116 -0
  67. package/dist/tools/list-files.js.map +1 -0
  68. package/dist/tools/read-file.js +107 -0
  69. package/dist/tools/read-file.js.map +1 -0
  70. package/dist/tools/registry.js +54 -0
  71. package/dist/tools/registry.js.map +1 -0
  72. package/dist/tools/search-files.js +159 -0
  73. package/dist/tools/search-files.js.map +1 -0
  74. package/dist/tools/types.js +5 -0
  75. package/dist/tools/types.js.map +1 -0
  76. package/dist/tools/write-file.js +141 -0
  77. package/dist/tools/write-file.js.map +1 -0
  78. package/dist/types/index.js +8 -0
  79. package/dist/types/index.js.map +1 -0
  80. package/dist/ui/App.js +264 -0
  81. package/dist/ui/App.js.map +1 -0
  82. package/dist/ui/InputBar.js +22 -0
  83. package/dist/ui/InputBar.js.map +1 -0
  84. package/dist/ui/MessageList.js +82 -0
  85. package/dist/ui/MessageList.js.map +1 -0
  86. package/dist/ui/ModeIndicator.js +23 -0
  87. package/dist/ui/ModeIndicator.js.map +1 -0
  88. package/dist/ui/PermissionPrompt.js +61 -0
  89. package/dist/ui/PermissionPrompt.js.map +1 -0
  90. package/dist/ui/StatusBar.js +39 -0
  91. package/dist/ui/StatusBar.js.map +1 -0
  92. package/dist/ui/theme.js +42 -0
  93. package/dist/ui/theme.js.map +1 -0
  94. package/dist/utils/abort.js +61 -0
  95. package/dist/utils/abort.js.map +1 -0
  96. package/dist/utils/errors.js +63 -0
  97. package/dist/utils/errors.js.map +1 -0
  98. package/dist/utils/formatting.js +102 -0
  99. package/dist/utils/formatting.js.map +1 -0
  100. package/dist/utils/logger.js +43 -0
  101. package/dist/utils/logger.js.map +1 -0
  102. package/dist/version.js +10 -0
  103. package/dist/version.js.map +1 -0
  104. package/package.json +64 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * read_file — dosya okuma tool'u (yerel).
3
+ */
4
+ import fs from "node:fs/promises";
5
+ import { checkPath } from "../security/sandbox.js";
6
+ const MAX_BYTES = 512 * 1024; // 512 KB
7
+ const DEFAULT_LINE_LIMIT = 2000;
8
+ export const readFileTool = async (params, ctx) => {
9
+ const start = Date.now();
10
+ const rawPath = (params.path || params.filePath || "");
11
+ const startLine = Number.isInteger(params.start_line)
12
+ ? params.start_line
13
+ : undefined;
14
+ const endLine = Number.isInteger(params.end_line)
15
+ ? params.end_line
16
+ : undefined;
17
+ if (!rawPath) {
18
+ return {
19
+ success: false,
20
+ output: "",
21
+ error: "path parametresi eksik",
22
+ duration: Date.now() - start,
23
+ };
24
+ }
25
+ const check = checkPath(rawPath, ctx.cwd, { mustExist: true });
26
+ if (!check.ok || !check.realPath) {
27
+ return {
28
+ success: false,
29
+ output: "",
30
+ error: check.message || "Yol reddedildi",
31
+ duration: Date.now() - start,
32
+ };
33
+ }
34
+ let stat;
35
+ try {
36
+ stat = await fs.stat(check.realPath);
37
+ }
38
+ catch (err) {
39
+ return {
40
+ success: false,
41
+ output: "",
42
+ error: `Dosya bulunamadı: ${check.displayPath}`,
43
+ duration: Date.now() - start,
44
+ };
45
+ }
46
+ if (stat.isDirectory()) {
47
+ return {
48
+ success: false,
49
+ output: "",
50
+ error: `Bu bir dizin: ${check.displayPath}`,
51
+ duration: Date.now() - start,
52
+ };
53
+ }
54
+ if (stat.size > MAX_BYTES) {
55
+ return {
56
+ success: false,
57
+ output: "",
58
+ error: `Dosya çok büyük (${stat.size} bayt, maks ${MAX_BYTES})`,
59
+ duration: Date.now() - start,
60
+ };
61
+ }
62
+ let content;
63
+ try {
64
+ content = await fs.readFile(check.realPath, "utf8");
65
+ }
66
+ catch (err) {
67
+ return {
68
+ success: false,
69
+ output: "",
70
+ error: `Okuma hatası: ${err.message.slice(0, 120)}`,
71
+ duration: Date.now() - start,
72
+ };
73
+ }
74
+ // NULL byte → binary dosya
75
+ if (content.includes("\u0000")) {
76
+ return {
77
+ success: false,
78
+ output: "",
79
+ error: "İkili (binary) dosya okunamaz",
80
+ duration: Date.now() - start,
81
+ };
82
+ }
83
+ // Satır aralığı uygula
84
+ const lines = content.split(/\r?\n/);
85
+ const startIdx = startLine && startLine > 0 ? startLine - 1 : 0;
86
+ const endIdx = endLine && endLine > 0 ? Math.min(endLine, lines.length) : startIdx + DEFAULT_LINE_LIMIT;
87
+ const selected = lines.slice(startIdx, endIdx);
88
+ const truncated = endIdx < lines.length;
89
+ const formatted = selected
90
+ .map((line, i) => `${String(startIdx + i + 1).padStart(4, " ")}→${line}`)
91
+ .join("\n");
92
+ const meta = {
93
+ path: check.displayPath,
94
+ total_lines: lines.length,
95
+ shown_lines: selected.length,
96
+ truncated,
97
+ size_bytes: stat.size,
98
+ };
99
+ return {
100
+ success: true,
101
+ output: formatted + (truncated ? `\n\n… ${lines.length - endIdx} satır daha var (start_line/end_line ile okuyun)` : ""),
102
+ metadata: meta,
103
+ approvalState: 2,
104
+ duration: Date.now() - start,
105
+ };
106
+ };
107
+ //# sourceMappingURL=read-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../src/tools/read-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * AIGENCY CLI — Yerel tool registry.
3
+ *
4
+ * Sunucu tarafında `lib/agent/cli-tool-registry.ts` LLM'e şemaları sunar.
5
+ * CLI burada tool'ları **yerel çalıştırır**. Sunucudan gelen cli_tool_dispatch
6
+ * event'i bu registry üzerinden dispatch edilir.
7
+ */
8
+ import { readFileTool } from "./read-file.js";
9
+ import { listFilesTool } from "./list-files.js";
10
+ import { searchFilesTool } from "./search-files.js";
11
+ import { writeFileTool } from "./write-file.js";
12
+ import { editFileTool } from "./edit-file.js";
13
+ import { bashTool } from "./bash.js";
14
+ const HANDLERS = {
15
+ read_file: readFileTool,
16
+ list_files: listFilesTool,
17
+ search_files: searchFilesTool,
18
+ write_file: writeFileTool,
19
+ edit_file: editFileTool,
20
+ bash_execute: bashTool,
21
+ };
22
+ export function hasLocalTool(name) {
23
+ return name in HANDLERS;
24
+ }
25
+ export async function dispatchLocalTool(toolName, params, ctx) {
26
+ const start = Date.now();
27
+ const handler = HANDLERS[toolName];
28
+ if (!handler) {
29
+ return {
30
+ success: false,
31
+ output: "",
32
+ error: `Bilinmeyen tool: ${toolName}`,
33
+ duration: Date.now() - start,
34
+ };
35
+ }
36
+ try {
37
+ return await handler(params, ctx);
38
+ }
39
+ catch (err) {
40
+ const message = err.message || "Bilinmeyen hata";
41
+ // Path/username gibi sızıntıları temizle
42
+ const safe = message.replace(/[A-Z]:\\[^\s"')]+/gi, "[gizli]").slice(0, 200);
43
+ return {
44
+ success: false,
45
+ output: "",
46
+ error: safe,
47
+ duration: Date.now() - start,
48
+ };
49
+ }
50
+ }
51
+ export function listLocalTools() {
52
+ return Object.keys(HANDLERS);
53
+ }
54
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,MAAM,QAAQ,GAAqC;IACjD,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,YAAY;IACvB,YAAY,EAAE,QAAQ;CACvB,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,IAAI,QAAQ,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,MAA+B,EAC/B,GAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,oBAAoB,QAAQ,EAAE;YACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,iBAAiB,CAAC;QAC5D,yCAAyC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * search_files — proje içi regex/literal arama (ripgrep benzeri).
3
+ *
4
+ * Not: Harici ripgrep kullanmak için exec yapmıyoruz (Bun compile'da bağımlı
5
+ * olmak istemiyoruz); kendi basit arama fonksiyonumuzu yazıyoruz. Büyük
6
+ * projelerde yavaş olabilir ama yazma/izin katmanı için yeterli.
7
+ */
8
+ import fs from "node:fs/promises";
9
+ import path from "node:path";
10
+ import { checkPath } from "../security/sandbox.js";
11
+ const MAX_MATCHES = 200;
12
+ const MAX_FILES_SCANNED = 2000;
13
+ const MAX_FILE_SIZE = 512 * 1024; // 512 KB
14
+ const SKIP_NAMES = new Set([
15
+ ".git",
16
+ "node_modules",
17
+ ".next",
18
+ ".turbo",
19
+ ".vscode",
20
+ ".idea",
21
+ ".svn",
22
+ "dist",
23
+ "build",
24
+ "out",
25
+ ".cache",
26
+ ]);
27
+ function globToRegex(glob) {
28
+ // Çok basit glob → regex: *, **, ?
29
+ const escaped = glob
30
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
31
+ .replace(/\*\*/g, "::DOUBLE_STAR::")
32
+ .replace(/\*/g, "[^/\\\\]*")
33
+ .replace(/::DOUBLE_STAR::/g, ".*")
34
+ .replace(/\?/g, ".");
35
+ return new RegExp(`^${escaped}$`, "i");
36
+ }
37
+ async function walkFiles(dir, base, fileGlob, out, counter) {
38
+ if (out.length >= MAX_FILES_SCANNED || counter.scanned >= MAX_FILES_SCANNED)
39
+ return;
40
+ let items;
41
+ try {
42
+ items = await fs.readdir(dir);
43
+ }
44
+ catch {
45
+ return;
46
+ }
47
+ for (const item of items) {
48
+ if (counter.scanned >= MAX_FILES_SCANNED)
49
+ return;
50
+ if (SKIP_NAMES.has(item) || item.startsWith(".env"))
51
+ continue;
52
+ const full = path.join(dir, item);
53
+ let stat;
54
+ try {
55
+ stat = await fs.stat(full);
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ if (stat.isDirectory()) {
61
+ await walkFiles(full, base, fileGlob, out, counter);
62
+ }
63
+ else if (stat.isFile()) {
64
+ counter.scanned++;
65
+ if (stat.size > MAX_FILE_SIZE)
66
+ continue;
67
+ const rel = path.relative(base, full).replace(/\\/g, "/");
68
+ if (fileGlob && !fileGlob.test(rel) && !fileGlob.test(item))
69
+ continue;
70
+ out.push(full);
71
+ }
72
+ }
73
+ }
74
+ export const searchFilesTool = async (params, ctx) => {
75
+ const start = Date.now();
76
+ const pattern = (params.pattern || "");
77
+ const rawDir = (params.directory || ".");
78
+ const fileGlob = (params.file_glob || "");
79
+ if (!pattern) {
80
+ return {
81
+ success: false,
82
+ output: "",
83
+ error: "pattern parametresi eksik",
84
+ duration: Date.now() - start,
85
+ };
86
+ }
87
+ const check = checkPath(rawDir, ctx.cwd, { mustExist: true });
88
+ if (!check.ok || !check.realPath) {
89
+ return {
90
+ success: false,
91
+ output: "",
92
+ error: check.message || "Yol reddedildi",
93
+ duration: Date.now() - start,
94
+ };
95
+ }
96
+ let regex;
97
+ try {
98
+ regex = new RegExp(pattern, "g");
99
+ }
100
+ catch (err) {
101
+ return {
102
+ success: false,
103
+ output: "",
104
+ error: `Geçersiz regex: ${err.message.slice(0, 100)}`,
105
+ duration: Date.now() - start,
106
+ };
107
+ }
108
+ const globRegex = fileGlob ? globToRegex(fileGlob) : null;
109
+ const files = [];
110
+ const counter = { scanned: 0 };
111
+ await walkFiles(check.realPath, check.realPath, globRegex, files, counter);
112
+ const matches = [];
113
+ for (const file of files) {
114
+ if (matches.length >= MAX_MATCHES)
115
+ break;
116
+ let content;
117
+ try {
118
+ content = await fs.readFile(file, "utf8");
119
+ }
120
+ catch {
121
+ continue;
122
+ }
123
+ if (content.includes("\u0000"))
124
+ continue; // binary
125
+ const lines = content.split(/\r?\n/);
126
+ for (let i = 0; i < lines.length; i++) {
127
+ if (matches.length >= MAX_MATCHES)
128
+ break;
129
+ regex.lastIndex = 0;
130
+ const line = lines[i];
131
+ if (regex.test(line)) {
132
+ const rel = path.relative(check.realPath, file).replace(/\\/g, "/");
133
+ matches.push({
134
+ file: rel,
135
+ line: i + 1,
136
+ text: line.slice(0, 300),
137
+ });
138
+ }
139
+ }
140
+ }
141
+ const formatted = matches
142
+ .map((m) => `${m.file}:${m.line}: ${m.text}`)
143
+ .join("\n");
144
+ return {
145
+ success: true,
146
+ output: formatted || "(eşleşme yok)",
147
+ metadata: {
148
+ pattern,
149
+ directory: check.displayPath,
150
+ file_glob: fileGlob || null,
151
+ files_scanned: counter.scanned,
152
+ matches_count: matches.length,
153
+ truncated: matches.length >= MAX_MATCHES,
154
+ },
155
+ approvalState: 2,
156
+ duration: Date.now() - start,
157
+ };
158
+ };
159
+ //# sourceMappingURL=search-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-files.js","sourceRoot":"","sources":["../../src/tools/search-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * AIGENCY CLI — yerel tool ortak tipleri.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * write_file — yeni dosya oluştur veya mevcut dosyayı tamamen değiştir.
3
+ *
4
+ * Plan modunda çalıştırılmaz. Default modda permission prompt ister.
5
+ * AcceptEdits/Auto modda otomatik kabul edilir.
6
+ */
7
+ import fs from "node:fs/promises";
8
+ import path from "node:path";
9
+ import { checkWritePath } from "../security/sandbox.js";
10
+ import { simpleDiff, summarizeDiff } from "./diff.js";
11
+ const MAX_CONTENT_BYTES = 1024 * 1024; // 1 MB
12
+ export const writeFileTool = async (params, ctx) => {
13
+ const start = Date.now();
14
+ const rawPath = (params.path || params.filePath || "");
15
+ const content = (params.content || "");
16
+ if (!rawPath) {
17
+ return {
18
+ success: false,
19
+ output: "",
20
+ error: "path parametresi eksik",
21
+ duration: Date.now() - start,
22
+ };
23
+ }
24
+ if (typeof content !== "string") {
25
+ return {
26
+ success: false,
27
+ output: "",
28
+ error: "content string olmalı",
29
+ duration: Date.now() - start,
30
+ };
31
+ }
32
+ if (content.length > MAX_CONTENT_BYTES) {
33
+ return {
34
+ success: false,
35
+ output: "",
36
+ error: `İçerik çok büyük (>${MAX_CONTENT_BYTES} bayt)`,
37
+ duration: Date.now() - start,
38
+ };
39
+ }
40
+ // Plan modda yazma engellenir
41
+ if (ctx.mode === "plan") {
42
+ return {
43
+ success: false,
44
+ output: "",
45
+ error: "Plan modunda dosya yazma yasak. Önce moda geçin: /mode accept_edits",
46
+ duration: Date.now() - start,
47
+ };
48
+ }
49
+ const check = checkWritePath(rawPath, ctx.cwd);
50
+ if (!check.ok || !check.realPath) {
51
+ return {
52
+ success: false,
53
+ output: "",
54
+ error: check.message || "Yol reddedildi",
55
+ duration: Date.now() - start,
56
+ };
57
+ }
58
+ // Mevcut içerik (diff için)
59
+ let existingContent = "";
60
+ let isNew = false;
61
+ try {
62
+ existingContent = await fs.readFile(check.realPath, "utf8");
63
+ }
64
+ catch {
65
+ isNew = true;
66
+ }
67
+ const diff = summarizeDiff(existingContent, content);
68
+ const previewLines = isNew
69
+ ? content.split(/\r?\n/).slice(0, 20).join("\n")
70
+ : simpleDiff(existingContent, content, 20);
71
+ // Permission akışı
72
+ let approvalState = 2;
73
+ if (ctx.mode === "default") {
74
+ if (!ctx.requestPermission) {
75
+ return {
76
+ success: false,
77
+ output: "",
78
+ error: "Permission callback yok",
79
+ duration: Date.now() - start,
80
+ };
81
+ }
82
+ const resp = await ctx.requestPermission({
83
+ toolName: "write_file",
84
+ severity: isNew ? "medium" : "high",
85
+ title: isNew ? `Dosya oluştur: ${check.displayPath}` : `Dosya değiştir: ${check.displayPath}`,
86
+ description: isNew
87
+ ? `${content.split(/\n/).length} satır · ${content.length} bayt`
88
+ : `+${diff.added} -${diff.removed} satır`,
89
+ preview: previewLines,
90
+ });
91
+ if (resp.decision === "reject") {
92
+ return {
93
+ success: false,
94
+ output: "",
95
+ error: "Kullanıcı reddetti",
96
+ approvalState: 0,
97
+ duration: Date.now() - start,
98
+ };
99
+ }
100
+ if (resp.decision === "cancel") {
101
+ return {
102
+ success: false,
103
+ output: "",
104
+ error: "İşlem iptal edildi",
105
+ approvalState: 0,
106
+ duration: Date.now() - start,
107
+ };
108
+ }
109
+ approvalState = 1;
110
+ }
111
+ // Parent dizini oluştur
112
+ try {
113
+ await fs.mkdir(path.dirname(check.realPath), { recursive: true });
114
+ await fs.writeFile(check.realPath, content, "utf8");
115
+ }
116
+ catch (err) {
117
+ return {
118
+ success: false,
119
+ output: "",
120
+ error: `Yazma hatası: ${err.message.slice(0, 120)}`,
121
+ approvalState,
122
+ duration: Date.now() - start,
123
+ };
124
+ }
125
+ return {
126
+ success: true,
127
+ output: isNew
128
+ ? `Dosya oluşturuldu: ${check.displayPath} (${content.length} bayt)`
129
+ : `Dosya güncellendi: ${check.displayPath} (+${diff.added} -${diff.removed} satır)`,
130
+ metadata: {
131
+ path: check.displayPath,
132
+ is_new: isNew,
133
+ bytes: content.length,
134
+ added: diff.added,
135
+ removed: diff.removed,
136
+ },
137
+ approvalState,
138
+ duration: Date.now() - start,
139
+ };
140
+ };
141
+ //# sourceMappingURL=write-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../src/tools/write-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * AIGENCY CLI — ortak tipler.
3
+ *
4
+ * Sunucu tarafındaki `lib/agent/types.ts` ile aynı şekil (duck type uyumlu).
5
+ * CLI kendine ait bir TS paketi olduğu için buradan kopya tip'ler tutuluyor.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}