open-agents-ai 0.187.231 → 0.187.232
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 +100 -36
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10159,7 +10159,7 @@ process.on('SIGINT', () => process.emit('SIGTERM'));
|
|
|
10159
10159
|
];
|
|
10160
10160
|
NexusTool = class {
|
|
10161
10161
|
name = "nexus";
|
|
10162
|
-
description = "P2P agent mesh networking. IMPORTANT: You MUST call action='connect' FIRST — it spawns the daemon. Nothing works without it. After connect: join_room, send_message, discover_peers, expose (share models), remote_infer (use remote models). Quick start: connect → join_room → send_message. Also: wallet_create, wallet_status, ledger_status, budget_set, spend, invoke_capability, store_content.";
|
|
10162
|
+
description = "P2P agent mesh networking — invoked ONLY via this tool call. ⚠ DO NOT run 'nexus' as a shell command. DO NOT run 'npm install open-agents-nexus' — it's ALREADY embedded in this binary. DO NOT use the shell tool to look for a 'nexus' binary — there isn't one. Use THIS tool interface. All nexus actions are dispatched through tool calls of the form: nexus({ action: 'connect', agent_name: '...' }). IMPORTANT: You MUST call action='connect' FIRST — it spawns the daemon. Nothing works without it. After connect: join_room, send_message, discover_peers, expose (share models), remote_infer (use remote models). Voice: voice_listen_start (ASR on room audio), voice_publish, voice_speak, jibberlink_send (encrypted data-over-audio). Quick start: connect → join_room → send_message. Also: wallet_create, wallet_status, ledger_status, budget_set, spend, invoke_capability, store_content.";
|
|
10163
10163
|
parameters = {
|
|
10164
10164
|
type: "object",
|
|
10165
10165
|
properties: {
|
|
@@ -270909,7 +270909,13 @@ ${memoryLines.join("\n")}`
|
|
|
270909
270909
|
// list) but the dedup detector was flagging it as a wasted call
|
|
270910
270910
|
// and blocking the planning workflow. The agent uses todo_write
|
|
270911
270911
|
// as its primary checkpoint mechanism so it MUST always execute.
|
|
270912
|
-
"todo_write"
|
|
270912
|
+
"todo_write",
|
|
270913
|
+
// nexus is also a state tool — connect is idempotent but the
|
|
270914
|
+
// dedup warning was causing confused agents to bail out to
|
|
270915
|
+
// shell workarounds (npm install, find /bin, etc.) when they
|
|
270916
|
+
// saw "DUPLICATE CALL" after their first connect. Let the
|
|
270917
|
+
// tool see every call and return the cached state itself.
|
|
270918
|
+
"nexus"
|
|
270913
270919
|
].includes(tc.name);
|
|
270914
270920
|
const cachedResult = recentToolResults.get(toolFingerprint);
|
|
270915
270921
|
if (isReadLike && cachedResult !== void 0) {
|
|
@@ -326355,6 +326361,91 @@ ${incompleteList}${more}`
|
|
|
326355
326361
|
}
|
|
326356
326362
|
};
|
|
326357
326363
|
}
|
|
326364
|
+
function buildSubAgentTools(repoRoot, config) {
|
|
326365
|
+
return [
|
|
326366
|
+
// File + search
|
|
326367
|
+
new FileReadTool(repoRoot),
|
|
326368
|
+
new FileWriteTool(repoRoot),
|
|
326369
|
+
new FileEditTool(repoRoot),
|
|
326370
|
+
new ShellTool(repoRoot),
|
|
326371
|
+
new GrepSearchTool(repoRoot),
|
|
326372
|
+
new GlobFindTool(repoRoot),
|
|
326373
|
+
new ListDirectoryTool(repoRoot),
|
|
326374
|
+
new FileExploreTool(repoRoot),
|
|
326375
|
+
new FilePatchTool(repoRoot),
|
|
326376
|
+
new BatchEditTool(repoRoot),
|
|
326377
|
+
new NotebookEditTool(),
|
|
326378
|
+
// Memory
|
|
326379
|
+
new MemoryReadTool(repoRoot),
|
|
326380
|
+
new MemoryWriteTool(repoRoot),
|
|
326381
|
+
new MemorySearchTool(repoRoot),
|
|
326382
|
+
// Checklist — the critical regression we're closing here
|
|
326383
|
+
new TodoWriteTool(),
|
|
326384
|
+
new TodoReadTool(),
|
|
326385
|
+
new WorkingNotesTool(),
|
|
326386
|
+
// Code understanding + navigation
|
|
326387
|
+
new CodebaseMapTool(repoRoot),
|
|
326388
|
+
new SemanticMapTool(repoRoot),
|
|
326389
|
+
new RepoMapTool(repoRoot),
|
|
326390
|
+
new ImportGraphTool(repoRoot),
|
|
326391
|
+
new DiagnosticTool(repoRoot),
|
|
326392
|
+
new GitInfoTool(repoRoot),
|
|
326393
|
+
new ExploreToolsTool(),
|
|
326394
|
+
new ProcessHealthTool(),
|
|
326395
|
+
// Web research
|
|
326396
|
+
new WebFetchTool(),
|
|
326397
|
+
new WebSearchTool(),
|
|
326398
|
+
new WebCrawlTool(repoRoot),
|
|
326399
|
+
new BrowserActionTool(),
|
|
326400
|
+
new PlaywrightBrowserTool(),
|
|
326401
|
+
// Documents + media reading
|
|
326402
|
+
new ImageReadTool(repoRoot),
|
|
326403
|
+
new OCRTool(repoRoot),
|
|
326404
|
+
new OcrImageAdvancedTool(repoRoot),
|
|
326405
|
+
new OcrPdfTool(repoRoot),
|
|
326406
|
+
new PdfToTextTool(repoRoot),
|
|
326407
|
+
new ScreenshotTool(repoRoot),
|
|
326408
|
+
new StructuredReadTool(repoRoot),
|
|
326409
|
+
new StructuredFileTool(repoRoot),
|
|
326410
|
+
// Audio
|
|
326411
|
+
new AudioPlaybackTool(),
|
|
326412
|
+
new AudioCaptureTool(),
|
|
326413
|
+
new AudioAnalyzeTool(),
|
|
326414
|
+
new AsrListenTool(),
|
|
326415
|
+
new TranscribeFileTool(repoRoot),
|
|
326416
|
+
new TranscribeUrlTool(repoRoot),
|
|
326417
|
+
new YouTubeDownloadTool(repoRoot),
|
|
326418
|
+
// Code execution (sandboxed)
|
|
326419
|
+
new CodeSandboxTool(repoRoot),
|
|
326420
|
+
new ReplTool(repoRoot),
|
|
326421
|
+
// AIWG / SDLC workflow
|
|
326422
|
+
new AiwgSetupTool(repoRoot),
|
|
326423
|
+
new AiwgHealthTool(repoRoot),
|
|
326424
|
+
new AiwgWorkflowTool(repoRoot),
|
|
326425
|
+
// Scheduler + agenda (time-based tooling)
|
|
326426
|
+
new SchedulerTool(repoRoot),
|
|
326427
|
+
new ReminderTool(repoRoot),
|
|
326428
|
+
new AgendaTool(repoRoot),
|
|
326429
|
+
// Vision + multimodal memory
|
|
326430
|
+
new VisionTool(repoRoot),
|
|
326431
|
+
new DesktopClickTool(repoRoot),
|
|
326432
|
+
new DesktopDescribeTool(repoRoot),
|
|
326433
|
+
new VisualMemoryTool(),
|
|
326434
|
+
new MultimodalMemoryTool(),
|
|
326435
|
+
new VideoUnderstandTool(repoRoot),
|
|
326436
|
+
new CameraCaptureTool(),
|
|
326437
|
+
new ImageGenerateTool(repoRoot, config.backendUrl),
|
|
326438
|
+
// Hardware sensors + radios (read-only scans)
|
|
326439
|
+
new GpsLocationTool(),
|
|
326440
|
+
new WifiControlTool(),
|
|
326441
|
+
new BluetoothScanTool(),
|
|
326442
|
+
new SdrScanTool(),
|
|
326443
|
+
new FlipperZeroTool(),
|
|
326444
|
+
new MeshtasticTool(),
|
|
326445
|
+
// Autoresearch (independent ML experiment loop)
|
|
326446
|
+
new AutoresearchTool(repoRoot)
|
|
326447
|
+
];
|
|
326448
|
+
}
|
|
326358
326449
|
function buildTools(repoRoot, config, contextWindowSize, modelTier) {
|
|
326359
326450
|
const shellTool = new ShellTool(repoRoot);
|
|
326360
326451
|
_shellToolRef = shellTool;
|
|
@@ -326576,19 +326667,7 @@ function createSubAgentTool(config, repoRoot, ctxWindowSize) {
|
|
|
326576
326667
|
recursionDepth: parentDepth + 1,
|
|
326577
326668
|
maxRecursionDepth: maxDepth
|
|
326578
326669
|
});
|
|
326579
|
-
const subTools =
|
|
326580
|
-
new FileReadTool(repoRoot),
|
|
326581
|
-
new FileWriteTool(repoRoot),
|
|
326582
|
-
new FileEditTool(repoRoot),
|
|
326583
|
-
new ShellTool(repoRoot),
|
|
326584
|
-
new GrepSearchTool(repoRoot),
|
|
326585
|
-
new GlobFindTool(repoRoot),
|
|
326586
|
-
new ListDirectoryTool(repoRoot),
|
|
326587
|
-
new WebFetchTool(),
|
|
326588
|
-
new WebSearchTool(),
|
|
326589
|
-
new MemoryReadTool(repoRoot),
|
|
326590
|
-
new MemoryWriteTool(repoRoot)
|
|
326591
|
-
];
|
|
326670
|
+
const subTools = buildSubAgentTools(repoRoot, config);
|
|
326592
326671
|
subRunner.registerTools(subTools.map(adaptTool6));
|
|
326593
326672
|
subRunner.registerTool(createTaskCompleteTool());
|
|
326594
326673
|
if (background) {
|
|
@@ -328462,27 +328541,12 @@ Review its full output in the [${id}] tab or via sub_agent(action='output', id='
|
|
|
328462
328541
|
// sub-agents discover their own context window
|
|
328463
328542
|
modelTier: subTier
|
|
328464
328543
|
});
|
|
328465
|
-
const
|
|
328466
|
-
const nameSet = new Set(opts.toolNames);
|
|
328467
|
-
const
|
|
328468
|
-
|
|
328469
|
-
|
|
328470
|
-
|
|
328471
|
-
shell: () => new ShellTool(repoRoot),
|
|
328472
|
-
grep: () => new GrepSearchTool(repoRoot),
|
|
328473
|
-
glob: () => new GlobFindTool(repoRoot),
|
|
328474
|
-
list_directory: () => new ListDirectoryTool(repoRoot),
|
|
328475
|
-
web_fetch: () => new WebFetchTool(),
|
|
328476
|
-
web_search: () => new WebSearchTool(),
|
|
328477
|
-
memory_read: () => new MemoryReadTool(repoRoot),
|
|
328478
|
-
memory_write: () => new MemoryWriteTool(repoRoot),
|
|
328479
|
-
batch_edit: () => new BatchEditTool(repoRoot),
|
|
328480
|
-
file_patch: () => new FilePatchTool(repoRoot),
|
|
328481
|
-
git_info: () => new GitInfoTool(repoRoot)
|
|
328482
|
-
};
|
|
328483
|
-
for (const [name10, factory] of Object.entries(toolMap)) {
|
|
328484
|
-
if (nameSet.has(name10)) subToolInstances.push(factory());
|
|
328485
|
-
}
|
|
328544
|
+
const allSafe = buildSubAgentTools(repoRoot, config);
|
|
328545
|
+
const nameSet = new Set(opts.toolNames || []);
|
|
328546
|
+
const subToolInstances = nameSet.size > 0 ? allSafe.filter((t2) => nameSet.has(t2.name)) : allSafe.slice();
|
|
328547
|
+
const nameOf = (t2) => t2.name;
|
|
328548
|
+
if (!subToolInstances.some((t2) => nameOf(t2) === "todo_write")) subToolInstances.push(new TodoWriteTool());
|
|
328549
|
+
if (!subToolInstances.some((t2) => nameOf(t2) === "todo_read")) subToolInstances.push(new TodoReadTool());
|
|
328486
328550
|
subRunner.registerTools(subToolInstances.map(adaptTool6));
|
|
328487
328551
|
subRunner.registerTool(createTaskCompleteTool(subTier));
|
|
328488
328552
|
const systemCtx = opts.systemPromptAddition ? `Working directory: ${repoRoot}
|
package/package.json
CHANGED