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.
Files changed (103) hide show
  1. package/client-v2.d.ts +2 -0
  2. package/client-v2.js +1 -0
  3. package/dist/client/index.js +1 -1
  4. package/dist/client-v2/214.723affb37c13bf7a.js +10 -0
  5. package/dist/client-v2/264.0533912e6c5ea2d7.js +10 -0
  6. package/dist/client-v2/41.1805b2edfaa4afe2.js +10 -0
  7. package/dist/client-v2/418.5ae055abf141820e.js +10 -0
  8. package/dist/client-v2/619.d99d3c9e61c99064.js +10 -0
  9. package/dist/client-v2/70.a15d7fcec7c41768.js +10 -0
  10. package/dist/client-v2/892.72db4161511c8a16.js +10 -0
  11. package/dist/client-v2/926.87f660b670d85bcc.js +10 -0
  12. package/dist/client-v2/index.js +10 -0
  13. package/dist/externalVersion.js +8 -6
  14. package/dist/locale/en-US.json +7 -0
  15. package/dist/locale/vi-VN.json +7 -0
  16. package/dist/locale/zh-CN.json +27 -0
  17. package/dist/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.js +63 -0
  18. package/dist/server/plugin.js +32 -1
  19. package/dist/server/services/AgentHarness.js +52 -27
  20. package/dist/server/services/AgentLoopController.js +8 -2
  21. package/dist/server/services/AgentLoopService.js +1 -1
  22. package/dist/server/services/AgentRegistryService.js +53 -42
  23. package/dist/server/services/CircuitBreaker.js +7 -2
  24. package/dist/server/services/CodeValidator.js +48 -14
  25. package/dist/server/services/SandboxRunner.js +18 -14
  26. package/dist/server/skill-hub/plugin.js +44 -17
  27. package/dist/server/tools/delegate-task.js +7 -2
  28. package/dist/server/tools/skill-execute.js +33 -2
  29. package/dist/server/utils/ai-manager.js +51 -0
  30. package/dist/server/utils/ctx-utils.js +11 -0
  31. package/dist/server/utils/skill-settings.js +122 -0
  32. package/package.json +49 -45
  33. package/src/client/AIEmployeesContext.tsx +60 -19
  34. package/src/client/AgentRunsTab.tsx +769 -764
  35. package/src/client/HarnessProfilesTab.tsx +257 -247
  36. package/src/client/RulesTab.tsx +787 -716
  37. package/src/client/TracingTab.tsx +9 -6
  38. package/src/client/plugin.tsx +34 -27
  39. package/src/client/skill-hub/components/ExecutionHistory.tsx +9 -8
  40. package/src/client/skill-hub/components/GitSkillImport.tsx +12 -5
  41. package/src/client/skill-hub/components/LoopSettings.tsx +2 -2
  42. package/src/client/skill-hub/components/SkillEditor.tsx +2 -2
  43. package/src/client/skill-hub/components/SkillManager.tsx +2 -2
  44. package/src/client/skill-hub/components/SkillMetrics.tsx +157 -124
  45. package/src/client/skill-hub/components/SkillTestPanel.tsx +14 -13
  46. package/src/client/skill-hub/index.tsx +58 -51
  47. package/src/client/skill-hub/locale.ts +1 -1
  48. package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +132 -99
  49. package/src/client/skill-hub/tools/registerSkillLoopCards.ts +71 -58
  50. package/src/client/tools/PlanApprovalCard.tsx +3 -2
  51. package/src/client/tools/registerOrchestratorCards.ts +17 -7
  52. package/src/client-v2/components/AIEmployeeSelect.tsx +47 -0
  53. package/src/client-v2/components/AIEmployeesContext.tsx +110 -0
  54. package/src/client-v2/components/AgentRunsTab.tsx +767 -0
  55. package/src/client-v2/components/HarnessProfilesTab.tsx +254 -0
  56. package/src/client-v2/components/RulesTab.tsx +782 -0
  57. package/src/client-v2/components/TracingTab.tsx +432 -0
  58. package/src/client-v2/hooks/useApiRequest.ts +114 -0
  59. package/src/client-v2/index.tsx +1 -0
  60. package/src/client-v2/pages/AgentRunsPage.tsx +13 -0
  61. package/src/client-v2/pages/ExecutionHistoryPage.tsx +10 -0
  62. package/src/client-v2/pages/HarnessProfilesPage.tsx +10 -0
  63. package/src/client-v2/pages/LoopSettingsPage.tsx +10 -0
  64. package/src/client-v2/pages/RulesPage.tsx +13 -0
  65. package/src/client-v2/pages/SkillDefinitionsPage.tsx +10 -0
  66. package/src/client-v2/pages/SkillMetricsPage.tsx +10 -0
  67. package/src/client-v2/pages/TracingPage.tsx +13 -0
  68. package/src/client-v2/plugin.tsx +70 -0
  69. package/src/client-v2/skill-hub/components/ExecutionHistory.tsx +196 -0
  70. package/src/client-v2/skill-hub/components/FileLinkList.tsx +37 -0
  71. package/src/client-v2/skill-hub/components/GitSkillImport.tsx +539 -0
  72. package/src/client-v2/skill-hub/components/LoopSettings.tsx +331 -0
  73. package/src/client-v2/skill-hub/components/SkillEditor.tsx +453 -0
  74. package/src/client-v2/skill-hub/components/SkillManager.tsx +174 -0
  75. package/src/client-v2/skill-hub/components/SkillMetrics.tsx +157 -0
  76. package/src/client-v2/skill-hub/components/SkillTestPanel.tsx +135 -0
  77. package/src/client-v2/skill-hub/locale.ts +13 -0
  78. package/src/client-v2/skill-hub/tools/loopTemplates.ts +52 -0
  79. package/src/client-v2/skill-hub/utils/jsonFields.ts +41 -0
  80. package/src/client-v2/utils/jsonFields.ts +41 -0
  81. package/src/locale/en-US.json +7 -0
  82. package/src/locale/vi-VN.json +7 -0
  83. package/src/locale/zh-CN.json +27 -0
  84. package/src/server/__tests__/agent-registry-service.test.ts +147 -0
  85. package/src/server/__tests__/code-validator.test.ts +63 -0
  86. package/src/server/__tests__/skill-execute.test.ts +33 -0
  87. package/src/server/__tests__/skill-settings.test.ts +63 -0
  88. package/src/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.ts +39 -0
  89. package/src/server/plugin.ts +62 -21
  90. package/src/server/services/AgentHarness.ts +49 -22
  91. package/src/server/services/AgentLoopController.ts +17 -6
  92. package/src/server/services/AgentLoopService.ts +1 -1
  93. package/src/server/services/AgentPlannerService.ts +10 -0
  94. package/src/server/services/AgentRegistryService.ts +89 -47
  95. package/src/server/services/CircuitBreaker.ts +10 -0
  96. package/src/server/services/CodeValidator.ts +237 -159
  97. package/src/server/services/SandboxRunner.ts +203 -189
  98. package/src/server/skill-hub/plugin.ts +933 -898
  99. package/src/server/tools/delegate-task.ts +12 -9
  100. package/src/server/tools/skill-execute.ts +194 -160
  101. package/src/server/utils/ai-manager.ts +24 -0
  102. package/src/server/utils/ctx-utils.ts +14 -0
  103. 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 '@nocobase/client';
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
- skills: string[];
9
+ tools: string[];
9
10
  }
