open-agents-ai 0.187.29 → 0.187.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +138 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -82929,8 +82929,8 @@ var require_follow_redirects = __commonJS({
|
|
|
82929
82929
|
}
|
|
82930
82930
|
return parsed;
|
|
82931
82931
|
}
|
|
82932
|
-
function resolveUrl(
|
|
82933
|
-
return useNativeURL ? new URL3(
|
|
82932
|
+
function resolveUrl(relative6, base3) {
|
|
82933
|
+
return useNativeURL ? new URL3(relative6, base3) : parseUrl(url.resolve(base3, relative6));
|
|
82934
82934
|
}
|
|
82935
82935
|
function validateUrl(input) {
|
|
82936
82936
|
if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
|
|
@@ -241704,15 +241704,15 @@ var require_pattern = __commonJS({
|
|
|
241704
241704
|
exports.removeDuplicateSlashes = removeDuplicateSlashes;
|
|
241705
241705
|
function partitionAbsoluteAndRelative(patterns) {
|
|
241706
241706
|
const absolute = [];
|
|
241707
|
-
const
|
|
241707
|
+
const relative6 = [];
|
|
241708
241708
|
for (const pattern of patterns) {
|
|
241709
241709
|
if (isAbsolute(pattern)) {
|
|
241710
241710
|
absolute.push(pattern);
|
|
241711
241711
|
} else {
|
|
241712
|
-
|
|
241712
|
+
relative6.push(pattern);
|
|
241713
241713
|
}
|
|
241714
241714
|
}
|
|
241715
|
-
return [absolute,
|
|
241715
|
+
return [absolute, relative6];
|
|
241716
241716
|
}
|
|
241717
241717
|
exports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;
|
|
241718
241718
|
function isAbsolute(pattern) {
|
|
@@ -253099,6 +253099,131 @@ var init_repo_map = __esm({
|
|
|
253099
253099
|
}
|
|
253100
253100
|
});
|
|
253101
253101
|
|
|
253102
|
+
// packages/execution/dist/tools/import-graph.js
|
|
253103
|
+
import { relative as relative3 } from "node:path";
|
|
253104
|
+
function clearImportGraphCache() {
|
|
253105
|
+
_cachedGraph = null;
|
|
253106
|
+
_cachedRoot = null;
|
|
253107
|
+
}
|
|
253108
|
+
var _cachedGraph, _cachedRoot, ImportGraphTool;
|
|
253109
|
+
var init_import_graph = __esm({
|
|
253110
|
+
"packages/execution/dist/tools/import-graph.js"() {
|
|
253111
|
+
"use strict";
|
|
253112
|
+
init_repo_map();
|
|
253113
|
+
_cachedGraph = null;
|
|
253114
|
+
_cachedRoot = null;
|
|
253115
|
+
ImportGraphTool = class {
|
|
253116
|
+
name = "import_graph";
|
|
253117
|
+
description = "Show the import graph for a specific file: what it imports (dependencies), what imports it (dependents), and 1-hop transitive connections. Use before editing a file to understand what other files might be affected. Output is compact (~200-500 tokens).";
|
|
253118
|
+
parameters = {
|
|
253119
|
+
type: "object",
|
|
253120
|
+
properties: {
|
|
253121
|
+
path: {
|
|
253122
|
+
type: "string",
|
|
253123
|
+
description: "File path to analyze (relative to project root)"
|
|
253124
|
+
}
|
|
253125
|
+
},
|
|
253126
|
+
required: ["path"]
|
|
253127
|
+
};
|
|
253128
|
+
workingDir;
|
|
253129
|
+
constructor(workingDir) {
|
|
253130
|
+
this.workingDir = workingDir;
|
|
253131
|
+
}
|
|
253132
|
+
async execute(args) {
|
|
253133
|
+
const start2 = performance.now();
|
|
253134
|
+
const rawPath = String(args["path"] ?? "");
|
|
253135
|
+
if (!rawPath) {
|
|
253136
|
+
return { success: false, output: "", error: "path is required", durationMs: 0 };
|
|
253137
|
+
}
|
|
253138
|
+
const filePath = rawPath.startsWith("/") ? relative3(this.workingDir, rawPath).replace(/\\/g, "/") : rawPath.replace(/\\/g, "/");
|
|
253139
|
+
try {
|
|
253140
|
+
if (!_cachedGraph || _cachedRoot !== this.workingDir) {
|
|
253141
|
+
_cachedGraph = buildGraph(this.workingDir);
|
|
253142
|
+
_cachedRoot = this.workingDir;
|
|
253143
|
+
}
|
|
253144
|
+
const graph = _cachedGraph;
|
|
253145
|
+
const node = graph.files.get(filePath);
|
|
253146
|
+
if (!node) {
|
|
253147
|
+
const variants = [filePath, filePath + ".ts", filePath + ".js", filePath + ".tsx"];
|
|
253148
|
+
const found = variants.find((v) => graph.files.has(v));
|
|
253149
|
+
if (!found) {
|
|
253150
|
+
return {
|
|
253151
|
+
success: false,
|
|
253152
|
+
output: "",
|
|
253153
|
+
error: `File "${filePath}" not found in import graph. Use find_files or list_directory to locate it.`,
|
|
253154
|
+
durationMs: performance.now() - start2
|
|
253155
|
+
};
|
|
253156
|
+
}
|
|
253157
|
+
return this.buildOutput(found, graph, performance.now() - start2);
|
|
253158
|
+
}
|
|
253159
|
+
return this.buildOutput(filePath, graph, performance.now() - start2);
|
|
253160
|
+
} catch (error) {
|
|
253161
|
+
return {
|
|
253162
|
+
success: false,
|
|
253163
|
+
output: "",
|
|
253164
|
+
error: `import_graph error: ${error instanceof Error ? error.message : String(error)}`,
|
|
253165
|
+
durationMs: performance.now() - start2
|
|
253166
|
+
};
|
|
253167
|
+
}
|
|
253168
|
+
}
|
|
253169
|
+
buildOutput(filePath, graph, elapsed) {
|
|
253170
|
+
const node = graph.files.get(filePath);
|
|
253171
|
+
const lines = [];
|
|
253172
|
+
lines.push(`# Import graph for ${filePath}`);
|
|
253173
|
+
lines.push("");
|
|
253174
|
+
if (node.imports.length > 0) {
|
|
253175
|
+
lines.push(`## Dependencies (${node.imports.length} files this imports):`);
|
|
253176
|
+
for (const imp of node.imports) {
|
|
253177
|
+
const impNode = graph.files.get(imp);
|
|
253178
|
+
const symbols = impNode?.symbols.filter((s2) => s2.exported).map((s2) => s2.name).slice(0, 5).join(", ") ?? "";
|
|
253179
|
+
lines.push(`- ${imp}${symbols ? ` (${symbols})` : ""}`);
|
|
253180
|
+
}
|
|
253181
|
+
} else {
|
|
253182
|
+
lines.push("## Dependencies: none (leaf module)");
|
|
253183
|
+
}
|
|
253184
|
+
lines.push("");
|
|
253185
|
+
if (node.importedBy.length > 0) {
|
|
253186
|
+
lines.push(`## Dependents (${node.importedBy.length} files import this \u2014 changes here may break them):`);
|
|
253187
|
+
for (const dep of node.importedBy.slice(0, 15)) {
|
|
253188
|
+
lines.push(`- ${dep}`);
|
|
253189
|
+
}
|
|
253190
|
+
if (node.importedBy.length > 15) {
|
|
253191
|
+
lines.push(` +${node.importedBy.length - 15} more`);
|
|
253192
|
+
}
|
|
253193
|
+
} else {
|
|
253194
|
+
lines.push("## Dependents: none (no other file imports this)");
|
|
253195
|
+
}
|
|
253196
|
+
lines.push("");
|
|
253197
|
+
const transitiveSet = /* @__PURE__ */ new Set();
|
|
253198
|
+
for (const dep of node.importedBy.slice(0, 10)) {
|
|
253199
|
+
const depNode = graph.files.get(dep);
|
|
253200
|
+
if (depNode) {
|
|
253201
|
+
for (const transImp of depNode.imports) {
|
|
253202
|
+
if (transImp !== filePath && !node.imports.includes(transImp)) {
|
|
253203
|
+
transitiveSet.add(`${dep} \u2192 ${transImp}`);
|
|
253204
|
+
}
|
|
253205
|
+
}
|
|
253206
|
+
}
|
|
253207
|
+
}
|
|
253208
|
+
if (transitiveSet.size > 0) {
|
|
253209
|
+
lines.push(`## 1-hop transitive (other deps of dependents):`);
|
|
253210
|
+
for (const entry of [...transitiveSet].slice(0, 10)) {
|
|
253211
|
+
lines.push(`- ${entry}`);
|
|
253212
|
+
}
|
|
253213
|
+
if (transitiveSet.size > 10) {
|
|
253214
|
+
lines.push(` +${transitiveSet.size - 10} more`);
|
|
253215
|
+
}
|
|
253216
|
+
}
|
|
253217
|
+
return {
|
|
253218
|
+
success: true,
|
|
253219
|
+
output: lines.join("\n"),
|
|
253220
|
+
durationMs: elapsed
|
|
253221
|
+
};
|
|
253222
|
+
}
|
|
253223
|
+
};
|
|
253224
|
+
}
|
|
253225
|
+
});
|
|
253226
|
+
|
|
253102
253227
|
// packages/execution/dist/tools/process-health.js
|
|
253103
253228
|
import { execSync as execSync23 } from "node:child_process";
|
|
253104
253229
|
function getSystemStatus() {
|
|
@@ -256446,6 +256571,7 @@ __export(dist_exports, {
|
|
|
256446
256571
|
IdentityKernelTool: () => IdentityKernelTool,
|
|
256447
256572
|
ImageGenerateTool: () => ImageGenerateTool,
|
|
256448
256573
|
ImageReadTool: () => ImageReadTool,
|
|
256574
|
+
ImportGraphTool: () => ImportGraphTool,
|
|
256449
256575
|
ListDirectoryTool: () => ListDirectoryTool,
|
|
256450
256576
|
ManageToolsTool: () => ManageToolsTool,
|
|
256451
256577
|
McpClient: () => McpClient,
|
|
@@ -256503,6 +256629,7 @@ __export(dist_exports, {
|
|
|
256503
256629
|
checkConstraints: () => checkConstraints,
|
|
256504
256630
|
checkDesktopDeps: () => checkDesktopDeps,
|
|
256505
256631
|
clearExploreNotes: () => clearExploreNotes,
|
|
256632
|
+
clearImportGraphCache: () => clearImportGraphCache,
|
|
256506
256633
|
clearWorkingNotes: () => clearWorkingNotes,
|
|
256507
256634
|
collectSnapshot: () => collectSnapshot,
|
|
256508
256635
|
createAgentWorktree: () => createWorktree,
|
|
@@ -256641,6 +256768,7 @@ var init_dist4 = __esm({
|
|
|
256641
256768
|
init_semantic_map();
|
|
256642
256769
|
init_change_log();
|
|
256643
256770
|
init_repo_map();
|
|
256771
|
+
init_import_graph();
|
|
256644
256772
|
init_process_health();
|
|
256645
256773
|
init_full_sub_agent();
|
|
256646
256774
|
init_agent_tool();
|
|
@@ -275948,7 +276076,7 @@ __export(oa_directory_exports, {
|
|
|
275948
276076
|
writeIndexMeta: () => writeIndexMeta
|
|
275949
276077
|
});
|
|
275950
276078
|
import { existsSync as existsSync41, mkdirSync as mkdirSync16, readFileSync as readFileSync31, writeFileSync as writeFileSync17, readdirSync as readdirSync11, statSync as statSync12, unlinkSync as unlinkSync7 } from "node:fs";
|
|
275951
|
-
import { join as join58, relative as
|
|
276079
|
+
import { join as join58, relative as relative4, basename as basename12, extname as extname9 } from "node:path";
|
|
275952
276080
|
import { homedir as homedir15 } from "node:os";
|
|
275953
276081
|
function initOaDirectory(repoRoot) {
|
|
275954
276082
|
const oaPath = join58(repoRoot, OA_DIR);
|
|
@@ -276029,7 +276157,7 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
276029
276157
|
}
|
|
276030
276158
|
const type = normalizedName.includes("agents") ? "agents" : normalizedName === "oa.md" || normalizedName === ".open-agents.md" ? "oa" : normalizedName.includes("claude") ? "claude" : normalizedName.includes("readme") ? "readme" : normalizedName.includes("architect") ? "architecture" : normalizedName.includes("contribut") ? "contributing" : "other";
|
|
276031
276159
|
found.push({
|
|
276032
|
-
path:
|
|
276160
|
+
path: relative4(repoRoot, filePath) || name10,
|
|
276033
276161
|
content,
|
|
276034
276162
|
type
|
|
276035
276163
|
});
|
|
@@ -276046,7 +276174,7 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
276046
276174
|
content = content.slice(0, maxContentLen) + "\n\n...(truncated)";
|
|
276047
276175
|
}
|
|
276048
276176
|
found.push({
|
|
276049
|
-
path:
|
|
276177
|
+
path: relative4(repoRoot, projectMap),
|
|
276050
276178
|
content,
|
|
276051
276179
|
type: "oa"
|
|
276052
276180
|
});
|
|
@@ -306413,6 +306541,7 @@ function buildTools(repoRoot, config, contextWindowSize, modelTier) {
|
|
|
306413
306541
|
new WorkingNotesTool(),
|
|
306414
306542
|
new SemanticMapTool(repoRoot),
|
|
306415
306543
|
new RepoMapTool(repoRoot),
|
|
306544
|
+
new ImportGraphTool(repoRoot),
|
|
306416
306545
|
new ProcessHealthTool(),
|
|
306417
306546
|
new VideoUnderstandTool(repoRoot),
|
|
306418
306547
|
// Full OA sub-process — callbacks wired after runner + statusBar created
|
|
@@ -312006,7 +312135,7 @@ import { glob as glob2 } from "glob";
|
|
|
312006
312135
|
import ignore from "ignore";
|
|
312007
312136
|
import { readFile as readFile23, stat as stat5 } from "node:fs/promises";
|
|
312008
312137
|
import { createHash as createHash6 } from "node:crypto";
|
|
312009
|
-
import { join as join83, relative as
|
|
312138
|
+
import { join as join83, relative as relative5, extname as extname12, basename as basename18 } from "node:path";
|
|
312010
312139
|
var DEFAULT_EXCLUDE, LANGUAGE_MAP, CodebaseIndexer;
|
|
312011
312140
|
var init_codebase_indexer = __esm({
|
|
312012
312141
|
"packages/indexer/dist/codebase-indexer.js"() {
|
package/package.json
CHANGED