neoagent 2.4.1-beta.35 → 2.4.1-beta.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/package.json +1 -1
- package/server/public/.last_build_id +1 -1
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +4 -4
- package/server/services/ai/engine.js +20 -0
- package/server/services/ai/taskAnalysis.js +4 -1
- package/server/services/ai/toolSelector.js +8 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
cd629bebff6e6d3f781e6810f13e3583
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"c416acfeb8126e097f758c664aaa3da929e27d
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "4109168282" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|
|
@@ -133818,7 +133818,7 @@ r===$&&A.b()
|
|
|
133818
133818
|
o.push(A.jO(p,A.jc(!1,new A.a2(B.un,A.dt(new A.cy(B.ho,new A.a7n(r,p),p),p,p),p),!1,B.I,!0),p,p,0,0,0,p))}r=!1
|
|
133819
133819
|
if(!s.ay)if(!s.ch){r=s.e
|
|
133820
133820
|
r===$&&A.b()
|
|
133821
|
-
r=B.b.t("
|
|
133821
|
+
r=B.b.t("mq43a2ce-3df14ac").length!==0&&r.b}if(r){r=s.d
|
|
133822
133822
|
r===$&&A.b()
|
|
133823
133823
|
r=r.av&&!r.aP?84:0
|
|
133824
133824
|
q=s.e
|
|
@@ -139302,7 +139302,7 @@ $S:0}
|
|
|
139302
139302
|
A.ZM.prototype={}
|
|
139303
139303
|
A.Su.prototype={
|
|
139304
139304
|
nc(a){var s=this
|
|
139305
|
-
if(B.b.t("
|
|
139305
|
+
if(B.b.t("mq43a2ce-3df14ac").length===0||s.a!=null)return
|
|
139306
139306
|
s.AO()
|
|
139307
139307
|
s.a=A.qf(B.R4,new A.b9P(s))},
|
|
139308
139308
|
AO(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f
|
|
@@ -139320,7 +139320,7 @@ if(!t.f.b(k)){s=1
|
|
|
139320
139320
|
break}i=J.T(k,"buildId")
|
|
139321
139321
|
h=i==null?null:B.b.t(J.p(i))
|
|
139322
139322
|
j=h==null?"":h
|
|
139323
|
-
if(J.be(j)===0||J.d(j,"
|
|
139323
|
+
if(J.be(j)===0||J.d(j,"mq43a2ce-3df14ac")){s=1
|
|
139324
139324
|
break}n.b=!0
|
|
139325
139325
|
n.D()
|
|
139326
139326
|
p=2
|
|
@@ -139337,7 +139337,7 @@ case 2:return A.i(o.at(-1),r)}})
|
|
|
139337
139337
|
return A.k($async$AO,r)},
|
|
139338
139338
|
vv(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1
|
|
139339
139339
|
var $async$vv=A.h(function(a2,a3){if(a2===1){o.push(a3)
|
|
139340
|
-
s=p}for(;;)switch(s){case 0:if(B.b.t("
|
|
139340
|
+
s=p}for(;;)switch(s){case 0:if(B.b.t("mq43a2ce-3df14ac").length===0||n.c){s=1
|
|
139341
139341
|
break}n.c=!0
|
|
139342
139342
|
n.D()
|
|
139343
139343
|
p=4
|
|
@@ -1177,6 +1177,7 @@ class AgentEngine {
|
|
|
1177
1177
|
model,
|
|
1178
1178
|
messages,
|
|
1179
1179
|
analysis,
|
|
1180
|
+
tools,
|
|
1180
1181
|
toolExecutions,
|
|
1181
1182
|
finalReply,
|
|
1182
1183
|
options,
|
|
@@ -1193,6 +1194,7 @@ class AgentEngine {
|
|
|
1193
1194
|
messages,
|
|
1194
1195
|
prompt: buildVerifierPrompt({
|
|
1195
1196
|
analysis,
|
|
1197
|
+
tools,
|
|
1196
1198
|
toolExecutionSummary: summarizeToolExecutions(toolExecutions),
|
|
1197
1199
|
evidenceSources,
|
|
1198
1200
|
finalReply,
|
|
@@ -1746,6 +1748,23 @@ class AgentEngine {
|
|
|
1746
1748
|
const integrationManager = app?.locals?.integrationManager || null;
|
|
1747
1749
|
const mcpTools = mcpManager ? mcpManager.getAllTools(userId, { agentId }) : [];
|
|
1748
1750
|
const tools = selectToolsForTask(userMessage, builtInTools, mcpTools, options);
|
|
1751
|
+
const toolNames = tools.map((tool) => tool.name).filter(Boolean);
|
|
1752
|
+
const coreToolStatus = {
|
|
1753
|
+
send_message: toolNames.includes('send_message'),
|
|
1754
|
+
create_task: toolNames.includes('create_task'),
|
|
1755
|
+
list_tasks: toolNames.includes('list_tasks'),
|
|
1756
|
+
update_task: toolNames.includes('update_task'),
|
|
1757
|
+
delete_task: toolNames.includes('delete_task'),
|
|
1758
|
+
};
|
|
1759
|
+
this.recordRunEvent(userId, runId, 'tool_inventory', {
|
|
1760
|
+
total: toolNames.length,
|
|
1761
|
+
builtInTotal: builtInTools.length,
|
|
1762
|
+
mcpTotal: mcpTools.length,
|
|
1763
|
+
core: coreToolStatus,
|
|
1764
|
+
}, { agentId });
|
|
1765
|
+
console.info(
|
|
1766
|
+
`[Run ${shortenRunId(runId)}] tools total=${toolNames.length} builtIns=${builtInTools.length} mcp=${mcpTools.length} core=${JSON.stringify(coreToolStatus)}`
|
|
1767
|
+
);
|
|
1749
1768
|
const capabilityHealth = await getCapabilityHealth({ userId, agentId, app, engine: this });
|
|
1750
1769
|
const capabilitySummary = summarizeCapabilityHealth(capabilityHealth);
|
|
1751
1770
|
const integrationSummary = integrationManager?.summarizeConnectedProviders?.(userId, agentId) || '';
|
|
@@ -2684,6 +2703,7 @@ class AgentEngine {
|
|
|
2684
2703
|
model,
|
|
2685
2704
|
messages,
|
|
2686
2705
|
analysis,
|
|
2706
|
+
tools,
|
|
2687
2707
|
toolExecutions,
|
|
2688
2708
|
finalReply: finalResponseText,
|
|
2689
2709
|
options,
|
|
@@ -561,10 +561,13 @@ function buildExecutionGuidance({ analysis, plan = null, capabilityHealth }) {
|
|
|
561
561
|
return lines.filter(Boolean).join('\n\n');
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
function buildVerifierPrompt({ analysis, toolExecutionSummary, evidenceSources, finalReply }) {
|
|
564
|
+
function buildVerifierPrompt({ analysis, tools = [], toolExecutionSummary, evidenceSources, finalReply }) {
|
|
565
|
+
const toolNames = summarizeTools(tools).join(', ');
|
|
565
566
|
return composeJsonPrompt([
|
|
566
567
|
JSON_ONLY_RESPONSE_RULE,
|
|
567
568
|
...VERIFIER_PROMPT_INSTRUCTIONS,
|
|
569
|
+
formatAvailableToolsLine(toolNames),
|
|
570
|
+
'Do not claim a tool or capability was unavailable if it is listed as available in this run. A missing tool execution is missing evidence, not proof of missing tool exposure.',
|
|
568
571
|
`Freshness risk: ${analysis.freshness_risk}`,
|
|
569
572
|
`Verification need: ${analysis.verification_need}`,
|
|
570
573
|
`Completion confidence required: ${analysis.completion_confidence_required || 'medium'}`,
|
|
@@ -14,9 +14,16 @@
|
|
|
14
14
|
|
|
15
15
|
const MCP_ALWAYS_INCLUDE_THRESHOLD = 20;
|
|
16
16
|
const MAX_TOOLS = 128; // Strict provider limit (e.g. Github Copilot / OpenAI)
|
|
17
|
+
const ALWAYS_INCLUDE_BUILT_INS = [
|
|
18
|
+
'send_message',
|
|
19
|
+
'create_task',
|
|
20
|
+
'list_tasks',
|
|
21
|
+
'delete_task',
|
|
22
|
+
'update_task',
|
|
23
|
+
];
|
|
17
24
|
|
|
18
25
|
function ensureRequiredTools(selectedTools = [], builtInTools = [], options = {}) {
|
|
19
|
-
const requiredNames = [];
|
|
26
|
+
const requiredNames = [...ALWAYS_INCLUDE_BUILT_INS];
|
|
20
27
|
if (options.widgetId) requiredNames.push('save_widget_snapshot');
|
|
21
28
|
if (!requiredNames.length) return selectedTools;
|
|
22
29
|
|