plugin-agent-orchestrator 1.0.22 → 1.0.25
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/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/dist/client/index.js +1 -1
- package/dist/client-v2/214.723affb37c13bf7a.js +10 -0
- package/dist/client-v2/264.0533912e6c5ea2d7.js +10 -0
- package/dist/client-v2/41.1805b2edfaa4afe2.js +10 -0
- package/dist/client-v2/418.5ae055abf141820e.js +10 -0
- package/dist/client-v2/619.d99d3c9e61c99064.js +10 -0
- package/dist/client-v2/70.a15d7fcec7c41768.js +10 -0
- package/dist/client-v2/892.72db4161511c8a16.js +10 -0
- package/dist/client-v2/926.87f660b670d85bcc.js +10 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/externalVersion.js +8 -6
- package/dist/locale/en-US.json +7 -0
- package/dist/locale/vi-VN.json +7 -0
- package/dist/locale/zh-CN.json +27 -0
- package/dist/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.js +63 -0
- package/dist/server/plugin.js +32 -1
- package/dist/server/services/AgentHarness.js +52 -27
- package/dist/server/services/AgentLoopController.js +8 -2
- package/dist/server/services/AgentLoopService.js +1 -1
- package/dist/server/services/AgentRegistryService.js +53 -42
- package/dist/server/services/CircuitBreaker.js +7 -2
- package/dist/server/services/CodeValidator.js +48 -14
- package/dist/server/services/SandboxRunner.js +18 -14
- package/dist/server/skill-hub/plugin.js +44 -17
- package/dist/server/tools/delegate-task.js +7 -2
- package/dist/server/tools/skill-execute.js +33 -2
- package/dist/server/utils/ai-manager.js +51 -0
- package/dist/server/utils/ctx-utils.js +11 -0
- package/dist/server/utils/skill-settings.js +122 -0
- package/package.json +49 -45
- package/src/client/AIEmployeesContext.tsx +60 -19
- package/src/client/AgentRunsTab.tsx +769 -764
- package/src/client/HarnessProfilesTab.tsx +257 -247
- package/src/client/RulesTab.tsx +787 -716
- package/src/client/TracingTab.tsx +9 -6
- package/src/client/plugin.tsx +34 -27
- package/src/client/skill-hub/components/ExecutionHistory.tsx +9 -8
- package/src/client/skill-hub/components/GitSkillImport.tsx +12 -5
- package/src/client/skill-hub/components/LoopSettings.tsx +2 -2
- package/src/client/skill-hub/components/SkillEditor.tsx +2 -2
- package/src/client/skill-hub/components/SkillManager.tsx +2 -2
- package/src/client/skill-hub/components/SkillMetrics.tsx +157 -124
- package/src/client/skill-hub/components/SkillTestPanel.tsx +14 -13
- package/src/client/skill-hub/index.tsx +58 -51
- package/src/client/skill-hub/locale.ts +1 -1
- package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +132 -99
- package/src/client/skill-hub/tools/registerSkillLoopCards.ts +71 -58
- package/src/client/tools/PlanApprovalCard.tsx +3 -2
- package/src/client/tools/registerOrchestratorCards.ts +17 -7
- package/src/client-v2/components/AIEmployeeSelect.tsx +47 -0
- package/src/client-v2/components/AIEmployeesContext.tsx +110 -0
- package/src/client-v2/components/AgentRunsTab.tsx +767 -0
- package/src/client-v2/components/HarnessProfilesTab.tsx +254 -0
- package/src/client-v2/components/RulesTab.tsx +782 -0
- package/src/client-v2/components/TracingTab.tsx +432 -0
- package/src/client-v2/hooks/useApiRequest.ts +114 -0
- package/src/client-v2/index.tsx +1 -0
- package/src/client-v2/pages/AgentRunsPage.tsx +13 -0
- package/src/client-v2/pages/ExecutionHistoryPage.tsx +10 -0
- package/src/client-v2/pages/HarnessProfilesPage.tsx +10 -0
- package/src/client-v2/pages/LoopSettingsPage.tsx +10 -0
- package/src/client-v2/pages/RulesPage.tsx +13 -0
- package/src/client-v2/pages/SkillDefinitionsPage.tsx +10 -0
- package/src/client-v2/pages/SkillMetricsPage.tsx +10 -0
- package/src/client-v2/pages/TracingPage.tsx +13 -0
- package/src/client-v2/plugin.tsx +70 -0
- package/src/client-v2/skill-hub/components/ExecutionHistory.tsx +196 -0
- package/src/client-v2/skill-hub/components/FileLinkList.tsx +37 -0
- package/src/client-v2/skill-hub/components/GitSkillImport.tsx +539 -0
- package/src/client-v2/skill-hub/components/LoopSettings.tsx +331 -0
- package/src/client-v2/skill-hub/components/SkillEditor.tsx +453 -0
- package/src/client-v2/skill-hub/components/SkillManager.tsx +174 -0
- package/src/client-v2/skill-hub/components/SkillMetrics.tsx +157 -0
- package/src/client-v2/skill-hub/components/SkillTestPanel.tsx +135 -0
- package/src/client-v2/skill-hub/locale.ts +13 -0
- package/src/client-v2/skill-hub/tools/loopTemplates.ts +52 -0
- package/src/client-v2/skill-hub/utils/jsonFields.ts +41 -0
- package/src/client-v2/utils/jsonFields.ts +41 -0
- package/src/locale/en-US.json +7 -0
- package/src/locale/vi-VN.json +7 -0
- package/src/locale/zh-CN.json +27 -0
- package/src/server/__tests__/agent-registry-service.test.ts +147 -0
- package/src/server/__tests__/code-validator.test.ts +63 -0
- package/src/server/__tests__/skill-execute.test.ts +33 -0
- package/src/server/__tests__/skill-settings.test.ts +63 -0
- package/src/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.ts +39 -0
- package/src/server/plugin.ts +62 -21
- package/src/server/services/AgentHarness.ts +49 -22
- package/src/server/services/AgentLoopController.ts +17 -6
- package/src/server/services/AgentLoopService.ts +1 -1
- package/src/server/services/AgentPlannerService.ts +10 -0
- package/src/server/services/AgentRegistryService.ts +89 -47
- package/src/server/services/CircuitBreaker.ts +10 -0
- package/src/server/services/CodeValidator.ts +237 -159
- package/src/server/services/SandboxRunner.ts +203 -189
- package/src/server/skill-hub/plugin.ts +933 -898
- package/src/server/tools/delegate-task.ts +12 -9
- package/src/server/tools/skill-execute.ts +194 -160
- package/src/server/utils/ai-manager.ts +24 -0
- package/src/server/utils/ctx-utils.ts +14 -0
- package/src/server/utils/skill-settings.ts +116 -0
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import React, { createContext, useContext } from 'react';
|
|
2
|
-
import { useRequest } from '
|
|
2
|
+
import { useRequest } from 'ahooks';
|
|
3
|
+
import { useApp } from '@nocobase/client-v2';
|
|
3
4
|
|
|
4
5
|
interface AIEmployeeInfo {
|
|
5
6
|
username: string;
|
|
6
7
|
nickname: string;
|
|
7
8
|
about?: string;
|
|
8
|
-
|
|
9
|
+
tools: string[];
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
interface AIEmployeesContextType {
|
|
12
13
|
employees: AIEmployeeInfo[];
|
|
13
14
|
employeeMap: Map<string, string>;
|
|
14
|
-
|
|
15
|
+
toolNamesMap: Map<string, Set<string>>;
|
|
15
16
|
loading: boolean;
|
|
16
17
|
refresh: () => void;
|
|
17
18
|
}
|
|
@@ -19,49 +20,89 @@ interface AIEmployeesContextType {
|
|
|
19
20
|
const AIEmployeesContext = createContext<AIEmployeesContextType>({
|
|
20
21
|
employees: [],
|
|
21
22
|
employeeMap: new Map(),
|
|
22
|
-
|
|
23
|
+
toolNamesMap: new Map(),
|
|
23
24
|
loading: false,
|
|
24
25
|
refresh: () => {},
|
|
25
26
|
});
|
|
26
27
|
|
|
28
|
+
const orchestratorToolNames = new Set([
|
|
29
|
+
'orchestrator_plan_goal',
|
|
30
|
+
'orchestrator_execute_plan',
|
|
31
|
+
'orchestrator_status',
|
|
32
|
+
'orchestrator_cancel',
|
|
33
|
+
'external_rag_search',
|
|
34
|
+
'skill_hub_execute',
|
|
35
|
+
]);
|
|
36
|
+
|
|
37
|
+
function isToolLikeName(name: string) {
|
|
38
|
+
return (
|
|
39
|
+
orchestratorToolNames.has(name) ||
|
|
40
|
+
name.startsWith('delegate_') ||
|
|
41
|
+
name.startsWith('dispatch_subagents_') ||
|
|
42
|
+
name.startsWith('skill_hub_') ||
|
|
43
|
+
name.startsWith('browser_') ||
|
|
44
|
+
name.startsWith('drawio-')
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function extractToolNames(skillSettings: any) {
|
|
49
|
+
const tools = Array.isArray(skillSettings?.tools)
|
|
50
|
+
? skillSettings.tools
|
|
51
|
+
.map((tool: any) => (typeof tool === 'string' ? tool : tool?.name))
|
|
52
|
+
.filter((name: any): name is string => typeof name === 'string' && name.length > 0)
|
|
53
|
+
: [];
|
|
54
|
+
|
|
55
|
+
const legacyTools = Array.isArray(skillSettings?.skills)
|
|
56
|
+
? skillSettings.skills
|
|
57
|
+
.map((skill: any) => {
|
|
58
|
+
if (typeof skill === 'string') {
|
|
59
|
+
return isToolLikeName(skill) ? skill : null;
|
|
60
|
+
}
|
|
61
|
+
return skill?.name;
|
|
62
|
+
})
|
|
63
|
+
.filter((name: any): name is string => typeof name === 'string' && name.length > 0)
|
|
64
|
+
: [];
|
|
65
|
+
|
|
66
|
+
return Array.from(new Set([...tools, ...legacyTools]));
|
|
67
|
+
}
|
|
68
|
+
|
|
27
69
|
/**
|
|
28
70
|
* P3 FIX: Shared context provider that fetches aiEmployees once
|
|
29
71
|
* and shares the data across RulesTab, TracingTab, and AIEmployeeSelect.
|
|
30
72
|
*
|
|
31
|
-
* Also exposes each employee's configured
|
|
73
|
+
* Also exposes each employee's configured tools so RulesTab can warn when
|
|
32
74
|
* a delegation rule exists but the leader hasn't added the corresponding
|
|
33
|
-
* delegate_<leader>_to_<sub> tool to its skillSettings.
|
|
75
|
+
* delegate_<leader>_to_<sub> tool to its skillSettings.tools.
|
|
34
76
|
*/
|
|
35
77
|
export const AIEmployeesProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
78
|
+
const api = useApp().apiClient;
|
|
79
|
+
const { data, loading, refresh } = useRequest(() =>
|
|
80
|
+
api.request({
|
|
81
|
+
url: 'aiEmployees:list',
|
|
82
|
+
params: { pageSize: 200 },
|
|
83
|
+
}),
|
|
84
|
+
);
|
|
40
85
|
|
|
41
86
|
const value = React.useMemo(() => {
|
|
42
87
|
const rawEmployees = (data as any)?.data || [];
|
|
43
88
|
const employees: AIEmployeeInfo[] = rawEmployees.map((emp: any) => {
|
|
44
|
-
const
|
|
45
|
-
? emp.skillSettings.skills
|
|
46
|
-
.map((s: any) => (typeof s === 'string' ? s : s?.name))
|
|
47
|
-
.filter((name: any): name is string => typeof name === 'string' && name.length > 0)
|
|
48
|
-
: [];
|
|
89
|
+
const tools = extractToolNames(emp.skillSettings);
|
|
49
90
|
return {
|
|
50
91
|
username: emp.username,
|
|
51
92
|
nickname: emp.nickname || emp.username,
|
|
52
93
|
about: emp.about?.substring(0, 80),
|
|
53
|
-
|
|
94
|
+
tools,
|
|
54
95
|
};
|
|
55
96
|
});
|
|
56
97
|
|
|
57
98
|
const employeeMap = new Map<string, string>();
|
|
58
|
-
const
|
|
99
|
+
const toolNamesMap = new Map<string, Set<string>>();
|
|
59
100
|
for (const emp of employees) {
|
|
60
101
|
employeeMap.set(emp.username, emp.nickname);
|
|
61
|
-
|
|
102
|
+
toolNamesMap.set(emp.username, new Set(emp.tools));
|
|
62
103
|
}
|
|
63
104
|
|
|
64
|
-
return { employees, employeeMap,
|
|
105
|
+
return { employees, employeeMap, toolNamesMap, loading, refresh };
|
|
65
106
|
}, [data, loading, refresh]);
|
|
66
107
|
|
|
67
108
|
return <AIEmployeesContext.Provider value={value}>{children}</AIEmployeesContext.Provider>;
|