titan-agent 6.4.1 → 6.4.4
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/agent/agent.js +61 -46
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/pipeline.js +11 -6
- package/dist/agent/pipeline.js.map +1 -1
- package/dist/skills/builtin/cron.js +7 -6
- package/dist/skills/builtin/cron.js.map +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/package.json +10 -2
- package/ui/dist/assets/{AuditPanel-B55jmQpR.js → AuditPanel-BOIeotPE.js} +1 -1
- package/ui/dist/assets/{AutonomyPanel-MP5tOLxX.js → AutonomyPanel-Dv8ClpL9.js} +1 -1
- package/ui/dist/assets/{AutopilotPanel-DB38vjfF.js → AutopilotPanel-Dv3-_6fZ.js} +1 -1
- package/ui/dist/assets/{AutoresearchPanel-CFvfx18N.js → AutoresearchPanel-DdLmfGpC.js} +1 -1
- package/ui/dist/assets/{BackupPanel-0a5SbfaS.js → BackupPanel-DYr6APwV.js} +1 -1
- package/ui/dist/assets/{BrowserPanel-CvOVGtTp.js → BrowserPanel-DMZf6mNn.js} +1 -1
- package/ui/dist/assets/{CPActivity-FlC0Ac-0.js → CPActivity-B2kmaYR9.js} +1 -1
- package/ui/dist/assets/{CPAgentDetail-CNiDw2g2.js → CPAgentDetail--ploJZFv.js} +1 -1
- package/ui/dist/assets/{CPAgents-2qeSr80C.js → CPAgents-ctC99jCR.js} +1 -1
- package/ui/dist/assets/{CPApprovals-D2m2dYBD.js → CPApprovals-BZHaJ6d_.js} +1 -1
- package/ui/dist/assets/{CPCosts-CbRtk5BJ.js → CPCosts--xJmtfEi.js} +1 -1
- package/ui/dist/assets/{CPDashboard-sGImoKeh.js → CPDashboard-rThYnRLi.js} +1 -1
- package/ui/dist/assets/{CPFiles-OVqWt7zC.js → CPFiles-IRzbOaxo.js} +1 -1
- package/ui/dist/assets/{CPGoals-wgG_oJF6.js → CPGoals-BQ4Kasli.js} +1 -1
- package/ui/dist/assets/{CPInbox-C4toHLIj.js → CPInbox-DYvoAJdg.js} +1 -1
- package/ui/dist/assets/{CPIssueDetail-CYVivz76.js → CPIssueDetail-D4JUVm7B.js} +1 -1
- package/ui/dist/assets/{CPIssues-CrYg3hHZ.js → CPIssues-C_K0zuiB.js} +1 -1
- package/ui/dist/assets/CPLayout-B3Lr8puc.js +2 -0
- package/ui/dist/assets/{CPOrg-BvU8zgIR.js → CPOrg-CAKwV8Kr.js} +1 -1
- package/ui/dist/assets/{CPRuns-tXHGoKnO.js → CPRuns-COUYpSBB.js} +1 -1
- package/ui/dist/assets/{CPSocial-Dxt58jcE.js → CPSocial-BCTgcO3V.js} +1 -1
- package/ui/dist/assets/{CPVoice-DBWsPDYo.js → CPVoice-D-wxXUGf.js} +1 -1
- package/ui/dist/assets/{ChannelsPanel-Cc1rpsDr.js → ChannelsPanel-Cx3dxaP9.js} +1 -1
- package/ui/dist/assets/{CheckpointsPanel-BMxuQIKg.js → CheckpointsPanel-D2ATiPXs.js} +1 -1
- package/ui/dist/assets/{CommandPostHub--U1dHmDw.js → CommandPostHub-DTs1EGm8.js} +3 -3
- package/ui/dist/assets/{CronPanel-C7uIoKAb.js → CronPanel-D0j9zDVW.js} +1 -1
- package/ui/dist/assets/{DataTable-DtjGbNj5.js → DataTable-CgeOprjv.js} +1 -1
- package/ui/dist/assets/{DreamPanel-DhjOkThA.js → DreamPanel-CJAI6Aka.js} +2 -2
- package/ui/dist/assets/{EmptyState-cLzelkoZ.js → EmptyState-NMpt-ODJ.js} +1 -1
- package/ui/dist/assets/{EvalHarnessPanel-Dm6DyPTs.js → EvalHarnessPanel-ZPXlKHaK.js} +1 -1
- package/ui/dist/assets/{EvalPanel-BDiX_uNI.js → EvalPanel-DpmEQQXh.js} +1 -1
- package/ui/dist/assets/{FileViewer-CHrDPOA5.js → FileViewer-B7Mm4cJL.js} +1 -1
- package/ui/dist/assets/{FilesPanel-CNCqxSjS.js → FilesPanel-CvrGQwh3.js} +1 -1
- package/ui/dist/assets/{FleetPanel-UOTqdrh3.js → FleetPanel-BDf9E7dQ.js} +1 -1
- package/ui/dist/assets/{HomelabPanel-8GyBOfWC.js → HomelabPanel-CKGR1kGN.js} +1 -1
- package/ui/dist/assets/InfraView-CreCQSNl.js +2 -0
- package/ui/dist/assets/{InlineEditableField-CFx4EOF1.js → InlineEditableField-JxqorUFO.js} +1 -1
- package/ui/dist/assets/{Input-CT_e2ZXD.js → Input-rfmX8eLw.js} +1 -1
- package/ui/dist/assets/{IntegrationsPanel-_MC_FcOZ.js → IntegrationsPanel-Ds5KCGUi.js} +1 -1
- package/ui/dist/assets/IntelligenceView-YcrYQTVO.js +2 -0
- package/ui/dist/assets/{LearningPanel-DIsuxMlC.js → LearningPanel-CZUd4UsW.js} +1 -1
- package/ui/dist/assets/{LogsPanel-hUcRe-Pt.js → LogsPanel-CmUBA-jG.js} +1 -1
- package/ui/dist/assets/{McpPanel-B2L9oapp.js → McpPanel-CVyjQ6H6.js} +1 -1
- package/ui/dist/assets/{MemoryGraphPanel-eVPWv4Fz.js → MemoryGraphPanel-BK-AbsbF.js} +1 -1
- package/ui/dist/assets/{MemoryWikiPanel-CDuJkatJ.js → MemoryWikiPanel-DkfHLaje.js} +1 -1
- package/ui/dist/assets/{MeshPanel-C42VpfJ5.js → MeshPanel-BCDzhBRO.js} +1 -1
- package/ui/dist/assets/{MissionCanvas-BMw2FCD5.js → MissionCanvas-GvSYEkjz.js} +1 -1
- package/ui/dist/assets/{MissionChat-C9HHYet2.js → MissionChat-DpyGbBhk.js} +1 -1
- package/ui/dist/assets/{MissionLibrary-D2yhbAJg.js → MissionLibrary-Dwn2vP2g.js} +1 -1
- package/ui/dist/assets/{MissionStart-BKeop9F5.js → MissionStart-DIYEotqX.js} +1 -1
- package/ui/dist/assets/{Modal-Bdo-V7t6.js → Modal-BFii_RIq.js} +1 -1
- package/ui/dist/assets/{NvidiaPanel-CEss--Dl.js → NvidiaPanel-BCmLv4bY.js} +1 -1
- package/ui/dist/assets/{OrganismPanel-CToPtDaz.js → OrganismPanel-CDMC8-yf.js} +1 -1
- package/ui/dist/assets/{OverviewPanel-D7IolCYo.js → OverviewPanel-C9ErRTB1.js} +1 -1
- package/ui/dist/assets/{PageHeader-CjDtUo8m.js → PageHeader-CawSrb9E.js} +1 -1
- package/ui/dist/assets/{PersonaProfilesPanel-Df5og1Sg.js → PersonaProfilesPanel-B_hx3sLQ.js} +1 -1
- package/ui/dist/assets/{PersonasPanel-DKr-x2AB.js → PersonasPanel-BhfAKQWd.js} +1 -1
- package/ui/dist/assets/{PhoneDeskPanel-CkEnpVrz.js → PhoneDeskPanel-Cew4jv5F.js} +1 -1
- package/ui/dist/assets/{RecipesPanel-CiQiYqpA.js → RecipesPanel-KSNQil0R.js} +1 -1
- package/ui/dist/assets/{SecurityPanel-nTFIdiqf.js → SecurityPanel-ojbdvuZR.js} +1 -1
- package/ui/dist/assets/{SelfImprovePanel-mPChEVjC.js → SelfImprovePanel-D743Dh0z.js} +1 -1
- package/ui/dist/assets/{SelfProposalsPanel-CXIGD8P3.js → SelfProposalsPanel-DHPrgGsJ.js} +1 -1
- package/ui/dist/assets/{SessionsPanel-C8nt7rxV.js → SessionsPanel-Bd8dAJQa.js} +1 -1
- package/ui/dist/assets/{SessionsTab-Bp5WaW_Q.js → SessionsTab-BjyOfaQ9.js} +1 -1
- package/ui/dist/assets/{SettingsPanel-Cg5tgqDO.js → SettingsPanel-CWvFc8MJ.js} +1 -1
- package/ui/dist/assets/SettingsView-Chh-hdRF.js +2 -0
- package/ui/dist/assets/{SkeletonLoader-DwBcLrhl.js → SkeletonLoader-sjDa7Y96.js} +1 -1
- package/ui/dist/assets/{SkillsPanel-CHnd8BmR.js → SkillsPanel-B0UwrZGA.js} +1 -1
- package/ui/dist/assets/{SomaView-1zShMywA.js → SomaView-CXfqpdNP.js} +1 -1
- package/ui/dist/assets/{StatCard-BUO6lNlX.js → StatCard-B4qf3WOB.js} +1 -1
- package/ui/dist/assets/{StatusBadge-CmSemYNT.js → StatusBadge-BtDtyL5L.js} +1 -1
- package/ui/dist/assets/{Tabs-Zo1JoN_G.js → Tabs-CeY7i2tk.js} +1 -1
- package/ui/dist/assets/{TeamsPanel-C96TIEna.js → TeamsPanel-BxFpHD58.js} +1 -1
- package/ui/dist/assets/{TelemetryPanel-DlI9vEZU.js → TelemetryPanel-D2L98GwC.js} +1 -1
- package/ui/dist/assets/{TitanCanvas-BewmO4FZ.js → TitanCanvas-D7TL368k.js} +4 -4
- package/ui/dist/assets/{ToolsView-BY73iyvj.js → ToolsView-BiW0mds2.js} +2 -2
- package/ui/dist/assets/{Tooltip-DHrJsv5K.js → Tooltip-C3exOcZa.js} +1 -1
- package/ui/dist/assets/{TraceViewer-BVH6WsWN.js → TraceViewer-z42wYVdE.js} +1 -1
- package/ui/dist/assets/{TrainingPanel-Beam9vXX.js → TrainingPanel-BPVftaSt.js} +1 -1
- package/ui/dist/assets/{VoiceOverlay-B03bLRa6.js → VoiceOverlay-DNzDqitY.js} +1 -1
- package/ui/dist/assets/{VramPanel-Cv48drRb.js → VramPanel-CF4l5fe_.js} +1 -1
- package/ui/dist/assets/{WatchView-VtZRF3Ah.js → WatchView-CewHUoxK.js} +1 -1
- package/ui/dist/assets/{WorkTab-gIgsVURN.js → WorkTab-ByC4niLi.js} +1 -1
- package/ui/dist/assets/{WorkflowsPanel-xGphoCgy.js → WorkflowsPanel-Bsyhjv87.js} +1 -1
- package/ui/dist/assets/{archive-B27XcT_v.js → archive-Cz-kvWW5.js} +1 -1
- package/ui/dist/assets/{arrow-left-DSU0t1ZF.js → arrow-left-CGVxTClf.js} +1 -1
- package/ui/dist/assets/{book-open-CCt4Gq9I.js → book-open-CrOs3smB.js} +1 -1
- package/ui/dist/assets/{bot-DK7dbBfX.js → bot-C0wiWyCT.js} +1 -1
- package/ui/dist/assets/{chart-column-CixcF9Pi.js → chart-column-Dcc3a8m5.js} +1 -1
- package/ui/dist/assets/{check-oX--Xdud.js → check-BhmlTEFk.js} +1 -1
- package/ui/dist/assets/{chevron-right-D1DyaeTm.js → chevron-right-DJCsUSwz.js} +1 -1
- package/ui/dist/assets/{chevron-up-uKeW050h.js → chevron-up-cs3cBR4O.js} +1 -1
- package/ui/dist/assets/{circle-check-big-C7KjulF6.js → circle-check-big-De2k5qVr.js} +1 -1
- package/ui/dist/assets/{circle-stop-DMMdkBs2.js → circle-stop-u0L9iQ69.js} +1 -1
- package/ui/dist/assets/{clipboard-list-C3GIPAT3.js → clipboard-list-DF1F3Vjf.js} +1 -1
- package/ui/dist/assets/{clock-BgvC0T_E.js → clock-Bc6IrFv8.js} +1 -1
- package/ui/dist/assets/{dollar-sign-DuP1ZChI.js → dollar-sign-BStL62ws.js} +1 -1
- package/ui/dist/assets/{download-CnPu926z.js → download-VXqww0Iy.js} +1 -1
- package/ui/dist/assets/{external-link-fIw1hJS5.js → external-link-BjN0VrNb.js} +1 -1
- package/ui/dist/assets/{file-text-kYsk6v9z.js → file-text-SIULFbzy.js} +1 -1
- package/ui/dist/assets/{flask-conical-CAMJ0Plo.js → flask-conical-CsShOfpS.js} +1 -1
- package/ui/dist/assets/{folder-Dq6luLP7.js → folder-DwOkgBGj.js} +1 -1
- package/ui/dist/assets/{funnel-hj2rC4MH.js → funnel-CDnA2Enn.js} +1 -1
- package/ui/dist/assets/{git-branch-DX_X3HtU.js → git-branch-BAFSlxgi.js} +1 -1
- package/ui/dist/assets/{index-BISxhHXP.js → index-BlFxPvdg.js} +2 -2
- package/ui/dist/assets/{layers-BseADaVO.js → layers-DKKOtsYx.js} +1 -1
- package/ui/dist/assets/{legacy-B7aW_gUV.js → legacy-YQ03_WIq.js} +1 -1
- package/ui/dist/assets/{lightbulb-DdDY0MbY.js → lightbulb-D4Syh7fA.js} +1 -1
- package/ui/dist/assets/{link-BZZB4JyS.js → link-C_6ueq0o.js} +1 -1
- package/ui/dist/assets/{list-todo-bSv3SQAa.js → list-todo-3Me4V-34.js} +1 -1
- package/ui/dist/assets/{message-square-D9n28WBl.js → message-square-Dv6Q3VRO.js} +1 -1
- package/ui/dist/assets/{mic-DsWOcLkn.js → mic-BInf3BDE.js} +1 -1
- package/ui/dist/assets/{missions-CmBxbp0k.js → missions-BUTRB5Lq.js} +1 -1
- package/ui/dist/assets/{network-CkgG0zu0.js → network-BsSfc5IE.js} +1 -1
- package/ui/dist/assets/{pause-CvgG1y4I.js → pause-CXCmPcHk.js} +1 -1
- package/ui/dist/assets/{pencil-c0GVcCA9.js → pencil-DAvceqn3.js} +1 -1
- package/ui/dist/assets/{play-CuwPKVSv.js → play-MuD1S1C5.js} +1 -1
- package/ui/dist/assets/{plug-D-b321IK.js → plug-Chv5y4No.js} +1 -1
- package/ui/dist/assets/{plus-IFwPqtUW.js → plus-SBD6A3Qb.js} +1 -1
- package/ui/dist/assets/{proxy-Dm6tNAsg.js → proxy-C5UuKDtU.js} +1 -1
- package/ui/dist/assets/{radio-BNdFCb41.js → radio-BySzBvYH.js} +1 -1
- package/ui/dist/assets/{refresh-cw-CFv1BDy9.js → refresh-cw-BdcqinTm.js} +1 -1
- package/ui/dist/assets/{rotate-ccw-iCpZfipQ.js → rotate-ccw-CRA_s5tz.js} +1 -1
- package/ui/dist/assets/{save-o5ciSOaB.js → save-BWhXC8Tv.js} +1 -1
- package/ui/dist/assets/{search-DmeBed-X.js → search-DF7UnWEk.js} +1 -1
- package/ui/dist/assets/{send-BoLKNmgS.js → send-CmvPtbvy.js} +1 -1
- package/ui/dist/assets/{server-Ov6rxCAc.js → server-1PubNLgw.js} +1 -1
- package/ui/dist/assets/{shield-check-CKPsc0rI.js → shield-check-BjuAv28a.js} +1 -1
- package/ui/dist/assets/{terminal-CcPGcWeJ.js → terminal-BvDfNOXl.js} +1 -1
- package/ui/dist/assets/{test-tube-564jDt0t.js → test-tube-CrzRsKdm.js} +1 -1
- package/ui/dist/assets/{toggle-right-B7gXrucx.js → toggle-right-BRJ_dULZ.js} +1 -1
- package/ui/dist/assets/{trash-2-B7yIJ8B5.js → trash-2-Dtxmn6GE.js} +1 -1
- package/ui/dist/assets/{trending-up-DdxHXTsD.js → trending-up-C7pfwW1S.js} +1 -1
- package/ui/dist/assets/{trophy-mttLLqgk.js → trophy-Dknrgn8P.js} +1 -1
- package/ui/dist/assets/{volume-2-DcpX5fnm.js → volume-2-ahkfEwxT.js} +1 -1
- package/ui/dist/assets/{wifi-off-B4cf3i9g.js → wifi-off-wACQ7wec.js} +1 -1
- package/ui/dist/index.html +1 -1
- package/ui/dist/sw.js +1 -1
- package/ui/dist/assets/CPLayout-BXcOZUo7.js +0 -2
- package/ui/dist/assets/InfraView-Ds53Fjni.js +0 -2
- package/ui/dist/assets/IntelligenceView-DHKwRkc_.js +0 -2
- package/ui/dist/assets/SettingsView-DosHEIoU.js +0 -2
package/dist/agent/agent.js
CHANGED
|
@@ -1278,66 +1278,81 @@ CRITICAL: Widgets are NOT files. Do NOT use write_file, edit_file, or any file t
|
|
|
1278
1278
|
}
|
|
1279
1279
|
modelUsed = activeModel;
|
|
1280
1280
|
let activeTools = tools;
|
|
1281
|
-
|
|
1282
|
-
|
|
1281
|
+
let allToolsBackup = activeTools;
|
|
1282
|
+
let toolSearchEnabled = true;
|
|
1283
|
+
const explicitAllowList = overrides?.allowedTools;
|
|
1284
|
+
if (explicitAllowList && explicitAllowList.length > 0) {
|
|
1285
|
+
const allow = new Set(explicitAllowList);
|
|
1283
1286
|
const before = activeTools.length;
|
|
1284
|
-
activeTools =
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
+
activeTools = tools.filter((t) => allow.has(t.function.name));
|
|
1288
|
+
allToolsBackup = activeTools;
|
|
1289
|
+
logger.info(COMPONENT, `[AllowedTools] override bound ${activeTools.length}/${explicitAllowList.length} requested tools (filter chain bypassed): [${activeTools.map((t) => t.function.name).join(", ")}] from pool of ${before}`);
|
|
1290
|
+
const missing = explicitAllowList.filter((name) => !activeTools.some((t) => t.function.name === name));
|
|
1291
|
+
if (missing.length > 0) {
|
|
1292
|
+
logger.warn(COMPONENT, `[AllowedTools] caller asked for tools that aren't registered: [${missing.join(", ")}]`);
|
|
1287
1293
|
}
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
}
|
|
1297
|
-
if (!voiceFastPath && !isSmallModel && isBrainAvailable()) {
|
|
1298
|
-
const brainFiltered = await brainSelectTools(message, activeTools);
|
|
1299
|
-
if (brainFiltered.length > 0 && brainFiltered.length < activeTools.length) {
|
|
1300
|
-
logger.info(COMPONENT, `[Brain] Filtered: ${activeTools.length} \u2192 ${brainFiltered.length} tools`);
|
|
1301
|
-
activeTools = brainFiltered;
|
|
1294
|
+
} else {
|
|
1295
|
+
if (earlyPersona) {
|
|
1296
|
+
const { applyPersonaToolFilter } = await import("./personaProfiles.js");
|
|
1297
|
+
const before = activeTools.length;
|
|
1298
|
+
activeTools = applyPersonaToolFilter(activeTools, earlyPersona);
|
|
1299
|
+
if (activeTools.length !== before) {
|
|
1300
|
+
logger.info(COMPONENT, `[Persona:${earlyPersona.id}] tools ${before} \u2192 ${activeTools.length}`);
|
|
1301
|
+
}
|
|
1302
1302
|
}
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
activeTools
|
|
1313
|
-
if (
|
|
1314
|
-
logger.info(COMPONENT, `[
|
|
1303
|
+
const SMALL_MODEL_PATTERNS = ["llama3.2", "llama3.1:8b", "phi", "gemma:2b", "qwen3.5:4b", "tinyllama", "dolphin3"];
|
|
1304
|
+
const isSmallModel = SMALL_MODEL_PATTERNS.some((p) => activeModel.toLowerCase().includes(p));
|
|
1305
|
+
if (isSmallModel) {
|
|
1306
|
+
const CORE_TOOL_NAMES = ["shell", "read_file", "write_file", "edit_file", "list_dir", "memory"];
|
|
1307
|
+
const coreTools = activeTools.filter((t) => CORE_TOOL_NAMES.includes(t.function.name));
|
|
1308
|
+
logger.info(COMPONENT, `[SmallModel] Reducing tools from ${activeTools.length} to ${coreTools.length} for ${activeModel}`);
|
|
1309
|
+
activeTools = coreTools;
|
|
1310
|
+
}
|
|
1311
|
+
if (!voiceFastPath && !isSmallModel && isBrainAvailable()) {
|
|
1312
|
+
const brainFiltered = await brainSelectTools(message, activeTools);
|
|
1313
|
+
if (brainFiltered.length > 0 && brainFiltered.length < activeTools.length) {
|
|
1314
|
+
logger.info(COMPONENT, `[Brain] Filtered: ${activeTools.length} \u2192 ${brainFiltered.length} tools`);
|
|
1315
|
+
activeTools = brainFiltered;
|
|
1315
1316
|
}
|
|
1316
1317
|
}
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
const effectiveCoreTools = configCoreTools && configCoreTools.length > 0 ? configCoreTools : DEFAULT_CORE_TOOLS;
|
|
1322
|
-
const pipelineMerged = pipelineEnsureTools.length > 0 ? [.../* @__PURE__ */ new Set([...effectiveCoreTools, ...pipelineEnsureTools])] : effectiveCoreTools;
|
|
1323
|
-
const coreNames = new Set(voiceFastPath ? VOICE_CORE_TOOLS : pipelineMerged);
|
|
1324
|
-
activeTools = activeTools.filter((t) => coreNames.has(t.function.name));
|
|
1325
|
-
if (pipelineEnsureTools.length > 0) {
|
|
1318
|
+
const toolSearchConfig = config.toolSearch;
|
|
1319
|
+
toolSearchEnabled = toolSearchConfig?.enabled ?? true;
|
|
1320
|
+
allToolsBackup = activeTools;
|
|
1321
|
+
if (pipelineEnsureTools.length > 0 && !(toolSearchEnabled && !isSmallModel && activeTools.length > 12)) {
|
|
1326
1322
|
const activeNames = new Set(activeTools.map((t) => t.function.name));
|
|
1327
1323
|
const missing = pipelineEnsureTools.filter((name) => !activeNames.has(name));
|
|
1328
1324
|
if (missing.length > 0) {
|
|
1329
1325
|
const rescued = allToolsBackup.filter((t) => missing.includes(t.function.name));
|
|
1330
1326
|
activeTools.push(...rescued);
|
|
1331
1327
|
if (rescued.length > 0) {
|
|
1332
|
-
logger.info(COMPONENT, `[Pipeline:${pipelineType}]
|
|
1328
|
+
logger.info(COMPONENT, `[Pipeline:${pipelineType}] Ensured ${rescued.length} tools (no-compact): [${rescued.map((t) => t.function.name).join(", ")}]`);
|
|
1333
1329
|
}
|
|
1334
1330
|
}
|
|
1335
1331
|
}
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1332
|
+
if (toolSearchEnabled && !isSmallModel && activeTools.length > 12) {
|
|
1333
|
+
const VOICE_CORE_TOOLS = ["shell", "web_search", "weather", "memory", "ha_control", "ha_devices", "ha_status", "ha_setup", "tool_search"];
|
|
1334
|
+
const configCoreTools = toolSearchConfig?.coreTools;
|
|
1335
|
+
const effectiveCoreTools = configCoreTools && configCoreTools.length > 0 ? configCoreTools : DEFAULT_CORE_TOOLS;
|
|
1336
|
+
const pipelineMerged = pipelineEnsureTools.length > 0 ? [.../* @__PURE__ */ new Set([...effectiveCoreTools, ...pipelineEnsureTools])] : effectiveCoreTools;
|
|
1337
|
+
const coreNames = new Set(voiceFastPath ? VOICE_CORE_TOOLS : pipelineMerged);
|
|
1338
|
+
activeTools = activeTools.filter((t) => coreNames.has(t.function.name));
|
|
1339
|
+
if (pipelineEnsureTools.length > 0) {
|
|
1340
|
+
const activeNames = new Set(activeTools.map((t) => t.function.name));
|
|
1341
|
+
const missing = pipelineEnsureTools.filter((name) => !activeNames.has(name));
|
|
1342
|
+
if (missing.length > 0) {
|
|
1343
|
+
const rescued = allToolsBackup.filter((t) => missing.includes(t.function.name));
|
|
1344
|
+
activeTools.push(...rescued);
|
|
1345
|
+
if (rescued.length > 0) {
|
|
1346
|
+
logger.info(COMPONENT, `[Pipeline:${pipelineType}] Rescued ${rescued.length} tools: [${rescued.map((t) => t.function.name).join(", ")}]`);
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
logger.info(COMPONENT, `[ToolSearch] Compact mode: ${allToolsBackup.length} \u2192 ${activeTools.length} tools (${allToolsBackup.length - activeTools.length} discoverable via tool_search)`);
|
|
1351
|
+
}
|
|
1352
|
+
if (dangerous) {
|
|
1353
|
+
activeTools = [];
|
|
1354
|
+
logger.info(COMPONENT, "[Safety] Stripped all tools \u2014 dangerous command detected");
|
|
1355
|
+
}
|
|
1341
1356
|
}
|
|
1342
1357
|
setAutonomousMode(isAutonomous);
|
|
1343
1358
|
heartbeat(session.id);
|