10
11
 
11
12
  interface AIEmployeesContextType {
12
13
  employees: AIEmployeeInfo[];
13
14
  employeeMap: Map<string, string>;
14
- skillsMap: Map<string, Set<string>>;
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
- skillsMap: new Map(),
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 skills so RulesTab can warn when
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 { data, loading, refresh } = useRequest({
37
- url: 'aiEmployees:list',
38
- params: { pageSize: 200 },
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 skills = Array.isArray(emp.skillSettings?.skills)
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
- skills,
94
+ tools,
54
95
  };
55
96
  });
56
97
 
57
98
  const employeeMap = new Map<string, string>();
58
- const skillsMap = new Map<string, Set<string>>();
99
+ const toolNamesMap = new Map<string, Set<string>>();
59
100
  for (const emp of employees) {
60
101
  employeeMap.set(emp.username, emp.nickname);
61
- skillsMap.set(emp.username, new Set(emp.skills));
102
+ toolNamesMap.set(emp.username, new Set(emp.tools));
62
103
  }
63
104
 
64
- return { employees, employeeMap, skillsMap, loading, refresh };
105
+ return { employees, employeeMap, toolNamesMap, loading, refresh };
65
106
  }, [data, loading, refresh]);
66
107
 
67
108
  return <AIEmployeesContext.Provider value={value}>{children}</AIEmployeesContext.Provider>;