@markusylisiurunen/tau 0.3.35 → 0.3.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -3
- package/dist/core/cli.js +7 -0
- package/dist/core/cli.js.map +1 -1
- package/dist/core/debug.js +16 -30
- package/dist/core/debug.js.map +1 -1
- package/dist/core/runtime/runtime_bootstrap.js +68 -25
- package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
- package/dist/core/telegram/adapter.js +319 -67
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/telegram/config.js +1 -1
- package/dist/core/telegram/runtime.js +20 -1
- package/dist/core/telegram/runtime.js.map +1 -1
- package/dist/core/telegram/session_manager.js +12 -0
- package/dist/core/telegram/session_manager.js.map +1 -1
- package/dist/core/tools/tool_names.js +1 -0
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/tools/view_image.js +8 -5
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/utils/context.js +0 -1
- package/dist/core/utils/context.js.map +1 -1
- package/dist/core/utils/context_builder.js +2 -3
- package/dist/core/utils/context_builder.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/main.js +86 -31
- package/dist/main.js.map +1 -1
- package/dist/sdk/client.js +7 -108
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/local_client.d.ts +3 -0
- package/dist/sdk/local_client.js +106 -0
- package/dist/sdk/local_client.js.map +1 -0
- package/dist/tui/session_chat_app.js +53 -3
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +7 -0
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/utils/agents_files.js +0 -282
- package/dist/core/utils/agents_files.js.map +0 -1
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
-
import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
3
|
-
import { basename, dirname, join, parse, resolve, sep } from "node:path";
|
|
4
|
-
import { resolveConfigLevels } from "../config/paths.js";
|
|
5
|
-
import { loadConfigWithDiagnostics } from "../config/schema.js";
|
|
6
|
-
import { loadModelResolver } from "../models/catalog.js";
|
|
7
|
-
const CHILD_AGENTS_RG_TIMEOUT_MS = 2000;
|
|
8
|
-
const CHILD_AGENTS_WALK_TIMEOUT_MS = 1000;
|
|
9
|
-
const CHILD_AGENTS_WALK_MAX_DIRS = 10_000;
|
|
10
|
-
const DEFAULT_IGNORED_CHILD_DIRS = new Set([
|
|
11
|
-
".cache",
|
|
12
|
-
".git",
|
|
13
|
-
".hg",
|
|
14
|
-
".jj",
|
|
15
|
-
".next",
|
|
16
|
-
".nuxt",
|
|
17
|
-
".parcel-cache",
|
|
18
|
-
".svn",
|
|
19
|
-
".turbo",
|
|
20
|
-
".venv",
|
|
21
|
-
".vite",
|
|
22
|
-
"__pycache__",
|
|
23
|
-
"build",
|
|
24
|
-
"coverage",
|
|
25
|
-
"dist",
|
|
26
|
-
"node_modules",
|
|
27
|
-
"out",
|
|
28
|
-
"target",
|
|
29
|
-
"vendor",
|
|
30
|
-
"venv",
|
|
31
|
-
]);
|
|
32
|
-
function isSameOrParentPath(parent, child) {
|
|
33
|
-
if (parent === child)
|
|
34
|
-
return true;
|
|
35
|
-
const root = parse(parent).root;
|
|
36
|
-
if (parent === root)
|
|
37
|
-
return child.startsWith(root);
|
|
38
|
-
return child.startsWith(parent + sep);
|
|
39
|
-
}
|
|
40
|
-
function resolveAgentContextPath(args) {
|
|
41
|
-
const resolved = resolve(args.path);
|
|
42
|
-
if (basename(resolved) !== "AGENTS.md")
|
|
43
|
-
return null;
|
|
44
|
-
let realPath;
|
|
45
|
-
try {
|
|
46
|
-
realPath = realpathSync(resolved);
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
if (basename(realPath) !== "AGENTS.md")
|
|
52
|
-
return null;
|
|
53
|
-
try {
|
|
54
|
-
const stat = statSync(realPath);
|
|
55
|
-
if (!stat.isFile())
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
const cwdAbs = resolve(args.cwd);
|
|
62
|
-
const homeAbs = resolve(args.home);
|
|
63
|
-
let cwdReal = cwdAbs;
|
|
64
|
-
let homeReal = homeAbs;
|
|
65
|
-
try {
|
|
66
|
-
cwdReal = realpathSync(cwdAbs);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// fall back to cwdAbs
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
homeReal = realpathSync(homeAbs);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// fall back to homeAbs
|
|
76
|
-
}
|
|
77
|
-
const withinHome = cwdReal === homeReal || cwdReal.startsWith(homeReal + sep);
|
|
78
|
-
if (withinHome && !isSameOrParentPath(homeReal, realPath))
|
|
79
|
-
return null;
|
|
80
|
-
if (!isAgentContextPathInScope(realPath, cwdReal))
|
|
81
|
-
return null;
|
|
82
|
-
return resolved;
|
|
83
|
-
}
|
|
84
|
-
export function isAgentContextPathInScope(filePath, cwd) {
|
|
85
|
-
const cwdAbs = resolve(cwd);
|
|
86
|
-
const fileDir = dirname(resolve(filePath));
|
|
87
|
-
return isSameOrParentPath(fileDir, cwdAbs) || isSameOrParentPath(cwdAbs, fileDir);
|
|
88
|
-
}
|
|
89
|
-
function createAgentsConfigDeps(cwd, home) {
|
|
90
|
-
return {
|
|
91
|
-
fs: {
|
|
92
|
-
readFile: (path) => readFileSync(path, "utf-8"),
|
|
93
|
-
exists: (path) => existsSync(path),
|
|
94
|
-
listDir: (path) => readdirSync(path),
|
|
95
|
-
stat: (path) => statSync(path),
|
|
96
|
-
},
|
|
97
|
-
env: {
|
|
98
|
-
getEnv: () => ({}),
|
|
99
|
-
cwd: () => cwd,
|
|
100
|
-
home: () => home,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
export function findAgentsFilesFromCwdToHome(cwd, home) {
|
|
105
|
-
const cwdAbs = resolve(cwd);
|
|
106
|
-
const homeAbs = resolve(home);
|
|
107
|
-
const withinHome = cwdAbs === homeAbs || cwdAbs.startsWith(homeAbs + sep);
|
|
108
|
-
const stopAbs = withinHome ? homeAbs : parse(cwdAbs).root;
|
|
109
|
-
const found = [];
|
|
110
|
-
let dir = cwdAbs;
|
|
111
|
-
// Closest-first order: cwd, parent, ..., home/root.
|
|
112
|
-
while (true) {
|
|
113
|
-
const candidate = join(dir, "AGENTS.md");
|
|
114
|
-
if (existsSync(candidate)) {
|
|
115
|
-
const resolved = resolveAgentContextPath({ path: candidate, cwd: cwdAbs, home });
|
|
116
|
-
if (resolved) {
|
|
117
|
-
found.push(resolved);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (dir === stopAbs)
|
|
121
|
-
break;
|
|
122
|
-
const parent = dirname(dir);
|
|
123
|
-
if (parent === dir)
|
|
124
|
-
break;
|
|
125
|
-
dir = parent;
|
|
126
|
-
}
|
|
127
|
-
return found;
|
|
128
|
-
}
|
|
129
|
-
function buildIgnoredChildDirGlobs() {
|
|
130
|
-
return [...DEFAULT_IGNORED_CHILD_DIRS].flatMap((dir) => ["--glob", `!${dir}/`]);
|
|
131
|
-
}
|
|
132
|
-
function findChildAgentsFilesWithRipgrep(cwd, home) {
|
|
133
|
-
const cwdAbs = resolve(cwd);
|
|
134
|
-
const result = spawnSync("rg", [
|
|
135
|
-
"--files",
|
|
136
|
-
"--hidden",
|
|
137
|
-
"--no-ignore",
|
|
138
|
-
"--glob",
|
|
139
|
-
"**/AGENTS.md",
|
|
140
|
-
...buildIgnoredChildDirGlobs(),
|
|
141
|
-
], {
|
|
142
|
-
cwd: cwdAbs,
|
|
143
|
-
encoding: "utf8",
|
|
144
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
145
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
146
|
-
timeout: CHILD_AGENTS_RG_TIMEOUT_MS,
|
|
147
|
-
});
|
|
148
|
-
if (result.error) {
|
|
149
|
-
const code = "code" in result.error ? result.error.code : undefined;
|
|
150
|
-
return code === "ETIMEDOUT" ? [] : null;
|
|
151
|
-
}
|
|
152
|
-
if (result.status !== 0 && result.status !== 1)
|
|
153
|
-
return null;
|
|
154
|
-
if (typeof result.stdout !== "string")
|
|
155
|
-
return null;
|
|
156
|
-
return result.stdout
|
|
157
|
-
.split("\n")
|
|
158
|
-
.map((line) => line.trim())
|
|
159
|
-
.filter(Boolean)
|
|
160
|
-
.sort((a, b) => a.localeCompare(b))
|
|
161
|
-
.map((filePath) => resolve(cwdAbs, filePath))
|
|
162
|
-
.filter((filePath) => dirname(filePath) !== cwdAbs)
|
|
163
|
-
.flatMap((filePath) => {
|
|
164
|
-
const resolved = resolveAgentContextPath({ path: filePath, cwd: cwdAbs, home });
|
|
165
|
-
return resolved ? [resolved] : [];
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
function findChildAgentsFilesByWalking(cwd, home) {
|
|
169
|
-
const cwdAbs = resolve(cwd);
|
|
170
|
-
const found = [];
|
|
171
|
-
const seenDirs = new Set();
|
|
172
|
-
const startedAt = Date.now();
|
|
173
|
-
let visitedDirs = 0;
|
|
174
|
-
let bailed = false;
|
|
175
|
-
const shouldBail = () => {
|
|
176
|
-
if (bailed)
|
|
177
|
-
return true;
|
|
178
|
-
if (visitedDirs >= CHILD_AGENTS_WALK_MAX_DIRS) {
|
|
179
|
-
bailed = true;
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
if (Date.now() - startedAt >= CHILD_AGENTS_WALK_TIMEOUT_MS) {
|
|
183
|
-
bailed = true;
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
return false;
|
|
187
|
-
};
|
|
188
|
-
const walk = (dir) => {
|
|
189
|
-
if (shouldBail())
|
|
190
|
-
return;
|
|
191
|
-
let dirReal = dir;
|
|
192
|
-
try {
|
|
193
|
-
dirReal = realpathSync(dir);
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
if (seenDirs.has(dirReal))
|
|
199
|
-
return;
|
|
200
|
-
seenDirs.add(dirReal);
|
|
201
|
-
visitedDirs += 1;
|
|
202
|
-
let entries;
|
|
203
|
-
try {
|
|
204
|
-
entries = readdirSync(dir, { withFileTypes: true, encoding: "utf8" });
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
210
|
-
if (shouldBail())
|
|
211
|
-
return;
|
|
212
|
-
if (!entry.isDirectory() && !entry.isSymbolicLink())
|
|
213
|
-
continue;
|
|
214
|
-
if (DEFAULT_IGNORED_CHILD_DIRS.has(entry.name))
|
|
215
|
-
continue;
|
|
216
|
-
const childDir = join(dir, entry.name);
|
|
217
|
-
let isDirectory = entry.isDirectory();
|
|
218
|
-
if (entry.isSymbolicLink()) {
|
|
219
|
-
try {
|
|
220
|
-
isDirectory = statSync(childDir).isDirectory();
|
|
221
|
-
}
|
|
222
|
-
catch {
|
|
223
|
-
isDirectory = false;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
if (!isDirectory)
|
|
227
|
-
continue;
|
|
228
|
-
const candidate = join(childDir, "AGENTS.md");
|
|
229
|
-
if (existsSync(candidate)) {
|
|
230
|
-
const resolved = resolveAgentContextPath({ path: candidate, cwd: cwdAbs, home });
|
|
231
|
-
if (resolved) {
|
|
232
|
-
found.push(resolved);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
walk(childDir);
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
walk(cwdAbs);
|
|
239
|
-
return found;
|
|
240
|
-
}
|
|
241
|
-
export function findChildAgentsFiles(cwd, home) {
|
|
242
|
-
return findChildAgentsFilesWithRipgrep(cwd, home) ?? findChildAgentsFilesByWalking(cwd, home);
|
|
243
|
-
}
|
|
244
|
-
function findAdditionalAgentsFilesFromConfigsDetailed(args) {
|
|
245
|
-
const deps = createAgentsConfigDeps(args.cwd, args.home);
|
|
246
|
-
const levels = resolveConfigLevels(deps, { cwd: args.cwd });
|
|
247
|
-
const modelResolver = loadModelResolver({ deps, levels });
|
|
248
|
-
const configResult = loadConfigWithDiagnostics(deps, { levels, modelResolver });
|
|
249
|
-
const files = [];
|
|
250
|
-
const errors = [...configResult.errors];
|
|
251
|
-
for (const pathRaw of configResult.config.agentContextFiles ?? []) {
|
|
252
|
-
const resolved = resolveAgentContextPath({ path: pathRaw, cwd: args.cwd, home: args.home });
|
|
253
|
-
if (resolved) {
|
|
254
|
-
files.push(resolved);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return { files, errors };
|
|
258
|
-
}
|
|
259
|
-
export function findAgentsFilesInScopeDetailed(cwd, home) {
|
|
260
|
-
const base = findAgentsFilesFromCwdToHome(cwd, home);
|
|
261
|
-
const extra = findAdditionalAgentsFilesFromConfigsDetailed({ cwd, home });
|
|
262
|
-
const seen = new Set();
|
|
263
|
-
const files = [];
|
|
264
|
-
for (const file of [...base, ...extra.files]) {
|
|
265
|
-
let dedupeKey = file;
|
|
266
|
-
try {
|
|
267
|
-
dedupeKey = realpathSync(file);
|
|
268
|
-
}
|
|
269
|
-
catch {
|
|
270
|
-
// fallback to the resolved path
|
|
271
|
-
}
|
|
272
|
-
if (seen.has(dedupeKey))
|
|
273
|
-
continue;
|
|
274
|
-
seen.add(dedupeKey);
|
|
275
|
-
files.push(file);
|
|
276
|
-
}
|
|
277
|
-
return { files, errors: extra.errors };
|
|
278
|
-
}
|
|
279
|
-
export function findAgentsFilesInScope(cwd, home) {
|
|
280
|
-
return findAgentsFilesInScopeDetailed(cwd, home).files;
|
|
281
|
-
}
|
|
282
|
-
//# sourceMappingURL=agents_files.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents_files.js","sourceRoot":"","sources":["../../../src/core/utils/agents_files.ts"],"names":[],"mappings":"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"}
|